diff options
111 files changed, 6205 insertions, 1518 deletions
diff --git a/.gitignore b/.gitignore index 197e2a9c1a..99884d359a 100644 --- a/.gitignore +++ b/.gitignore @@ -105,3 +105,5 @@ docker-compose.yml /plugins/*/vue/dist/*.common.js /plugins/*/vue/dist/*.map /plugins/*/vue/dist/*.development.* +/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js.map + diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e3b755d28..2f9774b8c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ This is the Developer Changelog for Matomo platform developers. All changes in o The Product Changelog at **[matomo.org/changelog](https://matomo.org/changelog)** lets you see more details about any Matomo release, such as the list of new guides and FAQs, security fixes, and links to all closed issues. +## Matomo 4.7.0 + +### Deprecated APIs + +* The `piwik-field` and related directives have been converted to Vue and the `template-file` attribute is now considered deprecated and will be removed in Matomo 5. Instead, + the `component` property should be used to add a new form field, it should be an object with two properties that reference a Vue component, `plugin` and `name`, where `plugin` + is the plugin the Vue component is located in and `name` is the Vue name of the component's export. + ## Matomo 4.6.0 ### New Framework diff --git a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php index b720aca33c..b72e557331 100644 --- a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php +++ b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php @@ -102,11 +102,15 @@ class JScriptUIAssetFetcher extends UIAssetFetcher foreach ($plugins as $plugin) { $devUmd = "plugins/$plugin/vue/dist/$plugin.development.umd.js"; $minifiedUmd = "plugins/$plugin/vue/dist/$plugin.umd.min.js"; - - if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) { - $this->fileLocations[$plugin] = $devUmd; - } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) { - $this->fileLocations[$plugin] = $minifiedUmd; + $umdSrcFolder = "plugins/$plugin/vue/src"; + + // in case there are dist files but no src files, which can happen during development + if (is_dir($umdSrcFolder)) { + if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) { + $this->fileLocations[$plugin] = $devUmd; + } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) { + $this->fileLocations[$plugin] = $minifiedUmd; + } } } } diff --git a/core/Settings/FieldConfig.php b/core/Settings/FieldConfig.php index bf9f9f46dd..a6480216b6 100644 --- a/core/Settings/FieldConfig.php +++ b/core/Settings/FieldConfig.php @@ -123,10 +123,22 @@ class FieldConfig * "formField.value" angular model. For an example see "plugins/CorePluginsAdmin/angularjs/form-field/field-text.html" * * @var string + * @deprecated set $customFieldComponent to ['plugin' => 'MyPlugin', 'component' => 'MyComponentAsItIsExported'] */ public $customUiControlTemplateFile = ''; /** + * Defines a custom Vue component to use for the internal field UI control. This should be an array with two + * keys: + * + * - plugin: the name of the plugin that the UI control exists in. + * - name: the name of the export for the component in the plugin's Vue UMD module. + * + * @var string[] + */ + public $customFieldComponent; + + /** * Name-value mapping of HTML attributes that will be added HTML form control, eg, * `array('size' => 3)`. Attributes will be escaped before outputting. * diff --git a/plugins/CoreAdminHome/angularjs/branding/branding.controller.js b/plugins/CoreAdminHome/angularjs/branding/branding.controller.js index d03065fcab..317f9fcf81 100644 --- a/plugins/CoreAdminHome/angularjs/branding/branding.controller.js +++ b/plugins/CoreAdminHome/angularjs/branding/branding.controller.js @@ -105,4 +105,4 @@ }); }; } -})();
\ No newline at end of file +})(); diff --git a/plugins/CoreAdminHome/angularjs/trackingcode/jstrackingcode.controller.js b/plugins/CoreAdminHome/angularjs/trackingcode/jstrackingcode.controller.js index 679a903d76..5d272a51e5 100644 --- a/plugins/CoreAdminHome/angularjs/trackingcode/jstrackingcode.controller.js +++ b/plugins/CoreAdminHome/angularjs/trackingcode/jstrackingcode.controller.js @@ -191,4 +191,4 @@ this.changeSite(false); } } -})();
\ No newline at end of file +})(); diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index 818db16504..92970dc0b5 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -14,6 +14,7 @@ use Piwik\Columns\MetricsList; use Piwik\Common; use Piwik\Container\StaticContainer; use Piwik\DbHelper; +use Piwik\Development; use Piwik\IP; use Piwik\Piwik; use Piwik\Plugin\ArchivedMetric; @@ -146,10 +147,10 @@ class CoreHome extends \Piwik\Plugin $stylesheets[] = "plugins/CoreHome/angularjs/progressbar/progressbar.directive.less"; $stylesheets[] = "plugins/CoreHome/vue/src/DateRangePicker/DateRangePicker.less"; $stylesheets[] = "plugins/CoreHome/angularjs/period-selector/period-selector.directive.less"; - $stylesheets[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less"; + $stylesheets[] = "plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less"; $stylesheets[] = "plugins/CoreHome/vue/src/DropdownMenu/DropdownMenu.less"; $stylesheets[] = "plugins/CoreHome/angularjs/sparkline/sparkline.component.less"; - $stylesheets[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.less"; + $stylesheets[] = "plugins/CoreHome/vue/src/FieldArray/FieldArray.less"; $stylesheets[] = "plugins/CoreHome/vue/src/Comparisons/Comparisons.less"; $stylesheets[] = "plugins/CoreHome/stylesheets/vue-transitions.less"; } @@ -164,7 +165,11 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "node_modules/jquery.scrollto/jquery.scrollTo.min.js"; $jsFiles[] = "node_modules/sprintf-js/dist/sprintf.min.js"; $jsFiles[] = "node_modules/mousetrap/mousetrap.min.js"; - $jsFiles[] = 'node_modules/angular/angular.min.js'; + + $devAngularJs = 'node_modules/angular/angular.js'; + $jsFiles[] = Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devAngularJs) + ? $devAngularJs : 'node_modules/angular/angular.min.js'; + $jsFiles[] = "node_modules/angular-sanitize/angular-sanitize.min.js"; $jsFiles[] = "node_modules/angular-animate/angular-animate.min.js"; $jsFiles[] = "node_modules/angular-cookies/angular-cookies.min.js"; @@ -256,16 +261,11 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "plugins/CoreHome/angularjs/content-table/content-table.directive.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/period-selector/period-selector.directive.js"; $jsFiles[] = "plugins/CoreHome/angularjs/period-selector/period-selector.controller.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js"; - - $jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.directive.js"; - $jsFiles[] = "plugins/CoreHome/angularjs/field-array/field-array.controller.js"; - + // TODO: [Vue] used by RollUpReporting, has to be kept for now. + $jsFiles[] = "plugins/CoreHome/angularjs/siteselector/siteselector-model.service.js"; // we have to load these CoreAdminHome files here. If we loaded them in CoreAdminHome, // there would be JS errors as CoreAdminHome is loaded first. Meaning it is loaded before @@ -284,8 +284,6 @@ class CoreHome extends \Piwik\Plugin $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugin-settings/plugin-settings.controller.js"; $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugin-settings/plugin-settings.directive.js"; $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/form/form.directive.js"; - $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js"; - $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/field/field.directive.js"; $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/save-button/save-button.directive.js"; $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-filter.directive.js"; $jsFiles[] = "plugins/CorePluginsAdmin/angularjs/plugins/plugin-management.directive.js"; diff --git a/plugins/CoreHome/angularjs/field-array/field-array.controller.js b/plugins/CoreHome/angularjs/field-array/field-array.controller.js deleted file mode 100644 index 02aa7a2215..0000000000 --- a/plugins/CoreHome/angularjs/field-array/field-array.controller.js +++ /dev/null @@ -1,71 +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('FieldArrayController', FieldArrayController); - - FieldArrayController.$inject = ['$scope']; - - function FieldArrayController($scope){ - - function getTemplate(field) { - var control = field.uiControl; - if (control === 'password' || control === 'url' || control === 'search' || control === 'email') { - control = 'text'; // we use same template for text and password both - } - - var file = 'field-' + control; - var fieldsSupportingArrays = ['textarea', 'checkbox', 'text']; - if (field.type === 'array' && fieldsSupportingArrays.indexOf(control) !== -1) { - file += '-array'; - } - - return 'plugins/CorePluginsAdmin/angularjs/form-field/' + file + '.html?cb=' + piwik.cacheBuster; - } - - if ($scope.field && !$scope.field.templateFile) { - $scope.field.templateFile = getTemplate($scope.field); - } - - var self = this; - $scope.$watch('formValue', function () { - if (!$scope.formValue || !$scope.formValue.length) { - self.addEntry(); - } else { - self.onEntryChange(); - } - }, true); - - this.onEntryChange = function () { - var hasAny = true; - angular.forEach($scope.formValue, function (entry) { - if (!entry) { - hasAny = false; - } - }); - if (hasAny) { - this.addEntry(); - } - }; - - this.addEntry = function () { - if (angular.isArray($scope.formValue)) { - $scope.formValue.push(''); - } - }; - - this.removeEntry = function (index) { - if (index > -1) { - $scope.formValue.splice(index, 1); - } - }; - - if (!$scope.formValue || !$scope.formValue.length) { - this.addEntry(); - } - } - -})(); diff --git a/plugins/CoreHome/angularjs/field-array/field-array.directive.html b/plugins/CoreHome/angularjs/field-array/field-array.directive.html deleted file mode 100644 index 1ce3fcaecc..0000000000 --- a/plugins/CoreHome/angularjs/field-array/field-array.directive.html +++ /dev/null @@ -1,23 +0,0 @@ -<div class="fieldArray form-group"> - <div ng-repeat="item in formValue track by $index" - class="fieldArrayTable fieldArrayTable{{ $index }} multiple valign-wrapper"> - - <div piwik-field uicontrol="{{ field.uiControl }}" - data-title="{{ field.title }}" - name="{{ name + '-' + $index }}" - full-width="true" - ng-if="field.templateFile" - template-file="{{ field.templateFile }}" - class="fieldUiControl" - ng-model="formValue[$index]" - options="field.availableValues" - ng-change="fieldArray.onEntryChange()" - placeholder=" "> - </div> - - <span ng-click="fieldArray.removeEntry($index)" - title="{{ 'General_Remove'|translate }}" - ng-hide="($index + 1) == (formValue|length)" - class="icon-minus valign"></span> - </div> -</div>
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/field-array/field-array.directive.js b/plugins/CoreHome/angularjs/field-array/field-array.directive.js deleted file mode 100644 index 000f16caa9..0000000000 --- a/plugins/CoreHome/angularjs/field-array/field-array.directive.js +++ /dev/null @@ -1,61 +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 matomo-field-array field=".." ng-model="..."> - */ -(function () { - angular.module('piwikApp').directive('matomoFieldArray', matomoFieldArray); - - matomoFieldArray.$inject = ['$document', 'piwik', '$filter']; - - function matomoFieldArray($document, piwik, $filter){ - return { - restrict: 'A', - scope: { - name: '=', - field: '=' - }, - require: "?ngModel", - templateUrl: 'plugins/CoreHome/angularjs/field-array/field-array.directive.html?cb=' + piwik.cacheBuster, - controller: 'FieldArrayController', - controllerAs: 'fieldArray', - compile: function (element, attrs) { - - return function (scope, element, attrs, ngModel) { - - if (ngModel) { - ngModel.$setViewValue(scope.formValue); - } - - scope.$watch('formValue', function (newValue, oldValue) { - if (newValue != oldValue) { - element.trigger('change', newValue); - } - }, true); - - if (ngModel) { - ngModel.$render = function() { - if (angular.isString(ngModel.$viewValue)) { - scope.formValue = JSON.parse(ngModel.$viewValue); - } else { - scope.formValue = ngModel.$viewValue; - } - }; - } - - scope.$watch('formValue', function (newValue, oldValue) { - if (ngModel) { - ngModel.$setViewValue(newValue); - } - }, true); - }; - } - }; - } -})();
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js b/plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js deleted file mode 100644 index 737bdbf94f..0000000000 --- a/plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js +++ /dev/null @@ -1,129 +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('MultiPairFieldController', MultiPairFieldController); - - MultiPairFieldController.$inject = ['$scope']; - - function MultiPairFieldController($scope){ - - function getTemplate(field) { - var control = field.uiControl; - if (control === 'password' || control === 'url' || control === 'search' || control === 'email') { - control = 'text'; // we use same template for text and password both - } - - var file = 'field-' + control; - var fieldsSupportingArrays = ['textarea', 'checkbox', 'text']; - if (field.type === 'array' && fieldsSupportingArrays.indexOf(control) !== -1) { - file += '-array'; - } - - return 'plugins/CorePluginsAdmin/angularjs/form-field/' + file + '.html?cb=' + piwik.cacheBuster; - } - - if ($scope.field1 && !$scope.field1.templateFile) { - $scope.field1.templateFile = getTemplate($scope.field1); - } - - if ($scope.field2 && !$scope.field2.templateFile) { - $scope.field2.templateFile = getTemplate($scope.field2); - } - - if ($scope.field3 && !$scope.field3.templateFile) { - $scope.field3.templateFile = getTemplate($scope.field3); - } - - if ($scope.field4 && !$scope.field4.templateFile) { - $scope.field4.templateFile = getTemplate($scope.field4); - } - - var self = this; - $scope.$watch('formValue', function () { - if (!$scope.formValue || !$scope.formValue.length) { - self.addEntry(); - } else { - self.onEntryChange(); - } - }, true); - - this.onEntryChange = function () { - var hasAny = true; - angular.forEach($scope.formValue, function (table) { - if (!table) { - hasAny = false; - return; - } - - var fieldCount = 0; - if ($scope.field1 && $scope.field2 && $scope.field3 && $scope.field4) { - fieldCount = 4; - } else if ($scope.field1 && $scope.field2 && $scope.field3) { - fieldCount = 3; - } else if ($scope.field1 && $scope.field2) { - fieldCount = 2; - } else if ($scope.field1) { - fieldCount = 1; - } - table.fieldCount = fieldCount; - - if (fieldCount === 4) { - if (!table[$scope.field1.key] && !table[$scope.field2.key] && !table[$scope.field3.key] && !table[$scope.field4.key]) { - hasAny = false; - } - } else if (fieldCount === 3) { - if (!table[$scope.field1.key] && !table[$scope.field2.key] && !table[$scope.field3.key]) { - hasAny = false; - } - } else if (fieldCount === 2) { - if (!table[$scope.field1.key] && !table[$scope.field2.key]) { - hasAny = false; - } - } else if (fieldCount === 1) { - if (!table[$scope.field1.key]) { - hasAny = false; - } - } - - - }); - if (hasAny) { - this.addEntry(); - } - }; - - this.addEntry = function () { - if (angular.isArray($scope.formValue)) { - var obj = {}; - if ($scope.field1 && $scope.field1.key) { - obj[$scope.field1.key] = ''; - } - if ($scope.field2 && $scope.field2.key) { - obj[$scope.field2.key] = ''; - } - if ($scope.field3 && $scope.field3.key) { - obj[$scope.field3.key] = ''; - } - if ($scope.field4 && $scope.field4.key) { - obj[$scope.field4.key] = ''; - } - $scope.formValue.push(obj); - } - }; - - this.removeEntry = function (index) { - if (index > -1) { - $scope.formValue.splice(index, 1); - } - }; - - if (!$scope.formValue || !$scope.formValue.length) { - this.addEntry(); - } - } - -})(); diff --git a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html b/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html deleted file mode 100644 index a14cc99c36..0000000000 --- a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html +++ /dev/null @@ -1,61 +0,0 @@ -<div class="multiPairField form-group"> - <div ng-repeat="(index, item) in formValue" - class="multiPairFieldTable multiPairFieldTable{{ index }} has{{ item.fieldCount }}Fields multiple valign-wrapper"> - - <div piwik-field uicontrol="{{ field1.uiControl }}" - name="{{ name + '-p1-' + $index }}" - data-title="{{ field1.title }}" - full-width="true" - ng-if="field1.templateFile" - template-file="{{ field1.templateFile }}" - class="fieldUiControl fieldUiControl1" - ng-class="{'hasMultiFields': (field1.templateFile && field2.templateFile)}" - ng-model="formValue[index][field1.key]" - options="field1.availableValues" - ng-change="multiPairField.onEntryChange()" - placeholder=" "> - </div> - - <div piwik-field uicontrol="{{ field2.uiControl }}" - name="{{ name + '-p2-' + $index }}" - data-title="{{ field2.title }}" - full-width="true" - ng-if="field2.templateFile" - class="fieldUiControl fieldUiControl2" - template-file="{{ field2.templateFile }}" - options="field2.availableValues" - ng-change="multiPairField.onEntryChange()" - ng-model="formValue[index][field2.key]" - placeholder=" "> - </div> - - <div piwik-field uicontrol="{{ field3.uiControl }}" - data-title="{{ field3.title }}" - full-width="true" - ng-if="field3.templateFile" - class="fieldUiControl fieldUiControl3" - template-file="{{ field3.templateFile }}" - options="field3.availableValues" - ng-change="multiPairField.onEntryChange()" - ng-model="formValue[index][field3.key]" - placeholder=" "> - </div> - - <div piwik-field uicontrol="{{ field4.uiControl }}" - data-title="{{ field4.title }}" - full-width="true" - ng-if="field4.templateFile" - class="fieldUiControl fieldUiControl4" - template-file="{{ field4.templateFile }}" - options="field4.availableValues" - ng-change="multiPairField.onEntryChange()" - ng-model="formValue[index][field4.key]" - placeholder=" "> - </div> - - <span ng-click="multiPairField.removeEntry(index)" - title="{{ 'General_Remove'|translate }}" - ng-hide="(index + 1) == (formValue|length)" - class="icon-minus valign"></span> - </div> -</div>
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js b/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js deleted file mode 100644 index d877c05609..0000000000 --- a/plugins/CoreHome/angularjs/multipairfield/multipairfield.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 matomo-multi-pair-field field1=".." field2="" ng-model="..."> - */ -(function () { - angular.module('piwikApp').directive('matomoMultiPairField', matomoMultiPairField); - - matomoMultiPairField.$inject = ['$document', 'piwik', '$filter']; - - function matomoMultiPairField($document, piwik, $filter){ - return { - restrict: 'A', - scope: { - name: '=', - field1: '=', - field2: '=', - field3: '=', - field4: '=' - }, - require: "?ngModel", - templateUrl: 'plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html?cb=' + piwik.cacheBuster, - controller: 'MultiPairFieldController', - controllerAs: 'multiPairField', - compile: function (element, attrs) { - - return function (scope, element, attrs, ngModel) { - - if (ngModel) { - ngModel.$setViewValue(scope.formValue); - } - - scope.$watch('formValue', function (newValue, oldValue) { - if (newValue != oldValue) { - element.trigger('change', newValue); - } - }, true); - - if (ngModel) { - ngModel.$render = function() { - if (angular.isString(ngModel.$viewValue)) { - scope.formValue = JSON.parse(ngModel.$viewValue); - } else { - scope.formValue = ngModel.$viewValue; - } - }; - } - - scope.$watch('formValue', function (newValue, oldValue) { - if (ngModel) { - ngModel.$setViewValue(newValue); - } - }, true); - }; - } - }; - } -})();
\ No newline at end of file diff --git a/plugins/CoreHome/angularjs/report-export/reportexport.directive.js b/plugins/CoreHome/angularjs/report-export/reportexport.directive.js index a0edb62b11..2967c90ab4 100644 --- a/plugins/CoreHome/angularjs/report-export/reportexport.directive.js +++ b/plugins/CoreHome/angularjs/report-export/reportexport.directive.js @@ -45,7 +45,7 @@ } var method = scope.apiMethod; - var limit = scope.reportLimitAll == 'yes' ? -1 : scope.reportLimit; + var limit = scope.reportLimitAll == 'yes' ? -1 : scope.limitContainer.reportLimit; var type = scope.reportType; var params = scope.requestParams; @@ -222,6 +222,9 @@ reportLimit = Math.min(reportLimit, scope.maxFilterLimit); } scope.reportLimit = reportLimit > 0 ? reportLimit : 100; + // ng-model seems to have trouble setting $parent.reportLimit, so this was changed + // to use a property in a new object, limitContainer. it works. i'm not sure why. + scope.limitContainer = { reportLimit: reportLimit }; scope.reportLimitAll = reportLimit == -1 ? 'yes' : 'no'; scope.optionFlat = dataTable.param.flat === true || dataTable.param.flat === 1 || dataTable.param.flat === "1"; scope.optionExpanded = true; @@ -253,7 +256,7 @@ if (scope.maxFilterLimit > 0) { scope.$watch('reportLimit', function (newVal, oldVal) { if (parseInt(newVal, 10) > parseInt(scope.maxFilterLimit, 10)) { - scope.reportLimit = oldVal; + scope.limitContainer.reportLimit = oldVal; } }, true); } diff --git a/plugins/CoreHome/angularjs/report-export/reportexport.popover.html b/plugins/CoreHome/angularjs/report-export/reportexport.popover.html index f206424602..24bbf7065f 100644 --- a/plugins/CoreHome/angularjs/report-export/reportexport.popover.html +++ b/plugins/CoreHome/angularjs/report-export/reportexport.popover.html @@ -38,24 +38,27 @@ data-title="{{ 'CoreHome_RowLimit'|translate }}" ng-model="$parent.reportLimitAll" ng-hide="maxFilterLimit > 0" - full-width="false" + full-width="true" options="limitAllOptions"> </div> + <div piwik-field uicontrol="number" name="filter_limit" min="1" - ng-model="$parent.reportLimit" - full-width="false" - ng-show="$parent.reportLimitAll == 'no' && maxFilterLimit <= 0"> + ng-model="limitContainer.reportLimit" + value="{{ $parent.reportLimit }}" + full-width="true" + ng-if="$parent.reportLimitAll == 'no' && maxFilterLimit <= 0"> </div> <div piwik-field uicontrol="number" name="filter_limit" min="1" - max="{{ scope.reportLimit }}" - ng-model="$parent.reportLimit" + max="{{ scope.maxFilterLimit }}" + ng-model="limitContainer.reportLimit" + value="{{ $parent.reportLimit }}" ng-keypress="scope.checkNumberForLimit" - full-width="false" + full-width="true" data-title="{{ 'CoreHome_RowLimit'|translate }} ({{ 'General_ComputedMetricMax'|translate:maxFilterLimit }})" - ng-show="$parent.reportLimitAll == 'no' && maxFilterLimit > 0"> + ng-if="$parent.reportLimitAll == 'no' && maxFilterLimit > 0"> </div> </div> </div> diff --git a/plugins/CoreHome/angularjs/siteselector/siteselector-model.service.js b/plugins/CoreHome/angularjs/siteselector/siteselector-model.service.js new file mode 100644 index 0000000000..eb10cd4235 --- /dev/null +++ b/plugins/CoreHome/angularjs/siteselector/siteselector-model.service.js @@ -0,0 +1,140 @@ +/*! + * 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('siteSelectorModel', siteSelectorModel); + + siteSelectorModel.$inject = ['piwikApi', '$filter', 'piwik', '$q']; + + /** + * @deprecated kept for angularjs code that uses it. + */ + function siteSelectorModel(piwikApi, $filter, piwik, $q) { + + var initialSites = null; + var limitPromise = null; + + var model = { + sites : [], + hasMultipleWebsites : false, + isLoading : false, + firstSiteName : '', + onlySitesWithAdminAccess: false, + updateWebsitesList: updateWebsitesList, + searchSite: searchSite, + loadSite: loadSite, + loadInitialSites: loadInitialSites, + hasMultipleSites: hasMultipleSites + }; + + return model; + + function updateWebsitesList(sites) { + + if (!sites || !sites.length) { + model.sites = []; + return []; + } + + angular.forEach(sites, function (site) { + if (site.group) site.name = '[' + site.group + '] ' + site.name; + }); + + model.sites = sortSites(sites); + + if (!model.firstSiteName) { + model.firstSiteName = model.sites[0].name; + } + + model.hasMultipleWebsites = model.hasMultipleWebsites || sites.length > 1; + + return model.sites; + } + + function searchSite(term) { + + if (!term) { + loadInitialSites(); + return; + } + + if (model.isLoading) { + if (model.currentRequest) { + model.currentRequest.abort(); + } else if (limitPromise) { + limitPromise.abort(); + limitPromise = null; + } + } + + model.isLoading = true; + + if (!limitPromise) { + limitPromise = piwikApi.fetch({method: 'SitesManager.getNumWebsitesToDisplayPerPage'}); + } + + return limitPromise.then(function (response) { + var limit = response.value; + + var methodToCall = 'SitesManager.getPatternMatchSites'; + if (model.onlySitesWithAdminAccess) { + methodToCall = 'SitesManager.getSitesWithAdminAccess'; + } + + model.currentRequest = piwikApi.fetch({ + method: methodToCall, + limit: limit, + pattern: term + }); + + return model.currentRequest; + }).then(function (response) { + if (angular.isDefined(response)) { + return updateWebsitesList(response); + } + }).finally(function () { + model.isLoading = false; + model.currentRequest = null; + }); + } + + function loadSite(idsite) { + if (idsite == 'all') { + document.location.href = piwikHelper.getCurrentQueryStringWithParametersModified(piwikHelper.getQueryStringFromParameters({ + module: 'MultiSites', + action: 'index', + date: piwik.currentDateString, + period: piwik.period + })); + } else { + piwik.broadcast.propagateNewPage('segment=&idSite=' + idsite, false); + } + } + + function sortSites(websites) + { + return $filter('orderBy')(websites, '+name'); + } + + function loadInitialSites() { + if (initialSites) { + model.sites = initialSites; + var deferred = $q.defer(); + deferred.resolve(); + return deferred.promise; + } + + return searchSite('%').then(function () { + initialSites = model.sites; + model.isInitialized = true + }); + } + + function hasMultipleSites() { + return initialSites && initialSites.length > 1; + } + } +})(); diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js index 190b5027e1..6284561570 100644 --- a/plugins/CoreHome/vue/dist/CoreHome.umd.js +++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js @@ -130,6 +130,9 @@ __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "debounce", function() { return /* reexport */ debounce; }); __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; }); +__webpack_require__.d(__webpack_exports__, "removeAngularJsSpecificProperties", function() { return /* reexport */ removeAngularJsSpecificProperties; }); __webpack_require__.d(__webpack_exports__, "activityIndicatorAdapter", function() { return /* reexport */ ActivityIndicator_adapter; }); __webpack_require__.d(__webpack_exports__, "ActivityIndicator", function() { return /* reexport */ ActivityIndicator; }); __webpack_require__.d(__webpack_exports__, "translate", function() { return /* reexport */ translate; }); @@ -168,6 +171,8 @@ __webpack_require__.d(__webpack_exports__, "NotificationGroup", function() { ret __webpack_require__.d(__webpack_exports__, "NotificationsStore", function() { return /* reexport */ Notifications_store; }); __webpack_require__.d(__webpack_exports__, "SiteSelector", function() { return /* reexport */ SiteSelector; }); __webpack_require__.d(__webpack_exports__, "QuickAccess", function() { return /* reexport */ QuickAccess; }); +__webpack_require__.d(__webpack_exports__, "FieldArray", function() { return /* reexport */ FieldArray; }); +__webpack_require__.d(__webpack_exports__, "MultiPairField", function() { return /* reexport */ MultiPairField; }); // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js // This file is imported into lib/wc client bundles. @@ -396,7 +401,7 @@ function translate(translationStringId) { var pkArgs = values; // handle variadic args AND single array of values (to match _pk_translate signature) - if (values.length === 1 && values[0] && values[0] instanceof Array) { + if (values.length === 1 && values[0] && Array.isArray(values[0])) { pkArgs = values[0]; } @@ -2464,6 +2469,8 @@ function createAngularJsAdapter_iterableToArrayLimit(arr, i) { var _i = arr == n function createAngularJsAdapter_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + /*! * Matomo - free/libre analytics platform * @@ -2486,6 +2493,15 @@ function toAngularJsCamelCase(arg) { }); } +function removeAngularJsSpecificProperties(newValue) { + if (_typeof(newValue) === 'object' && newValue !== null && Object.getPrototypeOf(newValue) === Object.prototype) { + return Object.fromEntries(Object.entries(newValue).filter(function (pair) { + return !/^\$/.test(pair[0]); + })); + } + + return newValue; +} function createAngularJsAdapter(options) { var component = options.component, require = options.require, @@ -2500,7 +2516,8 @@ function createAngularJsAdapter(options) { postCreate = options.postCreate, noScope = options.noScope, _options$restrict = options.restrict, - restrict = _options$restrict === void 0 ? 'A' : _options$restrict; + restrict = _options$restrict === void 0 ? 'A' : _options$restrict, + priority = options.priority; var currentTranscludeCounter = transcludeCounter; if (transclude) { @@ -2530,6 +2547,7 @@ function createAngularJsAdapter(options) { var adapter = { restrict: restrict, require: require, + priority: priority, scope: noScope ? undefined : angularJsScope, compile: function angularJsAdapterCompile() { return { @@ -2541,7 +2559,7 @@ function createAngularJsAdapter(options) { var _info = createAngularJsAdapter_slicedToArray(info, 1), eventName = _info[0]; - rootVueTemplate += " @".concat(eventName, "=\"onEventHandler('").concat(eventName, "', $event)\""); + rootVueTemplate += " @".concat(toKebabCase(eventName), "=\"onEventHandler('").concat(eventName, "', $event)\""); }); Object.entries(scope).forEach(function (_ref3) { var _ref4 = createAngularJsAdapter_slicedToArray(_ref3, 2), @@ -2556,7 +2574,7 @@ function createAngularJsAdapter(options) { rootVueTemplate += " @".concat(eventName, "=\"onEventHandler('").concat(eventName, "', $event)\""); } } else { - rootVueTemplate += " :".concat(info.vue, "=\"").concat(info.vue, "\""); + rootVueTemplate += " :".concat(toKebabCase(info.vue), "=\"").concat(info.vue, "\""); } }); rootVueTemplate += '>'; @@ -2570,20 +2588,22 @@ function createAngularJsAdapter(options) { var app = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createApp"])({ template: rootVueTemplate, data: function data() { + var _this = this; + var initialData = {}; Object.entries(scope).forEach(function (_ref5) { var _ref6 = createAngularJsAdapter_slicedToArray(_ref5, 2), scopeVarName = _ref6[0], info = _ref6[1]; - var value = ngScope[scopeVarName]; + var value = removeAngularJsSpecificProperties(ngScope[scopeVarName]); if (typeof value === 'undefined' && typeof info.default !== 'undefined') { value = info.default instanceof Function ? info.default.apply(info, [ngScope, ngElement, ngAttrs].concat(injectedServices)) : info.default; } if (info.transform) { - value = info.transform(value); + value = info.transform.apply(info, [value, _this, ngScope, ngElement, ngAttrs, ngController].concat(injectedServices)); } initialData[info.vue] = value; @@ -2631,17 +2651,17 @@ function createAngularJsAdapter(options) { } ngScope.$watch(scopeVarName, function (newValue) { - var newValueFinal = newValue; + var newValueFinal = removeAngularJsSpecificProperties(newValue); if (typeof info.default !== 'undefined' && typeof newValue === 'undefined') { newValueFinal = info.default instanceof Function ? info.default.apply(info, [ngScope, ngElement, ngAttrs].concat(injectedServices)) : info.default; } if (info.transform) { - newValueFinal = info.transform(newValueFinal); + newValueFinal = info.transform.apply(info, [newValueFinal, vm, ngScope, ngElement, ngAttrs, ngController].concat(injectedServices)); } - vm[scopeVarName] = newValueFinal; + vm[info.vue] = newValueFinal; }); }); @@ -2673,6 +2693,28 @@ function createAngularJsAdapter(options) { angular.module('piwikApp').directive(directiveName, angularJsAdapter); return angularJsAdapter; } +function transformAngularJsBoolAttr(v) { + if (typeof v === 'undefined') { + return undefined; + } + + if (v === 'true') { + return true; + } + + return !!v && v > 0 && v !== '0'; +} +function transformAngularJsIntAttr(v) { + if (typeof v === 'undefined') { + return undefined; + } + + if (v === null) { + return null; + } + + return parseInt(v, 10); +} // CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.adapter.ts /*! * Matomo - free/libre analytics platform @@ -2720,7 +2762,7 @@ function createAngularJsAdapter(options) { }, 0); } }, - close: function close($event, scope, element, attrs) { + close: function close($event, vm, scope, element, attrs) { if (attrs.close) { scope.$eval(attrs.close); setTimeout(function () { @@ -2751,9 +2793,9 @@ function createAngularJsAdapter(options) { }, noScope: true })); -// 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/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=40f81493 +// 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/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=4d7ed3a3 -var EnrichedHeadlinevue_type_template_id_40f81493_hoisted_1 = { +var EnrichedHeadlinevue_type_template_id_4d7ed3a3_hoisted_1 = { key: 0, class: "title", tabindex: "6" @@ -2784,7 +2826,7 @@ var _hoisted_11 = { }; var _hoisted_12 = ["innerHTML"]; var _hoisted_13 = ["href"]; -function EnrichedHeadlinevue_type_template_id_40f81493_render(_ctx, _cache, $props, $setup, $data, $options) { +function EnrichedHeadlinevue_type_template_id_4d7ed3a3_render(_ctx, _cache, $props, $setup, $data, $options) { var _component_RateFeature = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("RateFeature"); return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", { @@ -2796,7 +2838,7 @@ function EnrichedHeadlinevue_type_template_id_40f81493_render(_ctx, _cache, $pro return _ctx.showIcons = false; }), ref: "root" - }, [!_ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EnrichedHeadlinevue_type_template_id_40f81493_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", { + }, [!_ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EnrichedHeadlinevue_type_template_id_4d7ed3a3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", { key: 1, class: "title", href: _ctx.editUrl, @@ -2829,32 +2871,37 @@ function EnrichedHeadlinevue_type_template_id_40f81493_render(_ctx, _cache, $pro href: _ctx.helpUrl }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_MoreDetails')), 9, _hoisted_13)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showInlineHelp]])], 544); } -// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=40f81493 +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=4d7ed3a3 +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/useExternalPluginComponent.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 useExternalPluginComponent(plugin, component) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineAsyncComponent"])(function () { + return new Promise(function (resolve) { + window.$(document).ready(function () { + if (window[plugin]) { + resolve(window[plugin][component]); + } else { + resolve(null); // plugin not loaded + } + }); + }); + }); +} // CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/EnrichedHeadline/EnrichedHeadline.vue?vue&type=script&lang=ts + // working around a cycle in dependencies (CoreHome depends on Feedback, Feedback depends on // CoreHome) -// TODO: may need a generic solution at some point, but it's bad practice to have -// cyclic dependencies like this. it worked before because it was individual files -// dependening on each other, not whole plugins. -var RateFeature = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineAsyncComponent"])(function () { - return new Promise(function (resolve) { - window.$(document).ready(function () { - var _window = window, - Feedback = _window.Feedback; // eslint-disable-line - - if (Feedback) { - resolve(Feedback.RateFeature); - } else { - // feedback plugin not loaded - resolve(null); - } - }); - }); -}); +var RateFeature = useExternalPluginComponent('Feedback', 'RateFeature'); /** * Usage: * @@ -2971,7 +3018,7 @@ var RateFeature = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineAs -EnrichedHeadlinevue_type_script_lang_ts.render = EnrichedHeadlinevue_type_template_id_40f81493_render +EnrichedHeadlinevue_type_script_lang_ts.render = EnrichedHeadlinevue_type_template_id_4d7ed3a3_render /* harmony default export */ var EnrichedHeadline = (EnrichedHeadlinevue_type_script_lang_ts); // CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.adapter.ts @@ -3261,7 +3308,7 @@ function wrapArray(values) { return []; } - return values instanceof Array ? values : [values]; + return Array.isArray(values) ? values : [values]; } var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () { @@ -4836,34 +4883,34 @@ PeriodDatePickervue_type_script_lang_ts.render = PeriodDatePickervue_type_templa directiveName: 'piwikPeriodDatePicker', restrict: 'E' })); -// 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/SiteSelector/SiteSelector.vue?vue&type=template&id=13a2e0c0 +// 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/SiteSelector/SiteSelector.vue?vue&type=template&id=f4155c00 -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_1 = ["value", "name"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_2 = ["title"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_3 = ["textContent"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_4 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_1 = ["value", "name"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_2 = ["title"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_3 = ["textContent"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_4 = { key: 1, class: "placeholder" }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_5 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_5 = { class: "dropdown" }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_6 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_6 = { class: "custom_select_search" }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_7 = ["placeholder"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_8 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_7 = ["placeholder"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_8 = { key: 0 }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_9 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_9 = { class: "custom_select_container" }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_10 = ["onClick"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_11 = ["innerHTML", "href", "title"]; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_12 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_10 = ["onClick"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_11 = ["innerHTML", "href", "title"]; +var SiteSelectorvue_type_template_id_f4155c00_hoisted_12 = { class: "ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all\n siteSelect" }; -var SiteSelectorvue_type_template_id_13a2e0c0_hoisted_13 = { +var SiteSelectorvue_type_template_id_f4155c00_hoisted_13 = { class: "ui-menu-item" }; var _hoisted_14 = { @@ -4873,8 +4920,8 @@ var _hoisted_14 = { var _hoisted_15 = { key: 1 }; -function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, $setup, $data, $options) { - var _ctx$selectedSite, _ctx$selectedSite2, _ctx$selectedSite3, _ctx$selectedSite4; +function SiteSelectorvue_type_template_id_f4155c00_render(_ctx, _cache, $props, $setup, $data, $options) { + var _ctx$modelValue, _ctx$modelValue2, _ctx$modelValue3, _ctx$modelValue4; var _component_AllSitesLink = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("AllSitesLink"); @@ -4890,9 +4937,9 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, }, [_ctx.name ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("input", { key: 0, type: "hidden", - value: (_ctx$selectedSite = _ctx.selectedSite) === null || _ctx$selectedSite === void 0 ? void 0 : _ctx$selectedSite.id, + value: (_ctx$modelValue = _ctx.modelValue) === null || _ctx$modelValue === void 0 ? void 0 : _ctx$modelValue.id, name: _ctx.name - }, null, 8, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", { + }, null, 8, SiteSelectorvue_type_template_id_f4155c00_hoisted_1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", { ref: "selectorLink", onClick: _cache[0] || (_cache[0] = function () { return _ctx.onClickSelector && _ctx.onClickSelector.apply(_ctx, arguments); @@ -4911,10 +4958,10 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, 'iconHidden': _ctx.isLoading, 'collapsed': !_ctx.showSitesList }]) - }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [(_ctx$selectedSite2 = _ctx.selectedSite) !== null && _ctx$selectedSite2 !== void 0 && _ctx$selectedSite2.name || !_ctx.placeholder ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", { + }, null, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [(_ctx$modelValue2 = _ctx.modelValue) !== null && _ctx$modelValue2 !== void 0 && _ctx$modelValue2.name || !_ctx.placeholder ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", { key: 0, - textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(((_ctx$selectedSite3 = _ctx.selectedSite) === null || _ctx$selectedSite3 === void 0 ? void 0 : _ctx$selectedSite3.name) || _ctx.firstSiteName) - }, null, 8, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_3)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !((_ctx$selectedSite4 = _ctx.selectedSite) !== null && _ctx$selectedSite4 !== void 0 && _ctx$selectedSite4.name) && _ctx.placeholder ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.placeholder), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 42, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(((_ctx$modelValue3 = _ctx.modelValue) === null || _ctx$modelValue3 === void 0 ? void 0 : _ctx$modelValue3.name) || _ctx.firstSiteName) + }, null, 8, SiteSelectorvue_type_template_id_f4155c00_hoisted_3)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !((_ctx$modelValue4 = _ctx.modelValue) !== null && _ctx$modelValue4 !== void 0 && _ctx$modelValue4.name) && _ctx.placeholder ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", SiteSelectorvue_type_template_id_f4155c00_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.placeholder), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 42, SiteSelectorvue_type_template_id_f4155c00_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_f4155c00_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_f4155c00_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { type: "text", onClick: _cache[2] || (_cache[2] = function ($event) { _ctx.searchTerm = ''; @@ -4927,7 +4974,7 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, tabindex: "4", class: "websiteSearch inp browser-default", placeholder: _ctx.translate('General_Search') - }, null, 8, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_7), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.shouldFocusOnSearch]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", { + }, null, 8, SiteSelectorvue_type_template_id_f4155c00_hoisted_7), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.shouldFocusOnSearch]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", { title: "Clear", onClick: _cache[4] || (_cache[4] = function ($event) { _ctx.searchTerm = ''; @@ -4936,23 +4983,23 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, }), class: "reset", src: "plugins/CoreHome/images/reset_search.png" - }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.autocompleteMinSites <= _ctx.sites.length || _ctx.searchTerm]]), _ctx.allSitesLocation === 'top' && _ctx.showAllSitesItem ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_AllSitesLink, { + }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.autocompleteMinSites <= _ctx.sites.length || _ctx.searchTerm]]), _ctx.allSitesLocation === 'top' && _ctx.showAllSitesItem ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", SiteSelectorvue_type_template_id_f4155c00_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_AllSitesLink, { href: _ctx.urlAllSites, "all-sites-text": _ctx.allSitesText, onClick: _cache[5] || (_cache[5] = function ($event) { return _ctx.onAllSitesClick($event); }) - }, null, 8, ["href", "all-sites-text"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", { + }, null, 8, ["href", "all-sites-text"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SiteSelectorvue_type_template_id_f4155c00_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", { class: "custom_select_ul_list", onClick: _cache[7] || (_cache[7] = function ($event) { return _ctx.showSitesList = false; }) - }, [(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 (site) { + }, [(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 (site, index) { 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"])("li", { onClick: function onClick($event) { return _ctx.switchSite(site, $event); }, - key: site.idsite + key: index }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", { onClick: _cache[6] || (_cache[6] = function ($event) { return $event.preventDefault(); @@ -4961,8 +5008,8 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, tabindex: "4", href: _ctx.getUrlForSiteId(site.idsite), title: site.name - }, null, 8, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_11)], 8, SiteSelectorvue_type_template_id_13a2e0c0_hoisted_10)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(!_ctx.showSelectedSite && _ctx.activeSiteId === site.idsite)]]); - }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", SiteSelectorvue_type_template_id_13a2e0c0_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_NotFound') + ' ' + _ctx.searchTerm), 1)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.sites.length && _ctx.searchTerm]])]), _ctx.allSitesLocation === 'bottom' && _ctx.showAllSitesItem ? (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_["createVNode"])(_component_AllSitesLink, { + }, null, 8, SiteSelectorvue_type_template_id_f4155c00_hoisted_11)], 8, SiteSelectorvue_type_template_id_f4155c00_hoisted_10)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(!_ctx.showSelectedSite && _ctx.activeSiteId === site.idsite)]]); + }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", SiteSelectorvue_type_template_id_f4155c00_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", SiteSelectorvue_type_template_id_f4155c00_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_NotFound') + ' ' + _ctx.searchTerm), 1)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.sites.length && _ctx.searchTerm]])]), _ctx.allSitesLocation === 'bottom' && _ctx.showAllSitesItem ? (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_["createVNode"])(_component_AllSitesLink, { href: _ctx.urlAllSites, "all-sites-text": _ctx.allSitesText, onClick: _cache[8] || (_cache[8] = function ($event) { @@ -4972,7 +5019,7 @@ function SiteSelectorvue_type_template_id_13a2e0c0_render(_ctx, _cache, $props, blur: _ctx.onBlur }]]); } -// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue?vue&type=template&id=13a2e0c0 +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue?vue&type=template&id=f4155c00 // 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/SiteSelector/AllSitesLink.vue?vue&type=template&id=45607d28 @@ -5253,12 +5300,6 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i watch: { searchTerm: function searchTerm() { this.onSearchTermChanged(); - }, - modelValue: { - handler: function handler(newValue) { - this.selectedSite = SiteSelectorvue_type_script_lang_ts_objectSpread({}, newValue); - }, - deep: true } }, data: function data() { @@ -5268,7 +5309,7 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i showSitesList: false, isLoading: false, sites: [], - selectedSite: { + selectedSite: this.modelValue || { id: Matomo_Matomo.idSite, name: Matomo_Matomo.helper.htmlDecode(Matomo_Matomo.siteName) }, @@ -5280,13 +5321,11 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i window.initTopControls(); this.loadInitialSites().then(function () { - if ((!_this.selectedSite || !_this.selectedSite.id) && _this.sites[0]) { - _this.selectedSite = { + if ((!_this.modelValue || !_this.modelValue.id) && _this.sites[0]) { + _this.$emit('update:modelValue', { id: _this.sites[0].idsite, name: _this.sites[0].name - }; - - _this.$emit('update:modelValue', SiteSelectorvue_type_script_lang_ts_objectSpread({}, _this.selectedSite)); + }); } }); var shortcutTitle = translate('CoreHome_ShortcutWebsiteSelector'); @@ -5311,9 +5350,9 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i return this.showSitesList && this.autocompleteMinSites <= this.sites.length || this.searchTerm; }, selectorLinkTitle: function selectorLinkTitle() { - var _this$selectedSite; + var _this$modelValue; - return this.hasMultipleSites ? translate('CoreHome_ChangeCurrentWebsite', ((_this$selectedSite = this.selectedSite) === null || _this$selectedSite === void 0 ? void 0 : _this$selectedSite.name) || this.firstSiteName) : ''; + return this.hasMultipleSites ? translate('CoreHome_ChangeCurrentWebsite', ((_this$modelValue = this.modelValue) === null || _this$modelValue === void 0 ? void 0 : _this$modelValue.name) || this.firstSiteName) : ''; }, hasMultipleSites: function hasMultipleSites() { return SiteSelector_SitesStore.initialSites.value && SiteSelector_SitesStore.initialSites.value.length > 1; @@ -5360,11 +5399,10 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i return; } - this.selectedSite = { + this.$emit('update:modelValue', { id: site.idsite, name: site.name - }; - this.$emit('update:modelValue', SiteSelectorvue_type_script_lang_ts_objectSpread({}, this.selectedSite)); + }); if (!this.switchSiteOnSelect || this.activeSiteId === site.idsite) { return; @@ -5451,7 +5489,7 @@ function SiteSelectorvue_type_script_lang_ts_defineProperty(obj, key, value) { i -SiteSelectorvue_type_script_lang_ts.render = SiteSelectorvue_type_template_id_13a2e0c0_render +SiteSelectorvue_type_script_lang_ts.render = SiteSelectorvue_type_template_id_f4155c00_render /* harmony default export */ var SiteSelector = (SiteSelectorvue_type_script_lang_ts); // CONCATENATED MODULE: ./plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts @@ -5470,6 +5508,7 @@ function SiteSelector_adapter_defineProperty(obj, key, value) { if (key in obj) + /* harmony default export */ var SiteSelector_adapter = (createAngularJsAdapter({ component: SiteSelector, require: '?ngModel', @@ -5503,14 +5542,22 @@ function SiteSelector_adapter_defineProperty(obj, key, value) { if (key in obj) $inject: ['$timeout'], directiveName: 'piwikSiteselector', events: { - 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel) { + 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel, $timeout) { if (newValue && !vm.modelValue || !newValue && vm.modelValue || newValue.id !== vm.modelValue.id) { - element.attr('siteid', newValue.id); - element.trigger('change', newValue); + $timeout(function () { + scope.value = newValue; + element.attr('siteid', newValue.id); + element.trigger('change', newValue); + + if (ngModel // the original site selector did not initiate an ngModel change when initializing its + // internal selectedSite state. mimicking that behavior here for BC. + && (scope.isNotFirstModelChange || vm.modelValue)) { + ngModel.$setViewValue(newValue); + ngModel.$render(); // not called automatically by the digest + } - if (ngModel) { - ngModel.$setViewValue(newValue); - } + scope.isNotFirstModelChange = true; + }); } }, blur: function blur(event, vm, scope) { @@ -5520,17 +5567,26 @@ function SiteSelector_adapter_defineProperty(obj, key, value) { if (key in obj) } }, postCreate: function postCreate(vm, scope, element, attrs, controller, $timeout) { - var ngModel = controller; // setup ng-model mapping + var ngModel = controller; + scope.$watch('value', function (newVal) { + if (newVal !== vm.modelValue) { + vm.modelValue = newVal; + } + }); // setup ng-model mapping if (ngModel) { - ngModel.$setViewValue(vm.modelValue); + if (vm.modelValue) { + ngModel.$setViewValue(vm.modelValue); + } ngModel.$render = function () { - if (angular.isString(ngModel.$viewValue)) { - vm.modelValue = JSON.parse(ngModel.$viewValue); - } else { - vm.modelValue = ngModel.$viewValue; - } + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }); }; } @@ -6056,6 +6112,455 @@ QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_d1e0 } } })); +// 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/FieldArray/FieldArray.vue?vue&type=template&id=3f52d214 +function FieldArrayvue_type_template_id_3f52d214_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; } + + +var FieldArrayvue_type_template_id_3f52d214_hoisted_1 = { + class: "fieldArray form-group" +}; +var FieldArrayvue_type_template_id_3f52d214_hoisted_2 = { + key: 0, + class: "fieldUiControl" +}; +var FieldArrayvue_type_template_id_3f52d214_hoisted_3 = ["onClick", "title"]; +function FieldArrayvue_type_template_id_3f52d214_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field"); + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldArrayvue_type_template_id_3f52d214_hoisted_1, [(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.modelValue, function (item, 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"])(["fieldArrayTable multiple valign-wrapper", FieldArrayvue_type_template_id_3f52d214_defineProperty({}, "fieldArrayTable".concat(index), true)]), + key: index + }, [_ctx.field.uiControl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldArrayvue_type_template_id_3f52d214_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, { + "full-width": true, + "model-value": item, + options: _ctx.field.availableValues, + "onUpdate:modelValue": function onUpdateModelValue($event) { + return _ctx.onEntryChange($event, index); + }, + placeholder: ' ', + uicontrol: _ctx.field.uiControl, + title: _ctx.field.title, + name: "".concat(_ctx.name, "-").concat(index) + }, null, 8, ["model-value", "options", "onUpdate:modelValue", "uicontrol", "title", "name"])])) : 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"])("span", { + onClick: function onClick($event) { + return _ctx.removeEntry(index); + }, + class: "icon-minus valign", + title: _ctx.translate('General_Remove') + }, null, 8, FieldArrayvue_type_template_id_3f52d214_hoisted_3), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2); + }), 128))]); +} +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.vue?vue&type=template&id=3f52d214 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldArray/FieldArray.vue?vue&type=script&lang=ts +function FieldArrayvue_type_script_lang_ts_toConsumableArray(arr) { return FieldArrayvue_type_script_lang_ts_arrayWithoutHoles(arr) || FieldArrayvue_type_script_lang_ts_iterableToArray(arr) || FieldArrayvue_type_script_lang_ts_unsupportedIterableToArray(arr) || FieldArrayvue_type_script_lang_ts_nonIterableSpread(); } + +function FieldArrayvue_type_script_lang_ts_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 FieldArrayvue_type_script_lang_ts_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return FieldArrayvue_type_script_lang_ts_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 FieldArrayvue_type_script_lang_ts_arrayLikeToArray(o, minLen); } + +function FieldArrayvue_type_script_lang_ts_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function FieldArrayvue_type_script_lang_ts_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return FieldArrayvue_type_script_lang_ts_arrayLikeToArray(arr); } + +function FieldArrayvue_type_script_lang_ts_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; } + + + // async since this is a a recursive component + +var Field = useExternalPluginComponent('CorePluginsAdmin', 'Field'); +/* harmony default export */ var FieldArrayvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: Array, + name: String, + field: Object + }, + components: { + Field: Field + }, + emits: ['update:modelValue'], + watch: { + modelValue: function modelValue(newValue) { + this.checkEmptyModelValue(newValue); + } + }, + mounted: function mounted() { + this.checkEmptyModelValue(this.modelValue); + }, + methods: { + checkEmptyModelValue: function checkEmptyModelValue(newValue) { + // make sure there is always an empty new value + if (!newValue || !newValue.length || newValue.slice(-1)[0] !== '') { + this.$emit('update:modelValue', [].concat(FieldArrayvue_type_script_lang_ts_toConsumableArray(newValue || []), [''])); + } + }, + onEntryChange: function onEntryChange(newValue, index) { + var newArrayValue = FieldArrayvue_type_script_lang_ts_toConsumableArray(this.modelValue); + + newArrayValue[index] = newValue; + this.$emit('update:modelValue', newArrayValue); + }, + removeEntry: function removeEntry(index) { + if (index > -1) { + var newValue = this.modelValue.filter(function (x, i) { + return i !== index; + }); + this.$emit('update:modelValue', newValue); + } + } + } +})); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.vue + + + +FieldArrayvue_type_script_lang_ts.render = FieldArrayvue_type_template_id_3f52d214_render + +/* harmony default export */ var FieldArray = (FieldArrayvue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.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 FieldArray_adapter = (createAngularJsAdapter({ + component: FieldArray, + require: '?ngModel', + scope: { + name: { + angularJsBind: '=' + }, + field: { + angularJsBind: '=' + } + }, + directiveName: 'matomoFieldArray', + events: { + 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel) { + if (newValue !== vm.modelValue) { + element.trigger('change', newValue); + + if (ngModel) { + ngModel.$setViewValue(newValue); + } + } + } + }, + postCreate: function postCreate(vm, scope, element, attrs, controller) { + var ngModel = controller; // setup ng-model mapping + + if (ngModel) { + ngModel.$setViewValue(vm.modelValue); + + ngModel.$render = function () { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }; + } + } +})); +// 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/MultiPairField/MultiPairField.vue?vue&type=template&id=2fb01c36 +function MultiPairFieldvue_type_template_id_2fb01c36_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; } + + +var MultiPairFieldvue_type_template_id_2fb01c36_hoisted_1 = { + class: "multiPairField form-group" +}; +var MultiPairFieldvue_type_template_id_2fb01c36_hoisted_2 = { + key: 1, + class: "fieldUiControl fieldUiControl2" +}; +var MultiPairFieldvue_type_template_id_2fb01c36_hoisted_3 = { + key: 2, + class: "fieldUiControl fieldUiControl3" +}; +var MultiPairFieldvue_type_template_id_2fb01c36_hoisted_4 = { + key: 3, + class: "fieldUiControl fieldUiControl4" +}; +var MultiPairFieldvue_type_template_id_2fb01c36_hoisted_5 = ["onClick", "title"]; +function MultiPairFieldvue_type_template_id_2fb01c36_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field"); + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_2fb01c36_hoisted_1, [(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.modelValue, function (item, index) { + var _ref; + + 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"])(["multiPairFieldTable multiple valign-wrapper", (_ref = {}, MultiPairFieldvue_type_template_id_2fb01c36_defineProperty(_ref, "multiPairFieldTable".concat(index), true), MultiPairFieldvue_type_template_id_2fb01c36_defineProperty(_ref, "has".concat(_ctx.fieldCount, "Fields"), true), _ref)]), + key: index + }, [_ctx.field1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", { + key: 0, + class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["fieldUiControl fieldUiControl1", { + hasMultiFields: _ctx.field1.type && _ctx.field2.type + }]) + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, { + "full-width": true, + modelValue: item[_ctx.field1.key], + "onUpdate:modelValue": [function ($event) { + return item[_ctx.field1.key] = $event; + }, function ($event) { + return _ctx.onEntryChange(index, _ctx.field1.key, $event); + }], + options: _ctx.field1.availableValues, + placeholder: ' ', + uicontrol: _ctx.field1.uiControl, + name: "".concat(_ctx.name, "-p1-").concat(index), + title: _ctx.field1.title + }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "uicontrol", "name", "title"])], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field2 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_2fb01c36_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, { + "full-width": true, + options: _ctx.field2.availableValues, + "onUpdate:modelValue": [function ($event) { + return _ctx.onEntryChange(index, _ctx.field2.key, $event); + }, function ($event) { + return item[_ctx.field2.key] = $event; + }], + modelValue: item[_ctx.field2.key], + placeholder: ' ', + uicontrol: _ctx.field2.uiControl, + name: "".concat(_ctx.name, "-p2-").concat(index), + title: _ctx.field2.title + }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "name", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field3 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_2fb01c36_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, { + "full-width": true, + options: _ctx.field3.availableValues, + "onUpdate:modelValue": [function ($event) { + return _ctx.onEntryChange(index, _ctx.field3.key, $event); + }, function ($event) { + return item[_ctx.field3.key] = $event; + }], + modelValue: item[_ctx.field3.key], + placeholder: ' ', + uicontrol: _ctx.field3.uiControl, + title: _ctx.field3.title + }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field4 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_2fb01c36_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, { + "full-width": true, + options: _ctx.field4.availableValues, + "onUpdate:modelValue": [function ($event) { + return _ctx.onEntryChange(index, _ctx.field4.key, $event); + }, function ($event) { + return item[_ctx.field4.key] = $event; + }], + modelValue: item[_ctx.field4.key], + placeholder: ' ', + uicontrol: _ctx.field4.uiControl, + title: _ctx.field4.title + }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title"])])) : 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"])("span", { + onClick: function onClick($event) { + return _ctx.removeEntry(index); + }, + class: "icon-minus valign", + title: _ctx.translate('General_Remove') + }, null, 8, MultiPairFieldvue_type_template_id_2fb01c36_hoisted_5), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2); + }), 128))]); +} +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue?vue&type=template&id=2fb01c36 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/MultiPairField/MultiPairField.vue?vue&type=script&lang=ts +function MultiPairFieldvue_type_script_lang_ts_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function MultiPairFieldvue_type_script_lang_ts_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { MultiPairFieldvue_type_script_lang_ts_ownKeys(Object(source), true).forEach(function (key) { MultiPairFieldvue_type_script_lang_ts_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { MultiPairFieldvue_type_script_lang_ts_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function MultiPairFieldvue_type_script_lang_ts_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; } + +function MultiPairFieldvue_type_script_lang_ts_toConsumableArray(arr) { return MultiPairFieldvue_type_script_lang_ts_arrayWithoutHoles(arr) || MultiPairFieldvue_type_script_lang_ts_iterableToArray(arr) || MultiPairFieldvue_type_script_lang_ts_unsupportedIterableToArray(arr) || MultiPairFieldvue_type_script_lang_ts_nonIterableSpread(); } + +function MultiPairFieldvue_type_script_lang_ts_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 MultiPairFieldvue_type_script_lang_ts_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return MultiPairFieldvue_type_script_lang_ts_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 MultiPairFieldvue_type_script_lang_ts_arrayLikeToArray(o, minLen); } + +function MultiPairFieldvue_type_script_lang_ts_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function MultiPairFieldvue_type_script_lang_ts_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return MultiPairFieldvue_type_script_lang_ts_arrayLikeToArray(arr); } + +function MultiPairFieldvue_type_script_lang_ts_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; } + + + // async since this is a a recursive component + +var MultiPairFieldvue_type_script_lang_ts_Field = useExternalPluginComponent('CorePluginsAdmin', 'Field'); +/* harmony default export */ var MultiPairFieldvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: Array, + name: String, + field1: Object, + field2: Object, + field3: Object, + field4: Object + }, + components: { + Field: MultiPairFieldvue_type_script_lang_ts_Field + }, + computed: { + fieldCount: function fieldCount() { + if (this.field1 && this.field2 && this.field3 && this.field4) { + return 4; + } + + if (this.field1 && this.field2 && this.field3) { + return 3; + } + + if (this.field1 && this.field2) { + return 2; + } + + if (this.field1) { + return 1; + } + + return 0; + } + }, + emits: ['update:modelValue'], + watch: { + modelValue: function modelValue(newValue) { + this.checkEmptyModelValue(newValue); + } + }, + mounted: function mounted() { + this.checkEmptyModelValue(this.modelValue); + }, + methods: { + checkEmptyModelValue: function checkEmptyModelValue(newValue) { + // make sure there is always an empty new value + if (!newValue || !newValue.length || this.isEmptyValue(newValue.slice(-1)[0])) { + this.$emit('update:modelValue', [].concat(MultiPairFieldvue_type_script_lang_ts_toConsumableArray(newValue || []), [this.makeEmptyValue()])); + } + }, + onEntryChange: function onEntryChange(index, key, newValue) { + var newWholeValue = MultiPairFieldvue_type_script_lang_ts_toConsumableArray(this.modelValue); + + newWholeValue[index] = MultiPairFieldvue_type_script_lang_ts_objectSpread(MultiPairFieldvue_type_script_lang_ts_objectSpread({}, newWholeValue[index]), {}, MultiPairFieldvue_type_script_lang_ts_defineProperty({}, key, newValue)); + this.$emit('update:modelValue', newWholeValue); + }, + removeEntry: function removeEntry(index) { + if (index > -1) { + var newValue = this.modelValue.filter(function (x, i) { + return i !== index; + }); + this.$emit('update:modelValue', newValue); + } + }, + isEmptyValue: function isEmptyValue(value) { + var fieldCount = this.fieldCount; + + if (fieldCount === 4) { + if (!value[this.field1.key] && !value[this.field2.key] && !value[this.field3.key] && !value[this.field4.key]) { + return false; + } + } else if (fieldCount === 3) { + if (!value[this.field1.key] && !value[this.field2.key] && !value[this.field3.key]) { + return false; + } + } else if (fieldCount === 2) { + if (!value[this.field1.key] && !value[this.field2.key]) { + return false; + } + } else if (fieldCount === 1) { + if (!value[this.field1.key]) { + return false; + } + } + + return true; + }, + makeEmptyValue: function makeEmptyValue() { + var result = {}; + + if (this.field1 && this.field1.key) { + result[this.field1.key] = ''; + } + + if (this.field2 && this.field2.key) { + result[this.field2.key] = ''; + } + + if (this.field3 && this.field3.key) { + result[this.field3.key] = ''; + } + + if (this.field4 && this.field4.key) { + result[this.field4.key] = ''; + } + + return result; + } + } +})); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue + + + +MultiPairFieldvue_type_script_lang_ts.render = MultiPairFieldvue_type_template_id_2fb01c36_render + +/* harmony default export */ var MultiPairField = (MultiPairFieldvue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.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 MultiPairField_adapter = (createAngularJsAdapter({ + component: MultiPairField, + require: '?ngModel', + scope: { + name: { + angularJsBind: '=' + }, + field1: { + angularJsBind: '=' + }, + field2: { + angularJsBind: '=' + }, + field3: { + angularJsBind: '=' + }, + field4: { + angularJsBind: '=' + } + }, + directiveName: 'matomoMultiPairField', + events: { + 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel) { + if (newValue !== vm.modelValue) { + element.trigger('change', newValue); + + if (ngModel) { + ngModel.$setViewValue(newValue); + } + } + } + }, + postCreate: function postCreate(vm, scope, element, attrs, controller) { + var ngModel = controller; // setup ng-model mapping + + if (ngModel) { + ngModel.$setViewValue(vm.modelValue); + + ngModel.$render = function () { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }; + } + } +})); // 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/ActivityIndicator/ActivityIndicator.vue?vue&type=template&id=6af4d064 var ActivityIndicatorvue_type_template_id_6af4d064_hoisted_1 = { @@ -6424,9 +6929,7 @@ Notificationvue_type_script_lang_ts.render = Notificationvue_type_template_id_e3 }, noclear: { angularJsBind: '@?', - transform: function transform(v) { - return !!v; - } + transform: transformAngularJsBoolAttr }, toastLength: { angularJsBind: '@?' @@ -6830,6 +7333,10 @@ NotificationGroupvue_type_script_lang_ts.render = NotificationGroupvue_type_temp + + + + // 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 4850e32df6..da1a395c26 100644 --- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js +++ b/plugins/CoreHome/vue/dist/CoreHome.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 - */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"debounce",(function(){return Ur})),n.d(t,"createAngularJsAdapter",(function(){return wt})),n.d(t,"activityIndicatorAdapter",(function(){return Si})),n.d(t,"ActivityIndicator",(function(){return Oi})),n.d(t,"translate",(function(){return D})),n.d(t,"alertAdapter",(function(){return Ei})),n.d(t,"AjaxHelper",(function(){return Ne})),n.d(t,"setCookie",(function(){return Pi})),n.d(t,"getCookie",(function(){return Ti})),n.d(t,"deleteCookie",(function(){return Ii})),n.d(t,"MatomoUrl",(function(){return Oe})),n.d(t,"Matomo",(function(){return j})),n.d(t,"Periods",(function(){return f})),n.d(t,"Day",(function(){return z})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return se})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return C})),n.d(t,"getToday",(function(){return E})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"Dropdown",(function(){return Me})),n.d(t,"FocusAnywhereButHere",(function(){return _e})),n.d(t,"FocusIf",(function(){return qe})),n.d(t,"MatomoDialog",(function(){return ut})),n.d(t,"ExpandOnClick",(function(){return Xe})),n.d(t,"ExpandOnHover",(function(){return at})),n.d(t,"EnrichedHeadline",(function(){return Vt})),n.d(t,"ContentBlock",(function(){return Gt})),n.d(t,"Comparisons",(function(){return Nn})),n.d(t,"MenuDropdown",(function(){return zn})),n.d(t,"DatePicker",(function(){return rr})),n.d(t,"DateRangePicker",(function(){return sr})),n.d(t,"PeriodDatePicker",(function(){return pr})),n.d(t,"Notification",(function(){return _i})),n.d(t,"NotificationGroup",(function(){return ta})),n.d(t,"NotificationsStore",(function(){return Yi})),n.d(t,"SiteSelector",(function(){return Qr})),n.d(t,"QuickAccess",(function(){return vi})),"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 c(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 s(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),e}function l(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,"debounce",(function(){return Qr})),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,"activityIndicatorAdapter",(function(){return ao})),n.d(t,"ActivityIndicator",(function(){return oo})),n.d(t,"translate",(function(){return C})),n.d(t,"alertAdapter",(function(){return fo})),n.d(t,"AjaxHelper",(function(){return xe})),n.d(t,"setCookie",(function(){return mo})),n.d(t,"getCookie",(function(){return po})),n.d(t,"deleteCookie",(function(){return ho})),n.d(t,"MatomoUrl",(function(){return Oe})),n.d(t,"Matomo",(function(){return S})),n.d(t,"Periods",(function(){return f})),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 le})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return D})),n.d(t,"getToday",(function(){return E})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return T})),n.d(t,"Dropdown",(function(){return Be})),n.d(t,"FocusAnywhereButHere",(function(){return _e})),n.d(t,"FocusIf",(function(){return qe})),n.d(t,"MatomoDialog",(function(){return ut})),n.d(t,"ExpandOnClick",(function(){return Xe})),n.d(t,"ExpandOnHover",(function(){return ot})),n.d(t,"EnrichedHeadline",(function(){return Ut})),n.d(t,"ContentBlock",(function(){return Kt})),n.d(t,"Comparisons",(function(){return $n})),n.d(t,"MenuDropdown",(function(){return Xn})),n.d(t,"DatePicker",(function(){return lr})),n.d(t,"DateRangePicker",(function(){return mr})),n.d(t,"PeriodDatePicker",(function(){return br})),n.d(t,"Notification",(function(){return Do})),n.d(t,"NotificationGroup",(function(){return Fo})),n.d(t,"NotificationsStore",(function(){return Ao})),n.d(t,"SiteSelector",(function(){return Zr})),n.d(t,"QuickAccess",(function(){return Oi})),n.d(t,"FieldArray",(function(){return Ai})),n.d(t,"MultiPairField",(function(){return eo})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}n("2342");var o=n("8bbf");function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(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 l(e,t,n){return t&&c(e.prototype,t),n&&c(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 * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var u,d=function(){function e(){o(this,e),l(this,"periods",{}),l(this,"periodOrder",[])}return s(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),f=new d;function p(e){return g(e)||v(e)||h(e)||m()}function m(){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 h(e,t){if(e){if("string"===typeof e)return b(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)?b(e,t):void 0}}function v(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function g(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r} + */var u,d=function(){function e(){a(this,e),s(this,"periods",{}),s(this,"periodOrder",[])}return l(e,[{key:"addCustomPeriod",value:function(e,t){if(this.periods[e])throw new Error('The "'.concat(e,'" period already exists! It cannot be overridden.'));this.periods[e]=t,this.periodOrder.push(e)}},{key:"getAllLabels",value:function(){return Array().concat(this.periodOrder)}},{key:"get",value:function(e){var t=this.periods[e];if(!t)throw new Error("Invalid period label: ".concat(e));return t}},{key:"parse",value:function(e,t){return this.get(e).parse(t)}},{key:"isRecognizedPeriod",value:function(e){return!!this.periods[e]}}]),e}(),f=new d;function m(e){return g(e)||v(e)||h(e)||p()}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 h(e,t){if(e){if("string"===typeof e)return b(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)?b(e,t):void 0}}function v(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function g(e){if(Array.isArray(e))return b(e)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var y=window,w=y.piwik,O=y.broadcast,S=y.piwikHelper;w.helper=S,w.broadcast=O,w.updateDateInTitle=function(e,t){if($(".top_controls #periodString").length&&(u=u||document.title,0===u.indexOf(w.siteName))){var n=" - ".concat(f.parse(t,e).getPrettyString()," ");document.title="".concat(w.siteName).concat(n).concat(u.substr(w.siteName.length))}},w.hasUserCapability=function(e){return window.angular.isArray(w.userCapabilities)&&-1!==w.userCapabilities.indexOf(e)},w.on=function(e,t){function n(e){t.apply(void 0,p(e.detail))}t.wrapper=n,window.addEventListener(e,n)},w.off=function(e,t){t.wrapper&&window.removeEventListener(e,t.wrapper)},w.postEventNoEmit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=new CustomEvent(e,{detail:n});window.dispatchEvent(i)},w.postEvent=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];w.postEventNoEmit.apply(w,[e].concat(n)),window.angular.element((function(){var t=w.helper.getAngularDependency("$rootScope");t.$oldEmit.apply(t,[e].concat(n))}))};var k=w,j=k; + */var y=window,w=y.piwik,O=y.broadcast,j=y.piwikHelper;w.helper=j,w.broadcast=O,w.updateDateInTitle=function(e,t){if($(".top_controls #periodString").length&&(u=u||document.title,0===u.indexOf(w.siteName))){var n=" - ".concat(f.parse(t,e).getPrettyString()," ");document.title="".concat(w.siteName).concat(n).concat(u.substr(w.siteName.length))}},w.hasUserCapability=function(e){return window.angular.isArray(w.userCapabilities)&&-1!==w.userCapabilities.indexOf(e)},w.on=function(e,t){function n(e){t.apply(void 0,m(e.detail))}t.wrapper=n,window.addEventListener(e,n)},w.off=function(e,t){t.wrapper&&window.removeEventListener(e,t.wrapper)},w.postEventNoEmit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=new CustomEvent(e,{detail:n});window.dispatchEvent(i)},w.postEvent=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];w.postEventNoEmit.apply(w,[e].concat(n)),window.angular.element((function(){var t=w.helper.getAngularDependency("$rootScope");t.$oldEmit.apply(t,[e].concat(n))}))};var k=w,S=k; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function D(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=n;return 1===n.length&&n[0]&&n[0]instanceof Array&&(i=n[0]),window._pk_translate(e,i)} +function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=n;return 1===n.length&&n[0]&&Array.isArray(n[0])&&(i=n[0]),window._pk_translate(e,i)} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function C(e){return $.datepicker.formatDate("yy-mm-dd",e)}function E(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function P(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return E();if("yesterday"===t||"yesterdaySameTime"===t){var n=E();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=E();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var i=E();return i.setDate(1),i.setMonth(i.getMonth()-1),i}if(t.match(/last[ -]?year/i)){var a=E();return a.setFullYear(a.getFullYear()-1),a}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(E()>=e[0]&&E()<=e[1])}function I(e,t){return A(e)||M(e,t)||N(e,t)||x()}function x(){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 N(e,t){if(e){if("string"===typeof e)return B(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)?B(e,t):void 0}}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function M(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,c=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(s){c=!0,i=s}finally{try{o||null==n["return"]||n["return"]()}finally{if(c)throw i}}return a}}function A(e){if(Array.isArray(e))return e}function V(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 H(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),e}function F(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */function D(e){return $.datepicker.formatDate("yy-mm-dd",e)}function E(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function P(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return E();if("yesterday"===t||"yesterdaySameTime"===t){var n=E();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=E();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var i=E();return i.setDate(1),i.setMonth(i.getMonth()-1),i}if(t.match(/last[ -]?year/i)){var o=E();return o.setFullYear(o.getFullYear()-1),o}return $.datepicker.parseDate("yy-mm-dd",t)}function T(e){return 2===e.length&&(E()>=e[0]&&E()<=e[1])}function I(e,t){return A(e)||B(e,t)||x(e,t)||V()}function V(){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 x(e,t){if(e){if("string"===typeof e)return N(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)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done);a=!0)if(o.push(r.value),t&&o.length===t)break}catch(l){c=!0,i=l}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw i}}return o}}function A(e){if(Array.isArray(e))return e}function M(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 H(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),e}function F(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 _=function(){function e(t,n,r){V(this,e),F(this,"startDate",void 0),F(this,"endDate",void 0),F(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return H(e,[{key:"getPrettyString",value:function(){var e=C(this.startDate),t=C(this.endDate);return D("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}},{key:"getDayCount",value:function(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}],[{key:"getLastNRange",value:function(t,n,r){var i=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");var a=r?P(r):E(),o=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-i);else if("week"===t)o.setDate(o.getDate()-7*i);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-i);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-i)}if("day"!==t){var c=f.periods[t].parse(o),s=f.periods[t].parse(a),l=c.getDateRange(),u=I(l,1);o=u[0];var d=s.getDateRange(),p=I(d,2);a=p[1]}var m=new Date(1991,7,6);if(o.getTime()-m.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=m;break}return new e(o,a,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var i=n?P(n):E(),a=new Date(i.getTime()),o=new Date(i.getTime());if("day"===t)a.setDate(a.getDate()-r),o.setDate(o.getDate()-r);else if("week"===t)a.setDate(a.getDate()-7*r),o.setDate(o.getDate()-7*r);else if("month"===t)a.setDate(1),a.setMonth(a.getMonth()-r),o.setDate(1),o.setMonth(o.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));a.setFullYear(a.getFullYear()-r),o.setFullYear(o.getFullYear()-r)}if("day"!==t){var c=f.periods[t].parse(a),s=f.periods[t].parse(o),l=c.getDateRange(),u=I(l,1);a=u[0];var d=s.getDateRange(),p=I(d,2);o=p[1]}var m=new Date(1991,7,6);if(a.getTime()-m.getTime()<0)switch(t){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=m;break}return new e(a,o,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var i=decodeURIComponent(t).split(",");return new e(P(i[0]),P(i[1]),n)}},{key:"getDisplayText",value:function(){return D("General_DateRangeInPeriodList")}}]),e}();function R(){return{getAllLabels:f.getAllLabels.bind(f),isRecognizedPeriod:f.isRecognizedPeriod.bind(f),get:f.get.bind(f),parse:f.parse.bind(f),parseDate:P,format:C,RangePeriod:_,todayIsInRange:T}}function U(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function q(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 J(e,t,n){return t&&q(e.prototype,t),n&&q(e,n),e}function G(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */var _=function(){function e(t,n,r){M(this,e),F(this,"startDate",void 0),F(this,"endDate",void 0),F(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return H(e,[{key:"getPrettyString",value:function(){var e=D(this.startDate),t=D(this.endDate);return C("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return T(this.getDateRange())}},{key:"getDayCount",value:function(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}],[{key:"getLastNRange",value:function(t,n,r){var i=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");var o=r?P(r):E(),a=new Date(o.getTime());if("day"===t)a.setDate(a.getDate()-i);else if("week"===t)a.setDate(a.getDate()-7*i);else if("month"===t)a.setDate(1),a.setMonth(a.getMonth()-i);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));a.setFullYear(a.getFullYear()-i)}if("day"!==t){var c=f.periods[t].parse(a),l=f.periods[t].parse(o),s=c.getDateRange(),u=I(s,1);a=u[0];var d=l.getDateRange(),m=I(d,2);o=m[1]}var p=new Date(1991,7,6);if(a.getTime()-p.getTime()<0)switch(t){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=p;break}return new e(a,o,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var i=n?P(n):E(),o=new Date(i.getTime()),a=new Date(i.getTime());if("day"===t)o.setDate(o.getDate()-r),a.setDate(a.getDate()-r);else if("week"===t)o.setDate(o.getDate()-7*r),a.setDate(a.getDate()-7*r);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-r),a.setDate(1),a.setMonth(a.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-r),a.setFullYear(a.getFullYear()-r)}if("day"!==t){var c=f.periods[t].parse(o),l=f.periods[t].parse(a),s=c.getDateRange(),u=I(s,1);o=u[0];var d=l.getDateRange(),m=I(d,2);a=m[1]}var p=new Date(1991,7,6);if(o.getTime()-p.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=p;break}return new e(o,a,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var i=decodeURIComponent(t).split(",");return new e(P(i[0]),P(i[1]),n)}},{key:"getDisplayText",value:function(){return C("General_DateRangeInPeriodList")}}]),e}();function U(){return{getAllLabels:f.getAllLabels.bind(f),isRecognizedPeriod:f.isRecognizedPeriod.bind(f),get:f.get.bind(f),parse:f.parse.bind(f),parseDate:P,format:D,RangePeriod:_,todayIsInRange:T}}function R(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function q(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 J(e,t,n){return t&&q(e.prototype,t),n&&q(e,n),e}function z(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 * @@ -48,91 +48,91 @@ function D(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r- * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -window.piwik.addCustomPeriod=f.addCustomPeriod.bind(f),window.angular.module("piwikApp.service").factory("piwikPeriods",R);var z=function(){function e(t){U(this,e),G(this,"dateInPeriod",void 0),this.dateInPeriod=t}return J(e,[{key:"getPrettyString",value:function(){return C(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return D("Intl_PeriodDay")}}]),e}();function Q(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function W(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 Y(e,t,n){return t&&W(e.prototype,t),n&&W(e,n),e}function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +window.piwik.addCustomPeriod=f.addCustomPeriod.bind(f),window.angular.module("piwikApp.service").factory("piwikPeriods",U);var G=function(){function e(t){R(this,e),z(this,"dateInPeriod",void 0),this.dateInPeriod=t}return J(e,[{key:"getPrettyString",value:function(){return D(this.dateInPeriod)}},{key:"getDateRange",value:function(){return[new Date(this.dateInPeriod.getTime()),new Date(this.dateInPeriod.getTime())]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodDay")}}]),e}();function Q(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function W(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 Y(e,t,n){return t&&W(e.prototype,t),n&&W(e,n),e}function K(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 - */f.addCustomPeriod("day",z);var X=function(){function e(t){Q(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return Y(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=C(e[0]),n=C(e[1]);return D("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return D("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(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 te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */f.addCustomPeriod("day",G);var X=function(){function e(t){Q(this,e),K(this,"dateInPeriod",void 0),this.dateInPeriod=t}return Y(e,[{key:"getPrettyString",value:function(){var e=this.getDateRange(),t=D(e[0]),n=D(e[1]);return C("General_DateRangeFromTo",[t,n])}},{key:"getDateRange",value:function(){var e=(this.dateInPeriod.getDay()+6)%7,t=new Date(this.dateInPeriod.getTime());t.setDate(this.dateInPeriod.getDate()-e);var n=new Date(t.getTime());return n.setDate(t.getDate()+6),[t,n]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodWeek")}}]),e}();function Z(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(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 te(e,t,n){return t&&ee(e.prototype,t),n&&ee(e,n),e}function ne(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 - */f.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=D("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return D("Intl_PeriodMonth")}}]),e}();function ie(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ae(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 oe(e,t,n){return t&&ae(e.prototype,t),n&&ae(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} + */f.addCustomPeriod("week",X);var re=function(){function e(t){Z(this,e),ne(this,"dateInPeriod",void 0),this.dateInPeriod=t}return te(e,[{key:"getPrettyString",value:function(){var e=C("Intl_Month_Long_StandAlone_".concat(this.dateInPeriod.getMonth()+1));return"".concat(e," ").concat(this.dateInPeriod.getFullYear())}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setDate(1),t.setMonth(t.getMonth()+1),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodMonth")}}]),e}();function ie(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function oe(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 ae(e,t,n){return t&&oe(e.prototype,t),n&&oe(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 - */f.addCustomPeriod("month",re);var se=function(){function e(t){ie(this,e),ce(this,"dateInPeriod",void 0),this.dateInPeriod=t}return oe(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return D("Intl_PeriodYear")}}]),e}(); + */f.addCustomPeriod("month",re);var le=function(){function e(t){ie(this,e),ce(this,"dateInPeriod",void 0),this.dateInPeriod=t}return ae(e,[{key:"getPrettyString",value:function(){return this.dateInPeriod.getFullYear().toString()}},{key:"getDateRange",value:function(){var e=new Date(this.dateInPeriod.getTime());e.setMonth(0),e.setDate(1);var t=new Date(this.dateInPeriod.getTime());return t.setMonth(12),t.setDate(0),[e,t]}},{key:"containsToday",value:function(){return T(this.getDateRange())}}],[{key:"parse",value:function(t){return new e(P(t))}},{key:"getDisplayText",value:function(){return C("Intl_PeriodYear")}}]),e}(); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function le(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?le(Object(n),!0).forEach((function(t){me(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):le(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function de(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fe(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 pe(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),e}function me(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +function se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?se(Object(n),!0).forEach((function(t){pe(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):se(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function de(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fe(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 me(e,t,n){return t&&fe(e.prototype,t),n&&fe(e,n),e}function pe(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 - */f.addCustomPeriod("year",se);var he=window,ve=he.piwik,ge=he.broadcast;function be(e,t){try{return f.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),me(this,"urlQuery",Object(a["ref"])("")),me(this,"hashQuery",Object(a["ref"])("")),me(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ge.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),me(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(ge.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),me(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(ue(ue({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),j.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return pe(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=j.helper.getAngularDependency("$location");n.search(t)}},{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="string"!==typeof t?this.stringify(t):t,i="?".concat(n);r.length&&(i="".concat(i,"#?").concat(r)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,i)}},{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){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ve.period!==t||ve.currentDateString!==e)){ve.period=t;var n=f.parse(t,e).getDateRange();ve.startDateString=C(n[0]),ve.endDateString=C(n[1]),ve.updateDateInTitle(e,t),"range"===ve.period&&(e="".concat(ve.startDateString,",").concat(ve.endDateString)),ve.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,Oe=we; + */f.addCustomPeriod("year",le);var he=window,ve=he.piwik,ge=he.broadcast;function be(e,t){try{return f.parse(e,t),!0}catch(n){return!1}}var ye=function(){function e(){var t=this;de(this,e),pe(this,"urlQuery",Object(o["ref"])("")),pe(this,"hashQuery",Object(o["ref"])("")),pe(this,"urlParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),pe(this,"hashParsed",Object(o["computed"])((function(){return Object(o["readonly"])(ge.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),pe(this,"parsed",Object(o["computed"])((function(){return Object(o["readonly"])(ue(ue({},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 me(e,[{key:"updateHash",value:function(e){var t="string"!==typeof e?this.stringify(e):e,n=S.helper.getAngularDependency("$location");n.search(t)}},{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="string"!==typeof t?this.stringify(t):t,i="?".concat(n);r.length&&(i="".concat(i,"#?").concat(r)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,i)}},{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){return $.param(e).replace(/%5B%5D/g,"[]")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(be(t,e)&&(ve.period!==t||ve.currentDateString!==e)){ve.period=t;var n=f.parse(t,e).getDateRange();ve.startDateString=D(n[0]),ve.endDateString=D(n[1]),ve.updateDateInTitle(e,t),"range"===ve.period&&(e="".concat(ve.startDateString,",").concat(ve.endDateString)),ve.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),we=new ye,Oe=we; /*! * 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(){var e={getSearchParam:Oe.getSearchParam.bind(Oe)};return e} +function je(){var e={getSearchParam:Oe.getSearchParam.bind(Oe)};return e} /*! * 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(){return j}function je(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return j.postEvent.apply(j,[e].concat(n)),null},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return j.postEventNoEmit.apply(j,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function De(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach((function(t){Ie(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pe(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 Te(e,t,n){return t&&Pe(e.prototype,t),n&&Pe(e,n),e}function Ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +function ke(){return S}function Se(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return S.postEvent.apply(S,[e].concat(n)),null},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];return S.postEventNoEmit.apply(S,[e].concat(r)),t.$oldBroadcast.apply(t,[e].concat(r))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Ce(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ce(Object(n),!0).forEach((function(t){Ie(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ce(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Pe(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 Te(e,t,n){return t&&Pe(e.prototype,t),n&&Pe(e,n),e}function Ie(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 - */function xe(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ve.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),Se.$inject=[],angular.module("piwikApp.service").service("piwikUrl",Se),window.angular.module("piwikApp.service").service("piwik",ke),je.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(je),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var Ne=function(){function e(){Ee(this,e),Ie(this,"format","json"),Ie(this,"timeout",null),Ie(this,"callback",null),Ie(this,"useRegularCallbackInCaseOfError",!1),Ie(this,"errorCallback",void 0),Ie(this,"withToken",!1),Ie(this,"completeCallback",void 0),Ie(this,"getParams",{}),Ie(this,"getUrl","?"),Ie(this,"postParams",{}),Ie(this,"loadingElement",null),Ie(this,"errorElement","#ajaxError"),Ie(this,"requestHandle",null),Ie(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=xe}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var a=r[e];(-1===i.indexOf(e)||a)&&("get"===t.toLowerCase()?n.getParams[e]=a:"post"===t.toLowerCase()&&(n.postParams[e]=a))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;$(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle);var t=new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}));return t.abort=function(){e.requestHandle&&e.requestHandle.abort()},t}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var i={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var i=null,a="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),i=e.errorElement,a=null),t.message){var o=window["require"]("piwik/UI"),c=new o.Notification;c.show(t.message,{placeat:i,context:"error",type:a,id:"ajaxHelper"}),c.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,j.ajaxRequestFinished&&j.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(i)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||j.shouldPropagateTokenAuth?{token_auth:j.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Ce(Ce({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=Oe.getSearchParam("segment"),r={idSite:j.idSite?j.idSite.toString():broadcast.getValueFromUrl("idSite"),period:j.period||broadcast.getValueFromUrl("period"),segment:n},i=e;return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!i[e]&&!t.postParams[e]&&r[e]&&(i[e]=r[e])})),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=j.currentDateString),i}}],[{key:"fetch",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new e;return n.withTokenInUrl&&r.withTokenInUrl(),r.setFormat("json"),r.addParams(Ce({module:"API",format:"json"},t),"get"),n.postParams&&r.addParams(n.postParams,"post"),r.send()}}]),e}();function Be(){return globalAjaxQueue}window.ajaxHelper=Ne,angular.module("piwikApp.service").service("globalAjaxQueue",Be); + */function Ve(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}ve.updatePeriodParamsFromUrl=we.updatePeriodParamsFromUrl.bind(we),je.$inject=[],angular.module("piwikApp.service").service("piwikUrl",je),window.angular.module("piwikApp.service").service("piwik",ke),Se.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(Se),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var xe=function(){function e(){Ee(this,e),Ie(this,"format","json"),Ie(this,"timeout",null),Ie(this,"callback",null),Ie(this,"useRegularCallbackInCaseOfError",!1),Ie(this,"errorCallback",void 0),Ie(this,"withToken",!1),Ie(this,"completeCallback",void 0),Ie(this,"getParams",{}),Ie(this,"getUrl","?"),Ie(this,"postParams",{}),Ie(this,"loadingElement",null),Ie(this,"errorElement","#ajaxError"),Ie(this,"requestHandle",null),Ie(this,"defaultParams",["idSite","period","date","segment"]),this.errorCallback=Ve}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var o=r[e];(-1===i.indexOf(e)||o)&&("get"===t.toLowerCase()?n.getParams[e]=o:"post"===t.toLowerCase()&&(n.postParams[e]=o))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;$(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle);var t=new Promise((function(t,n){e.requestHandle.then(t).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),n(t))}))}));return t.abort=function(){e.requestHandle&&e.requestHandle.abort()},t}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var i={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var i=null,o="toast";if($(e.errorElement).length&&t.message&&($(e.errorElement).show(),i=e.errorElement,o=null),t.message){var a=window["require"]("piwik/UI"),c=new a.Notification;c.show(t.message,{placeat:i,context:"error",type:o,id:"ajaxHelper"}),c.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,S.ajaxRequestFinished&&S.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(i)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||S.shouldPropagateTokenAuth?{token_auth:S.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=De(De({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=Oe.getSearchParam("segment"),r={idSite:S.idSite?S.idSite.toString():broadcast.getValueFromUrl("idSite"),period:S.period||broadcast.getValueFromUrl("period"),segment:n},i=e;return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!i[e]&&!t.postParams[e]&&r[e]&&(i[e]=r[e])})),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=S.currentDateString),i}}],[{key:"fetch",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new e;return n.withTokenInUrl&&r.withTokenInUrl(),r.setFormat("json"),r.addParams(De({module:"API",format:"json"},t),"get"),n.postParams&&r.addParams(n.postParams,"post"),r.send()}}]),e}();function Ne(){return globalAjaxQueue}window.ajaxHelper=xe,angular.module("piwikApp.service").service("globalAjaxQueue",Ne); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var Me={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r=!!$(e).parent().closest(".dropdown-content").length;r&&(n={hover:!0},$(e).addClass("submenu"),$(t.value.activates).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container")),$(e).dropdown(n)}}; + */var Be={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r=!!$(e).parent().closest(".dropdown-content").length;r&&(n={hover:!0},$(e).addClass("submenu"),$(t.value.activates).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container")),$(e).dropdown(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 Ae(e){return{restrict:"A",link:function(t,n,r){var i={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Me.mounted(n[0],i)}))}}} + */function Ae(e){return{restrict:"A",link:function(t,n,r){var i={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Be.mounted(n[0],i)}))}}} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function $e(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function Ve(e,t){t.value.hasScrolled=!0}function Le(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function He(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}Ae.$inject=["$timeout"],angular.module("piwikApp").directive("piwikDropdownMenu",Ae);var Fe=document.documentElement,_e={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=He.bind(null,e,t),t.value.onMouseDown=Le.bind(null,e,t),t.value.onClickOutsideElement=$e.bind(null,e,t),t.value.onScroll=Ve.bind(null,e,t),Fe.addEventListener("keyup",t.value.onEscapeHandler),Fe.addEventListener("mousedown",t.value.onMouseDown),Fe.addEventListener("mouseup",t.value.onClickOutsideElement),Fe.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){Fe.removeEventListener("keyup",t.value.onEscapeHandler),Fe.removeEventListener("mousedown",t.value.onMouseDown),Fe.removeEventListener("mouseup",t.value.onClickOutsideElement),Fe.removeEventListener("scroll",t.value.onScroll)}}; +function Me(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function $e(e,t){t.value.hasScrolled=!0}function Le(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function He(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}Ae.$inject=["$timeout"],angular.module("piwikApp").directive("piwikDropdownMenu",Ae);var Fe=document.documentElement,_e={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=He.bind(null,e,t),t.value.onMouseDown=Le.bind(null,e,t),t.value.onClickOutsideElement=Me.bind(null,e,t),t.value.onScroll=$e.bind(null,e,t),Fe.addEventListener("keyup",t.value.onEscapeHandler),Fe.addEventListener("mousedown",t.value.onMouseDown),Fe.addEventListener("mouseup",t.value.onClickOutsideElement),Fe.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){Fe.removeEventListener("keyup",t.value.onEscapeHandler),Fe.removeEventListener("mousedown",t.value.onMouseDown),Fe.removeEventListener("mouseup",t.value.onClickOutsideElement),Fe.removeEventListener("scroll",t.value.onScroll)}}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function Re(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};_e.mounted(t[0],r),t.on("$destroy",(function(){return _e.unmounted(t[0],r)}))}}} +function Ue(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};_e.mounted(t[0],r),t.on("$destroy",(function(){return _e.unmounted(t[0],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 Ue(e,t){t.arg&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}Re.$inject=[],angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Re);var qe={mounted:function(e,t){Ue(e,t)},updated:function(e,t){Ue(e,t)}}; +function Re(e,t){t.arg&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}Ue.$inject=[],angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Ue);var qe={mounted:function(e,t){Re(e,t)},updated:function(e,t){Re(e,t)}}; /*! * Matomo - free/libre analytics platform * @@ -145,7 +145,7 @@ function Ue(e,t){t.arg&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.v * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function Ge(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function ze(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Qe(e){e.value.hasScrolled=!0}function We(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Ye(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}angular.module("piwikApp.directive").directive("piwikFocusIf",Je);var Ke=document.documentElement,Xe={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=Ge.bind(null,e),t.value.onEscapeHandler=Ye.bind(null,e,t),t.value.onMouseDown=We.bind(null,t),t.value.onClickOutsideElement=ze.bind(null,e,t),t.value.onScroll=Qe.bind(null,t),window.$(t.value.expander).click(t.value.onExpand),Ke.addEventListener("keyup",t.value.onEscapeHandler),Ke.addEventListener("mousedown",t.value.onMouseDown),Ke.addEventListener("mouseup",t.value.onClickOutsideElement),Ke.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),Ke.removeEventListener("keyup",t.value.onEscapeHandler),Ke.removeEventListener("mousedown",t.value.onMouseDown),Ke.removeEventListener("mouseup",t.value.onClickOutsideElement),Ke.removeEventListener("scroll",t.value.onScroll)}}; +function ze(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function Ge(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Qe(e){e.value.hasScrolled=!0}function We(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Ye(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}angular.module("piwikApp.directive").directive("piwikFocusIf",Je);var Ke=document.documentElement,Xe={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=ze.bind(null,e),t.value.onEscapeHandler=Ye.bind(null,e,t),t.value.onMouseDown=We.bind(null,t),t.value.onClickOutsideElement=Ge.bind(null,e,t),t.value.onScroll=Qe.bind(null,t),window.$(t.value.expander).click(t.value.onExpand),Ke.addEventListener("keyup",t.value.onEscapeHandler),Ke.addEventListener("mousedown",t.value.onMouseDown),Ke.addEventListener("mouseup",t.value.onClickOutsideElement),Ke.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){t.value.expander.removeEventListener("click",t.value.onExpand),Ke.removeEventListener("keyup",t.value.onEscapeHandler),Ke.removeEventListener("mousedown",t.value.onMouseDown),Ke.removeEventListener("mouseup",t.value.onClickOutsideElement),Ke.removeEventListener("scroll",t.value.onScroll)}}; /*! * Matomo - free/libre analytics platform * @@ -159,129 +159,147 @@ function Ze(){return{restrict:"A",link:function(e,t){var n={instance:null,value: * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function et(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&j.helper.setMarginLeftToBeInViewport(t)}function tt(e){e.classList.remove("expanded")}function nt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function rt(e,t){27===t.which&&e.classList.remove("expanded")}Ze.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Ze);var it=document.documentElement,at={mounted:function(e,t){t.value.onMouseEnter=et.bind(null,e),t.value.onMouseLeave=tt.bind(null,e),t.value.onClickOutsideElement=nt.bind(null,e),t.value.onEscapeHandler=rt.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),it.addEventListener("keyup",t.value.onEscapeHandler),it.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}}; +function et(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function tt(e){e.classList.remove("expanded")}function nt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function rt(e,t){27===t.which&&e.classList.remove("expanded")}Ze.$inject=[],angular.module("piwikApp").directive("piwikExpandOnClick",Ze);var it=document.documentElement,ot={mounted:function(e,t){t.value.onMouseEnter=et.bind(null,e),t.value.onMouseLeave=tt.bind(null,e),t.value.onClickOutsideElement=nt.bind(null,e),t.value.onEscapeHandler=rt.bind(null,e),t.value.expander.addEventListener("mouseenter",t.value.onMouseEnter),e.addEventListener("mouseleave",t.value.onMouseLeave),it.addEventListener("keyup",t.value.onEscapeHandler),it.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){t.value.expander.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -function ot(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};at.mounted(t[0],n),t.on("$destroy",(function(){return at.unmounted(t[0],n)}))}}}ot.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",ot);var ct={ref:"root"};function st(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ct,[Object(a["renderSlot"])(e.$slots,"default")],512)),[[a["vShow"],e.modelValue]])}var lt=Object(a["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","validation","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;j.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});lt.render=st;var ut=lt;function dt(e,t){return vt(e)||ht(e,t)||pt(e,t)||ft()}function ft(){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 pt(e,t){if(e){if("string"===typeof e)return mt(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)?mt(e,t):void 0}}function mt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,c=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(s){c=!0,i=s}finally{try{o||null==n["return"]||n["return"]()}finally{if(c)throw i}}return a}}function vt(e){if(Array.isArray(e))return e} +function at(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};ot.mounted(t[0],n),t.on("$destroy",(function(){return ot.unmounted(t[0],n)}))}}}at.$inject=[],angular.module("piwikApp").directive("piwikExpandOnHover",at);var ct={ref:"root"};function lt(e,t,n,r,i,a){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ct,[Object(o["renderSlot"])(e.$slots,"default")],512)),[[o["vShow"],e.modelValue]])}var st=Object(o["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","validation","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;S.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});st.render=lt;var ut=st;function dt(e,t){return vt(e)||ht(e,t)||mt(e,t)||ft()}function ft(){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 mt(e,t){if(e){if("string"===typeof e)return pt(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)?pt(e,t):void 0}}function pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o=[],a=!0,c=!1;try{for(n=n.call(e);!(a=(r=n.next()).done);a=!0)if(o.push(r.value),t&&o.length===t)break}catch(l){c=!0,i=l}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw i}}return o}}function vt(e){if(Array.isArray(e))return e}function gt(e){return gt="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},gt(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 gt=0;function bt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function yt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function wt(e){var t=e.component,n=e.require,r=e.scope,i=void 0===r?{}:r,o=e.events,c=void 0===o?{}:o,s=e.$inject,l=e.directiveName,u=e.transclude,d=e.mountPointFactory,f=e.postCreate,p=e.noScope,m=e.restrict,h=void 0===m?"A":m,v=gt;u&&(gt+=1);var g={};function b(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];var s={restrict:h,require:n,scope:p?void 0:g,compile:function(){return{post:function(e,n,o,s){var l=u?n.find("[ng-transclude][counter=".concat(v,"]")):null,p="<root-component";Object.entries(c).forEach((function(e){var t=dt(e,1),n=t[0];p+=" @".concat(n,"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var i=bt(n);c[i]||(p+=" @".concat(i,"=\"onEventHandler('").concat(i,"', $event)\""))}else p+=" :".concat(r.vue,'="').concat(r.vue,'"')})),p+=">",u&&(p+='<div ref="transcludeTarget"/>'),p+="</root-component>";var m=Object(a["createApp"])({template:p,data:function(){var t={};return Object.entries(i).forEach((function(i){var a=dt(i,2),c=a[0],s=a[1],l=e[c];"undefined"===typeof l&&"undefined"!==typeof s.default&&(l=s.default instanceof Function?s.default.apply(s,[e,n,o].concat(r)):s.default),s.transform&&(l=s.transform(l)),t[s.vue]=l})),t},setup:function(){if(u){var e=Object(a["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,i){var a=yt(t);e[a]&&e[a](i),c[t]&&c[t].apply(c,[i,this,e,n,o,s].concat(r))}}});m.config.globalProperties.$sanitize=window.vueSanitize,m.config.globalProperties.translate=D,m.component("root-component",t);var h=d?d.apply(void 0,[e,n,o].concat(r)):n[0],g=m.mount(h);Object.entries(i).forEach((function(t){var i=dt(t,2),a=i[0],c=i[1];c.angularJsBind&&"&"!==c.angularJsBind&&e.$watch(a,(function(t){var i=t;"undefined"!==typeof c.default&&"undefined"===typeof t&&(i=c.default instanceof Function?c.default.apply(c,[e,n,o].concat(r)):c.default),c.transform&&(i=c.transform(i)),g[a]=i}))})),u&&$(g.transcludeTarget).append(l),f&&f.apply(void 0,[g,e,n,o,s].concat(r)),n.on("$destroy",(function(){m.unmount()}))}}}};return u&&(s.transclude=!0,s.template='<div ng-transclude counter="'.concat(v,'"/>')),s}return Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(g[n]=r.angularJsBind)})),b.$inject=s||[],angular.module("piwikApp").directive(l,b),b} + */var bt=0;function yt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function wt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ot(e){return"object"===gt(e)&&null!==e&&Object.getPrototypeOf(e)===Object.prototype?Object.fromEntries(Object.entries(e).filter((function(e){return!/^\$/.test(e[0])}))):e}function jt(e){var t=e.component,n=e.require,r=e.scope,i=void 0===r?{}:r,a=e.events,c=void 0===a?{}:a,l=e.$inject,s=e.directiveName,u=e.transclude,d=e.mountPointFactory,f=e.postCreate,m=e.noScope,p=e.restrict,h=void 0===p?"A":p,v=e.priority,g=bt;u&&(bt+=1);var b={};function y(){for(var e=arguments.length,r=new Array(e),a=0;a<e;a++)r[a]=arguments[a];var l={restrict:h,require:n,priority:v,scope:m?void 0:b,compile:function(){return{post:function(e,n,a,l){var s=u?n.find("[ng-transclude][counter=".concat(g,"]")):null,m="<root-component";Object.entries(c).forEach((function(e){var t=dt(e,1),n=t[0];m+=" @".concat(yt(n),"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[0],r=t[1];if("&"===r.angularJsBind){var i=yt(n);c[i]||(m+=" @".concat(i,"=\"onEventHandler('").concat(i,"', $event)\""))}else m+=" :".concat(yt(r.vue),'="').concat(r.vue,'"')})),m+=">",u&&(m+='<div ref="transcludeTarget"/>'),m+="</root-component>";var p=Object(o["createApp"])({template:m,data:function(){var t=this,o={};return Object.entries(i).forEach((function(i){var c=dt(i,2),s=c[0],u=c[1],d=Ot(e[s]);"undefined"===typeof d&&"undefined"!==typeof u.default&&(d=u.default instanceof Function?u.default.apply(u,[e,n,a].concat(r)):u.default),u.transform&&(d=u.transform.apply(u,[d,t,e,n,a,l].concat(r))),o[u.vue]=d})),o},setup:function(){if(u){var e=Object(o["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,i){var o=wt(t);e[o]&&e[o](i),c[t]&&c[t].apply(c,[i,this,e,n,a,l].concat(r))}}});p.config.globalProperties.$sanitize=window.vueSanitize,p.config.globalProperties.translate=C,p.component("root-component",t);var h=d?d.apply(void 0,[e,n,a].concat(r)):n[0],v=p.mount(h);Object.entries(i).forEach((function(t){var i=dt(t,2),o=i[0],c=i[1];c.angularJsBind&&"&"!==c.angularJsBind&&e.$watch(o,(function(t){var i=Ot(t);"undefined"!==typeof c.default&&"undefined"===typeof t&&(i=c.default instanceof Function?c.default.apply(c,[e,n,a].concat(r)):c.default),c.transform&&(i=c.transform.apply(c,[i,v,e,n,a,l].concat(r))),v[c.vue]=i}))})),u&&$(v.transcludeTarget).append(s),f&&f.apply(void 0,[v,e,n,a,l].concat(r)),n.on("$destroy",(function(){p.unmount()}))}}}};return u&&(l.transclude=!0,l.template='<div ng-transclude counter="'.concat(g,'"/>')),l}return Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(b[n]=r.angularJsBind)})),y.$inject=l||[],angular.module("piwikApp").directive(s,y),y}function kt(e){if("undefined"!==typeof e)return"true"===e||!!e&&e>0&&"0"!==e}function St(e){if("undefined"!==typeof e)return null===e?null:parseInt(e,10)} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */wt({component:ut,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r,i){i.yes&&(n.$eval(i.yes),setTimeout((function(){n.$apply()}),0))},no:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},validation:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},close:function(e,t,n,r){r.close&&(t.$eval(r.close),setTimeout((function(){t.$apply()}),0))},"update:modelValue":function(e,t,n,r,i,a,o){setTimeout((function(){n.$apply(o(i.piwikDialog).assign(n,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var Ot={key:0,class:"title",tabindex:"6"},St=["href","title"],kt={class:"iconsBar"},jt=["href","title"],Dt=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Ct=[Dt],Et=["title"],Pt=Object(a["createElementVNode"])("span",{class:"icon-info"},null,-1),Tt=[Pt],It={class:"ratingIcons"},xt={class:"inlineHelp"},Nt=["innerHTML"],Bt=["href"];function Mt(e,t,n,r,i,o){var c=Object(a["resolveComponent"])("RateFeature");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ot,[Object(a["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(a["renderSlot"])(e.$slots,"default")],8,St)):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",kt,[e.helpUrl&&!e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},Ct,8,jt)):Object(a["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(a["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Tt,10,Et)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",It,[Object(a["createVNode"])(c,{title:e.actualFeatureName},null,8,["title"])])],512),[[a["vShow"],e.showIcons||e.showInlineHelp]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",xt,[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Nt),e.helpUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(a["toDisplayString"])(e.translate("General_MoreDetails")),9,Bt)):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showInlineHelp]])],544)}var At=Object(a["defineAsyncComponent"])((function(){return new Promise((function(e){window.$(document).ready((function(){var t=window,n=t.Feedback;e(n?n.RateFeature:null)}))}))})),$t=Object(a["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:At},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&f.parse(j.period,j.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});$t.render=Mt;var Vt=$t,Lt=(wt({component:Vt,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),Ht={class:"card-content"},Ft={key:0,class:"card-title"},_t={key:1,class:"card-title"},Rt={ref:"content"}; + */jt({component:ut,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r,i){i.yes&&(n.$eval(i.yes),setTimeout((function(){n.$apply()}),0))},no:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},validation:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},close:function(e,t,n,r,i){i.close&&(n.$eval(i.close),setTimeout((function(){n.$apply()}),0))},"update:modelValue":function(e,t,n,r,i,o,a){setTimeout((function(){n.$apply(a(i.piwikDialog).assign(n,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0});var Ct={key:0,class:"title",tabindex:"6"},Dt=["href","title"],Et={class:"iconsBar"},Pt=["href","title"],Tt=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),It=[Tt],Vt=["title"],xt=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),Nt=[xt],Bt={class:"ratingIcons"},At={class:"inlineHelp"},Mt=["innerHTML"],$t=["href"];function Lt(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("RateFeature");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ct,[Object(o["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(o["renderSlot"])(e.$slots,"default")],8,Dt)):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",Et,[e.helpUrl&&!e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},It,8,Pt)):Object(o["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(o["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Nt,10,Vt)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Bt,[Object(o["createVNode"])(c,{title:e.actualFeatureName},null,8,["title"])])],512),[[o["vShow"],e.showIcons||e.showInlineHelp]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",At,[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Mt),e.helpUrl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(o["toDisplayString"])(e.translate("General_MoreDetails")),9,$t)):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showInlineHelp]])],544)} /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Ut(e,t,n,r,i,o){var c=Object(a["resolveComponent"])("EnrichedHeadline");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Lt,[Object(a["createElementVNode"])("div",Ht,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",Ft,Object(a["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",_t,[Object(a["createVNode"])(c,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Rt,[Object(a["renderSlot"])(e.$slots,"default")],512)])],512)}var qt=null,Jt=Object(a["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Vt},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,i=n.content;if(this.anchor){var a=document.createElement("a");a.id=this.anchor,r.parentElement.prepend(a)}if(setTimeout((function(){var e=i.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===qt&&(qt=document.querySelector("#content.admin")),qt&&(e=qt.offsetTop),e||0===e){var o=r.closest("[piwik-widget-loader]"),c=o?o.offsetTop:r.offsetTop;c-e<17&&(r.style.marginTop=0)}}});Jt.render=Ut;var Gt=Jt; + */function Ht(e,t){return Object(o["defineAsyncComponent"])((function(){return new Promise((function(n){window.$(document).ready((function(){window[e]?n(window[e][t]):n(null)}))}))}))}var Ft=Ht("Feedback","RateFeature"),_t=Object(o["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:Ft},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n=t.querySelector(".title .inlineHelp");if(!n&&t.parentElement.nextElementSibling&&(n=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),n){var r=n.getAttribute("data-content").trim();r.length&&(e.actualInlineHelp="<p>".concat(r,"</p>"),setTimeout((function(){return n.remove()}),0))}}e.actualFeatureName||(e.actualFeatureName=t.querySelector(".title").textContent),e.reportGenerated&&f.parse(S.period,S.currentDateString).containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}))}});_t.render=Lt;var Ut=_t,Rt=(jt({component:Ut,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),qt={class:"card-content"},Jt={key:0,class:"card-title"},zt={key:1,class:"card-title"},Gt={ref:"content"}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */wt({component:Gt,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function zt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qt(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 Wt(e,t,n){return t&&Qt(e.prototype,t),n&&Qt(e,n),e}function Yt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */function Qt(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("EnrichedHeadline");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Rt,[Object(o["createElementVNode"])("div",qt,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",Jt,Object(o["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",zt,[Object(o["createVNode"])(c,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Gt,[Object(o["renderSlot"])(e.$slots,"default")],512)])],512)}var Wt=null,Yt=Object(o["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Ut},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e,t=this,n=this.$refs,r=n.root,i=n.content;if(this.anchor){var o=document.createElement("a");o.id=this.anchor,r.parentElement.prepend(o)}if(setTimeout((function(){var e=i.querySelector(".contentHelp");e&&(t.actualHelpText=e.innerHTML,e.remove())}),0),!this.actualFeature||!0!==this.actualFeature&&"true"!==this.actualFeature||(this.actualFeature=this.contentTitle),null===Wt&&(Wt=document.querySelector("#content.admin")),Wt&&(e=Wt.offsetTop),e||0===e){var a=r.closest("[piwik-widget-loader]"),c=a?a.offsetTop:r.offsetTop;c-e<17&&(r.style.marginTop=0)}}});Yt.render=Qt;var Kt=Yt; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var Kt=function(){function e(){var t=this;zt(this,e),Yt(this,"segmentState",Object(a["reactive"])({availableSegments:[]})),j.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return Wt(e,[{key:"state",get:function(){return Object(a["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Xt=new Kt;function Zt(e){return rn(e)||nn(e)||tn(e)||en()}function en(){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 tn(e,t){if(e){if("string"===typeof e)return an(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)?an(e,t):void 0}}function nn(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function rn(e){if(Array.isArray(e))return an(e)}function an(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function on(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function cn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?on(Object(n),!0).forEach((function(t){dn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):on(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function sn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ln(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 un(e,t,n){return t&&ln(e.prototype,t),n&&ln(e,n),e}function dn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */jt({component:Kt,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Xt(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Zt(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 en(e,t,n){return t&&Zt(e.prototype,t),n&&Zt(e,n),e}function tn(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 fn=8,pn=3;function mn(e){return e?e instanceof Array?e:[e]:[]}var hn=function(){function e(){var t=this;sn(this,e),dn(this,"privateState",Object(a["reactive"])({comparisonsDisabledFor:[]})),dn(this,"state",Object(a["readonly"])(this.privateState)),dn(this,"colors",{}),dn(this,"segmentComparisons",Object(a["computed"])((function(){return t.parseSegmentComparisons()}))),dn(this,"periodComparisons",Object(a["computed"])((function(){return t.parsePeriodComparisons()}))),dn(this,"isEnabled",Object(a["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(a["watch"])((function(){return t.getComparisons()}),(function(){return j.postEvent("piwikComparisonsChanged")}),{deep:!0})}return un(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%fn;if(0===n)return this.colors["series".concat(r)];var i=n%pn;return this.colors["series".concat(r,"-shade").concat(i)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%fn);return t>0&&(n+="-shade".concat(t%pn)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(i){t.push({index:n,params:cn(cn({},i.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Zt(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},i={},a=!1,o=!1;e.forEach((function(e){a?r[e.params.segment]=!0:a=!0})),t.forEach((function(e){o?i["".concat(e.params.period,"|").concat(e.params.date)]=!0:o=!0}));var c=[],s=[];Object.keys(i).forEach((function(e){var t=e.split("|");c.push(t[0]),s.push(t[1])}));var l={compareSegments:Object.keys(r),comparePeriods:c,compareDates:s};if(j.helper.isAngularRenderingThePage()){var u=Oe.hashParsed.value,d=cn(cn(cn({},u),l),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&Oe.updateHash(d))}var f=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){l[e].length||f.push(e)}));var p=Oe.stringify(n),m=Oe.stringify(l);window.broadcast.propagateNewPage(p,void 0,m,f)}},{key:"getAllSeriesColors",value:function(){var e=j.ColorManager;if(!e)return[];for(var t=[],n=0;n<fn;n+=1){t.push("series".concat(n));for(var r=0;r<pn;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=Oe.parsed.value.module;"CoreUpdater"!==t&&"Installation"!==t?Ne.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=Xt.state.availableSegments,t=Zt(mn(Oe.parsed.value.compareSegments));t.unshift(Oe.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var i;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(i=e)}));var a=i?i.name:D("General_Unknown");""===t.trim()&&(a=D("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:j.helper.htmlDecode(a),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Zt(mn(Oe.parsed.value.comparePeriods)),t=Zt(mn(Oe.parsed.value.compareDates));e.unshift(Oe.parsed.value.period),t.unshift(Oe.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var i=void 0;try{i=f.parse(e[r],t[r]).getPrettyString()}catch(a){i=D("General_Error")}n.push({params:{date:t[r],period:e[r]},title:i,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=Oe.parsed.value.category||Oe.parsed.value.module,t=Oe.parsed.value.subcategory||Oe.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),vn=new hn,gn={key:0,ref:"root",class:"matomo-comparisons"},bn={class:"comparison-type"},yn=["title"],wn=["href"],On=["title"],Sn={class:"comparison-period-label"},kn=["onClick"],jn=["title"],Dn={class:"loadingPiwik",style:{display:"none"}},Cn=["alt"];function En(e,t,n,r,i,o){return e.isComparing?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gn,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.segmentComparisons,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(a["createElementVNode"])("div",bn,Object(a["toDisplayString"])(e.translate("General_Segment")),1),Object(a["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(a["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(a["toDisplayString"])(t.title),9,wn)],8,yn),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.periodComparisons,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(a["createElementVNode"])("span",{class:"comparison-dot",style:Object(a["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(a["createElementVNode"])("span",Sn,Object(a["toDisplayString"])(n.title)+" ("+Object(a["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,On)})),128)),e.segmentComparisons.length>1?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(a["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,jn)],8,kn)):Object(a["createCommentVNode"])("",!0)])})),128)),Object(a["createElementVNode"])("div",Dn,[Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,Cn),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(a["createCommentVNode"])("",!0)}function Pn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Tn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pn(Object(n),!0).forEach((function(t){In(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function In(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var xn=Object(a["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(a["computed"])((function(){return vn.isComparing()})),t=Object(a["computed"])((function(){return vn.getSegmentComparisons()})),n=Object(a["computed"])((function(){return vn.getPeriodComparisons()})),r=vn.getSeriesColor.bind(vn);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),vn.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return D("CoreHome_PeriodRange");var n=D("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=Tn({},Oe.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(Oe.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,vn.isComparing()){var t=vn.getPeriodComparisons(),n=vn.getSegmentComparisons();Ne.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:Oe.getSearchParam("compareSegments"),comparePeriods:Oe.getSearchParam("comparePeriods"),compareDates:Oe.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var i=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=i}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=vn.getComparisonSeriesIndex(t.index,0),i=e.reportData.comparisons[r],a=vn.getComparisonSeriesIndex(t.index,n.index),o=e.reportData.comparisons[a],c=e.reportData.comparisons[n.index],s='<div class="comparison-card-tooltip">',l=(o.nb_visits/i.nb_visits*100).toFixed(2);return l="".concat(l,"%"),s+=D("General_ComparisonCardTooltip1",["'".concat(o.compareSegmentPretty,"'"),o.comparePeriodPretty,l,o.nb_visits.toString(),i.nb_visits.toString()]),t.index>0&&(s+="<br/><br/>",s+=D("General_ComparisonCardTooltip2",[o.nb_visits_change.toString(),c.compareSegmentPretty,c.comparePeriodPretty])),s+="</div>",s}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;j.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});xn.render=En;var Nn=xn; + */var nn=function(){function e(){var t=this;Xt(this,e),tn(this,"segmentState",Object(o["reactive"])({availableSegments:[]})),S.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return en(e,[{key:"state",get:function(){return Object(o["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),rn=new nn;function on(e){return sn(e)||ln(e)||cn(e)||an()}function an(){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 cn(e,t){if(e){if("string"===typeof e)return un(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)?un(e,t):void 0}}function ln(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function sn(e){if(Array.isArray(e))return un(e)}function un(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function dn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dn(Object(n),!0).forEach((function(t){vn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function mn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function pn(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 hn(e,t,n){return t&&pn(e.prototype,t),n&&pn(e,n),e}function vn(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 - */function Bn(){return vn}Bn.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",Bn);wt({component:Nn,directiveName:"piwikComparisons",restrict:"E"});var Mn={ref:"root",class:"menuDropdown"},An=["title"],$n=["innerHTML"],Vn=Object(a["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Ln={class:"items"},Hn={key:0,class:"search"},Fn=["placeholder"],_n=["title"],Rn=["title"];function Un(e,t,n,r,i,o){var c=Object(a["resolveDirective"])("focus-if"),s=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mn,[Object(a["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,$n),Vn],8,An),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ln,[e.showSearch&&e.showItems?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hn,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Fn),[[a["vModelText"],e.searchTerm],[c,{},e.showItems]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,_n),[[a["vShow"],!e.searchTerm]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Rn),[[a["vShow"],e.searchTerm]])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(a["renderSlot"])(e.$slots,"default")])],512),[[a["vShow"],e.showItems]])],512)),[[s,{blur:e.lostFocus}]])}var qn=window,Jn=qn.$,Gn=Object(a["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:String},directives:{FocusAnywhereButHere:_e,FocusIf:qe},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(!1!==this.menuTitleChangeOnClick&&(this.actualMenuTitle=e.target.textContent.replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,Jn(this.$slots.default()).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();Jn(this.$refs.root).find(".item").each((function(e,n){var r=Jn(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});Gn.render=Un;var zn=Gn,Qn=(wt({component:zn,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t){setTimeout((function(){t.$apply()}),0)}}}),{ref:"root"}); + */var gn=8,bn=3;function yn(e){return e?Array.isArray(e)?e:[e]:[]}var wn=function(){function e(){var t=this;mn(this,e),vn(this,"privateState",Object(o["reactive"])({comparisonsDisabledFor:[]})),vn(this,"state",Object(o["readonly"])(this.privateState)),vn(this,"colors",{}),vn(this,"segmentComparisons",Object(o["computed"])((function(){return t.parseSegmentComparisons()}))),vn(this,"periodComparisons",Object(o["computed"])((function(){return t.parsePeriodComparisons()}))),vn(this,"isEnabled",Object(o["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(o["watch"])((function(){return t.getComparisons()}),(function(){return S.postEvent("piwikComparisonsChanged")}),{deep:!0})}return hn(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%gn;if(0===n)return this.colors["series".concat(r)];var i=n%bn;return this.colors["series".concat(r,"-shade").concat(i)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%gn);return t>0&&(n+="-shade".concat(t%bn)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(i){t.push({index:n,params:fn(fn({},i.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=on(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},i={},o=!1,a=!1;e.forEach((function(e){o?r[e.params.segment]=!0:o=!0})),t.forEach((function(e){a?i["".concat(e.params.period,"|").concat(e.params.date)]=!0:a=!0}));var c=[],l=[];Object.keys(i).forEach((function(e){var t=e.split("|");c.push(t[0]),l.push(t[1])}));var s={compareSegments:Object.keys(r),comparePeriods:c,compareDates:l};if(S.helper.isAngularRenderingThePage()){var u=Oe.hashParsed.value,d=fn(fn(fn({},u),s),n);return delete d["compareSegments[]"],delete d["comparePeriods[]"],delete d["compareDates[]"],void(JSON.stringify(d)!==JSON.stringify(u)&&Oe.updateHash(d))}var f=[];["compareSegments","comparePeriods","compareDates"].forEach((function(e){s[e].length||f.push(e)}));var m=Oe.stringify(n),p=Oe.stringify(s);window.broadcast.propagateNewPage(m,void 0,p,f)}},{key:"getAllSeriesColors",value:function(){var e=S.ColorManager;if(!e)return[];for(var t=[],n=0;n<gn;n+=1){t.push("series".concat(n));for(var r=0;r<bn;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=Oe.parsed.value.module;"CoreUpdater"!==t&&"Installation"!==t?xe.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=rn.state.availableSegments,t=on(yn(Oe.parsed.value.compareSegments));t.unshift(Oe.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var i;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(i=e)}));var o=i?i.name:C("General_Unknown");""===t.trim()&&(o=C("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:S.helper.htmlDecode(o),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=on(yn(Oe.parsed.value.comparePeriods)),t=on(yn(Oe.parsed.value.compareDates));e.unshift(Oe.parsed.value.period),t.unshift(Oe.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var i=void 0;try{i=f.parse(e[r],t[r]).getPrettyString()}catch(o){i=C("General_Error")}n.push({params:{date:t[r],period:e[r]},title:i,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=Oe.parsed.value.category||Oe.parsed.value.module,t=Oe.parsed.value.subcategory||Oe.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),On=new wn,jn={key:0,ref:"root",class:"matomo-comparisons"},kn={class:"comparison-type"},Sn=["title"],Cn=["href"],Dn=["title"],En={class:"comparison-period-label"},Pn=["onClick"],Tn=["title"],In={class:"loadingPiwik",style:{display:"none"}},Vn=["alt"];function xn(e,t,n,r,i,a){return e.isComparing?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",jn,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.segmentComparisons,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(o["createElementVNode"])("div",kn,Object(o["toDisplayString"])(e.translate("General_Segment")),1),Object(o["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(o["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(o["toDisplayString"])(t.title),9,Cn)],8,Sn),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.periodComparisons,(function(n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(o["createElementVNode"])("span",{class:"comparison-dot",style:Object(o["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(o["createElementVNode"])("span",En,Object(o["toDisplayString"])(n.title)+" ("+Object(o["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,Dn)})),128)),e.segmentComparisons.length>1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(o["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,Tn)],8,Pn)):Object(o["createCommentVNode"])("",!0)])})),128)),Object(o["createElementVNode"])("div",In,[Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,Vn),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)):Object(o["createCommentVNode"])("",!0)}function Nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nn(Object(n),!0).forEach((function(t){An(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function An(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Mn=Object(o["defineComponent"])({props:{},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(o["computed"])((function(){return On.isComparing()})),t=Object(o["computed"])((function(){return On.getSegmentComparisons()})),n=Object(o["computed"])((function(){return On.getPeriodComparisons()})),r=On.getSeriesColor.bind(On);return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),On.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return C("CoreHome_PeriodRange");var n=C("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=Bn({},Oe.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(Oe.stringify(t))},setUpTooltips:function(){var e=window,t=e.$;t(this.$refs.root).tooltip({track:!0,content:function(){var e=t(this).attr("title");return window.vueSanitize(e.replace(/\n/g,"<br />"))},show:{delay:200,duration:200},hide:!1})},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,On.isComparing()){var t=On.getPeriodComparisons(),n=On.getSegmentComparisons();xe.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:Oe.getSearchParam("compareSegments"),comparePeriods:Oe.getSearchParam("comparePeriods"),compareDates:Oe.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var i=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=i}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=On.getComparisonSeriesIndex(t.index,0),i=e.reportData.comparisons[r],o=On.getComparisonSeriesIndex(t.index,n.index),a=e.reportData.comparisons[o],c=e.reportData.comparisons[n.index],l='<div class="comparison-card-tooltip">',s=(a.nb_visits/i.nb_visits*100).toFixed(2);return s="".concat(s,"%"),l+=C("General_ComparisonCardTooltip1",["'".concat(a.compareSegmentPretty,"'"),a.comparePeriodPretty,s,a.nb_visits.toString(),i.nb_visits.toString()]),t.index>0&&(l+="<br/><br/>",l+=C("General_ComparisonCardTooltip2",[a.nb_visits_change.toString(),c.compareSegmentPretty,c.comparePeriodPretty])),l+="</div>",l}},updated:function(){var e=this;setTimeout((function(){return e.setUpTooltips()}))},mounted:function(){var e=this;S.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged(),setTimeout((function(){return e.setUpTooltips()}))},beforeUnmount:function(){try{window.$(this.refs.root).tooltip("destroy")}catch(e){}}});Mn.render=xn;var $n=Mn; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Wn(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qn,null,512)}function Yn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Kn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yn(Object(n),!0).forEach((function(t){Xn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Xn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Zn=1,er=window,tr=er.$,nr=Object(a["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(a["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var i=r.length?r:t;i.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function i(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return o(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function o(e,t,n){var r,a=e.parent(),o=a.children("td");if(a.is(":first-child")){var c=a.children("td:not(.ui-datepicker-other-month)").first();return r=i(c,t,n),r.setDate(o.index(e)-o.index(c)+1),r}var s=a.children("td:not(.ui-datepicker-other-month)").last();return r=i(s,t,n),r.setDate(r.getDate()+o.index(e)-o.index(s)),r}function c(){var e=tr(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),i=parseInt(t.attr("data-year"),10);return[r,i]}function s(){var e=tr(n.value),t=e.find(".ui-datepicker-calendar"),a=c(),o=t.find("td"),s=o.first(),l=i(s,a[0],a[1]);o.each((function(){r(tr(this),l),l.setDate(l.getDate()+1)}))}function l(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=P(t)}catch(a){return!1}var r=tr(n.value),i=c();return(i[0]!==t.getMonth()||i[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=tr(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=tr(n.value),r=e.stepMonths||Zn;if(t.datepicker("option","stepMonths")===r)return!1;var i=tr(".ui-datepicker-month",t).val(),a=tr(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(a,i)),u(),!0}function f(){var t=tr(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function p(){if(tr(this).hasClass("ui-state-hover")){var e=tr(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function m(){f(),s()}return Object(a["watch"])((function(){return Kn({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&l()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&f(),n&&s()})),Object(a["onMounted"])((function(){var r=tr(n.value),a=e.options||{},o=Kn(Kn(Kn({},j.getBaseDatePickerOptions()),a),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(o),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&s()})),r.on("mouseenter","tbody td",(function(){var e=c(),n=tr(this),r=i(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){s()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return p()})),r.on("click",(function(e){e.preventDefault();var t=tr(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&m()})),r.on("click","td[data-month]",(function(e){var n=tr(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),i=parseInt(n.attr("data-year"),10),a=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(i,r,a)})}));var h=d();l(),f(),h||u(),s()})),{root:n}}});nr.render=Wn;var rr=nr,ir=(wt({component:rr,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,i){i()},"cell-hover-leave":function(e,t,n,r,i){i()},"date-select":function(e,t,n,r,i){i()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),ar={id:"calendarRangeTo"}; + */function Ln(){return On}Ln.$inject=[],angular.module("piwikApp.service").factory("piwikComparisonsService",Ln);jt({component:$n,directiveName:"piwikComparisons",restrict:"E"});var Hn={ref:"root",class:"menuDropdown"},Fn=["title"],_n=["innerHTML"],Un=Object(o["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Rn={class:"items"},qn={key:0,class:"search"},Jn=["placeholder"],zn=["title"],Gn=["title"];function Qn(e,t,n,r,i,a){var c=Object(o["resolveDirective"])("focus-if"),l=Object(o["resolveDirective"])("focus-anywhere-but-here");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Hn,[Object(o["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,_n),Un],8,Fn),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Rn,[e.showSearch&&e.showItems?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",qn,[Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Jn),[[o["vModelText"],e.searchTerm],[c,{},e.showItems]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,zn),[[o["vShow"],!e.searchTerm]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Gn),[[o["vShow"],e.searchTerm]])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(o["renderSlot"])(e.$slots,"default")])],512),[[o["vShow"],e.showItems]])],512)),[[l,{blur:e.lostFocus}]])}var Wn=window,Yn=Wn.$,Kn=Object(o["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:String},directives:{FocusAnywhereButHere:_e,FocusIf:qe},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(!1!==this.menuTitleChangeOnClick&&(this.actualMenuTitle=e.target.textContent.replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,Yn(this.$slots.default()).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();Yn(this.$refs.root).find(".item").each((function(e,n){var r=Yn(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});Kn.render=Qn;var Xn=Kn,Zn=(jt({component:Xn,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t){setTimeout((function(){t.$apply()}),0)}}}),{ref:"root"}); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function or(e,t,n,r,i,o){var c=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createElementBlock"])(a["Fragment"],null,[Object(a["createElementVNode"])("div",ir,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.startDateText]])]),Object(a["createVNode"])(c,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(a["createElementVNode"])("div",ar,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.endDateText]])]),Object(a["createVNode"])(c,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var cr=Object(a["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:rr},data:function(){var e=null;try{e=P(this.startDate)}catch(n){}var t=null;try{t=P(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=P(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=P(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:C(this.fromPickerSelectedDates[0]),end:C(this.toPickerSelectedDates[0])})}}});cr.render=or;var sr=cr; + */function er(e,t,n,r,i,a){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Zn,null,512)}function tr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function nr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tr(Object(n),!0).forEach((function(t){rr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function rr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ir=1,or=window,ar=or.$,cr=Object(o["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(o["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var i=r.length?r:t;i.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function i(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return a(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function a(e,t,n){var r,o=e.parent(),a=o.children("td");if(o.is(":first-child")){var c=o.children("td:not(.ui-datepicker-other-month)").first();return r=i(c,t,n),r.setDate(a.index(e)-a.index(c)+1),r}var l=o.children("td:not(.ui-datepicker-other-month)").last();return r=i(l,t,n),r.setDate(r.getDate()+a.index(e)-a.index(l)),r}function c(){var e=ar(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),i=parseInt(t.attr("data-year"),10);return[r,i]}function l(){var e=ar(n.value),t=e.find(".ui-datepicker-calendar"),o=c(),a=t.find("td"),l=a.first(),s=i(l,o[0],o[1]);a.each((function(){r(ar(this),s),s.setDate(s.getDate()+1)}))}function s(){var t=e.viewDate;if(!t)return!1;if(!(t instanceof Date))try{t=P(t)}catch(o){return!1}var r=ar(n.value),i=c();return(i[0]!==t.getMonth()||i[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=ar(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=ar(n.value),r=e.stepMonths||ir;if(t.datepicker("option","stepMonths")===r)return!1;var i=ar(".ui-datepicker-month",t).val(),o=ar(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(o,i)),u(),!0}function f(){var t=ar(n.value);t.find(".ui-datepicker-month").attr("disabled",e.disableMonthDropdown)}function m(){if(ar(this).hasClass("ui-state-hover")){var e=ar(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function p(){f(),l()}return Object(o["watch"])((function(){return nr({},e)}),(function(e,t){var n=!1;["selectedDateStart","selectedDateEnd","highlightedDateStart","highlightedDateEnd"].forEach((function(r){n||(!e[r]&&t[r]&&(n=!0),e[r]&&!t[r]&&(n=!0),e[r]&&t[r]&&e[r].getTime()!==t[r].getTime()&&(n=!0))})),e.viewDate!==t.viewDate&&s()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.enableDisableMonthDropdown!==t.enableDisableMonthDropdown&&f(),n&&l()})),Object(o["onMounted"])((function(){var r=ar(n.value),o=e.options||{},a=nr(nr(nr({},S.getBaseDatePickerOptions()),o),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(a),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&l()})),r.on("mouseenter","tbody td",(function(){var e=c(),n=ar(this),r=i(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){l()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",(function(){return m()})),r.on("click",(function(e){e.preventDefault();var t=ar(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&p()})),r.on("click","td[data-month]",(function(e){var n=ar(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),i=parseInt(n.attr("data-year"),10),o=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(i,r,o)})}));var h=d();s(),f(),h||u(),l()})),{root:n}}});cr.render=er;var lr=cr,sr=(jt({component:lr,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,i){i()},"cell-hover-leave":function(e,t,n,r,i){i()},"date-select":function(e,t,n,r,i){i()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),ur={id:"calendarRangeTo"}; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */wt({component:sr,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function lr(e,t,n,r,i,o){var c=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var ur=new Date(j.minDateYear,j.minDateMonth-1,j.minDateDay),dr=new Date(j.maxDateYear,j.maxDateMonth-1,j.maxDateDay),fr=Object(a["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:rr},emits:["select"],setup:function(e,t){var n=Object(a["ref"])(e.date),r=Object(a["ref"])([null,null]),i=Object(a["ref"])([null,null]);function o(t){var n=f.get(e.period).parse(t).getDateRange();return n[0]=ur<n[0]?n[0]:ur,n[1]=dr>n[1]?n[1]:dr,n}function c(t,n){var r=t<ur||t>dr,a=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);i.value=r||a?[null,null]:o(t)}function s(){i.value=[null,null]}function l(e){t.emit("select",{date:e})}function u(){if(!e.period||!e.date)return r.value=[null,null],void(n.value=null);r.value=o(e.date),n.value=P(e.date)}return Object(a["watch"])(e,u),u(),{selectedDates:r,highlightedDates:i,viewDate:n,onHoverNormalCell:c,onHoverLeaveNormalCells:s,onDateSelected:l}}});fr.render=lr;var pr=fr,mr=(wt({component:pr,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),["value","name"]),hr=["title"],vr=["textContent"],gr={key:1,class:"placeholder"},br={class:"dropdown"},yr={class:"custom_select_search"},wr=["placeholder"],Or={key:0},Sr={class:"custom_select_container"},kr=["onClick"],jr=["innerHTML","href","title"],Dr={class:"ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all\n siteSelect"},Cr={class:"ui-menu-item"},Er={class:"ui-corner-all",tabindex:"-1"},Pr={key:1}; + */function dr(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createElementBlock"])(o["Fragment"],null,[Object(o["createElementVNode"])("div",sr,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onChange:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.startDateText]])]),Object(o["createVNode"])(c,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(o["createElementVNode"])("div",ur,[Object(o["createElementVNode"])("h6",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onChange:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[o["vModelText"],e.endDateText]])]),Object(o["createVNode"])(c,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])],64)}var fr=Object(o["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:lr},data:function(){var e=null;try{e=P(this.startDate)}catch(n){}var t=null;try{t=P(this.endDate)}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){"from"===e?this.setStartRangeDateFromStr(t.target.value):this.setEndRangeDateFromStr(t.target.value)},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){var t;try{t=P(e)}catch(n){this.startDateText=this.startDate}t&&(this.fromPickerSelectedDates=[t,t]),this.rangeChanged()},setEndRangeDateFromStr:function(e){var t;try{t=P(e)}catch(n){this.endDateText=this.endDate}t&&(this.toPickerSelectedDates=[t,t]),this.rangeChanged()},rangeChanged:function(){this.$emit("rangeChange",{start:D(this.fromPickerSelectedDates[0]),end:D(this.toPickerSelectedDates[0])})}}});fr.render=dr;var mr=fr; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Tr(e,t,n,r,i,o){var c,s,l,u,d=Object(a["resolveComponent"])("AllSitesLink"),f=Object(a["resolveDirective"])("focus-if"),p=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{key:0,type:"hidden",value:null===(c=e.selectedSite)||void 0===c?void 0:c.id,name:e.name},null,8,mr)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=function(){return e.onClickSelector&&e.onClickSelector.apply(e,arguments)}),onKeydown:t[1]||(t[1]=function(t){return e.onPressEnter(t)}),href:"javascript:void(0)",class:Object(a["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(["icon icon-arrow-bottom",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(a["createElementVNode"])("span",null,[null!==(s=e.selectedSite)&&void 0!==s&&s.name||!e.placeholder?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,textContent:Object(a["toDisplayString"])((null===(l=e.selectedSite)||void 0===l?void 0:l.name)||e.firstSiteName)},null,8,vr)):Object(a["createCommentVNode"])("",!0),null!==(u=e.selectedSite)&&void 0!==u&&u.name||!e.placeholder?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",gr,Object(a["toDisplayString"])(e.placeholder),1))])],42,hr),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",br,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",yr,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=function(t){e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,wr),[[a["vModelText"],e.searchTerm],[f,{},e.shouldFocusOnSearch]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=function(t){e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[a["vShow"],e.searchTerm]])],512),[[a["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Or,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Sr,[Object(a["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=function(t){return e.showSitesList=!1})},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(n){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{onClick:function(t){return e.switchSite(n,t)},key:n.idsite},[Object(a["createElementVNode"])("a",{onClick:t[6]||(t[6]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.getMatchedSiteName(n.name)),tabindex:"4",href:e.getUrlForSiteId(n.idsite),title:n.name},null,8,jr)],8,kr)),[[a["vShow"],!(!e.showSelectedSite&&e.activeSiteId===n.idsite)]])})),128))]),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Dr,[Object(a["createElementVNode"])("li",Cr,[Object(a["createElementVNode"])("a",Er,Object(a["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[a["vShow"],!e.sites.length&&e.searchTerm]])]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pr,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showSitesList]])],2)),[[p,{blur:e.onBlur}]])}var Ir=["innerHTML","href"];function xr(e,t,n,r,i,o){var c=this;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{onClick:t[1]||(t[1]=function(e){return c.onClick(e)}),class:"custom_select_all"},[Object(a["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,Ir)])}var Nr=Object(a["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick:function(e){this.$emit("click",e)}}});Nr.render=xr;var Br=Nr;function Mr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mr(Object(n),!0).forEach((function(t){Hr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function $r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Vr(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 Lr(e,t,n){return t&&Vr(e.prototype,t),n&&Vr(e,n),e}function Hr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */jt({component:mr,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function pr(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("DatePicker");return Object(o["openBlock"])(),Object(o["createBlock"])(c,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var hr=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay),vr=new Date(S.maxDateYear,S.maxDateMonth-1,S.maxDateDay),gr=Object(o["defineComponent"])({props:{period:String,date:[String,Date]},components:{DatePicker:lr},emits:["select"],setup:function(e,t){var n=Object(o["ref"])(e.date),r=Object(o["ref"])([null,null]),i=Object(o["ref"])([null,null]);function a(t){var n=f.get(e.period).parse(t).getDateRange();return n[0]=hr<n[0]?n[0]:hr,n[1]=vr>n[1]?n[1]:vr,n}function c(t,n){var r=t<hr||t>vr,o=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);i.value=r||o?[null,null]:a(t)}function l(){i.value=[null,null]}function s(e){t.emit("select",{date:e})}function u(){if(!e.period||!e.date)return r.value=[null,null],void(n.value=null);r.value=a(e.date),n.value=P(e.date)}return Object(o["watch"])(e,u),u(),{selectedDates:r,highlightedDates:i,viewDate:n,onHoverNormalCell:c,onHoverLeaveNormalCells:l,onDateSelected:s}}});gr.render=pr;var br=gr,yr=(jt({component:br,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),["value","name"]),wr=["title"],Or=["textContent"],jr={key:1,class:"placeholder"},kr={class:"dropdown"},Sr={class:"custom_select_search"},Cr=["placeholder"],Dr={key:0},Er={class:"custom_select_container"},Pr=["onClick"],Tr=["innerHTML","href","title"],Ir={class:"ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all\n siteSelect"},Vr={class:"ui-menu-item"},xr={class:"ui-corner-all",tabindex:"-1"},Nr={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 - */var Fr=function(){function e(){var t=this;$r(this,e),Hr(this,"state",Object(a["reactive"])({initialSites:[],isInitialized:!1})),Hr(this,"currentRequest",void 0),Hr(this,"limitRequest",void 0),Hr(this,"initialSites",Object(a["computed"])((function(){return Object(a["readonly"])(t.state.initialSites)})))}return Lr(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(a["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,e.state.initialSites=t,Object(a["readonly"])(t)}))}},{key:"loadSite",value:function(e){"all"===e?Oe.updateUrl(Ar(Ar({},Oe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Oe.parsed.value.date,period:Oe.parsed.value.period})):Oe.updateUrl(Ar(Ar({},Oe.parsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequest&&this.currentRequest.abort(),this.limitRequest||(this.limitRequest=Ne.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,a="SitesManager.getPatternMatchSites";return n&&(a="SitesManager.getSitesWithAdminAccess"),t.currentRequest=Ne.fetch({method:a,limit:i,pattern:e}),t.currentRequest})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequest=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return Ar(Ar({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),_r=new Fr,Rr=300;function Ur(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Rr;return function(){for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];t&&clearTimeout(t),t=setTimeout((function(){e.apply(void 0,i)}),n)}}function qr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Jr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qr(Object(n),!0).forEach((function(t){Gr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Gr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var zr=Object(a["defineComponent"])({props:{modelValue:{Object:Object,default:{id:j.idSite,name:j.helper.htmlDecode(j.siteName)}},showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:D("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Br},directives:{FocusAnywhereButHere:_e,FocusIf:qe},watch:{searchTerm:function(){this.onSearchTermChanged()},modelValue:{handler:function(e){this.selectedSite=Jr({},e)},deep:!0}},data:function(){return{searchTerm:"",activeSiteId:j.idSite,showSitesList:!1,isLoading:!1,sites:[],selectedSite:{id:j.idSite,name:j.helper.htmlDecode(j.siteName)},autocompleteMinSites:parseInt(j.config.autocomplete_min_sites,10)}},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.selectedSite&&e.selectedSite.id||!e.sites[0]||(e.selectedSite={id:e.sites[0].idsite,name:e.sites[0].name},e.$emit("update:modelValue",Jr({},e.selectedSite)))}));var t=D("CoreHome_ShortcutWebsiteSelector");j.helper.registerShortcut("w",t,(function(t){t.altKey||(t.preventDefault?t.preventDefault():t.returnValue=!1,e.$refs.selectorLink.click(),e.$refs.selectorLink.focus())}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?D("CoreHome_ChangeCurrentWebsite",(null===(e=this.selectedSite)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return _r.initialSites.value&&_r.initialSites.value.length>1},firstSiteName:function(){return this.sites&&this.sites.length>0?this.sites[0].name:""},urlAllSites:function(){var e=Oe.stringify(Jr(Jr({},Oe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Oe.parsed.value.date,period:Oe.parsed.value.period}));return"?".concat(e)}},created:function(){this.searchSite=Ur(this.searchSite.bind(this))},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({idsite:"all",name:this.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.selectedSite={id:e.idsite,name:e.name},this.$emit("update:modelValue",Jr({},this.selectedSite)),this.switchSiteOnSelect&&this.activeSiteId!==e.idsite&&_r.loadSite(e.idsite))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return j.helper.htmlEntities(e);var n=j.helper.htmlEntities(e.substring(0,t)),r=j.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return _r.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,_r.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Oe.stringify(Jr(Jr({},Oe.urlParsed.value),{},{segment:"",idSite:e})),n=Oe.stringify(Jr(Jr({},Oe.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});zr.render=Tr;var Qr=zr;function Wr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Yr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Wr(Object(n),!0).forEach((function(t){Kr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */function Br(e,t,n,r,i,a){var c,l,s,u,d=Object(o["resolveComponent"])("AllSitesLink"),f=Object(o["resolveDirective"])("focus-if"),m=Object(o["resolveDirective"])("focus-anywhere-but-here");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(o["openBlock"])(),Object(o["createElementBlock"])("input",{key:0,type:"hidden",value:null===(c=e.modelValue)||void 0===c?void 0:c.id,name:e.name},null,8,yr)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=function(){return e.onClickSelector&&e.onClickSelector.apply(e,arguments)}),onKeydown:t[1]||(t[1]=function(t){return e.onPressEnter(t)}),href:"javascript:void(0)",class:Object(o["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(o["createElementVNode"])("span",{class:Object(o["normalizeClass"])(["icon icon-arrow-bottom",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(o["createElementVNode"])("span",null,[null!==(l=e.modelValue)&&void 0!==l&&l.name||!e.placeholder?(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",{key:0,textContent:Object(o["toDisplayString"])((null===(s=e.modelValue)||void 0===s?void 0:s.name)||e.firstSiteName)},null,8,Or)):Object(o["createCommentVNode"])("",!0),null!==(u=e.modelValue)&&void 0!==u&&u.name||!e.placeholder?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",jr,Object(o["toDisplayString"])(e.placeholder),1))])],42,wr),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",kr,[Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Sr,[Object(o["withDirectives"])(Object(o["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=function(t){e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,Cr),[[o["vModelText"],e.searchTerm],[f,{},e.shouldFocusOnSearch]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=function(t){e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[o["vShow"],e.searchTerm]])],512),[[o["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Dr,[Object(o["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",Er,[Object(o["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=function(t){return e.showSitesList=!1})},[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.sites,(function(n,r){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{onClick:function(t){return e.switchSite(n,t)},key:r},[Object(o["createElementVNode"])("a",{onClick:t[6]||(t[6]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.getMatchedSiteName(n.name)),tabindex:"4",href:e.getUrlForSiteId(n.idsite),title:n.name},null,8,Tr)],8,Pr)),[[o["vShow"],!(!e.showSelectedSite&&e.activeSiteId===n.idsite)]])})),128))]),Object(o["withDirectives"])(Object(o["createElementVNode"])("ul",Ir,[Object(o["createElementVNode"])("li",Vr,[Object(o["createElementVNode"])("a",xr,Object(o["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[o["vShow"],!e.sites.length&&e.searchTerm]])]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Nr,[Object(o["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(o["createCommentVNode"])("",!0)],512),[[o["vShow"],e.showSitesList]])],2)),[[m,{blur:e.onBlur}]])}var Ar=["innerHTML","href"];function Mr(e,t,n,r,i,a){var c=this;return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{onClick:t[1]||(t[1]=function(e){return c.onClick(e)}),class:"custom_select_all"},[Object(o["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,Ar)])}var $r=Object(o["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick:function(e){this.$emit("click",e)}}});$r.render=Mr;var Lr=$r;function Hr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Hr(Object(n),!0).forEach((function(t){qr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Hr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function _r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ur(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 Rr(e,t,n){return t&&Ur(e.prototype,t),n&&Ur(e,n),e}function qr(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 - */wt({component:Qr,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,a){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&(r.attr("siteid",e.id),r.trigger("change",e),a&&a.$setViewValue(e))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i,a){var o=i;o&&(o.$setViewValue(e.modelValue),o.$render=function(){angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue}),a((function(){r.siteid&&r.sitename&&(e.modelValue={id:r.siteid,name:j.helper.htmlDecode(r.sitename)},o.$setViewValue(Yr({},e.modelValue)))}))}});var Xr={ref:"root",class:"quickAccessInside"},Zr=["title"],ei={class:"dropdown"},ti={class:"no-result"},ni=["onClick"],ri=["onMouseenter","onClick"],ii={class:"quickAccessMatomoSearch"},ai=["onMouseenter","onClick"],oi=["textContent"],ci={class:"quick-access-category helpCategory"},si=["href"];function li(e,t,n,r,i,o){var c=Object(a["resolveDirective"])("focus-if"),s=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Xr,[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},null,40,Zr),[[a["vModelText"],e.searchTerm],[c,{},e.searchActive]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",ei,[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",ti,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,ni),(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,ri)})),128))])})),128)),Object(a["createElementVNode"])("ul",ii,[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,oi)],42,ai)),[[a["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",ci,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?s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(a["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,si)],34)])],512),[[a["vShow"],e.searchTerm&&e.searchActive]])],512)),[[s,{blur:e.onBlur}]])}function ui(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function di(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ui(Object(n),!0).forEach((function(t){fi(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ui(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function fi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function pi(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.$(window).height()&&t.right<=window.$(window).width()}function mi(e){e&&e.scrollIntoView&&e.scrollIntoView()}var hi=Object(a["defineComponent"])({props:{},directives:{FocusAnywhereButHere:_e,FocusIf:qe},watch:{searchActive:function(e){var t=this.$refs.root.parentElement.classList;t.toggle("active",e),t.toggle("expanded",e)}},mounted:function(){var e=this;this.$refs.root.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),j.helper.registerShortcut("f",D("CoreHome_ShortcutSearch"),(function(t){t.altKey||(t.preventDefault(),mi(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=Ur(this.searchMenu.bind(this))},computed:{hasSitesSelector:function(){return!!document.querySelector(".top_controls [piwik-siteselector]")},quickAccessTitle:function(){var e="",t=[D("CoreHome_MenuEntries")];this.hasSegmentSelector&&t.push(D("CoreHome_Segments")),this.hasSitesSelector&&t.push(D("SitesManager_Sites"));while(t.length)e+=t.shift(),t.length>=2?e+=", ":1===t.length&&(e+=" ".concat(D("General_And")," "));return D("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.root.querySelector("input").blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!pi(e)&&mi(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");return e&&e.length&&e.item(this.searchIndex)?e.item(this.searchIndex):null},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},a=[],o=function(e){var t=di({},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,_r.searchSite(n).then((function(e){t.sites=e})).finally((function(){t.isLoading=!1})));var c=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 s=this.topMenuItems.filter(c),l=this.leftMenuItems.filter(c),u=this.segmentItems.filter(c);s.forEach(o),l.forEach(o),u.forEach(o),this.numMenuItems=s.length+l.length+u.length,this.menuItems=a},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){_r.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=D("CoreHome_Menu"),n=[];return document.querySelectorAll("nav .sidenav li > a").forEach((function(r){var i=r.textContent.trim();i||(i=r.getAttribute("title").trim()),i&&(n.push({name:i,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=window.$(n).find("> .item").text().trim();r&&-1!==r.lastIndexOf("\n")&&(r=r.substr(0,r.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,i){var a=i.textContent.trim();a&&(t.push({name:a,category:r,index:e.menuIndexCounter+=1}),i.setAttribute("quick_access","".concat(e.menuIndexCounter)))}))})),t},getSegmentItems:function(){var e=this;if(!this.hasSegmentSelector)return[];var t=D("CoreHome_Segments"),n=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach((function(r){var i=r.querySelector(".segname").textContent.trim();i&&(n.push({name:i,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});hi.render=li;var vi=hi,gi=(wt({component:vi,directiveName:"piwikQuickAccess",events:{itemSelected:function(e,t,n,r,i,a,o){o()},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}}}),{class:"loadingPiwik"}),bi=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1); + */var Jr=function(){function e(){var t=this;_r(this,e),qr(this,"state",Object(o["reactive"])({initialSites:[],isInitialized:!1})),qr(this,"currentRequest",void 0),qr(this,"limitRequest",void 0),qr(this,"initialSites",Object(o["computed"])((function(){return Object(o["readonly"])(t.state.initialSites)})))}return Rr(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(o["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,e.state.initialSites=t,Object(o["readonly"])(t)}))}},{key:"loadSite",value:function(e){"all"===e?Oe.updateUrl(Fr(Fr({},Oe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Oe.parsed.value.date,period:Oe.parsed.value.period})):Oe.updateUrl(Fr(Fr({},Oe.parsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequest&&this.currentRequest.abort(),this.limitRequest||(this.limitRequest=xe.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,o="SitesManager.getPatternMatchSites";return n&&(o="SitesManager.getSitesWithAdminAccess"),t.currentRequest=xe.fetch({method:o,limit:i,pattern:e}),t.currentRequest})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequest=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return Fr(Fr({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),zr=new Jr,Gr=300;function Qr(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Gr;return function(){for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];t&&clearTimeout(t),t=setTimeout((function(){e.apply(void 0,i)}),n)}}function Wr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Yr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Wr(Object(n),!0).forEach((function(t){Kr(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Kr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xr=Object(o["defineComponent"])({props:{modelValue:{Object:Object,default:{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}},showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:C("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Lr},directives:{FocusAnywhereButHere:_e,FocusIf:qe},watch:{searchTerm:function(){this.onSearchTermChanged()}},data:function(){return{searchTerm:"",activeSiteId:S.idSite,showSitesList:!1,isLoading:!1,sites:[],selectedSite:this.modelValue||{id:S.idSite,name:S.helper.htmlDecode(S.siteName)},autocompleteMinSites:parseInt(S.config.autocomplete_min_sites,10)}},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.modelValue&&e.modelValue.id||!e.sites[0]||e.$emit("update:modelValue",{id:e.sites[0].idsite,name:e.sites[0].name})}));var t=C("CoreHome_ShortcutWebsiteSelector");S.helper.registerShortcut("w",t,(function(t){t.altKey||(t.preventDefault?t.preventDefault():t.returnValue=!1,e.$refs.selectorLink.click(),e.$refs.selectorLink.focus())}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?C("CoreHome_ChangeCurrentWebsite",(null===(e=this.modelValue)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return zr.initialSites.value&&zr.initialSites.value.length>1},firstSiteName:function(){return this.sites&&this.sites.length>0?this.sites[0].name:""},urlAllSites:function(){var e=Oe.stringify(Yr(Yr({},Oe.urlParsed.value),{},{module:"MultiSites",action:"index",date:Oe.parsed.value.date,period:Oe.parsed.value.period}));return"?".concat(e)}},created:function(){this.searchSite=Qr(this.searchSite.bind(this))},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({idsite:"all",name:this.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.idsite,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.idsite&&zr.loadSite(e.idsite))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return S.helper.htmlEntities(e);var n=S.helper.htmlEntities(e.substring(0,t)),r=S.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return zr.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,zr.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Oe.stringify(Yr(Yr({},Oe.urlParsed.value),{},{segment:"",idSite:e})),n=Oe.stringify(Yr(Yr({},Oe.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});Xr.render=Br;var Zr=Xr;function ei(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ti(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ei(Object(n),!0).forEach((function(t){ni(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ei(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ni(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 - */function yi(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gi,[bi,Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.loadingMessage),1)],512)),[[a["vShow"],e.loading]])}var wi=Object(a["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:D("General_LoadingData")}}});wi.render=yi;var Oi=wi,Si=wt({component:Oi,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return D("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"}); + */jt({component:Zr,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,o,a){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&a((function(){n.value=e,r.attr("siteid",e.id),r.trigger("change",e),o&&(n.isNotFirstModelChange||t.modelValue)&&(o.$setViewValue(e),o.$render()),n.isNotFirstModelChange=!0}))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i,a){var c=i;t.$watch("value",(function(t){t!==e.modelValue&&(e.modelValue=t)})),c&&(e.modelValue&&c.$setViewValue(e.modelValue),c.$render=function(){Object(o["nextTick"])((function(){angular.isString(c.$viewValue)?e.modelValue=JSON.parse(c.$viewValue):e.modelValue=c.$viewValue}))}),a((function(){r.siteid&&r.sitename&&(e.modelValue={id:r.siteid,name:S.helper.htmlDecode(r.sitename)},c.$setViewValue(ti({},e.modelValue)))}))}});var ri={ref:"root",class:"quickAccessInside"},ii=["title"],oi={class:"dropdown"},ai={class:"no-result"},ci=["onClick"],li=["onMouseenter","onClick"],si={class:"quickAccessMatomoSearch"},ui=["onMouseenter","onClick"],di=["textContent"],fi={class:"quick-access-category helpCategory"},mi=["href"];function pi(e,t,n,r,i,a){var c=Object(o["resolveDirective"])("focus-if"),l=Object(o["resolveDirective"])("focus-anywhere-but-here");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ri,[Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=function(t){return e.searchActive=!0})},null,544),[[o["vShow"],!(e.searchTerm||e.searchActive)]]),Object(o["withDirectives"])(Object(o["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},null,40,ii),[[o["vModelText"],e.searchTerm],[c,{},e.searchActive]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",oi,[Object(o["withDirectives"])(Object(o["createElementVNode"])("ul",null,[Object(o["createElementVNode"])("li",ai,Object(o["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[o["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.menuItems,(function(t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("ul",{key:t.title},[Object(o["createElementVNode"])("li",{class:"quick-access-category",onClick:function(n){e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(o["toDisplayString"])(t.title),9,ci),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(t.items,(function(t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{class:Object(o["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(o["createElementVNode"])("a",null,Object(o["toDisplayString"])(t.name.trim()),1)],42,li)})),128))])})),128)),Object(o["createElementVNode"])("ul",si,[Object(o["withDirectives"])(Object(o["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(o["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[o["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("li",{class:"no-result"},Object(o["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[o["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.sites,(function(t,n){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{class:Object(o["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(o["createElementVNode"])("a",{textContent:Object(o["toDisplayString"])(t.name)},null,8,di)],42,ui)),[[o["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(o["createElementVNode"])("ul",null,[Object(o["createElementVNode"])("li",fi,Object(o["toDisplayString"])(e.translate("General_HelpResources")),1),Object(o["createElementVNode"])("li",{class:Object(o["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=function(t){return e.searchIndex="help"})},[Object(o["createElementVNode"])("a",{href:"https://matomo.org?s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(o["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,mi)],34)])],512),[[o["vShow"],e.searchTerm&&e.searchActive]])],512)),[[l,{blur:e.onBlur}]])}function hi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function vi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hi(Object(n),!0).forEach((function(t){gi(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function gi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bi(e){var t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.$(window).height()&&t.right<=window.$(window).width()}function yi(e){e&&e.scrollIntoView&&e.scrollIntoView()}var wi=Object(o["defineComponent"])({props:{},directives:{FocusAnywhereButHere:_e,FocusIf:qe},watch:{searchActive:function(e){var t=this.$refs.root.parentElement.classList;t.toggle("active",e),t.toggle("expanded",e)}},mounted:function(){var e=this;this.$refs.root.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(),yi(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=Qr(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.root.querySelector("input").blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!bi(e)&&yi(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");return e&&e.length&&e.item(this.searchIndex)?e.item(this.searchIndex):null},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},o=[],a=function(e){var t=vi({},e);r+=1,t.menuIndex=r;var n=t.category;n in i||(o.push({title:n,items:[]}),i[n]=o.length-1);var a=i[n];o[a].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,zr.searchSite(n).then((function(e){t.sites=e})).finally((function(){t.isLoading=!1})));var c=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 l=this.topMenuItems.filter(c),s=this.leftMenuItems.filter(c),u=this.segmentItems.filter(c);l.forEach(a),s.forEach(a),u.forEach(a),this.numMenuItems=l.length+s.length+u.length,this.menuItems=o},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){zr.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=r.textContent.trim();i||(i=r.getAttribute("title").trim()),i&&(n.push({name:i,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=window.$(n).find("> .item").text().trim();r&&-1!==r.lastIndexOf("\n")&&(r=r.substr(0,r.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,i){var o=i.textContent.trim();o&&(t.push({name:o,category:r,index:e.menuIndexCounter+=1}),i.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=r.querySelector(".segname").textContent.trim();i&&(n.push({name:i,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});wi.render=pi;var Oi=wi; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function ki(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ji(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["alert",ki({},"alert-".concat(e.severity),!0)])},[Object(a["renderSlot"])(e.$slots,"default")],2)}var Di=Object(a["defineComponent"])({props:{severity:{type:String,required:!0}}});Di.render=ji;var Ci=Di,Ei=wt({component:Ci,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0}); + */jt({component:Oi,directiveName:"piwikQuickAccess",events:{itemSelected:function(e,t,n,r,i,o,a){a()},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}}});function ji(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ki={class:"fieldArray form-group"},Si={key:0,class:"fieldUiControl"},Ci=["onClick","title"];function Di(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("Field");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ki,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.modelValue,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["fieldArrayTable multiple valign-wrapper",ji({},"fieldArrayTable".concat(n),!0)]),key:n},[e.field.uiControl?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Si,[Object(o["createVNode"])(c,{"full-width":!0,"model-value":t,options:e.field.availableValues,"onUpdate:modelValue":function(t){return e.onEntryChange(t,n)},placeholder:" ",uicontrol:e.field.uiControl,title:e.field.title,name:"".concat(e.name,"-").concat(n)},null,8,["model-value","options","onUpdate:modelValue","uicontrol","title","name"])])):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Ci),[[o["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function Ei(e){return Vi(e)||Ii(e)||Ti(e)||Pi()}function Pi(){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 Ti(e,t){if(e){if("string"===typeof e)return xi(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)?xi(e,t):void 0}}function Ii(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Vi(e){if(Array.isArray(e))return xi(e)}function xi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ni=Ht("CorePluginsAdmin","Field"),Bi=Object(o["defineComponent"])({props:{modelValue:Array,name:String,field:Object},components:{Field:Ni},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&""===e.slice(-1)[0]||this.$emit("update:modelValue",[].concat(Ei(e||[]),[""]))},onEntryChange:function(e,t){var n=Ei(this.modelValue);n[t]=e,this.$emit("update:modelValue",n)},removeEntry:function(e){if(e>-1){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}}}});Bi.render=Di;var Ai=Bi; /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */function Pi(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 Ti(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 Ii(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}var xi={key:0},Ni=["data-notification-instance-id"],Bi={key:1},Mi={class:"notification-body"},Ai=["innerHTML"],$i={key:1};function Vi(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createBlock"])(a["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=function(t){return e.toastClosed()})},{default:Object(a["withCtx"])((function(){return[e.deleted?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",xi,[Object(a["createVNode"])(a["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(a["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{class:Object(a["normalizeClass"])(["notification system",e.cssClasses]),style:Object(a["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=function(t){return e.closeNotification(t)})}," × ")):Object(a["createCommentVNode"])("",!0),e.title?(Object(a["openBlock"])(),Object(a["createElementBlock"])("strong",Bi,Object(a["toDisplayString"])(e.title),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Mi,[e.message?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,Ai)):Object(a["createCommentVNode"])("",!0),e.message?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$i,[Object(a["renderSlot"])(e.$slots,"default")]))])],14,Ni)]})),_:3},8,["name"])])]})),_:3},8,["name"])]))]})),_:3},8,["name"])}var Li=window,Hi=Li.$,Fi=Object(a["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses:function(){var e={};return this.context&&(e["notification-".concat(this.context)]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose:function(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data:function(){return{deleted:!1}},mounted:function(){var e=this,t=function(){setTimeout((function(){e.deleted=!0}),e.toastLength)};"toast"===this.type&&t(),this.style&&Hi(this.$refs.root).css(this.style)},methods:{toastClosed:function(){var e=this;Object(a["nextTick"])((function(){e.$emit("closed")}))},closeNotification:function(e){var t=this;this.canClose&&e&&e.target&&(this.deleted=!0,Object(a["nextTick"])((function(){t.$emit("closed")}))),this.markNotificationAsRead()},markNotificationAsRead:function(){this.notificationId&&Ne.fetch({module:"CoreHome",action:"markNotificationAsRead"},{postParams:{notificationId:this.notificationId}})}}});Fi.render=Vi;var _i=Fi; + */jt({component:Ai,require:"?ngModel",scope:{name:{angularJsBind:"="},field:{angularJsBind:"="}},directiveName:"matomoFieldArray",events:{"update:modelValue":function(e,t,n,r,i,o){e!==t.modelValue&&(r.trigger("change",e),o&&o.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var o=i;o&&(o.$setViewValue(e.modelValue),o.$render=function(){angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue})}});function Mi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var $i={class:"multiPairField form-group"},Li={key:1,class:"fieldUiControl fieldUiControl2"},Hi={key:2,class:"fieldUiControl fieldUiControl3"},Fi={key:3,class:"fieldUiControl fieldUiControl4"},_i=["onClick","title"];function Ui(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("Field");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",$i,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.modelValue,(function(t,n){var r;return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper",(r={},Mi(r,"multiPairFieldTable".concat(n),!0),Mi(r,"has".concat(e.fieldCount,"Fields"),!0),r)]),key:n},[e.field1?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{key:0,class:Object(o["normalizeClass"])(["fieldUiControl fieldUiControl1",{hasMultiFields:e.field1.type&&e.field2.type}])},[Object(o["createVNode"])(c,{"full-width":!0,modelValue:t[e.field1.key],"onUpdate:modelValue":[function(n){return t[e.field1.key]=n},function(t){return e.onEntryChange(n,e.field1.key,t)}],options:e.field1.availableValues,placeholder:" ",uicontrol:e.field1.uiControl,name:"".concat(e.name,"-p1-").concat(n),title:e.field1.title},null,8,["modelValue","onUpdate:modelValue","options","uicontrol","name","title"])],2)):Object(o["createCommentVNode"])("",!0),e.field2?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Li,[Object(o["createVNode"])(c,{"full-width":!0,options:e.field2.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field2.key,t)},function(n){return t[e.field2.key]=n}],modelValue:t[e.field2.key],placeholder:" ",uicontrol:e.field2.uiControl,name:"".concat(e.name,"-p2-").concat(n),title:e.field2.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","name","title"])])):Object(o["createCommentVNode"])("",!0),e.field3?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Hi,[Object(o["createVNode"])(c,{"full-width":!0,options:e.field3.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field3.key,t)},function(n){return t[e.field3.key]=n}],modelValue:t[e.field3.key],placeholder:" ",uicontrol:e.field3.uiControl,title:e.field3.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title"])])):Object(o["createCommentVNode"])("",!0),e.field4?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Fi,[Object(o["createVNode"])(c,{"full-width":!0,options:e.field4.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field4.key,t)},function(n){return t[e.field4.key]=n}],modelValue:t[e.field4.key],placeholder:" ",uicontrol:e.field4.uiControl,title:e.field4.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title"])])):Object(o["createCommentVNode"])("",!0),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,_i),[[o["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function Ri(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function qi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ri(Object(n),!0).forEach((function(t){Ji(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ri(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ji(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zi(e){return Yi(e)||Wi(e)||Qi(e)||Gi()}function Gi(){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 Qi(e,t){if(e){if("string"===typeof e)return Ki(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)?Ki(e,t):void 0}}function Wi(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Yi(e){if(Array.isArray(e))return Ki(e)}function Ki(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Xi=Ht("CorePluginsAdmin","Field"),Zi=Object(o["defineComponent"])({props:{modelValue:Array,name:String,field1:Object,field2:Object,field3:Object,field4:Object},components:{Field:Xi},computed:{fieldCount:function(){return this.field1&&this.field2&&this.field3&&this.field4?4:this.field1&&this.field2&&this.field3?3:this.field1&&this.field2?2:this.field1?1:0}},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&!this.isEmptyValue(e.slice(-1)[0])||this.$emit("update:modelValue",[].concat(zi(e||[]),[this.makeEmptyValue()]))},onEntryChange:function(e,t,n){var r=zi(this.modelValue);r[e]=qi(qi({},r[e]),{},Ji({},t,n)),this.$emit("update:modelValue",r)},removeEntry:function(e){if(e>-1){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}},isEmptyValue:function(e){var t=this.fieldCount;if(4===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key]&&!e[this.field4.key])return!1}else if(3===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key])return!1}else if(2===t){if(!e[this.field1.key]&&!e[this.field2.key])return!1}else if(1===t&&!e[this.field1.key])return!1;return!0},makeEmptyValue:function(){var e={};return this.field1&&this.field1.key&&(e[this.field1.key]=""),this.field2&&this.field2.key&&(e[this.field2.key]=""),this.field3&&this.field3.key&&(e[this.field3.key]=""),this.field4&&this.field4.key&&(e[this.field4.key]=""),e}}});Zi.render=Ui;var eo=Zi,to=(jt({component:eo,require:"?ngModel",scope:{name:{angularJsBind:"="},field1:{angularJsBind:"="},field2:{angularJsBind:"="},field3:{angularJsBind:"="},field4:{angularJsBind:"="}},directiveName:"matomoMultiPairField",events:{"update:modelValue":function(e,t,n,r,i,o){e!==t.modelValue&&(r.trigger("change",e),o&&o.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var o=i;o&&(o.$setViewValue(e.modelValue),o.$render=function(){angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue})}}),{class:"loadingPiwik"}),no=Object(o["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */wt({component:_i,scope:{notificationId:{angularJsBind:"@?"},title:{angularJsBind:"@?notificationTitle"},context:{angularJsBind:"@?"},type:{angularJsBind:"@?"},noclear:{angularJsBind:"@?",transform:function(e){return!!e}},toastLength:{angularJsBind:"@?"}},directiveName:"piwikNotification",transclude:!0});function Ri(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ui(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ri(Object(n),!0).forEach((function(t){zi(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ri(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function qi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ji(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 Gi(e,t,n){return t&&Ji(e.prototype,t),n&&Ji(e,n),e}function zi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */function ro(e,t,n,r,i,a){return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",to,[no,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.loadingMessage),1)],512)),[[o["vShow"],e.loading]])}var io=Object(o["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:C("General_LoadingData")}}});io.render=ro;var oo=io,ao=jt({component:oo,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"}); /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - */var Qi=function(){function e(){qi(this,e),zi(this,"privateState",Object(a["reactive"])({notifications:[]})),zi(this,"nextNotificationId",0)}return Gi(e,[{key:"state",get:function(){return this.privateState}},{key:"appendNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}},{key:"prependNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}},{key:"remove",value:function(e){this.privateState.notifications=this.privateState.notifications.filter((function(t){return t.id!==e}))}},{key:"parseNotificationDivs",value:function(){var e=this,t=$('[data-role="notification"]'),n=[];t.each((function(e,r){var i=$(r),a=i.data(),o=i.html();o&&n.push(Ui(Ui({},a),{},{message:o,animate:!1})),t.remove()})),n.forEach((function(t){return e.show(t)}))}},{key:"clearTransientNotifications",value:function(){this.privateState.notifications=this.privateState.notifications.filter((function(e){return"transient"!==e.type}))}},{key:"show",value:function(e){this.checkMessage(e.message);var t=this.appendNotification,n="#notificationContainer";if(e.placeat)n=e.placeat;else{var r=".modal.open .modal-content",i=document.querySelector(r);i&&(i.querySelector("#modalNotificationContainer")||window.$(i).prepend('<div id="modalNotificationContainer"/>'),n="".concat(r," #modalNotificationContainer"),t=this.prependNotification)}var a=e.group||(n?n.toString():"");this.initializeNotificationContainer(n,a);var o=(this.nextNotificationId+=1).toString();return t.call(this,Ui(Ui({},e),{},{noclear:!!e.noclear,group:a,notificationId:e.id,notificationInstanceId:o,type:e.type||"transient"})),o}},{key:"scrollToNotification",value:function(e){setTimeout((function(){var t=document.querySelector("[data-notification-instance-id='".concat(e,"']"));t&&j.helper.lazyScrollTo(t,250)}))}},{key:"toast",value:function(e){this.checkMessage(e.message);var t=$(e.placeat);if(!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");var n=document.createElement("div");n.style.position="absolute",n.style.top="".concat(t.offset().top,"px"),n.style.left="".concat(t.offset().left,"px"),n.style.zIndex="1000",document.body.appendChild(n);var r=Object(a["createApp"])({render:function(){return Object(a["createVNode"])(_i,Ui(Ui({},e),{},{notificationId:e.id,type:"toast",onClosed:function(){r.unmount()}}))}});r.config.globalProperties.$sanitize=window.vueSanitize,r.config.globalProperties.translate=D,r.mount(n)}},{key:"initializeNotificationContainer",value:function(e,t){var n=window.$(e);if(!n.children(".notification-group").length){var r=window.CoreHome.NotificationGroup,i=Object(a["createApp"])({template:'<NotificationGroup :group="group"></NotificationGroup>',data:function(){return{group:t}}});i.config.globalProperties.$sanitize=window.vueSanitize,i.config.globalProperties.translate=D,i.component("NotificationGroup",r),i.mount(n[0])}}},{key:"checkMessage",value:function(e){if(!e)throw new Error("No message given, cannot display notification")}}]),e}(),Wi=new Qi,Yi=Wi;$((function(){return Wi.parseNotificationDivs()})), + */function co(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lo(e,t,n,r,i,a){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["alert",co({},"alert-".concat(e.severity),!0)])},[Object(o["renderSlot"])(e.$slots,"default")],2)}var so=Object(o["defineComponent"])({props:{severity:{type:String,required:!0}}});so.render=lo;var uo=so,fo=jt({component:uo,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!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 mo(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 po(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 ho(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}var vo={key:0},go=["data-notification-instance-id"],bo={key:1},yo={class:"notification-body"},wo=["innerHTML"],Oo={key:1};function jo(e,t,n,r,i,a){return Object(o["openBlock"])(),Object(o["createBlock"])(o["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=function(t){return e.toastClosed()})},{default:Object(o["withCtx"])((function(){return[e.deleted?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",vo,[Object(o["createVNode"])(o["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(o["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",{class:Object(o["normalizeClass"])(["notification system",e.cssClasses]),style:Object(o["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(o["openBlock"])(),Object(o["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=function(t){return e.closeNotification(t)})}," × ")):Object(o["createCommentVNode"])("",!0),e.title?(Object(o["openBlock"])(),Object(o["createElementBlock"])("strong",bo,Object(o["toDisplayString"])(e.title),1)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",yo,[e.message?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,wo)):Object(o["createCommentVNode"])("",!0),e.message?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Oo,[Object(o["renderSlot"])(e.$slots,"default")]))])],14,go)]})),_:3},8,["name"])])]})),_:3},8,["name"])]))]})),_:3},8,["name"])}var ko=window,So=ko.$,Co=Object(o["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses:function(){var e={};return this.context&&(e["notification-".concat(this.context)]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose:function(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data:function(){return{deleted:!1}},mounted:function(){var e=this,t=function(){setTimeout((function(){e.deleted=!0}),e.toastLength)};"toast"===this.type&&t(),this.style&&So(this.$refs.root).css(this.style)},methods:{toastClosed:function(){var e=this;Object(o["nextTick"])((function(){e.$emit("closed")}))},closeNotification:function(e){var t=this;this.canClose&&e&&e.target&&(this.deleted=!0,Object(o["nextTick"])((function(){t.$emit("closed")}))),this.markNotificationAsRead()},markNotificationAsRead:function(){this.notificationId&&xe.fetch({module:"CoreHome",action:"markNotificationAsRead"},{postParams:{notificationId:this.notificationId}})}}});Co.render=jo;var Do=Co; +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */jt({component:Do,scope:{notificationId:{angularJsBind:"@?"},title:{angularJsBind:"@?notificationTitle"},context:{angularJsBind:"@?"},type:{angularJsBind:"@?"},noclear:{angularJsBind:"@?",transform:kt},toastLength:{angularJsBind:"@?"}},directiveName:"piwikNotification",transclude:!0});function Eo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Po(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Eo(Object(n),!0).forEach((function(t){xo(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Eo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function To(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Io(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 Vo(e,t,n){return t&&Io(e.prototype,t),n&&Io(e,n),e}function xo(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 No=function(){function e(){To(this,e),xo(this,"privateState",Object(o["reactive"])({notifications:[]})),xo(this,"nextNotificationId",0)}return Vo(e,[{key:"state",get:function(){return this.privateState}},{key:"appendNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}},{key:"prependNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}},{key:"remove",value:function(e){this.privateState.notifications=this.privateState.notifications.filter((function(t){return t.id!==e}))}},{key:"parseNotificationDivs",value:function(){var e=this,t=$('[data-role="notification"]'),n=[];t.each((function(e,r){var i=$(r),o=i.data(),a=i.html();a&&n.push(Po(Po({},o),{},{message:a,animate:!1})),t.remove()})),n.forEach((function(t){return e.show(t)}))}},{key:"clearTransientNotifications",value:function(){this.privateState.notifications=this.privateState.notifications.filter((function(e){return"transient"!==e.type}))}},{key:"show",value:function(e){this.checkMessage(e.message);var t=this.appendNotification,n="#notificationContainer";if(e.placeat)n=e.placeat;else{var r=".modal.open .modal-content",i=document.querySelector(r);i&&(i.querySelector("#modalNotificationContainer")||window.$(i).prepend('<div id="modalNotificationContainer"/>'),n="".concat(r," #modalNotificationContainer"),t=this.prependNotification)}var o=e.group||(n?n.toString():"");this.initializeNotificationContainer(n,o);var a=(this.nextNotificationId+=1).toString();return t.call(this,Po(Po({},e),{},{noclear:!!e.noclear,group:o,notificationId:e.id,notificationInstanceId:a,type:e.type||"transient"})),a}},{key:"scrollToNotification",value:function(e){setTimeout((function(){var t=document.querySelector("[data-notification-instance-id='".concat(e,"']"));t&&S.helper.lazyScrollTo(t,250)}))}},{key:"toast",value:function(e){this.checkMessage(e.message);var t=$(e.placeat);if(!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");var n=document.createElement("div");n.style.position="absolute",n.style.top="".concat(t.offset().top,"px"),n.style.left="".concat(t.offset().left,"px"),n.style.zIndex="1000",document.body.appendChild(n);var r=Object(o["createApp"])({render:function(){return Object(o["createVNode"])(Do,Po(Po({},e),{},{notificationId:e.id,type:"toast",onClosed:function(){r.unmount()}}))}});r.config.globalProperties.$sanitize=window.vueSanitize,r.config.globalProperties.translate=C,r.mount(n)}},{key:"initializeNotificationContainer",value:function(e,t){var n=window.$(e);if(!n.children(".notification-group").length){var r=window.CoreHome.NotificationGroup,i=Object(o["createApp"])({template:'<NotificationGroup :group="group"></NotificationGroup>',data:function(){return{group:t}}});i.config.globalProperties.$sanitize=window.vueSanitize,i.config.globalProperties.translate=C,i.component("NotificationGroup",r),i.mount(n[0])}}},{key:"checkMessage",value:function(e){if(!e)throw new Error("No message given, cannot display notification")}}]),e}(),Bo=new No,Ao=Bo;$((function(){return Bo.parseNotificationDivs()})), /*! * Matomo - free/libre analytics platform * * @link https://matomo.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -angular.module("piwikApp").factory("notifications",(function(){return Yi}));var Ki={class:"notification-group"},Xi=["innerHTML"];function Zi(e,t,n,r,i,o){var c=Object(a["resolveComponent"])("Notification");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ki,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.notifications,(function(t,n){return Object(a["openBlock"])(),Object(a["createBlock"])(c,{key:t.id||"no-id-".concat(n),"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(a["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:function(n){return e.removeNotification(t.id)}},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,Xi)]})),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"])})),128))])}var ea=Object(a["defineComponent"])({props:{group:String},components:{Notification:_i},computed:{notifications:function(){var e=this;return Yi.state.notifications.filter((function(t){return e.group?e.group===t.group:!t.group}))}},methods:{removeNotification:function(e){Yi.remove(e)}}});ea.render=Zi;var ta=ea; +angular.module("piwikApp").factory("notifications",(function(){return Ao}));var Mo={class:"notification-group"},$o=["innerHTML"];function Lo(e,t,n,r,i,a){var c=Object(o["resolveComponent"])("Notification");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Mo,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.notifications,(function(t,n){return Object(o["openBlock"])(),Object(o["createBlock"])(c,{key:t.id||"no-id-".concat(n),"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(o["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:function(n){return e.removeNotification(t.id)}},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,$o)]})),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"])})),128))])}var Ho=Object(o["defineComponent"])({props:{group:String},components:{Notification:Do},computed:{notifications:function(){var e=this;return Ao.state.notifications.filter((function(t){return e.group?e.group===t.group:!t.group}))}},methods:{removeNotification:function(e){Ao.remove(e)}}});Ho.render=Lo;var Fo=Ho; /*! * Matomo - free/libre analytics platform * diff --git a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts index 6d3b8462dd..e7cc8e7bd2 100644 --- a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts +++ b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts @@ -58,7 +58,7 @@ function wrapArray<T>(values: T | T[]): T[] { if (!values) { return []; } - return values instanceof Array ? values : [values]; + return Array.isArray(values) ? values : [values]; } export default class ComparisonsStore { diff --git a/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue b/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue index 7f8d2f5155..3c981a1c10 100644 --- a/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue +++ b/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue @@ -68,28 +68,14 @@ </template> <script lang="ts"> -import { - defineComponent, - defineAsyncComponent, -} from 'vue'; +import { defineComponent } from 'vue'; import Matomo from '../Matomo/Matomo'; import Periods from '../Periods/Periods'; +import useExternalPluginComponent from '../useExternalPluginComponent'; // working around a cycle in dependencies (CoreHome depends on Feedback, Feedback depends on // CoreHome) -// TODO: may need a generic solution at some point, but it's bad practice to have -// cyclic dependencies like this. it worked before because it was individual files -// dependening on each other, not whole plugins. -const RateFeature = defineAsyncComponent(() => new Promise((resolve) => { - window.$(document).ready(() => { - const { Feedback } = window as any; // eslint-disable-line - if (Feedback) { - resolve(Feedback.RateFeature); - } else { // feedback plugin not loaded - resolve(null); - } - }); -})); +const RateFeature = useExternalPluginComponent('Feedback', 'RateFeature'); /** * Usage: diff --git a/plugins/CoreHome/vue/src/FieldArray/FieldArray.adapter.ts b/plugins/CoreHome/vue/src/FieldArray/FieldArray.adapter.ts new file mode 100644 index 0000000000..2ab3d0a785 --- /dev/null +++ b/plugins/CoreHome/vue/src/FieldArray/FieldArray.adapter.ts @@ -0,0 +1,51 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { INgModelController } from 'angular'; +import createAngularJsAdapter from '../createAngularJsAdapter'; +import FieldArray from './FieldArray.vue'; + +export default createAngularJsAdapter({ + component: FieldArray, + require: '?ngModel', + scope: { + name: { + angularJsBind: '=', + }, + field: { + angularJsBind: '=', + }, + }, + directiveName: 'matomoFieldArray', + events: { + 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel) => { + if (newValue !== vm.modelValue) { + element.trigger('change', newValue); + + if (ngModel) { + ngModel.$setViewValue(newValue); + } + } + }, + }, + postCreate(vm, scope, element, attrs, controller) { + const ngModel = controller as INgModelController; + + // setup ng-model mapping + if (ngModel) { + ngModel.$setViewValue(vm.modelValue); + + ngModel.$render = () => { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }; + } + }, +}); diff --git a/plugins/CoreHome/angularjs/field-array/field-array.directive.less b/plugins/CoreHome/vue/src/FieldArray/FieldArray.less index 29f63392d7..29f63392d7 100644 --- a/plugins/CoreHome/angularjs/field-array/field-array.directive.less +++ b/plugins/CoreHome/vue/src/FieldArray/FieldArray.less diff --git a/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue b/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue new file mode 100644 index 0000000000..469e250f91 --- /dev/null +++ b/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue @@ -0,0 +1,87 @@ +<!-- + 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="fieldArray form-group"> + <div + class="fieldArrayTable multiple valign-wrapper" + v-for="(item, index) in modelValue" + :class="{[`fieldArrayTable${index}`]: true}" + :key="index" + > + <div + v-if="field.uiControl" + class="fieldUiControl" + > + <Field + :full-width="true" + :model-value="item" + :options="field.availableValues" + @update:modelValue="onEntryChange($event, index)" + :placeholder="' '" + :uicontrol="field.uiControl" + :title="field.title" + :name="`${name}-${index}`" + > + </Field> + </div> + <span + @click="removeEntry(index)" + class="icon-minus valign" + v-show="index + 1 !== modelValue.length" + :title="translate('General_Remove')" + /> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import useExternalPluginComponent from '../useExternalPluginComponent'; + +// async since this is a a recursive component +const Field = useExternalPluginComponent('CorePluginsAdmin', 'Field'); + +export default defineComponent({ + props: { + modelValue: Array, + name: String, + field: Object, + }, + components: { + Field, + }, + emits: ['update:modelValue'], + watch: { + modelValue(newValue) { + this.checkEmptyModelValue(newValue); + }, + }, + mounted() { + this.checkEmptyModelValue(this.modelValue); + }, + methods: { + checkEmptyModelValue(newValue) { + // make sure there is always an empty new value + if (!newValue || !newValue.length || newValue.slice(-1)[0] !== '') { + this.$emit('update:modelValue', [...(newValue || []), '']); + } + }, + onEntryChange(newValue: unknown, index: number) { + const newArrayValue = [...this.modelValue]; + newArrayValue[index] = newValue; + + this.$emit('update:modelValue', newArrayValue); + }, + removeEntry(index) { + if (index > -1) { + const newValue = this.modelValue.filter((x, i) => i !== index); + this.$emit('update:modelValue', newValue); + } + }, + }, +}); +</script> diff --git a/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.adapter.ts b/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.adapter.ts index cd5965d1c6..598a4224f1 100644 --- a/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.adapter.ts +++ b/plugins/CoreHome/vue/src/MatomoDialog/MatomoDialog.adapter.ts @@ -40,7 +40,7 @@ export default createAngularJsAdapter<[IParseService]>({ setTimeout(() => { scope.$apply(); }, 0); } }, - close: ($event, scope, element, attrs) => { + close: ($event, vm, scope, element, attrs) => { if (attrs.close) { scope.$eval(attrs.close); setTimeout(() => { scope.$apply(); }, 0); diff --git a/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.adapter.ts b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.adapter.ts new file mode 100644 index 0000000000..e7c379ef88 --- /dev/null +++ b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.adapter.ts @@ -0,0 +1,60 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { INgModelController } from 'angular'; +import createAngularJsAdapter from '../createAngularJsAdapter'; +import MultiPairField from './MultiPairField.vue'; + +export default createAngularJsAdapter({ + component: MultiPairField, + require: '?ngModel', + scope: { + name: { + angularJsBind: '=', + }, + field1: { + angularJsBind: '=', + }, + field2: { + angularJsBind: '=', + }, + field3: { + angularJsBind: '=', + }, + field4: { + angularJsBind: '=', + }, + }, + directiveName: 'matomoMultiPairField', + events: { + 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel) => { + if (newValue !== vm.modelValue) { + element.trigger('change', newValue); + + if (ngModel) { + ngModel.$setViewValue(newValue); + } + } + }, + }, + postCreate(vm, scope, element, attrs, controller) { + const ngModel = controller as INgModelController; + + // setup ng-model mapping + if (ngModel) { + ngModel.$setViewValue(vm.modelValue); + + ngModel.$render = () => { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }; + } + }, +}); diff --git a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less index 3a2f34c736..3a2f34c736 100644 --- a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less +++ b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less diff --git a/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue new file mode 100644 index 0000000000..7d0dca4b9a --- /dev/null +++ b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue @@ -0,0 +1,200 @@ +<!-- + 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="multiPairField form-group"> + <div + v-for="(item, index) in modelValue" + class="multiPairFieldTable multiple valign-wrapper" + :class="{ [`multiPairFieldTable${index}`]: true, [`has${fieldCount}Fields`]: true }" + :key="index" + > + <div + class="fieldUiControl fieldUiControl1" + v-if="field1" + :class="{ hasMultiFields: field1.type && field2.type }" + > + <Field + :full-width="true" + v-model="item[field1.key]" + :options="field1.availableValues" + @update:modelValue="onEntryChange(index, field1.key, $event)" + :placeholder="' '" + :uicontrol="field1.uiControl" + :name="`${name}-p1-${index}`" + :title="field1.title" + > + </Field> + </div> + <div + class="fieldUiControl fieldUiControl2" + v-if="field2" + > + <Field + :full-width="true" + :options="field2.availableValues" + @update:modelValue="onEntryChange(index, field2.key, $event)" + v-model="item[field2.key]" + :placeholder="' '" + :uicontrol="field2.uiControl" + :name="`${name}-p2-${index}`" + :title="field2.title" + > + </Field> + </div> + <div + class="fieldUiControl fieldUiControl3" + v-if="field3" + > + <Field + :full-width="true" + :options="field3.availableValues" + @update:modelValue="onEntryChange(index, field3.key, $event)" + v-model="item[field3.key]" + :placeholder="' '" + :uicontrol="field3.uiControl" + :title="field3.title" + > + </Field> + </div> + <div + class="fieldUiControl fieldUiControl4" + v-if="field4" + > + <Field + :full-width="true" + :options="field4.availableValues" + @update:modelValue="onEntryChange(index, field4.key, $event)" + v-model="item[field4.key]" + :placeholder="' '" + :uicontrol="field4.uiControl" + :title="field4.title" + > + </Field> + </div> + <span + @click="removeEntry(index)" + class="icon-minus valign" + v-show="index + 1 !== modelValue.length" + :title="translate('General_Remove')" + /> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import useExternalPluginComponent from '../useExternalPluginComponent'; + +// async since this is a a recursive component +const Field = useExternalPluginComponent('CorePluginsAdmin', 'Field'); + +export default defineComponent({ + props: { + modelValue: Array, + name: String, + field1: Object, + field2: Object, + field3: Object, + field4: Object, + }, + components: { + Field, + }, + computed: { + fieldCount() { + if (this.field1 && this.field2 && this.field3 && this.field4) { + return 4; + } + + if (this.field1 && this.field2 && this.field3) { + return 3; + } + + if (this.field1 && this.field2) { + return 2; + } + + if (this.field1) { + return 1; + } + + return 0; + }, + }, + emits: ['update:modelValue'], + watch: { + modelValue(newValue) { + this.checkEmptyModelValue(newValue); + }, + }, + mounted() { + this.checkEmptyModelValue(this.modelValue); + }, + methods: { + checkEmptyModelValue(newValue) { + // make sure there is always an empty new value + if (!newValue || !newValue.length || this.isEmptyValue(newValue.slice(-1)[0])) { + this.$emit('update:modelValue', [...(newValue || []), this.makeEmptyValue()]); + } + }, + onEntryChange(index: number, key: string, newValue: unknown) { + const newWholeValue = [...this.modelValue]; + newWholeValue[index] = { ...newWholeValue[index], [key]: newValue }; + this.$emit('update:modelValue', newWholeValue); + }, + removeEntry(index: number) { + if (index > -1) { + const newValue = this.modelValue.filter((x, i) => i !== index); + this.$emit('update:modelValue', newValue); + } + }, + isEmptyValue(value: Record<string, unknown>) { + const { fieldCount } = this; + + if (fieldCount === 4) { + if (!value[this.field1.key] + && !value[this.field2.key] + && !value[this.field3.key] + && !value[this.field4.key] + ) { + return false; + } + } else if (fieldCount === 3) { + if (!value[this.field1.key] && !value[this.field2.key] && !value[this.field3.key]) { + return false; + } + } else if (fieldCount === 2) { + if (!value[this.field1.key] && !value[this.field2.key]) { + return false; + } + } else if (fieldCount === 1) { + if (!value[this.field1.key]) { + return false; + } + } + + return true; + }, + makeEmptyValue(): Record<string, unknown> { + const result: Record<string, unknown> = {}; + if (this.field1 && this.field1.key) { + result[this.field1.key] = ''; + } + if (this.field2 && this.field2.key) { + result[this.field2.key] = ''; + } + if (this.field3 && this.field3.key) { + result[this.field3.key] = ''; + } + if (this.field4 && this.field4.key) { + result[this.field4.key] = ''; + } + return result; + }, + }, +}); +</script> diff --git a/plugins/CoreHome/vue/src/Notification/Notification.adapter.ts b/plugins/CoreHome/vue/src/Notification/Notification.adapter.ts index 5845718976..4ff27943e9 100644 --- a/plugins/CoreHome/vue/src/Notification/Notification.adapter.ts +++ b/plugins/CoreHome/vue/src/Notification/Notification.adapter.ts @@ -5,7 +5,7 @@ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ -import createAngularJsAdapter from '../createAngularJsAdapter'; +import createAngularJsAdapter, { transformAngularJsBoolAttr } from '../createAngularJsAdapter'; import Notification from './Notification.vue'; export default createAngularJsAdapter({ @@ -25,7 +25,7 @@ export default createAngularJsAdapter({ }, noclear: { angularJsBind: '@?', - transform: (v) => !!v, + transform: transformAngularJsBoolAttr, }, toastLength: { angularJsBind: '@?', diff --git a/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts index b3438d2bb7..2e5fcffd80 100644 --- a/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts +++ b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.adapter.ts @@ -6,6 +6,7 @@ */ import { INgModelController, ITimeoutService } from 'angular'; +import { nextTick } from 'vue'; import createAngularJsAdapter from '../createAngularJsAdapter'; import SiteSelector from './SiteSelector.vue'; import Matomo from '../Matomo/Matomo'; @@ -43,17 +44,29 @@ export default createAngularJsAdapter<[ITimeoutService]>({ $inject: ['$timeout'], directiveName: 'piwikSiteselector', events: { - 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel) => { + 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel, $timeout) => { if ((newValue && !vm.modelValue) || (!newValue && vm.modelValue) || newValue.id !== vm.modelValue.id ) { - element.attr('siteid', newValue.id); - element.trigger('change', newValue); + $timeout(() => { + scope.value = newValue; - if (ngModel) { - ngModel.$setViewValue(newValue); - } + element.attr('siteid', newValue.id); + element.trigger('change', newValue); + + if (ngModel + // the original site selector did not initiate an ngModel change when initializing its + // internal selectedSite state. mimicking that behavior here for BC. + && (scope.isNotFirstModelChange + || vm.modelValue) + ) { + ngModel.$setViewValue(newValue); + ngModel.$render(); // not called automatically by the digest + } + + scope.isNotFirstModelChange = true; + }); } }, blur(event, vm, scope) { @@ -63,16 +76,26 @@ export default createAngularJsAdapter<[ITimeoutService]>({ postCreate(vm, scope, element, attrs, controller, $timeout: ITimeoutService) { const ngModel = controller as INgModelController; + scope.$watch('value', (newVal) => { + if (newVal !== vm.modelValue) { + vm.modelValue = newVal; + } + }); + // setup ng-model mapping if (ngModel) { - ngModel.$setViewValue(vm.modelValue); + if (vm.modelValue) { + ngModel.$setViewValue(vm.modelValue); + } ngModel.$render = () => { - if (angular.isString(ngModel.$viewValue)) { - vm.modelValue = JSON.parse(ngModel.$viewValue); - } else { - vm.modelValue = ngModel.$viewValue; - } + nextTick(() => { + if (angular.isString(ngModel.$viewValue)) { + vm.modelValue = JSON.parse(ngModel.$viewValue); + } else { + vm.modelValue = ngModel.$viewValue; + } + }); }; } diff --git a/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue index 32369de3bb..abb4237423 100644 --- a/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue +++ b/plugins/CoreHome/vue/src/SiteSelector/SiteSelector.vue @@ -13,7 +13,7 @@ <input v-if="name" type="hidden" - :value="selectedSite?.id" + :value="modelValue?.id" :name="name" /> <a @@ -32,11 +32,11 @@ /> <span> <span - v-text="selectedSite?.name || firstSiteName" - v-if="selectedSite?.name || !placeholder" + v-text="modelValue?.name || firstSiteName" + v-if="modelValue?.name || !placeholder" /> <span - v-if="!selectedSite?.name && placeholder" + v-if="!modelValue?.name && placeholder" class="placeholder" >{{ placeholder }}</span> </span> @@ -81,8 +81,8 @@ <li @click="switchSite(site, $event)" v-show="!(!showSelectedSite && activeSiteId === site.idsite)" - v-for="site in sites" - :key="site.idsite" + v-for="(site, index) in sites" + :key="index" > <a @click="$event.preventDefault()" @@ -140,7 +140,6 @@ interface SiteSelectorState { showSitesList: boolean; isLoading: boolean; sites: Site[]; - selectedSite: SiteRef; autocompleteMinSites: null|number; } @@ -195,12 +194,6 @@ export default defineComponent({ searchTerm() { this.onSearchTermChanged(); }, - modelValue: { - handler(newValue) { - this.selectedSite = { ...newValue }; - }, - deep: true, - }, }, data(): SiteSelectorState { return { @@ -209,7 +202,7 @@ export default defineComponent({ showSitesList: false, isLoading: false, sites: [], - selectedSite: { + selectedSite: this.modelValue || { id: Matomo.idSite, name: Matomo.helper.htmlDecode(Matomo.siteName), }, @@ -220,9 +213,8 @@ export default defineComponent({ window.initTopControls(); this.loadInitialSites().then(() => { - if ((!this.selectedSite || !this.selectedSite.id) && this.sites[0]) { - this.selectedSite = { id: this.sites[0].idsite, name: this.sites[0].name }; - this.$emit('update:modelValue', { ...this.selectedSite }); + if ((!this.modelValue || !this.modelValue.id) && this.sites[0]) { + this.$emit('update:modelValue', { id: this.sites[0].idsite, name: this.sites[0].name }); } }); @@ -247,7 +239,7 @@ export default defineComponent({ }, selectorLinkTitle() { return this.hasMultipleSites - ? translate('CoreHome_ChangeCurrentWebsite', this.selectedSite?.name || this.firstSiteName) + ? translate('CoreHome_ChangeCurrentWebsite', this.modelValue?.name || this.firstSiteName) : ''; }, hasMultipleSites() { @@ -293,8 +285,7 @@ export default defineComponent({ return; } - this.selectedSite = { id: site.idsite, name: site.name }; - this.$emit('update:modelValue', { ...this.selectedSite }); + this.$emit('update:modelValue', { id: site.idsite, name: site.name }); if (!this.switchSiteOnSelect || this.activeSiteId === site.idsite) { return; diff --git a/plugins/CoreHome/vue/src/createAngularJsAdapter.ts b/plugins/CoreHome/vue/src/createAngularJsAdapter.ts index d1806e84b5..dca9ff4357 100644 --- a/plugins/CoreHome/vue/src/createAngularJsAdapter.ts +++ b/plugins/CoreHome/vue/src/createAngularJsAdapter.ts @@ -13,14 +13,22 @@ import { } from 'vue'; import translate from './translate'; -interface SingleScopeVarInfo { +interface SingleScopeVarInfo<InjectTypes> { vue?: string; default?: any; // eslint-disable-line - transform?: (v: unknown) => unknown; + transform?: ( + v: unknown, + vm: ComponentPublicInstance, + scope: ng.IScope, + element: ng.IAugmentedJQuery, + attrs: ng.IAttributes, + otherController: ng.IControllerService, + ...injected: InjectTypes, + ) => unknown; angularJsBind?: string; } -type ScopeMapping = { [scopeVarName: string]: SingleScopeVarInfo }; +type ScopeMapping<InjectTypes> = { [scopeVarName: string]: SingleScopeVarInfo<InjectTypes> }; type AdapterFunction<InjectTypes, R = void> = ( scope: ng.IScope, @@ -64,10 +72,21 @@ function toAngularJsCamelCase(arg: string): string { .replace(/-([a-z])/g, (s, p) => p.toUpperCase()); } +export function removeAngularJsSpecificProperties<T>(newValue: T): T { + if (typeof newValue === 'object' + && newValue !== null + && Object.getPrototypeOf(newValue) === Object.prototype + ) { + return Object.fromEntries(Object.entries(newValue).filter((pair) => !/^\$/.test(pair[0]))) as T; + } + + return newValue; +} + export default function createAngularJsAdapter<InjectTypes = []>(options: { component: ComponentType, require?: string, - scope?: ScopeMapping, + scope?: ScopeMapping<InjectTypes>, directiveName: string, events?: EventMapping<InjectTypes>, $inject?: string[], @@ -76,6 +95,7 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { postCreate?: PostCreateFunction<InjectTypes>, noScope?: boolean, restrict?: string, + priority?: number, }): ng.IDirectiveFactory { const { component, @@ -89,6 +109,7 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { postCreate, noScope, restrict = 'A', + priority, } = options; const currentTranscludeCounter = transcludeCounter; @@ -110,6 +131,7 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { const adapter: ng.IDirective = { restrict, require, + priority, scope: noScope ? undefined : angularJsScope, compile: function angularJsAdapterCompile() { return { @@ -125,7 +147,7 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { let rootVueTemplate = '<root-component'; Object.entries(events).forEach((info) => { const [eventName] = info; - rootVueTemplate += ` @${eventName}="onEventHandler('${eventName}', $event)"`; + rootVueTemplate += ` @${toKebabCase(eventName)}="onEventHandler('${eventName}', $event)"`; }); Object.entries(scope).forEach(([key, info]) => { if (info.angularJsBind === '&') { @@ -134,7 +156,7 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { rootVueTemplate += ` @${eventName}="onEventHandler('${eventName}', $event)"`; } } else { - rootVueTemplate += ` :${info.vue}="${info.vue}"`; + rootVueTemplate += ` :${toKebabCase(info.vue)}="${info.vue}"`; } }); rootVueTemplate += '>'; @@ -149,14 +171,22 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { data() { const initialData = {}; Object.entries(scope).forEach(([scopeVarName, info]) => { - let value = ngScope[scopeVarName]; + let value = removeAngularJsSpecificProperties(ngScope[scopeVarName]); if (typeof value === 'undefined' && typeof info.default !== 'undefined') { value = info.default instanceof Function ? info.default(ngScope, ngElement, ngAttrs, ...injectedServices) : info.default; } if (info.transform) { - value = info.transform(value); + value = info.transform( + value, + this, + ngScope, + ngElement, + ngAttrs, + ngController, + ...injectedServices, + ); } initialData[info.vue] = value; }); @@ -210,16 +240,24 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { } ngScope.$watch(scopeVarName, (newValue: any) => { // eslint-disable-line - let newValueFinal = newValue; + let newValueFinal = removeAngularJsSpecificProperties(newValue); if (typeof info.default !== 'undefined' && typeof newValue === 'undefined') { newValueFinal = info.default instanceof Function ? info.default(ngScope, ngElement, ngAttrs, ...injectedServices) : info.default; } if (info.transform) { - newValueFinal = info.transform(newValueFinal); + newValueFinal = info.transform( + newValueFinal, + vm, + ngScope, + ngElement, + ngAttrs, + ngController, + ...injectedServices, + ); } - vm[scopeVarName] = newValueFinal; + vm[info.vue] = newValueFinal; }); }); @@ -253,3 +291,27 @@ export default function createAngularJsAdapter<InjectTypes = []>(options: { return angularJsAdapter; } + +export function transformAngularJsBoolAttr(v: unknown): boolean|undefined { + if (typeof v === 'undefined') { + return undefined; + } + + if (v === 'true') { + return true; + } + + return !!v && v > 0 && v !== '0'; +} + +export function transformAngularJsIntAttr(v: string): number { + if (typeof v === 'undefined') { + return undefined; + } + + if (v === null) { + return null; + } + + return parseInt(v, 10); +} diff --git a/plugins/CoreHome/vue/src/debounce.ts b/plugins/CoreHome/vue/src/debounce.ts index b92fe93a62..8629e78589 100644 --- a/plugins/CoreHome/vue/src/debounce.ts +++ b/plugins/CoreHome/vue/src/debounce.ts @@ -1,5 +1,5 @@ interface Callable { - (...args: unknown[]): void; + (...args: unknown[]): unknown; } const DEFAULT_DEBOUNCE_DELAY = 300; diff --git a/plugins/CoreHome/vue/src/index.ts b/plugins/CoreHome/vue/src/index.ts index aade352c11..dd3867949c 100644 --- a/plugins/CoreHome/vue/src/index.ts +++ b/plugins/CoreHome/vue/src/index.ts @@ -30,9 +30,16 @@ import './DateRangePicker/DateRangePicker.adapter'; import './PeriodDatePicker/PeriodDatePicker.adapter'; import './SiteSelector/SiteSelector.adapter'; import './QuickAccess/QuickAccess.adapter'; +import './FieldArray/FieldArray.adapter'; +import './MultiPairField/MultiPairField.adapter'; export { default as debounce } from './debounce'; -export { default as createAngularJsAdapter } from './createAngularJsAdapter'; +export { + default as createAngularJsAdapter, + transformAngularJsBoolAttr, + transformAngularJsIntAttr, + removeAngularJsSpecificProperties, +} from './createAngularJsAdapter'; export { default as activityIndicatorAdapter } from './ActivityIndicator/ActivityIndicator.adapter'; export { default as ActivityIndicator } from './ActivityIndicator/ActivityIndicator.vue'; export { default as translate } from './translate'; @@ -58,3 +65,5 @@ export { default as PeriodDatePicker } from './PeriodDatePicker/PeriodDatePicker export * from './Notification'; export { default as SiteSelector } from './SiteSelector/SiteSelector.vue'; export { default as QuickAccess } from './QuickAccess/QuickAccess.vue'; +export { default as FieldArray } from './FieldArray/FieldArray.vue'; +export { default as MultiPairField } from './MultiPairField/MultiPairField.vue'; diff --git a/plugins/CoreHome/vue/src/translate.ts b/plugins/CoreHome/vue/src/translate.ts index 317b5a8751..f68d037d89 100644 --- a/plugins/CoreHome/vue/src/translate.ts +++ b/plugins/CoreHome/vue/src/translate.ts @@ -11,7 +11,7 @@ export default function translate( ): string { let pkArgs = values as string[]; // handle variadic args AND single array of values (to match _pk_translate signature) - if (values.length === 1 && values[0] && values[0] instanceof Array) { + if (values.length === 1 && values[0] && Array.isArray(values[0])) { [pkArgs] = values as string[][]; } return window._pk_translate(translationStringId, pkArgs); // eslint-disable-line diff --git a/plugins/CoreHome/vue/src/useExternalPluginComponent.ts b/plugins/CoreHome/vue/src/useExternalPluginComponent.ts new file mode 100644 index 0000000000..69b80b62be --- /dev/null +++ b/plugins/CoreHome/vue/src/useExternalPluginComponent.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 { defineAsyncComponent } from 'vue'; + +export default function useExternalPluginComponent( + plugin: string, + component: string, +): typeof defineAsyncComponent { + return defineAsyncComponent(() => (new Promise((resolve) => { + window.$(document).ready(() => { + if (window[plugin]) { + resolve(window[plugin][component]); + } else { + resolve(null); // plugin not loaded + } + }); + }))); +} diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php index aeef54b2db..099afd2292 100644 --- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php +++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php @@ -49,8 +49,9 @@ class CorePluginsAdmin extends Plugin { $stylesheets[] = "plugins/CorePluginsAdmin/stylesheets/plugins_admin.less"; $stylesheets[] = "plugins/CorePluginsAdmin/angularjs/plugin-settings/plugin-settings.directive.less"; - $stylesheets[] = "plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less"; - $stylesheets[] = "plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less"; + $stylesheets[] = "plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less"; + $stylesheets[] = "plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less"; + $stylesheets[] = "plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.less"; } public static function isPluginsAdminEnabled() diff --git a/plugins/CorePluginsAdmin/SettingsMetadata.php b/plugins/CorePluginsAdmin/SettingsMetadata.php index 0b1e6723fc..ce96472569 100644 --- a/plugins/CorePluginsAdmin/SettingsMetadata.php +++ b/plugins/CorePluginsAdmin/SettingsMetadata.php @@ -113,7 +113,7 @@ class SettingsMetadata $availableValues = (object) $availableValues; } - return array( + $result = array( 'name' => $setting->getName(), 'title' => $config->title, 'value' => $setting->getValue(), @@ -124,10 +124,17 @@ class SettingsMetadata 'availableValues' => $availableValues, 'description' => $config->description, 'inlineHelp' => $config->inlineHelp, + // deprecated but kept here for API output BC 'templateFile' => $config->customUiControlTemplateFile, 'introduction' => $config->introduction, 'condition' => $config->condition, ); + + if ($config->customFieldComponent) { + $result['component'] = $config->customFieldComponent; + } + + return $result; } }
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/field/field.directive.html b/plugins/CorePluginsAdmin/angularjs/field/field.directive.html deleted file mode 100644 index 8e99065714..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/field/field.directive.html +++ /dev/null @@ -1,3 +0,0 @@ -<div class="field"> - {{ field.myProperty }} -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/field/field.directive.js b/plugins/CorePluginsAdmin/angularjs/field/field.directive.js deleted file mode 100644 index 28b5e98835..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/field/field.directive.js +++ /dev/null @@ -1,172 +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-field> - * - * eg <div piwik-field uicontrol="select" - * title="{{ 'SitesManager_Timezone'|translate }}" - * value="site.timezone" - * options="timezones" - * inline-help="test" - * description="" - * introduction="" - * name="" - * placeholder="" - * rows="3" - * autocomplete="off" - * data-disabled="true" - * full-width="true" - * templateFile=""></div> - * - * templateFile allows to render a custom template - * We do not use type= attribute here as it would match some CSS from input type=radio etc - */ -(function () { - angular.module('piwikApp').directive('piwikField', piwikField); - - piwikField.$inject = ['piwik', '$compile']; - - function piwikField(piwik, $compile){ - - return { - restrict: 'A', - require: '?ngModel', - scope: { - uicontrol: '@', - name: '@', - value: '@', - default: '@', - options: '=', - description: '@', - introduction: '@', - title: '@', - inlineHelp: '@', - disabled: '=', - uiControlAttributes: '=', - uiControlOptions: '=', - autocomplete: '@', - condition: '@', - varType: '@', - autofocus: '@', - tabindex: '@', - templateFile: '@', - fullWidth: '@', - maxlength: '@', - required: '@', - placeholder: '@', - rows: '@', - min: '@', - max: '@' - }, - template: '<div piwik-form-field="field"></div>', - link: function(scope, elm, attrs, ctrl) { - if (!ctrl) { - return; - } - - // load init value - if (scope.field.value !== undefined && scope.field.value !== null) { - ctrl.$setViewValue(scope.field.value); - } else if (ctrl.$viewValue) { - scope.field.value = ctrl.$viewValue; - } - - // view -> model - scope.$watch('field.value', function (val, oldVal) { - if (val !== oldVal && val !== ctrl.$viewValue) { - ctrl.$setViewValue(val); - } - }); - - // model -> view - ctrl.$render = function() { - scope.field.value = ctrl.$viewValue; - }; - - }, - controller: function ($scope) { - var field = {}; - field.uiControl = $scope.uicontrol; - if ($scope.varType) { - field.type = $scope.varType; - } else if (field.uiControl === 'multiselect') { - field.type = 'array'; - } else if (field.uiControl === 'checkbox') { - field.type = 'boolean'; - } else if (field.uiControl === 'site') { - field.type = 'object'; - } else if (field.uiControl === 'number') { - field.type = 'integer'; - } else { - field.type = 'string'; - } - - field.name = $scope.name; - field.value = $scope.value; - field.defaultValue = $scope.default; - field.availableValues = $scope.options; - field.description = $scope.description; - field.introduction = $scope.introduction; - field.inlineHelp = $scope.inlineHelp; - field.templateFile = $scope.templateFile; - field.title = $scope.title; - field.uiControlAttributes = $scope.uiControlAttributes || {}; - field.fullWidth = !!$scope.fullWidth; - field.uiControlOptions = $scope.uiControlOptions || {}; - - if (field.type === 'array' && angular.isString(field.value) && field.value) { - field.value = JSON.parse(field.value); - } - - var i = 0, attribute; - var attributes = ['disabled', 'autocomplete', 'tabindex', 'autofocus', 'rows', 'required', 'maxlength', 'placeholder', 'min', 'max']; - for (i; i < attributes.length; i++) { - attribute = attributes[i]; - if (!!$scope[attribute]) { - field.uiControlAttributes[attribute] = $scope[attribute]; - } - } - - $scope.field = field; - - $scope.$watch('options', function (val, oldVal) { - if (val !== oldVal) { - $scope.field.availableValues = val; - } - }); - - $scope.$watch('title', function (val, oldVal) { - if (val !== oldVal) { - $scope.field.title = val; - } - }); - - $scope.$watch('inlineHelp', function (val, oldVal) { - if (val !== oldVal) { - $scope.field.inlineHelp = val; - } - }); - - if ('undefined' !== typeof $scope.placeholder && $scope.placeholder !== null) { - $scope.$watch('placeholder', function (val, oldVal) { - if (val !== oldVal) { - $scope.field.uiControlAttributes.placeholder = val; - } - }); - } - - $scope.$watch('disabled', function (val, oldVal) { - if (val !== oldVal) { - $scope.field.uiControlAttributes.disabled = val; - } - }); - } - }; - } -})();
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox-array.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox-array.html deleted file mode 100644 index eff2f55bad..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox-array.html +++ /dev/null @@ -1,18 +0,0 @@ -<div> - <label class="fieldRadioTitle" ng-show="formField.title">{{ formField.title }}</label> - <p ng-repeat="checkboxModel in formField.availableOptions" - class="checkbox"> - <label> - <input ng-model="formField.checkboxkeys[$index.toString()]" - value="{{ checkboxModel.key }}" - ng-change="formField.updateCheckboxArrayValue()" - piwik-attributes="{{formField.uiControlAttributes}}" - type="checkbox" - id="{{ formField.name + checkboxModel.key }}" - name="{{ checkboxModel.name }}"> - <span>{{ checkboxModel.value }}</span> - - <span class="form-description" ng-show="checkboxModel.description">{{ checkboxModel.description }}</span> - </label> - </p> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox.html deleted file mode 100644 index 9ea7d9904d..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox.html +++ /dev/null @@ -1,13 +0,0 @@ -<div class="checkbox"> - <label> - <input ng-model="formField.value" - piwik-attributes="{{formField.uiControlAttributes}}" - ng-value="1" - ng-checked="!!formField.value" - type="checkbox" - id="{{ formField.name }}" - name="{{ formField.name }}"> - - <span ng-bind-html="formField.title"></span> - </label> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.html deleted file mode 100644 index d9f07888a5..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.html +++ /dev/null @@ -1,25 +0,0 @@ -<div class="expandableSelector" piwik-focus-anywhere-but-here="formField.showSelect = false"> - <div ng-click="formField.showSelect = !formField.showSelect" class="select-wrapper"> - <svg class="caret" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg> - <input type="text" class="select-dropdown" - readonly="true" value="{{ formField.title }}"> - </div> - - <div ng-show="formField.showSelect" class="expandableList z-depth-2"> - - <div class="searchContainer"> - <input type="text" placeholder="Search" - ng-model="formField.searchTerm" class="expandableSearch browser-default" - piwik-focus-if="formField.showSelect"> - </div> - <ul class="collection firstLevel"> - <li ng-repeat="options in formField.availableOptions" class="collection-item" ng-show="options.values|filter:formField.searchTerm|length"> - <h4 class="expandableListCategory" ng-click="formField.showCategory == options.group ? formField.showCategory = '' : formField.showCategory = options.group">{{ options.group }} <span class="secondary-content" ng-class='{"icon-arrow-right": formField.showCategory != options.group, "icon-arrow-bottom": formField.showCategory == options.group}'></span></h4> - - <ul ng-show="formField.showCategory == options.group || formField.searchTerm" class="collection secondLevel"> - <li class="expandableListItem collection-item valign-wrapper" ng-repeat="children in options.values|filter:formField.searchTerm" ng-click="formField.value = children.key;formField.showSelect = false;"><span class="primary-content">{{ children.value }}</span> <span ng-show="children.tooltip" title="{{ children.tooltip }}" class="secondary-content icon-help"></span></li> - </ul> - </li> - </ul> - </div> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-field-array.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-field-array.html deleted file mode 100644 index 8c0f0cf99b..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-field-array.html +++ /dev/null @@ -1,8 +0,0 @@ -<div> - <label for="{{ formField.name }}" ng-bind-html="formField.title"></label> - <div matomo-field-array - name="formField.name" - ng-model="formField.value" - field="formField.uiControlAttributes.field"> - </div> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-file.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-file.html deleted file mode 100644 index b784b4a91f..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-file.html +++ /dev/null @@ -1,10 +0,0 @@ -<div> - <div class="btn"> - <span for="{{ formField.name }}" ng-bind-html="formField.title"></span> - <input name="{{ formField.name }}" type="file" id="{{ formField.name }}"> - </div> - - <div class="file-path-wrapper"> - <input class="file-path validate" ng-model="formField.value" type="text"> - </div> -</div> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-hidden.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-hidden.html deleted file mode 100644 index d7bb771124..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-hidden.html +++ /dev/null @@ -1,6 +0,0 @@ -<div> - <input type="{{ formField.uiControl }}" - name="{{ formField.name }}" - ng-model="formField.value" - > -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-multiselect.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-multiselect.html deleted file mode 100644 index 4f3a173b73..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-multiselect.html +++ /dev/null @@ -1,7 +0,0 @@ -<select multiple - name="{{ formField.name }}" - ng-model="formField.value" - ng-options="t.key as t.value group by t.group for t in formField.availableOptions" - piwik-attributes="{{formField.uiControlAttributes}}"> -</select> -<label for="{{ formField.name }}" ng-bind-html="formField.title"></label>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.html deleted file mode 100644 index 4c7670e43f..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.html +++ /dev/null @@ -1,11 +0,0 @@ -<div class="fieldMultiTuple"> - <label for="{{ formField.name }}" ng-bind-html="formField.title"></label> - <div matomo-multi-pair-field - name="formField.name" - ng-model="formField.value" - field1="formField.uiControlAttributes.field1" - field2="formField.uiControlAttributes.field2" - field3="formField.uiControlAttributes.field3" - field4="formField.uiControlAttributes.field4"> - </div> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-number.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-number.html deleted file mode 100644 index 9866ab0341..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-number.html +++ /dev/null @@ -1,11 +0,0 @@ -<input - class="control_{{ formField.uiControl }}" - type="{{ formField.uiControl }}" - id="{{ formField.name }}" - name="{{ formField.name }}" - ng-model="formField.value" - string-to-number - ng-value="formField.value" - piwik-attributes="{{formField.uiControlAttributes}}" -> -<label for="{{ formField.name }}" ng-bind-html="formField.title"></label>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-radio.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-radio.html deleted file mode 100644 index 13f93090a6..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-radio.html +++ /dev/null @@ -1,21 +0,0 @@ -<div> - <label class="fieldRadioTitle" ng-show="formField.title">{{ formField.title }}</label> - - <p ng-repeat="radioModel in formField.availableOptions" - class="radio"> - <label> - <input ng-model="formField.value" - ng-value="radioModel.key" - type="radio" - id="{{ formField.name + radioModel.key }}" - name="{{ formField.name }}" - ng-disabled="radioModel.disabled || formField.disabled" - piwik-attributes="{{formField.uiControlAttributes}}" - > - - <span>{{ radioModel.value }} - <span class="form-description" ng-show="radioModel.description">{{ radioModel.description }}</span> - </span> - </label> - </p> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-select.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-select.html deleted file mode 100644 index 41a9a34cfb..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-select.html +++ /dev/null @@ -1,8 +0,0 @@ -<select name="{{ formField.name }}" - ng-model="formField.value" - ng-options="t.key as t.value group by t.group disable when t.disabled for t in formField.availableOptions" - piwik-attributes="{{formField.uiControlAttributes}}" - ng-click="onShowSelect()" -> -</select> -<label for="{{ formField.name }}" ng-bind-html="formField.title"></label> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-site.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-site.html deleted file mode 100644 index ceecde4836..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-site.html +++ /dev/null @@ -1,17 +0,0 @@ -<div> - <label for="{{ formField.name }}" class="siteSelectorLabel" ng-bind-html="formField.title"></label> - - <div piwik-siteselector - class="sites_autocomplete" - ng-model="formField.value" - siteid="{{ formField.value.id }}" - sitename="{{ formField.value.name }}" - id="{{ formField.name }}" - show-all-sites-item="formField.uiControlAttributes.showAllSitesItem || false" - switch-site-on-select="false" - show-selected-site="true" - only-sites-with-admin-access="formField.uiControlAttributes.onlySitesWithAdminAccess || false" - placeholder="{{ formField.uiControlAttributes.placeholder }}" - piwik-attributes="{{formField.uiControlAttributes}}" - ></div> -</div> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-text-array.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-text-array.html deleted file mode 100644 index 2a127da5cf..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-text-array.html +++ /dev/null @@ -1,10 +0,0 @@ -<div> - <label for="{{ formField.name }}" ng-bind-html="formField.title"></label> - <input class="control_{{ formField.uiControl }}" - type="{{ formField.uiControl }}" - name="{{ formField.name }}" - ng-list - ng-model="formField.value" - piwik-attributes="{{formField.uiControlAttributes}}" - > -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-text.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-text.html deleted file mode 100644 index 34076620d7..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-text.html +++ /dev/null @@ -1,11 +0,0 @@ -<input - class="control_{{ formField.uiControl }}" - type="{{ formField.uiControl }}" - id="{{ formField.name }}" - name="{{ formField.name }}" - ng-model="formField.value" - ng-value="formField.value" - ng-trim="false" - piwik-attributes="{{formField.uiControlAttributes}}" -> -<label for="{{ formField.name }}" ng-bind-html="formField.title"></label> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea-array.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea-array.html deleted file mode 100644 index f65c49cc26..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea-array.html +++ /dev/null @@ -1,9 +0,0 @@ -<div> - <label for="{{ formField.name }}" ng-bind-html="formField.title"></label> - <textarea name="{{ formField.name }}" - ng-list=" " ng-trim="false" - piwik-attributes="{{formField.uiControlAttributes}}" - ng-model="formField.value" - class="materialize-textarea" - ></textarea> -</div>
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea.html b/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea.html deleted file mode 100644 index 97d0b27482..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-textarea.html +++ /dev/null @@ -1,7 +0,0 @@ -<textarea name="{{ formField.name }}" - piwik-attributes="{{formField.uiControlAttributes}}" - id="{{ formField.name }}" - ng-model="formField.value" - class="materialize-textarea" -></textarea> -<label for="{{ formField.name }}" ng-bind-html="formField.title"></label> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.html b/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.html deleted file mode 100644 index 86acb985a1..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.html +++ /dev/null @@ -1,28 +0,0 @@ -<div class="form-group row" ng-show="formField.showField"> - - <h3 ng-if="formField.introduction" class="col s12">{{ formField.introduction }}</h3> - - <div class="col s12" - ng-class="{'input-field': formField.uiControl != 'checkbox' && formField.uiControl != 'radio', 'file-field': formField.uiControl == 'file', 'm6': !formField.fullWidth}" - ng-include="formField.templateFile" onload="templateLoaded()" - > - - </div> - <div class="col s12" - ng-class="{'m6': !formField.fullWidth}"> - <div ng-if="formField.description || formField.inlineHelp || (formField.defaultValue && formField.uiControl != 'checkbox' && formField.uiControl != 'radio')" - class="form-help"> - - <div ng-show="formField.description" - class='form-description'>{{ formField.description }}</div> - - <span class="inline-help" ng-bind-html="formField.inlineHelp"></span> - - <span ng-show="formField.defaultValuePretty && formField.uiControl != 'checkbox' && formField.uiControl != 'radio'"> - <br /> - {{ 'General_Default'|translate }}: - <span>{{formField.defaultValuePretty|limitTo:50}}</span> - </span> - </div> - </div> -</div> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js b/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js deleted file mode 100644 index 81a7da1918..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js +++ /dev/null @@ -1,438 +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-form-field="{...}"> - */ -(function () { - angular.module('piwikApp').directive('piwikFormField', piwikFormField); - - piwikFormField.$inject = ['piwik', '$timeout']; - - function piwikFormField(piwik, $timeout){ - - function initMaterialSelect($select, placeholder, uiControlOptions) { - uiControlOptions = uiControlOptions || {}; - $select.material_select(uiControlOptions); - - // add placeholder to input - if (placeholder) { - var $materialInput = $select.closest('.select-wrapper').find('input'); - $materialInput.attr('placeholder', placeholder); - } - } - - function syncMultiCheckboxKeysWithFieldValue(field) - { - angular.forEach(field.availableOptions, function (option, index) { - if (option && field.value.indexOf(option.key) !== -1) { - field.checkboxkeys[index] = true; - } else { - field.checkboxkeys[index] = false; - } - }); - } - - function hasUiControl(field, uiControlType) - { - return field.uiControl === uiControlType; - } - - function isSelectControl(field) - { - return hasUiControl(field, 'select') || hasUiControl(field, 'multiselect'); - } - - function isArrayCheckboxControl(field) - { - return field.type === 'array' && hasUiControl(field, 'checkbox'); - } - - function hasGroupedValues(availableValues) - { - if (!angular.isObject(availableValues) - || angular.isArray(availableValues)) { - return false; - } - - var key; - for (key in availableValues) { - if (Object.prototype.hasOwnProperty.call(availableValues, key)) { - if (angular.isObject(availableValues[key])) { - return true; - } else { - return false; - } - } - } - - return false; - } - - function whenRendered(scope, element, inlineHelpNode) { - return function () { - var field = scope.formField; - - if (inlineHelpNode) { - angular.element(inlineHelpNode).appendTo(element.find('.inline-help')); - } - - if (isSelectControl(field)) { - var $select = element.find('select'); - initMaterialSelect($select, field.uiControlAttributes.placeholder, field.uiControlOptions); - - scope.$watch('formField.value', function (val, oldVal) { - if (val !== oldVal) { - $timeout(function () { - initMaterialSelect($select, field.uiControlAttributes.placeholder, field.uiControlOptions); - }); - } - }); - - scope.$watch('formField.uiControlAttributes.disabled', function (val, oldVal) { - if (val !== oldVal) { - $timeout(function () { - initMaterialSelect($select, field.uiControlAttributes.placeholder, field.uiControlOptions); - }); - } - }); - - } else if (hasUiControl(field, 'textarea')) { - Materialize.textareaAutoResize(element.find('textarea')); - scope.$watch('formField.value', function (val, oldVal) { - if (val !== oldVal) { - $timeout(function () { - Materialize.textareaAutoResize(element.find('textarea')); - }); - } - }); - - } else if (hasUiControl(field, 'file')) { - - // angular doesn't support file input type with ngModel. We implement our own "two way binding" - var $file = element.find('[type=file]'); - - $file.on('change', function () { - scope.formField.value = $(this).val(); - }); - - scope.$watch('formField.value', function (val, oldVal) { - if (val !== oldVal && val === '') { - $file.val(''); - } - }); - - } else if (isArrayCheckboxControl(field)) { - - Materialize.updateTextFields(); - - scope.$watch('formField.value', function (val, oldVal) { - if (val !== oldVal && val && !oldVal && angular.isArray(val)) { - // we do this only on initial check - syncMultiCheckboxKeysWithFieldValue(field); - } - }); - - - } else if (hasUiControl(field, 'text') - || hasUiControl(field, 'textarea') - || hasUiControl(field, 'password') - || hasUiControl(field, 'email') - || hasUiControl(field, 'number') - || hasUiControl(field, 'url') - || hasUiControl(field, 'search')) { - Materialize.updateTextFields(); - scope.$watch('formField.value', function (val, oldVal) { - if (val !== oldVal) { - $timeout(function () { - Materialize.updateTextFields(); - }); - } - }); - } - } - } - - function getTemplate(field) { - var control = field.uiControl; - if (control === 'password' || control === 'url' || control === 'search' || control === 'email') { - control = 'text'; // we use same template for text and password both - } - - var file = 'field-' + control; - var fieldsSupportingArrays = ['textarea', 'checkbox', 'text']; - if (field.type === 'array' && fieldsSupportingArrays.indexOf(control) !== -1) { - file += '-array'; - } - - return 'plugins/CorePluginsAdmin/angularjs/form-field/' + file + '.html?cb=' + piwik.cacheBuster; - }; - - return { - restrict: 'A', - scope: { - piwikFormField: '=', - allSettings: '=' - }, - templateUrl: 'plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.html?cb=' + piwik.cacheBuster, - compile: function (element, attrs) { - - function evaluateConditionalExpression(scope, field) - { - if (!field.condition) { - return; - } - - var values = {}; - angular.forEach(scope.allSettings, function (setting) { - if (setting.value === '0') { - values[setting.name] = 0; - } else { - values[setting.name] = setting.value; - } - }); - - field.showField = scope.$eval(field.condition, values); - } - - function formatAvailableValues(field) - { - if (!field.availableValues) { - return; - } - - var flatValues = []; - - if (hasUiControl(field, 'radio') || hasUiControl(field, 'checkbox')) { - angular.forEach(field.availableValues, function (value, key) { - - if (angular.isObject(value) && typeof value.key !== 'undefined'){ - flatValues.push(value); - return; - } - - if (field.type === 'integer' && angular.isString(key)) { - key = parseInt(key, 10); - } - - flatValues.push({key: key, value: value}); - }); - - return flatValues; - } - - if (hasUiControl(field, 'expandable-select')) { - var availableValues = field.availableValues; - var flatValues = []; - - var groups = {}; - angular.forEach(availableValues, function (value) { - - if (!value.group) { - value.group = ''; - } - - if (!(value.group in groups) || !groups[value.group]) { - groups[value.group] = {values: [], group: value.group} - } - - var formatted = {key: value.key, value: value.value}; - - if ('tooltip' in value && value.tooltip) { - formatted.tooltip = value.tooltip; - } - - groups[value.group].values.push(formatted); - }); - - angular.forEach(groups, function (group) { - if (group.values.length) { - flatValues.push(group); - } - }); - - return flatValues; - } - - if (isSelectControl(field)) { - var availableValues = field.availableValues; - - if (!hasGroupedValues(availableValues)) { - availableValues = {'': availableValues}; - } - - var flatValues = []; - angular.forEach(availableValues, function (values, group) { - angular.forEach(values, function (value, key) { - - if (angular.isObject(value) && typeof value.key !== 'undefined'){ - flatValues.push(value); - return; - } - - if (field.type === 'integer' && angular.isString(key)) { - key = parseInt(key, 10); - } - - flatValues.push({group: group, key: key, value: value}); - }); - }); - - return flatValues; - } - - return field.availableValues; - } - - function formatPrettyDefaultValue(defaultValue, availableOptions) { - if (angular.isString(defaultValue) && defaultValue) { - // eg default value for multi tuple - var defaultParsed = null; - try { - defaultParsed = JSON.parse(defaultValue); - } catch (e) { - // invalid JSON - } - - if (angular.isObject(defaultParsed)) { - return null; - } - } - - if (!angular.isArray(availableOptions)) { - if (angular.isArray(defaultValue)) { - return null; - } - - return defaultValue; - } - - var prettyValues = []; - - if (!angular.isArray(defaultValue)) { - defaultValue = [defaultValue]; - } - - angular.forEach(availableOptions, function (value, key) { - if (defaultValue.indexOf(value.key) !== -1 && typeof value.value !== 'undefined') { - prettyValues.push(value.value); - } - }); - - return prettyValues.join(', '); - } - - return function (scope, element, attrs) { - var field = scope.piwikFormField; - var defaultValue = field.defaultValue; - - - if (angular.isArray(field.defaultValue)) { - field.defaultValue = defaultValue.join(','); - } - - // convert boolean values since angular 1.6 uses strict equals when determining if a model value - // matches the ng-value of an input. - if (field.type === 'boolean') { - var valueIsTruthy = field.value && field.value > 0 && field.value !== '0'; - - // for checkboxes, the value MUST be either true or faluse - if (field.uiControl === 'checkbox') { - field.value = valueIsTruthy; - } else if (field.uiControl === 'radio') { - field.value = valueIsTruthy ? '1' : '0'; - } - } - - // we are setting availableOptions and not availableValues again. Otherwise when watching the scope - // availableValues and in the watch change availableValues could trigger lots of more watch events - field.availableOptions = formatAvailableValues(field); - - // for selects w/ a placeholder, add an option to unset the select - if (field.uiControl === 'select' - && field.uiControlAttributes.placeholder - && !hasOption('') - ) { - field.availableOptions.splice(0, 0, { key: '', value: '' }); - } - - field.defaultValuePretty = formatPrettyDefaultValue(defaultValue, field.availableOptions); - - field.showField = true; - - var inlineHelpNode; - if (field.inlineHelp && field.inlineHelp.indexOf('#') === 0) { - inlineHelpNode = field.inlineHelp; - field.inlineHelp = ' '; // we make sure inline help will be shown - } - - if (isArrayCheckboxControl(field)) { - field.updateCheckboxArrayValue = function () { - var values = []; - for (var x in field.checkboxkeys) { - if (field.checkboxkeys[x]) { - values.push(field.availableOptions[x].key); - } - } - field.value = values; - } - field.checkboxkeys = new Array(field.availableOptions.length); - - if (field.value && angular.isArray(field.value)) { - syncMultiCheckboxKeysWithFieldValue(field); - } - } - - if (field.condition && scope.allSettings) { - evaluateConditionalExpression(scope, field); - - for (var key in scope.allSettings) { - if(scope.allSettings.hasOwnProperty(key)) { - scope.$watchCollection('allSettings[' + key + '].value', function (val, oldVal) { - if (val !== oldVal) { - evaluateConditionalExpression(scope, field); - } - }); - } - } - } - - if (!field.templateFile) { - field.templateFile = getTemplate(field); - } - - scope.formField = field; - - scope.$watch('formField.availableValues', function (val, oldVal) { - if (val !== oldVal) { - scope.formField.availableOptions = formatAvailableValues(scope.formField); - - if (isSelectControl(scope.formField)) { - $timeout(function () { - initMaterialSelect(element.find('select'), field.uiControlAttributes.placeholder, field.uiControlOptions); - }); - } - } - }); - scope.templateLoaded = function () { - $timeout(whenRendered(scope, element, inlineHelpNode)); - }; - - function hasOption(key) { - for (var i = 0; i !== field.availableOptions.length; ++i) { - if (field.availableOptions[i].key === key) { - return true; - } - } - return false; - } - }; - } - }; - } -})(); diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js new file mode 100644 index 0000000000..5d7f65aa94 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js @@ -0,0 +1,2442 @@ +(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["CorePluginsAdmin"] = factory(require("CoreHome"), require("vue")); + else + root["CorePluginsAdmin"] = 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/CorePluginsAdmin/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__, "FormField", function() { return /* reexport */ FormField; }); +__webpack_require__.d(__webpack_exports__, "Field", function() { return /* reexport */ Field; }); + +// 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/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=77ed4ac2 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +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; } + + +var _hoisted_1 = { + class: "form-group row" +}; +var _hoisted_2 = { + key: 0, + class: "col s12" +}; +var _hoisted_3 = { + key: 0, + class: "form-help" +}; +var _hoisted_4 = { + key: 0, + class: "inline-help", + ref: "inlineHelp" +}; + +var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1); + +function render(_ctx, _cache, $props, $setup, $data, $options) { + 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", _hoisted_1, [_ctx.formField.introduction ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", _hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.formField.introduction), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { + class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["col s12", { + 'input-field': _ctx.formField.uiControl !== 'checkbox' && _ctx.formField.uiControl !== 'radio', + 'file-field': _ctx.formField.uiControl === 'file', + 'm6': !_ctx.formField.fullWidth + }]) + }, [(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.childComponent), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])(_objectSpread(_objectSpread({ + formField: _ctx.formField + }, _ctx.formField), {}, { + modelValue: _ctx.processedModelValue, + availableOptions: _ctx.availableOptions + }, _ctx.extraChildComponentParams), { + "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }) + }), null, 16))], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { + class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["col s12", { + 'm6': !_ctx.formField.fullWidth + }]) + }, [_ctx.showFormHelp ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { + class: "form-description" + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.formField.description), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.formField.description]]), _ctx.formField.inlineHelp ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, null, 512)) : 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"])("span", null, [_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Default')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.defaultValuePrettyTruncated), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showDefaultValue]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showField]]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=77ed4ac2 + +// 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=16b4705b + +var FieldCheckboxvue_type_template_id_16b4705b_hoisted_1 = { + class: "checkbox" +}; +var FieldCheckboxvue_type_template_id_16b4705b_hoisted_2 = ["checked", "id", "name"]; +var FieldCheckboxvue_type_template_id_16b4705b_hoisted_3 = ["innerHTML"]; +function FieldCheckboxvue_type_template_id_16b4705b_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_16b4705b_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); + }) + }, _ctx.uiControlAttributes, { + value: 1, + checked: !!_ctx.modelValue, + type: "checkbox", + id: _ctx.name, + name: _ctx.name + }), null, 16, FieldCheckboxvue_type_template_id_16b4705b_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldCheckboxvue_type_template_id_16b4705b_hoisted_3)])]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=16b4705b + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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, + uiControlAttributes: Object, + name: String, + title: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange: function onChange(event) { + if (this.modelValue !== event.target.checked) { + this.$emit('update:modelValue', event.target.checked); + } + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue + + + +FieldCheckboxvue_type_script_lang_ts.render = FieldCheckboxvue_type_template_id_16b4705b_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=5700b1f7 + +var FieldCheckboxArrayvue_type_template_id_5700b1f7_hoisted_1 = ["value", "checked", "onChange", "id", "name"]; +function FieldCheckboxArrayvue_type_template_id_5700b1f7_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + class: "fieldRadioTitle" + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.title), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.title]]), (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.availableOptions, function (checkboxModel, $index) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", { + key: $index, + class: "checkbox" + }, [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"])({ + value: checkboxModel.key, + checked: !!_ctx.checkboxStates[$index], + onChange: function onChange($event) { + return _ctx.onChange($index); + } + }, _ctx.uiControlAttributes, { + type: "checkbox", + id: "".concat(_ctx.name).concat(checkboxModel.key), + name: checkboxModel.name + }), null, 16, FieldCheckboxArrayvue_type_template_id_5700b1f7_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(checkboxModel.value), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + class: "form-description" + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(checkboxModel.description), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], checkboxModel.description]])])]); + }), 128))]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue?vue&type=template&id=5700b1f7 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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=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; } + + + +function getCheckboxStates(availableOptions, modelValue) { + return (availableOptions || []).map(function (o) { + return modelValue && modelValue.indexOf(o.key) !== -1; + }); +} + +/* harmony default export */ var FieldCheckboxArrayvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: Object, + name: String, + title: String, + availableOptions: Array, + uiControlAttributes: Object, + type: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + checkboxStates: function checkboxStates() { + return getCheckboxStates(this.availableOptions, this.modelValue); + } + }, + mounted: function mounted() { + window.Materialize.updateTextFields(); + }, + methods: { + onChange: function onChange(changedIndex) { + var checkboxStates = _toConsumableArray(this.checkboxStates); + + checkboxStates[changedIndex] = !checkboxStates[changedIndex]; + var newValue = []; + Object.values(this.availableOptions).forEach(function (option, index) { + if (checkboxStates[index]) { + newValue.push(option.key); + } + }); + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue + + + +FieldCheckboxArrayvue_type_script_lang_ts.render = FieldCheckboxArrayvue_type_template_id_5700b1f7_render + +/* harmony default export */ var FieldCheckboxArray = (FieldCheckboxArrayvue_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/FieldExpandableSelect.vue?vue&type=template&id=08a6705c + +var FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_1 = { + class: "expandableSelector" +}; + +var FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("svg", { + class: "caret", + height: "24", + viewBox: "0 0 24 24", + width: "24", + xmlns: "http://www.w3.org/2000/svg" +}, [/*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("path", { + d: "M7 10l5 5 5-5z" +}), /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("path", { + d: "M0 0h24v24H0z", + fill: "none" +})], -1); + +var FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_3 = ["value"]; +var FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_4 = { + class: "expandableList z-depth-2" +}; +var FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_5 = { + class: "searchContainer" +}; +var _hoisted_6 = { + class: "collection firstLevel" +}; +var _hoisted_7 = ["onClick"]; +var _hoisted_8 = { + class: "collection secondLevel" +}; +var _hoisted_9 = ["onClick"]; +var _hoisted_10 = { + class: "primary-content" +}; +var _hoisted_11 = ["title"]; +function FieldExpandableSelectvue_type_template_id_08a6705c_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", FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", { + onClick: _cache[0] || (_cache[0] = function ($event) { + return _ctx.showSelect = !_ctx.showSelect; + }), + class: "select-wrapper" + }, [FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + type: "text", + class: "select-dropdown", + readonly: "readonly", + value: _ctx.modelValueText + }, null, 8, FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_3)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FieldExpandableSelectvue_type_template_id_08a6705c_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + type: "text", + placeholder: "Search", + "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) { + return _ctx.searchTerm = $event; + }), + class: "expandableSearch browser-default" + }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, _ctx.showSelect]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", _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.availableOptions, function (options, index) { + 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"])("li", { + class: "collection-item", + key: index + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h4", { + class: "expandableListCategory", + onClick: function onClick($event) { + return _ctx.onCategoryClicked(options); + } + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(options.group) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["secondary-content", { + "icon-arrow-right": _ctx.showCategory !== options.group, + "icon-arrow-bottom": _ctx.showCategory === options.group + }]) + }, null, 2)], 8, _hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", _hoisted_8, [(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"])(options.values.filter(function (x) { + return x.value.indexOf(_ctx.searchTerm) !== -1; + }), function (children) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", { + class: "expandableListItem collection-item valign-wrapper", + key: children.key, + onClick: function onClick($event) { + return _ctx.onValueClicked(children); + } + }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(children.value), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + title: children.tooltip, + class: "secondary-content icon-help" + }, null, 8, _hoisted_11), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], children.tooltip]])], 8, _hoisted_9); + }), 128))], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showCategory === options.group || _ctx.searchTerm]])], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], options.values.filter(function (x) { + return x.value.indexOf(_ctx.searchTerm) !== -1; + }).length]]); + }), 128))])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showSelect]])], 512)), [[_directive_focus_anywhere_but_here, { + blur: _ctx.onBlur + }]]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue?vue&type=template&id=08a6705c + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldExpandableSelect.vue?vue&type=script&lang=ts + + +function getAvailableOptions(availableValues) { + var flatValues = []; + var groups = {}; + Object.values(availableValues).forEach(function (uncastedValue) { + var value = uncastedValue; + var group = value.group || ''; + + if (!(group in groups) || !groups[group]) { + groups[group] = { + values: [], + group: group + }; + } + + var formatted = { + key: value.key, + value: value.value + }; + + if ('tooltip' in value && value.tooltip) { + formatted.tooltip = value.tooltip; + } + + groups[group].values.push(formatted); + }); + Object.values(groups).forEach(function (group) { + if (group.values.length) { + flatValues.push(group); + } + }); + return flatValues; +} +/* harmony default export */ var FieldExpandableSelectvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: [Number, String], + availableOptions: Array, + title: String + }, + directives: { + FocusAnywhereButHere: external_CoreHome_["FocusAnywhereButHere"], + FocusIf: external_CoreHome_["FocusIf"] + }, + inheritAttrs: false, + emits: ['update:modelValue'], + data: function data() { + return { + showSelect: false, + searchTerm: '', + showCategory: '' + }; + }, + computed: { + modelValueText: function modelValueText() { + if (this.title) { + return this.title; + } + + var key = this.modelValue; + var keyItem; + (this.availableOptions || []).some(function (option) { + keyItem = option.values.find(function (item) { + return item.key === key; + }); + return keyItem; // stop iterating if found + }); + + if (keyItem) { + return keyItem.value.toString(); + } + + return key; + } + }, + methods: { + onBlur: function onBlur() { + this.showSelect = false; + }, + onCategoryClicked: function onCategoryClicked(options) { + if (this.showCategory === options.group) { + this.showCategory = ''; + } else { + this.showCategory = options.group; + } + }, + onValueClicked: function onValueClicked(selectedValue) { + this.$emit('update:modelValue', selectedValue.key); + this.showSelect = false; + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue + + + +FieldExpandableSelectvue_type_script_lang_ts.render = FieldExpandableSelectvue_type_template_id_08a6705c_render + +/* harmony default export */ var FieldExpandableSelect = (FieldExpandableSelectvue_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/FieldFieldArray.vue?vue&type=template&id=19925759 + +var FieldFieldArrayvue_type_template_id_19925759_hoisted_1 = ["for", "innerHTML"]; +function FieldFieldArrayvue_type_template_id_19925759_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_FieldArray = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("FieldArray"); + + 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"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldFieldArrayvue_type_template_id_19925759_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_FieldArray, { + name: _ctx.name, + "model-value": _ctx.modelValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) { + return _ctx.onValueUpdate($event); + }), + field: _ctx.uiControlAttributes.field + }, null, 8, ["name", "model-value", "field"])]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue?vue&type=template&id=19925759 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldFieldArray.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldFieldArrayvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + components: { + FieldArray: external_CoreHome_["FieldArray"] + }, + props: { + name: String, + title: String, + modelValue: null, + uiControlAttributes: Object + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onValueUpdate: function onValueUpdate(newValue) { + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue + + + +FieldFieldArrayvue_type_script_lang_ts.render = FieldFieldArrayvue_type_template_id_19925759_render + +/* harmony default export */ var FieldFieldArray = (FieldFieldArrayvue_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/FieldFile.vue?vue&type=template&id=244b301c + +var FieldFilevue_type_template_id_244b301c_hoisted_1 = { + class: "btn" +}; +var FieldFilevue_type_template_id_244b301c_hoisted_2 = ["for", "innerHTML"]; +var FieldFilevue_type_template_id_244b301c_hoisted_3 = ["name", "id"]; +var FieldFilevue_type_template_id_244b301c_hoisted_4 = { + class: "file-path-wrapper" +}; +var FieldFilevue_type_template_id_244b301c_hoisted_5 = ["value"]; +function FieldFilevue_type_template_id_244b301c_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FieldFilevue_type_template_id_244b301c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldFilevue_type_template_id_244b301c_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + ref: "fileInput", + name: _ctx.name, + type: "file", + id: _ctx.name, + onChange: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }) + }, null, 40, FieldFilevue_type_template_id_244b301c_hoisted_3)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FieldFilevue_type_template_id_244b301c_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + class: "file-path validate", + value: _ctx.modelValue, + type: "text" + }, null, 8, FieldFilevue_type_template_id_244b301c_hoisted_5)])]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue?vue&type=template&id=244b301c + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldFile.vue?vue&type=script&lang=ts + +/* harmony default export */ var FieldFilevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + title: String, + modelValue: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + setup: function setup(props) { + var fileInput = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null); + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () { + return props.modelValue; + }, function (v) { + if (v === '') { + var fileInputElement = fileInput.value; + fileInputElement.value = ''; + } + }); + return { + fileInput: fileInput + }; + }, + methods: { + onChange: function onChange(event) { + var file = event.target.files.item(0); + this.$emit('update:modelValue', file); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue + + + +FieldFilevue_type_script_lang_ts.render = FieldFilevue_type_template_id_244b301c_render + +/* harmony default export */ var FieldFile = (FieldFilevue_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/FieldHidden.vue?vue&type=template&id=20e3ce54 + +var FieldHiddenvue_type_template_id_20e3ce54_hoisted_1 = ["type", "name", "value"]; +function FieldHiddenvue_type_template_id_20e3ce54_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", { + type: _ctx.uiControl, + name: _ctx.name, + value: _ctx.modelValue, + onChange: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }) + }, null, 40, FieldHiddenvue_type_template_id_20e3ce54_hoisted_1)]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue?vue&type=template&id=20e3ce54 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldHidden.vue?vue&type=script&lang=ts + +/* harmony default export */ var FieldHiddenvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: null, + uiControl: String, + name: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange: function onChange(event) { + this.$emit('update:modelValue', event.target.value); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue + + + +FieldHiddenvue_type_script_lang_ts.render = FieldHiddenvue_type_template_id_20e3ce54_render + +/* harmony default export */ var FieldHidden = (FieldHiddenvue_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/FieldMultituple.vue?vue&type=template&id=7469c188 + +var FieldMultituplevue_type_template_id_7469c188_hoisted_1 = { + class: "fieldMultiTuple" +}; +var FieldMultituplevue_type_template_id_7469c188_hoisted_2 = ["for", "innerHTML"]; +function FieldMultituplevue_type_template_id_7469c188_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_MultiPairField = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("MultiPairField"); + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldMultituplevue_type_template_id_7469c188_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldMultituplevue_type_template_id_7469c188_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MultiPairField, { + name: _ctx.name, + "model-value": _ctx.modelValue, + "onUpdate:modelValue": _ctx.onUpdateValue, + field1: _ctx.uiControlAttributes.field1, + field2: _ctx.uiControlAttributes.field2, + field3: _ctx.uiControlAttributes.field3, + field4: _ctx.uiControlAttributes.field4 + }, null, 8, ["name", "model-value", "onUpdate:modelValue", "field1", "field2", "field3", "field4"])]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue?vue&type=template&id=7469c188 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldMultituple.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldMultituplevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + title: String, + modelValue: null, + uiControlAttributes: Object + }, + inheritAttrs: false, + components: { + MultiPairField: external_CoreHome_["MultiPairField"] + }, + emits: ['update:modelValue'], + methods: { + onUpdateValue: function onUpdateValue(newValue) { + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue + + + +FieldMultituplevue_type_script_lang_ts.render = FieldMultituplevue_type_template_id_7469c188_render + +/* harmony default export */ var FieldMultituple = (FieldMultituplevue_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/FieldNumber.vue?vue&type=template&id=7aed93b6 + +var FieldNumbervue_type_template_id_7aed93b6_hoisted_1 = ["type", "id", "name", "value"]; +var FieldNumbervue_type_template_id_7aed93b6_hoisted_2 = ["for", "innerHTML"]; +function FieldNumbervue_type_template_id_7aed93b6_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"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + class: "control_".concat(_ctx.uiControl), + type: _ctx.uiControl, + id: _ctx.name, + name: _ctx.name, + value: (_ctx.modelValue || '').toString(), + onKeydown: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }), + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onChange($event); + }) + }, _ctx.uiControlAttributes), null, 16, FieldNumbervue_type_template_id_7aed93b6_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldNumbervue_type_template_id_7aed93b6_hoisted_2)], 64); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue?vue&type=template&id=7aed93b6 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldNumber.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldNumbervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + uiControl: String, + name: String, + title: String, + modelValue: [Number, String], + uiControlAttributes: Object + }, + inheritAttrs: false, + emits: ['update:modelValue'], + created: function created() { + this.onChange = Object(external_CoreHome_["debounce"])(this.onChange.bind(this), 50); + }, + methods: { + onChange: function onChange(event) { + var value = parseFloat(event.target.value); + this.$emit('update:modelValue', value); + } + }, + mounted: function mounted() { + window.Materialize.updateTextFields(); + }, + watch: { + modelValue: function modelValue() { + setTimeout(function () { + window.Materialize.updateTextFields(); + }); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue + + + +FieldNumbervue_type_script_lang_ts.render = FieldNumbervue_type_template_id_7aed93b6_render + +/* harmony default export */ var FieldNumber = (FieldNumbervue_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/FieldRadio.vue?vue&type=template&id=e73c5bb0 + +var FieldRadiovue_type_template_id_e73c5bb0_hoisted_1 = ["value", "id", "name", "disabled", "checked"]; +function FieldRadiovue_type_template_id_e73c5bb0_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + class: "fieldRadioTitle" + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.title), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.title]]), (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.availableOptions || [], function (radioModel) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", { + key: radioModel.key, + class: "radio" + }, [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"])({ + value: radioModel.key, + onChange: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }), + type: "radio", + id: "".concat(_ctx.name).concat(radioModel.key), + name: _ctx.name, + disabled: radioModel.disabled || _ctx.disabled + }, _ctx.uiControlAttributes, { + checked: _ctx.modelValue === radioModel.key || "".concat(_ctx.modelValue) === radioModel.key + }), null, 16, FieldRadiovue_type_template_id_e73c5bb0_hoisted_1), 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"])(radioModel.value) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", { + class: "form-description" + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(radioModel.description), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], radioModel.description]])])])]); + }), 128))]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue?vue&type=template&id=e73c5bb0 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldRadio.vue?vue&type=script&lang=ts + +/* harmony default export */ var FieldRadiovue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + title: String, + availableOptions: Array, + name: String, + disabled: Boolean, + uiControlAttributes: Object, + modelValue: [String, Number] + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange: function onChange(event) { + this.$emit('update:modelValue', event.target.value); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue + + + +FieldRadiovue_type_script_lang_ts.render = FieldRadiovue_type_template_id_e73c5bb0_render + +/* harmony default export */ var FieldRadio = (FieldRadiovue_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/FieldSelect.vue?vue&type=template&id=87c835bc +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || FieldSelectvue_type_template_id_87c835bc_unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { 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 FieldSelectvue_type_template_id_87c835bc_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return FieldSelectvue_type_template_id_87c835bc_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 FieldSelectvue_type_template_id_87c835bc_arrayLikeToArray(o, minLen); } + +function FieldSelectvue_type_template_id_87c835bc_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; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + +var FieldSelectvue_type_template_id_87c835bc_hoisted_1 = { + key: 0, + class: "matomo-field-select" +}; +var FieldSelectvue_type_template_id_87c835bc_hoisted_2 = ["multiple", "name"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_3 = ["label"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_4 = ["value", "selected"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_5 = ["for", "innerHTML"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_6 = { + key: 1, + class: "matomo-field-select" +}; +var FieldSelectvue_type_template_id_87c835bc_hoisted_7 = ["multiple", "name"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_8 = ["value", "selected"]; +var FieldSelectvue_type_template_id_87c835bc_hoisted_9 = ["for", "innerHTML"]; +function FieldSelectvue_type_template_id_87c835bc_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"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.groupedOptions ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_87c835bc_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + ref: "select", + class: "grouped", + multiple: _ctx.multiple, + name: _ctx.name, + onChange: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }) + }, _ctx.uiControlAttributes), [(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.groupedOptions, function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + group = _ref2[0], + options = _ref2[1]; + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("optgroup", { + key: group, + label: group + }, [(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"])(options, function (option) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("option", { + key: option.key, + value: "string:".concat(option.key), + selected: _ctx.multiple ? _ctx.modelValue && _ctx.modelValue.indexOf(option.key) !== -1 : _ctx.modelValue === option.key + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_87c835bc_hoisted_4); + }), 128))], 8, FieldSelectvue_type_template_id_87c835bc_hoisted_3); + }), 128))], 16, FieldSelectvue_type_template_id_87c835bc_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.title + }, null, 8, FieldSelectvue_type_template_id_87c835bc_hoisted_5)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.groupedOptions && _ctx.options ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_87c835bc_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + class: "ungrouped", + ref: "select", + multiple: _ctx.multiple, + name: _ctx.name, + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onChange($event); + }) + }, _ctx.uiControlAttributes), [(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.options, function (option) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("option", { + key: option.key, + value: "string:".concat(option.key), + selected: _ctx.multiple ? _ctx.modelValue && _ctx.modelValue.indexOf(option.key) !== -1 : _ctx.modelValue === option.key + }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_87c835bc_hoisted_8); + }), 128))], 16, FieldSelectvue_type_template_id_87c835bc_hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.title + }, null, 8, FieldSelectvue_type_template_id_87c835bc_hoisted_9)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=template&id=87c835bc + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldSelect.vue?vue&type=script&lang=ts +function FieldSelectvue_type_script_lang_ts_toConsumableArray(arr) { return FieldSelectvue_type_script_lang_ts_arrayWithoutHoles(arr) || FieldSelectvue_type_script_lang_ts_iterableToArray(arr) || FieldSelectvue_type_script_lang_ts_unsupportedIterableToArray(arr) || FieldSelectvue_type_script_lang_ts_nonIterableSpread(); } + +function FieldSelectvue_type_script_lang_ts_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 FieldSelectvue_type_script_lang_ts_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function FieldSelectvue_type_script_lang_ts_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return FieldSelectvue_type_script_lang_ts_arrayLikeToArray(arr); } + +function FieldSelectvue_type_script_lang_ts_slicedToArray(arr, i) { return FieldSelectvue_type_script_lang_ts_arrayWithHoles(arr) || FieldSelectvue_type_script_lang_ts_iterableToArrayLimit(arr, i) || FieldSelectvue_type_script_lang_ts_unsupportedIterableToArray(arr, i) || FieldSelectvue_type_script_lang_ts_nonIterableRest(); } + +function FieldSelectvue_type_script_lang_ts_nonIterableRest() { 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 FieldSelectvue_type_script_lang_ts_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return FieldSelectvue_type_script_lang_ts_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 FieldSelectvue_type_script_lang_ts_arrayLikeToArray(o, minLen); } + +function FieldSelectvue_type_script_lang_ts_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; } + +function FieldSelectvue_type_script_lang_ts_iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function FieldSelectvue_type_script_lang_ts_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + + + +function initMaterialSelect(select, modelValue, placeholder) { + var uiControlOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var multiple = arguments.length > 4 ? arguments[4] : undefined; + + if (!select) { + return; + } + + var $select = window.$(select); // reset selected since materialize removes them + + Array.from(select.options).forEach(function (opt) { + if (multiple) { + opt.selected = modelValue && modelValue.indexOf(opt.value.replace(/^string:/, '')) !== -1; + } else { + opt.selected = "string:".concat(modelValue) === opt.value; + } + }); + $select.formSelect(uiControlOptions); // add placeholder to input + + if (placeholder) { + var $materialInput = $select.closest('.select-wrapper').find('input'); + $materialInput.attr('placeholder', placeholder); + } +} + +function hasGroupedValues(availableValues) { + if (Array.isArray(availableValues) || !(_typeof(availableValues) === 'object')) { + return false; + } + + return Object.values(availableValues).some(function (v) { + return _typeof(v) === 'object'; + }); +} + +function hasOption(flatValues, key) { + return flatValues.some(function (f) { + return f.key === key; + }); +} + +function FieldSelectvue_type_script_lang_ts_getAvailableOptions(givenAvailableValues, type, uiControlAttributes) { + if (!givenAvailableValues) { + return []; + } + + var hasGroups = true; + var availableValues = givenAvailableValues; + + if (!hasGroupedValues(availableValues)) { + availableValues = { + '': givenAvailableValues + }; + hasGroups = false; + } + + var flatValues = []; + Object.entries(availableValues).forEach(function (_ref) { + var _ref2 = FieldSelectvue_type_script_lang_ts_slicedToArray(_ref, 2), + group = _ref2[0], + values = _ref2[1]; + + Object.entries(values).forEach(function (_ref3) { + var _ref4 = FieldSelectvue_type_script_lang_ts_slicedToArray(_ref3, 2), + valueObjKey = _ref4[0], + value = _ref4[1]; + + if (_typeof(value) === 'object' && typeof value.key !== 'undefined') { + flatValues.push(value); + return; + } + + var key = valueObjKey; + + if (type === 'integer' && typeof valueObjKey === 'string') { + key = parseInt(valueObjKey, 10); + } + + flatValues.push({ + group: hasGroups ? group : undefined, + key: key, + value: value + }); + }); + }); // for selects w/ a placeholder, add an option to unset the select + + if (uiControlAttributes.placeholder && !hasOption(flatValues, '')) { + return [{ + key: '', + value: '' + }].concat(flatValues); + } + + return flatValues; +} + +function handleOldAngularJsValues(value) { + if (typeof value === 'string') { + return value.replace(/^string:/, ''); + } + + return value; +} + +/* harmony default export */ var FieldSelectvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: null, + multiple: Boolean, + name: String, + title: String, + availableOptions: Array, + uiControlAttributes: Object, + uiControlOptions: Object + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + options: function options() { + // if modelValue is empty, but there is no empty value allowed in availableOptions, + // add one temporarily until something is set + if (this.availableOptions && !hasOption(this.availableOptions, '') && (typeof this.modelValue === 'undefined' || this.modelValue === null || this.modelValue === '')) { + return [{ + key: '', + value: this.modelValue, + group: this.hasGroups ? '' : undefined + }].concat(FieldSelectvue_type_script_lang_ts_toConsumableArray(this.availableOptions)); + } + + return this.availableOptions; + }, + hasGroups: function hasGroups() { + var availableOptions = this.availableOptions; + return availableOptions && availableOptions[0] && typeof availableOptions[0].group !== 'undefined'; + }, + groupedOptions: function groupedOptions() { + if (!this.hasGroups) { + return null; + } + + var options = this.options; + var groups = {}; + options.forEach(function (entry) { + groups[entry.group] = groups[entry.group] || []; + groups[entry.group].push(entry); + }); + var result = Object.entries(groups); + result.sort(function (lhs, rhs) { + if (lhs[0] < rhs[0]) { + return -1; + } + + if (lhs[0] > rhs[0]) { + return 1; + } + + return 0; + }); + return result; + } + }, + methods: { + onChange: function onChange(event) { + var element = event.target; + var newValue; + + if (this.multiple) { + newValue = Array.from(element.options).filter(function (e) { + return e.selected; + }).map(function (e) { + return e.value; + }); + newValue = newValue.map(handleOldAngularJsValues); + } else { + newValue = element.value; + newValue = handleOldAngularJsValues(newValue); + } + + this.$emit('update:modelValue', newValue); + } + }, + watch: { + modelValue: function modelValue(newVal) { + var _this = this; + + window.$(this.$refs.select).val(newVal); + setTimeout(function () { + initMaterialSelect(_this.$refs.select, newVal, _this.uiControlAttributes.placeholder, _this.uiControlOptions, _this.multiple); + }); + }, + 'uiControlAttributes.disabled': { + handler: function handler(newVal, oldVal) { + var _this2 = this; + + setTimeout(function () { + if (newVal !== oldVal) { + initMaterialSelect(_this2.$refs.select, _this2.modelValue, _this2.uiControlAttributes.placeholder, _this2.uiControlOptions, _this2.multiple); + } + }); + } + }, + availableOptions: function availableOptions(newVal, oldVal) { + var _this3 = this; + + if (newVal !== oldVal) { + setTimeout(function () { + initMaterialSelect(_this3.$refs.select, _this3.modelValue, _this3.uiControlAttributes.placeholder, _this3.uiControlOptions, _this3.multiple); + }); + } + } + }, + mounted: function mounted() { + var _this4 = this; + + setTimeout(function () { + initMaterialSelect(_this4.$refs.select, _this4.modelValue, _this4.uiControlAttributes.placeholder, _this4.uiControlOptions, _this4.multiple); + }); + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue + + + +FieldSelectvue_type_script_lang_ts.render = FieldSelectvue_type_template_id_87c835bc_render + +/* harmony default export */ var FieldSelect = (FieldSelectvue_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/FieldSite.vue?vue&type=template&id=72faf58c + +var FieldSitevue_type_template_id_72faf58c_hoisted_1 = ["for", "innerHTML"]; +var FieldSitevue_type_template_id_72faf58c_hoisted_2 = { + class: "sites_autocomplete" +}; +function FieldSitevue_type_template_id_72faf58c_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_SiteSelector = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SiteSelector"); + + 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"])("label", { + for: _ctx.name, + class: "siteSelectorLabel", + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldSitevue_type_template_id_72faf58c_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FieldSitevue_type_template_id_72faf58c_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + "model-value": _ctx.modelValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }), + id: _ctx.name, + "show-all-sites-item": _ctx.uiControlAttributes.showAllSitesItem || false, + "switch-site-on-select": false, + "show-selected-site": true, + "only-sites-with-admin-access": _ctx.uiControlAttributes.onlySitesWithAdminAccess || false + }, _ctx.uiControlAttributes), null, 16, ["model-value", "id", "show-all-sites-item", "only-sites-with-admin-access"])])]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue?vue&type=template&id=72faf58c + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldSite.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldSitevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + title: String, + modelValue: Object, + uiControlAttributes: Object + }, + inheritAttrs: false, + components: { + SiteSelector: external_CoreHome_["SiteSelector"] + }, + emits: ['update:modelValue'], + methods: { + onChange: function onChange(newValue) { + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue + + + +FieldSitevue_type_script_lang_ts.render = FieldSitevue_type_template_id_72faf58c_render + +/* harmony default export */ var FieldSite = (FieldSitevue_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/FieldText.vue?vue&type=template&id=9ea16160 + +var FieldTextvue_type_template_id_9ea16160_hoisted_1 = ["type", "id", "name", "value"]; +var FieldTextvue_type_template_id_9ea16160_hoisted_2 = ["for", "innerHTML"]; +function FieldTextvue_type_template_id_9ea16160_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"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + class: "control_".concat(_ctx.uiControl), + type: _ctx.uiControl, + id: _ctx.name, + name: _ctx.name, + value: _ctx.modelValueText, + onKeydown: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onKeydown($event); + }), + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onKeydown($event); + }) + }, _ctx.uiControlAttributes), null, 16, FieldTextvue_type_template_id_9ea16160_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldTextvue_type_template_id_9ea16160_hoisted_2)], 64); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue?vue&type=template&id=9ea16160 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldText.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldTextvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + title: String, + name: String, + uiControlAttributes: Object, + modelValue: [String, Number], + uiControl: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + modelValueText: function modelValueText() { + if (typeof this.modelValue === 'undefined' || this.modelValue === null) { + return ''; + } + + return this.modelValue.toString(); + } + }, + created: function created() { + // debounce because puppeteer types reeaally fast + this.onKeydown = Object(external_CoreHome_["debounce"])(this.onKeydown.bind(this), 50); + }, + mounted: function mounted() { + setTimeout(function () { + window.Materialize.updateTextFields(); + }); + }, + watch: { + modelValue: function modelValue() { + setTimeout(function () { + window.Materialize.updateTextFields(); + }); + } + }, + methods: { + onKeydown: function onKeydown(event) { + this.$emit('update:modelValue', event.target.value); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue + + + +FieldTextvue_type_script_lang_ts.render = FieldTextvue_type_template_id_9ea16160_render + +/* harmony default export */ var FieldText = (FieldTextvue_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/FieldTextArray.vue?vue&type=template&id=4c574e6f + +var FieldTextArrayvue_type_template_id_4c574e6f_hoisted_1 = ["for", "innerHTML"]; +var FieldTextArrayvue_type_template_id_4c574e6f_hoisted_2 = ["type", "name", "value"]; +function FieldTextArrayvue_type_template_id_4c574e6f_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldTextArrayvue_type_template_id_4c574e6f_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + class: "control_".concat(_ctx.uiControl), + type: _ctx.uiControl, + name: _ctx.name, + onKeydown: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onKeydown($event); + }), + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onKeydown($event); + }), + value: _ctx.concattedValues + }, _ctx.uiControlAttributes), null, 16, FieldTextArrayvue_type_template_id_4c574e6f_hoisted_2)]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue?vue&type=template&id=4c574e6f + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldTextArray.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldTextArrayvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + title: String, + uiControl: String, + modelValue: Array, + uiControlAttributes: Object + }, + inheritAttrs: false, + computed: { + concattedValues: function concattedValues() { + if (typeof this.modelValue === 'string') { + return this.modelValue; + } + + return (this.modelValue || []).join(', '); + } + }, + emits: ['update:modelValue'], + created: function created() { + // debounce because puppeteer types reeaally fast + this.onKeydown = Object(external_CoreHome_["debounce"])(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown: function onKeydown(event) { + var values = event.target.value.split(',').map(function (v) { + return v.trim(); + }); + this.$emit('update:modelValue', values); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue + + + +FieldTextArrayvue_type_script_lang_ts.render = FieldTextArrayvue_type_template_id_4c574e6f_render + +/* harmony default export */ var FieldTextArray = (FieldTextArrayvue_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/FieldTextarea.vue?vue&type=template&id=09f09fdb + +var FieldTextareavue_type_template_id_09f09fdb_hoisted_1 = ["name", "id", "value"]; +var FieldTextareavue_type_template_id_09f09fdb_hoisted_2 = ["for", "innerHTML"]; +function FieldTextareavue_type_template_id_09f09fdb_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"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + name: _ctx.name + }, _ctx.uiControlAttributes, { + id: _ctx.name, + value: _ctx.modelValue, + onKeydown: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onKeydown($event); + }), + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onKeydown($event); + }), + class: "materialize-textarea", + ref: "textarea" + }), null, 16, FieldTextareavue_type_template_id_09f09fdb_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldTextareavue_type_template_id_09f09fdb_hoisted_2)], 64); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue?vue&type=template&id=09f09fdb + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldTextarea.vue?vue&type=script&lang=ts + + +/* harmony default export */ var FieldTextareavue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + uiControlAttributes: Object, + modelValue: String, + title: String + }, + inheritAttrs: false, + emits: ['update:modelValue'], + created: function created() { + this.onKeydown = Object(external_CoreHome_["debounce"])(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown: function onKeydown(event) { + this.$emit('update:modelValue', event.target.value); + } + }, + watch: { + modelValue: function modelValue() { + var _this = this; + + setTimeout(function () { + window.Materialize.textareaAutoResize(_this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + } + }, + mounted: function mounted() { + var _this2 = this; + + setTimeout(function () { + window.Materialize.textareaAutoResize(_this2.$refs.textarea); + window.Materialize.updateTextFields(); + }); + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue + + + +FieldTextareavue_type_script_lang_ts.render = FieldTextareavue_type_template_id_09f09fdb_render + +/* harmony default export */ var FieldTextarea = (FieldTextareavue_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/FieldTextareaArray.vue?vue&type=template&id=7f15c83b + +var FieldTextareaArrayvue_type_template_id_7f15c83b_hoisted_1 = ["for", "innerHTML"]; +var FieldTextareaArrayvue_type_template_id_7f15c83b_hoisted_2 = ["name", "value"]; +function FieldTextareaArrayvue_type_template_id_7f15c83b_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", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", { + for: _ctx.name, + innerHTML: _ctx.$sanitize(_ctx.title) + }, null, 8, FieldTextareaArrayvue_type_template_id_7f15c83b_hoisted_1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({ + ref: "textarea", + name: _ctx.name + }, _ctx.uiControlAttributes, { + value: _ctx.concattedValue, + onKeydown: _cache[0] || (_cache[0] = function ($event) { + return _ctx.onKeydown($event); + }), + onChange: _cache[1] || (_cache[1] = function ($event) { + return _ctx.onKeydown($event); + }), + class: "materialize-textarea" + }), null, 16, FieldTextareaArrayvue_type_template_id_7f15c83b_hoisted_2)]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue?vue&type=template&id=7f15c83b + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldTextareaArray.vue?vue&type=script&lang=ts + + +var SEPARATOR = '\n'; +/* harmony default export */ var FieldTextareaArrayvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + name: String, + title: String, + uiControlAttributes: Object, + modelValue: [Array, String] + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + concattedValue: function concattedValue() { + if (typeof this.modelValue === 'string') { + return this.modelValue; + } + + return (this.modelValue || []).join(SEPARATOR); + } + }, + created: function created() { + this.onKeydown = Object(external_CoreHome_["debounce"])(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown: function onKeydown(event) { + var value = event.target.value.split(SEPARATOR); + this.$emit('update:modelValue', value); + } + }, + watch: { + modelValue: function modelValue(newVal, oldVal) { + var _this = this; + + if (newVal !== oldVal) { + setTimeout(function () { + window.Materialize.textareaAutoResize(_this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + } + } + }, + mounted: function mounted() { + var _this2 = this; + + setTimeout(function () { + window.Materialize.textareaAutoResize(_this2.$refs.textarea); + window.Materialize.updateTextFields(); + }); + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue + + + +FieldTextareaArrayvue_type_script_lang_ts.render = FieldTextareaArrayvue_type_template_id_7f15c83b_render + +/* harmony default export */ var FieldTextareaArray = (FieldTextareaArrayvue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/utilities.ts +function utilities_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { utilities_typeof = function _typeof(obj) { return typeof obj; }; } else { utilities_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return utilities_typeof(obj); } + +function utilities_slicedToArray(arr, i) { return utilities_arrayWithHoles(arr) || utilities_iterableToArrayLimit(arr, i) || utilities_unsupportedIterableToArray(arr, i) || utilities_nonIterableRest(); } + +function utilities_nonIterableRest() { 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 utilities_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return utilities_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 utilities_arrayLikeToArray(o, minLen); } + +function utilities_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; } + +function utilities_iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function utilities_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +function processCheckboxAndRadioAvailableValues(availableValues, type) { + if (!availableValues) { + return []; + } + + var flatValues = []; + Object.entries(availableValues).forEach(function (_ref) { + var _ref2 = utilities_slicedToArray(_ref, 2), + valueObjKey = _ref2[0], + value = _ref2[1]; + + if (utilities_typeof(value) === 'object' && typeof value.key !== 'undefined') { + flatValues.push(value); + return; + } + + var key = valueObjKey; + + if (type === 'integer' && typeof valueObjKey === 'string') { + key = parseInt(key, 10); + } + + flatValues.push({ + key: key, + value: value + }); + }); + return flatValues; +} +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FormField.vue?vue&type=script&lang=ts +function FormFieldvue_type_script_lang_ts_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { FormFieldvue_type_script_lang_ts_typeof = function _typeof(obj) { return typeof obj; }; } else { FormFieldvue_type_script_lang_ts_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return FormFieldvue_type_script_lang_ts_typeof(obj); } + + + + + + + + + + + + + + + + + + +var TEXT_CONTROLS = ['password', 'url', 'search', 'email']; +var CONTROLS_SUPPORTING_ARRAY = ['textarea', 'checkbox', 'text']; +var CONTROL_TO_COMPONENT_MAP = { + checkbox: 'FieldCheckbox', + 'expandable-select': 'FieldExpandableSelect', + 'field-array': 'FieldFieldArray', + file: 'FieldFile', + hidden: 'FieldHidden', + multiselect: 'FieldSelect', + multituple: 'FieldMultituple', + number: 'FieldNumber', + radio: 'FieldRadio', + select: 'FieldSelect', + site: 'FieldSite', + text: 'FieldText', + textarea: 'FieldTextarea' +}; +var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = { + FieldSelect: FieldSelectvue_type_script_lang_ts_getAvailableOptions, + FieldCheckboxArray: processCheckboxAndRadioAvailableValues, + FieldRadio: processCheckboxAndRadioAvailableValues, + FieldExpandableSelect: getAvailableOptions +}; +/* harmony default export */ var FormFieldvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: null, + formField: { + type: Object, + required: true + }, + allSettings: [Object, Array] + }, + emits: ['update:modelValue'], + components: { + FieldCheckbox: FieldCheckbox, + FieldCheckboxArray: FieldCheckboxArray, + FieldExpandableSelect: FieldExpandableSelect, + FieldFieldArray: FieldFieldArray, + FieldFile: FieldFile, + FieldHidden: FieldHidden, + FieldMultituple: FieldMultituple, + FieldNumber: FieldNumber, + FieldRadio: FieldRadio, + FieldSelect: FieldSelect, + FieldSite: FieldSite, + FieldText: FieldText, + FieldTextArray: FieldTextArray, + FieldTextarea: FieldTextarea, + FieldTextareaArray: FieldTextareaArray + }, + setup: function setup(props) { + var inlineHelpNode = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null); + + var setInlineHelp = function setInlineHelp(newVal) { + var toAppend; + + if (!newVal) { + return; + } + + if (typeof newVal === 'string' && newVal && newVal.indexOf('#') === 0) { + toAppend = window.$(newVal); + } else { + toAppend = window.vueSanitize(newVal); + } + + window.$(inlineHelpNode.value).html('').append(toAppend); + }; + + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () { + return props.formField.inlineHelp; + }, setInlineHelp); + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onMounted"])(function () { + setInlineHelp(props.formField.inlineHelp); + }); + return { + inlineHelp: inlineHelpNode + }; + }, + computed: { + childComponent: function childComponent() { + if (this.formField.component) { + return this.formField.component; + } + + var uiControl = this.formField.uiControl; + var control = CONTROL_TO_COMPONENT_MAP[uiControl]; + + if (TEXT_CONTROLS.indexOf(uiControl) !== -1) { + control = 'FieldText'; // we use same template for text and password both + } + + if (this.formField.type === 'array' && CONTROLS_SUPPORTING_ARRAY.indexOf(uiControl) !== -1) { + control = "".concat(control, "Array"); + } + + return control; + }, + extraChildComponentParams: function extraChildComponentParams() { + if (this.formField.uiControl === 'multiselect') { + return { + multiple: true + }; + } + + return {}; + }, + showFormHelp: function showFormHelp() { + return this.formField.description || this.formField.inlineHelp || this.showDefaultValue; + }, + showDefaultValue: function showDefaultValue() { + return this.defaultValuePretty && this.formField.uiControl !== 'checkbox' && this.formField.uiControl !== 'radio'; + }, + showField: function showField() { + if (!this.formField.condition || !this.allSettings || !Object.values(this.allSettings).length) { + return true; + } + + var values = {}; + Object.values(this.allSettings).forEach(function (setting) { + if (setting.value === '0') { + values[setting.name] = 0; + } else { + values[setting.name] = setting.value; + } + }); + return this.formField.condition(values); + }, + processedModelValue: function processedModelValue() { + var field = this.formField; // convert boolean values since angular 1.6 uses strict equals when determining if a model + // value matches the ng-value of an input. + + if (field.type === 'boolean') { + var valueIsTruthy = this.modelValue && this.modelValue > 0 && this.modelValue !== '0'; // for checkboxes, the value MUST be either true or false + + if (field.uiControl === 'checkbox') { + return valueIsTruthy; + } + + if (field.uiControl === 'radio') { + return valueIsTruthy ? '1' : '0'; + } + } + + return this.modelValue; + }, + defaultValue: function defaultValue() { + var defaultValue = this.formField.defaultValue; + + if (Array.isArray(defaultValue)) { + defaultValue = defaultValue.join(','); + } + + return defaultValue; + }, + availableOptions: function availableOptions() { + var childComponent = this.childComponent, + formField = this.formField; + + if (!formField.availableValues || !CONTROL_TO_AVAILABLE_OPTION_PROCESSOR[childComponent]) { + return null; + } + + return CONTROL_TO_AVAILABLE_OPTION_PROCESSOR[childComponent](formField.availableValues, formField.type, formField.uiControlAttributes); + }, + defaultValuePretty: function defaultValuePretty() { + var defaultValue = this.formField.defaultValue; + var availableOptions = this.availableOptions; + + if (typeof defaultValue === 'string' && defaultValue) { + // eg default value for multi tuple + var defaultParsed = null; + + try { + defaultParsed = JSON.parse(defaultValue); + } catch (e) {// invalid JSON + } + + if (defaultParsed !== null && FormFieldvue_type_script_lang_ts_typeof(defaultParsed) === 'object') { + return ''; + } + } + + if (!Array.isArray(availableOptions)) { + if (Array.isArray(defaultValue)) { + return ''; + } + + return defaultValue ? defaultValue.toString() : ''; + } + + var prettyValues = []; + + if (!Array.isArray(defaultValue)) { + defaultValue = [defaultValue]; + } + + (availableOptions || []).forEach(function (value) { + if (defaultValue.indexOf(value.key) !== -1 && typeof value.value !== 'undefined') { + prettyValues.push(value.value); + } + }); + return prettyValues.join(', '); + }, + defaultValuePrettyTruncated: function defaultValuePrettyTruncated() { + return this.defaultValuePretty.substring(0, 50); + } + }, + methods: { + onChange: function onChange(newValue) { + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue + + + +FormFieldvue_type_script_lang_ts.render = render + +/* harmony default export */ var FormField = (FormFieldvue_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/FieldAngularJsTemplate.vue?vue&type=template&id=41f51ad7 + +var FieldAngularJsTemplatevue_type_template_id_41f51ad7_hoisted_1 = { + ref: "root" +}; +function FieldAngularJsTemplatevue_type_template_id_41f51ad7_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", FieldAngularJsTemplatevue_type_template_id_41f51ad7_hoisted_1, null, 512); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=template&id=41f51ad7 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/FieldAngularJsTemplate.vue?vue&type=script&lang=ts +function FieldAngularJsTemplatevue_type_script_lang_ts_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { FieldAngularJsTemplatevue_type_script_lang_ts_ownKeys(Object(source), true).forEach(function (key) { FieldAngularJsTemplatevue_type_script_lang_ts_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { FieldAngularJsTemplatevue_type_script_lang_ts_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function FieldAngularJsTemplatevue_type_script_lang_ts_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; } + + + + +function clone(obj) { + if (typeof obj === 'undefined') { + return undefined; + } + + return JSON.parse(JSON.stringify(obj)); +} + +/* harmony default export */ var FieldAngularJsTemplatevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: null, + formField: null, + templateFile: String + }, + emits: ['update:modelValue'], + inheritAttrs: false, + setup: function setup(props, context) { + var root = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null); + var $element = window.$("<div ng-include=\"'".concat(props.templateFile, "?cb=").concat(external_CoreHome_["Matomo"].cacheBuster, "'\"></div>")); + var $timeout = external_CoreHome_["Matomo"].helper.getAngularDependency('$timeout'); + var $rootScope = external_CoreHome_["Matomo"].helper.getAngularDependency('$rootScope'); + var scope = $rootScope.$new(); + scope.formField = FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread(FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread({}, clone(props.formField)), {}, { + value: clone(props.modelValue) + }); + scope.$watch('formField.value', function (newValue, oldValue) { + if (newValue !== oldValue && newValue !== props.modelValue) { + context.emit('update:modelValue', clone(newValue)); + } + }); + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () { + return props.modelValue; + }, function (newValue) { + $timeout(function () { + scope.formField.value = clone(newValue); + }); + }); + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () { + return props.formField; + }, function (newValue) { + $timeout(function () { + var currentValue = scope.formField.value; + scope.formField = FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread(FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread({}, clone(newValue)), {}, { + value: currentValue + }); + }); + }, { + deep: true + }); // append on mount + + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onMounted"])(function () { + window.$(root.value).append($element); + external_CoreHome_["Matomo"].helper.compileAngularComponents($element, { + scope: scope, + params: { + formField: FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread(FieldAngularJsTemplatevue_type_script_lang_ts_objectSpread({}, clone(props.formField)), {}, { + value: props.modelValue + }) + } + }); + }); + return { + root: root + }; + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue + + + +FieldAngularJsTemplatevue_type_script_lang_ts.render = FieldAngularJsTemplatevue_type_template_id_41f51ad7_render + +/* harmony default export */ var FieldAngularJsTemplate = (FieldAngularJsTemplatevue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/useExternalPluginComponent.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 useExternalPluginComponent(plugin, component) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineAsyncComponent"])(function () { + return new Promise(function (resolve) { + window.$(document).ready(function () { + if (window[plugin]) { + resolve(window[plugin][component]); + } else { + resolve(null); // plugin not loaded + } + }); + }); + }); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts +function FormField_adapter_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function FormField_adapter_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { FormField_adapter_ownKeys(Object(source), true).forEach(function (key) { FormField_adapter_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { FormField_adapter_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function FormField_adapter_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 + */ + + + + + + +function transformVueComponentRef(value) { + if (!value) { + return undefined; + } + + var plugin = value.plugin, + name = value.name; + + if (!plugin || !name) { + throw new Error('Invalid component property given to piwik-field directive, must be ' + '{plugin: \'...\',name: \'...\'}'); + } + + return useExternalPluginComponent(plugin, name); +} + +/* harmony default export */ var FormField_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({ + component: FormField, + scope: { + modelValue: { + default: function _default(scope) { + var field = scope.piwikFormField; // vue components expect object data as input, so we parse JSON data + // for angularjs directives that use JSON. + + if (typeof field.value === 'string' && field.value && (field.type === 'array' || field.uiControl === 'multituple' || field.uiControl === 'field-array' || field.uiControl === 'multiselect' || field.uiControl === 'site')) { + field.value = JSON.parse(field.value); + } + + if (field.uiControl === 'checkbox') { + return Object(external_CoreHome_["transformAngularJsBoolAttr"])(field.value); + } + + return field.value; + } + }, + piwikFormField: { + vue: 'formField', + angularJsBind: '=', + transform: function transform(value, vm, scope) { + return FormField_adapter_objectSpread(FormField_adapter_objectSpread({}, value), {}, { + condition: value.condition ? function (values) { + return scope.$eval(value.condition, values); + } : value.condition, + disabled: Object(external_CoreHome_["transformAngularJsBoolAttr"])(value.disabled), + autocomplete: Object(external_CoreHome_["transformAngularJsBoolAttr"])(value.autocomplete), + autofocus: Object(external_CoreHome_["transformAngularJsBoolAttr"])(value.autofocus), + tabindex: Object(external_CoreHome_["transformAngularJsIntAttr"])(value.tabindex), + fullWidth: Object(external_CoreHome_["transformAngularJsBoolAttr"])(value.fullWidth), + maxlength: Object(external_CoreHome_["transformAngularJsIntAttr"])(value.maxlength), + required: Object(external_CoreHome_["transformAngularJsBoolAttr"])(value.required), + rows: Object(external_CoreHome_["transformAngularJsIntAttr"])(value.rows), + min: Object(external_CoreHome_["transformAngularJsIntAttr"])(value.min), + max: Object(external_CoreHome_["transformAngularJsIntAttr"])(value.max), + component: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["shallowRef"])(value.templateFile ? FieldAngularJsTemplate : transformVueComponentRef(value.component)) + }); + } + }, + allSettings: { + angularJsBind: '=' + } + }, + directiveName: 'piwikFormField', + events: { + 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, controller, $timeout) { + if (newValue !== scope.piwikFormField.value) { + $timeout(function () { + scope.piwikFormField.value = newValue; + }); + } + } + }, + $inject: ['$timeout'], + postCreate: function postCreate(vm, scope) { + scope.$watch('piwikFormField.value', function (newVal, oldVal) { + if (newVal !== oldVal) { + vm.modelValue = newVal; + } + }); + } +})); +// 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/Field/Field.vue?vue&type=template&id=64bae462 + +function Fieldvue_type_template_id_64bae462_render(_ctx, _cache, $props, $setup, $data, $options) { + var _component_FormField = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("FormField"); + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_FormField, { + "form-field": _ctx.field, + "model-value": _ctx.modelValue, + "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) { + return _ctx.onChange($event); + }), + component: _ctx.component + }, null, 8, ["form-field", "model-value", "component"]); +} +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=64bae462 + +// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-3!./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/Field/Field.vue?vue&type=script&lang=ts +function Fieldvue_type_script_lang_ts_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function Fieldvue_type_script_lang_ts_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { Fieldvue_type_script_lang_ts_ownKeys(Object(source), true).forEach(function (key) { Fieldvue_type_script_lang_ts_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { Fieldvue_type_script_lang_ts_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function Fieldvue_type_script_lang_ts_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; } + + + +var UI_CONTROLS_TO_TYPE = { + multiselect: 'array', + checkbox: 'boolean', + site: 'object', + number: 'integer' +}; +/* harmony default export */ var Fieldvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({ + props: { + modelValue: null, + uicontrol: String, + name: String, + defaultValue: null, + options: [Object, Array], + description: String, + introduction: String, + title: String, + inlineHelp: String, + disabled: Boolean, + uiControlAttributes: { + type: Object, + default: function _default() { + return {}; + } + }, + uiControlOptions: { + type: Object, + default: function _default() { + return {}; + } + }, + autocomplete: Boolean, + condition: Function, + varType: String, + autofocus: Boolean, + tabindex: Number, + fullWidth: Boolean, + maxlength: Number, + required: Boolean, + placeholder: String, + rows: Number, + min: Number, + max: Number, + component: null + }, + emits: ['update:modelValue'], + components: { + FormField: FormField + }, + computed: { + type: function type() { + if (this.varType) { + return this.varType; + } + + if (UI_CONTROLS_TO_TYPE[this.uicontrol]) { + return UI_CONTROLS_TO_TYPE[this.uicontrol]; + } + + return 'string'; + }, + field: function field() { + return { + uiControl: this.uicontrol, + type: this.type, + name: this.name, + defaultValue: this.defaultValue, + availableValues: this.options, + description: this.description, + introduction: this.introduction, + inlineHelp: this.inlineHelp, + title: this.title, + uiControlAttributes: Fieldvue_type_script_lang_ts_objectSpread(Fieldvue_type_script_lang_ts_objectSpread({}, this.uiControlAttributes), {}, { + disabled: this.disabled, + autocomplete: this.autocomplete, + tabindex: this.tabindex, + autofocus: this.autofocus, + rows: this.rows, + required: this.required, + maxlength: this.maxlength, + placeholder: this.placeholder, + min: this.min, + max: this.max + }), + fullWidth: this.fullWidth, + uiControlOptions: this.uiControlOptions + }; + } + }, + methods: { + onChange: function onChange(newValue) { + this.$emit('update:modelValue', newValue); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=script&lang=ts + +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue + + + +Fieldvue_type_script_lang_ts.render = Fieldvue_type_template_id_64bae462_render + +/* harmony default export */ var Field = (Fieldvue_type_script_lang_ts); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts +function Field_adapter_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + +function Field_adapter_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { Field_adapter_ownKeys(Object(source), true).forEach(function (key) { Field_adapter_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { Field_adapter_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function Field_adapter_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 + */ + + + + + +function handleJsonValue(value, varType, uiControl) { + if (typeof value === 'string' && value && (varType === 'array' || uiControl === 'multituple' || uiControl === 'field-array' || uiControl === 'multiselect' || uiControl === 'site')) { + var result = JSON.parse(value); // the angularjs site field supplied siteid/sitename properties which initializes the + // siteselector value. the sitename is assumed to be encoded, and is decoded once. + // so the value for 'site' Field's in angularjs is assumed to be encoded. + + if (uiControl === 'site') { + result.name = external_CoreHome_["Matomo"].helper.htmlDecode(result.name); + } + + return result; + } + + if (uiControl === 'checkbox' && varType !== 'array') { + return Object(external_CoreHome_["transformAngularJsBoolAttr"])(value); + } + + return value; +} + +/* harmony default export */ var Field_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({ + component: Field, + require: '?ngModel', + scope: { + uicontrol: { + angularJsBind: '@' + }, + name: { + angularJsBind: '@' + }, + value: { + vue: 'modelValue', + angularJsBind: '@', + transform: function transform(value, vm, scope) { + // vue components expect object data as input, so we parse JSON data + // for angularjs directives that use JSON. + return handleJsonValue(value, scope.varType, scope.uicontrol); + } + }, + default: { + vue: 'defaultValue', + angularJsBind: '@' + }, + options: { + angularJsBind: '=' + }, + description: { + angularJsBind: '@' + }, + introduction: { + angularJsBind: '@' + }, + title: { + angularJsBind: '@' + }, + inlineHelp: { + angularJsBind: '@' + }, + disabled: { + angularJsBind: '=', + transform: external_CoreHome_["transformAngularJsBoolAttr"] + }, + uiControlAttributes: { + angularJsBind: '=' + }, + uiControlOptions: { + angularJsBind: '=' + }, + autocomplete: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsBoolAttr"] + }, + condition: { + angularJsBind: '@', + transform: function transform(value, vm, scope) { + var transformed = value; + + if (value) { + transformed = function transformed(values) { + return scope.$eval(value, values); + }; + } + + return transformed; + } + }, + varType: { + angularJsBind: '@' + }, + autofocus: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsBoolAttr"] + }, + tabindex: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsIntAttr"] + }, + fullWidth: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsBoolAttr"] + }, + maxlength: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsIntAttr"] + }, + required: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsBoolAttr"] + }, + placeholder: { + angularJsBind: '@' + }, + rows: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsIntAttr"] + }, + min: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsIntAttr"] + }, + max: { + angularJsBind: '@', + transform: external_CoreHome_["transformAngularJsIntAttr"] + }, + component: { + angularJsBind: '<', + transform: function transform(value, vm, scope) { + if (!value) { + return value; + } + + if (scope.templateFile) { + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["shallowRef"])(FieldAngularJsTemplate); + } + + var plugin = value.plugin, + name = value.name; + + if (!plugin || !name) { + throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}"); + } + + return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["shallowRef"])(Object(external_CoreHome_["useExternalPluginComponent"])(plugin, name)); + } + } + }, + directiveName: 'piwikField', + $inject: ['$timeout'], + events: { + 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel, $timeout) { + var currentValue = ngModel ? ngModel.$viewValue : scope.value; + + if (newValue !== currentValue) { + $timeout(function () { + if (!ngModel) { + scope.value = newValue; + return; + } // ngModel being used + + + ngModel.$setViewValue(newValue); + ngModel.$render(); // not detected by the watch for some reason + }); + } + } + }, + postCreate: function postCreate(vm, scope, element, attrs, controller) { + var ngModel = controller; + + if (!ngModel) { + scope.$watch('value', function (newVal) { + if (newVal !== vm.modelValue) { + var transformed = handleJsonValue(newVal, scope.varType, scope.uicontrol); + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () { + vm.modelValue = transformed; + }); + } + }); + return; + } // ngModel being used + + + ngModel.$render = function () { + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () { + vm.modelValue = Object(external_CoreHome_["removeAngularJsSpecificProperties"])(ngModel.$viewValue); + }); + }; + + if (typeof scope.value !== 'undefined') { + var transformed = handleJsonValue(scope.value, scope.varType, scope.uicontrol); + ngModel.$setViewValue(transformed); + } else { + ngModel.$setViewValue(vm.modelValue); + } // to provide same behavior in angularjs/<4.6.0, we trigger a model update to the same + // value, but only for 'site' uicontrols. this only happened for site selectors, no others. + + + if (scope.uicontrol === 'site') { + setTimeout(function () { + ngModel.$setViewValue(Field_adapter_objectSpread({}, ngModel.$viewValue)); + }); + } + } +})); +// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/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=CorePluginsAdmin.umd.js.map
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js new file mode 100644 index 0000000000..a35fd654f6 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js @@ -0,0 +1,32 @@ +(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(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.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 o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));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/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 Ut})),n.d(t,"Field",(function(){return dn})),"undefined"!==typeof window){var r=window.document.currentScript,o=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var l=n("19dc"),i=n("8bbf");function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s={class:"form-group row"},d={key:0,class:"col s12"},m={key:0,class:"form-help"},f={key:0,class:"inline-help",ref:"inlineHelp"},p=Object(i["createElementVNode"])("br",null,null,-1);function b(e,t,n,r,o,l){return Object(i["withDirectives"])((Object(i["openBlock"])(),Object(i["createElementBlock"])("div",s,[e.formField.introduction?(Object(i["openBlock"])(),Object(i["createElementBlock"])("h3",d,Object(i["toDisplayString"])(e.formField.introduction),1)):Object(i["createCommentVNode"])("",!0),Object(i["createElementVNode"])("div",{class:Object(i["normalizeClass"])(["col s12",{"input-field":"checkbox"!==e.formField.uiControl&&"radio"!==e.formField.uiControl,"file-field":"file"===e.formField.uiControl,m6:!e.formField.fullWidth}])},[(Object(i["openBlock"])(),Object(i["createBlock"])(Object(i["resolveDynamicComponent"])(e.childComponent),Object(i["mergeProps"])(u(u({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(i["createElementVNode"])("div",{class:Object(i["normalizeClass"])(["col s12",{m6:!e.formField.fullWidth}])},[e.showFormHelp?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",m,[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",{class:"form-description"},Object(i["toDisplayString"])(e.formField.description),513),[[i["vShow"],e.formField.description]]),e.formField.inlineHelp?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",f,null,512)):Object(i["createCommentVNode"])("",!0),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,[p,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Default"))+": ",1),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.defaultValuePrettyTruncated),1)],512),[[i["vShow"],e.showDefaultValue]])])):Object(i["createCommentVNode"])("",!0)],2)],512)),[[i["vShow"],e.showField]])}var h={class:"checkbox"},O=["checked","id","name"],v=["innerHTML"];function y(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",h,[Object(i["createElementVNode"])("label",null,[Object(i["createElementVNode"])("input",Object(i["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,O),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.title)},null,8,v)])])}var j=Object(i["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)}}});j.render=y;var g=j,w=["value","checked","onChange","id","name"];function V(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(i["toDisplayString"])(e.title),513),[[i["vShow"],e.title]]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.availableOptions,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("p",{key:n,class:"checkbox"},[Object(i["createElementVNode"])("label",null,[Object(i["createElementVNode"])("input",Object(i["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,w),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(t.value),1),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{class:"form-description"},Object(i["toDisplayString"])(t.description),513),[[i["vShow"],t.description]])])])})),128))])}function C(e){return F(e)||k(e)||S(e)||A()}function A(){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 S(e,t){if(e){if("string"===typeof e)return B(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)?B(e,t):void 0}}function k(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function F(e){if(Array.isArray(e))return B(e)}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function E(e,t){return(e||[]).map((function(e){return t&&-1!==t.indexOf(e.key)}))}var x=Object(i["defineComponent"])({props:{modelValue:Object,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,type:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{checkboxStates:function(){return E(this.availableOptions,this.modelValue)}},mounted:function(){window.Materialize.updateTextFields()},methods:{onChange:function(e){var t=C(this.checkboxStates);t[e]=!t[e];var n=[];Object.values(this.availableOptions).forEach((function(e,r){t[r]&&n.push(e.key)})),this.$emit("update:modelValue",n)}}});x.render=V;var T=x,N={class:"expandableSelector"},P=Object(i["createElementVNode"])("svg",{class:"caret",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},[Object(i["createElementVNode"])("path",{d:"M7 10l5 5 5-5z"}),Object(i["createElementVNode"])("path",{d:"M0 0h24v24H0z",fill:"none"})],-1),$=["value"],M={class:"expandableList z-depth-2"},D={class:"searchContainer"},J={class:"collection firstLevel"},H=["onClick"],L={class:"collection secondLevel"},z=["onClick"],I={class:"primary-content"},K=["title"];function U(e,t,n,r,o,l){var a=Object(i["resolveDirective"])("focus-if"),u=Object(i["resolveDirective"])("focus-anywhere-but-here");return Object(i["withDirectives"])((Object(i["openBlock"])(),Object(i["createElementBlock"])("div",N,[Object(i["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(t){return e.showSelect=!e.showSelect}),class:"select-wrapper"},[P,Object(i["createElementVNode"])("input",{type:"text",class:"select-dropdown",readonly:"readonly",value:e.modelValueText},null,8,$)]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",M,[Object(i["createElementVNode"])("div",D,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text",placeholder:"Search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"expandableSearch browser-default"},null,512),[[i["vModelText"],e.searchTerm],[a,e.showSelect]])]),Object(i["createElementVNode"])("ul",J,[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.availableOptions,(function(t,n){return Object(i["withDirectives"])((Object(i["openBlock"])(),Object(i["createElementBlock"])("li",{class:"collection-item",key:n},[Object(i["createElementVNode"])("h4",{class:"expandableListCategory",onClick:function(n){return e.onCategoryClicked(t)}},[Object(i["createTextVNode"])(Object(i["toDisplayString"])(t.group)+" ",1),Object(i["createElementVNode"])("span",{class:Object(i["normalizeClass"])(["secondary-content",{"icon-arrow-right":e.showCategory!==t.group,"icon-arrow-bottom":e.showCategory===t.group}])},null,2)],8,H),Object(i["withDirectives"])(Object(i["createElementVNode"])("ul",L,[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(t.values.filter((function(t){return-1!==t.value.indexOf(e.searchTerm)})),(function(t){return Object(i["openBlock"])(),Object(i["createElementBlock"])("li",{class:"expandableListItem collection-item valign-wrapper",key:t.key,onClick:function(n){return e.onValueClicked(t)}},[Object(i["createElementVNode"])("span",I,Object(i["toDisplayString"])(t.value),1),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{title:t.tooltip,class:"secondary-content icon-help"},null,8,K),[[i["vShow"],t.tooltip]])],8,z)})),128))],512),[[i["vShow"],e.showCategory===t.group||e.searchTerm]])],512)),[[i["vShow"],t.values.filter((function(t){return-1!==t.value.indexOf(e.searchTerm)})).length]])})),128))])],512),[[i["vShow"],e.showSelect]])],512)),[[u,{blur:e.onBlur}]])}function q(e){var t=[],n={};return Object.values(e).forEach((function(e){var t=e,r=t.group||"";r in n&&n[r]||(n[r]={values:[],group:r});var o={key:t.key,value:t.value};"tooltip"in t&&t.tooltip&&(o.tooltip=t.tooltip),n[r].values.push(o)})),Object.values(n).forEach((function(e){e.values.length&&t.push(e)})),t}var R=Object(i["defineComponent"])({props:{modelValue:[Number,String],availableOptions:Array,title:String},directives:{FocusAnywhereButHere:l["FocusAnywhereButHere"],FocusIf:l["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;return(this.availableOptions||[]).some((function(n){return e=n.values.find((function(e){return e.key===t})),e})),e?e.value.toString():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}}});R.render=U;var _=R,W=["for","innerHTML"];function G(e,t,n,r,o,l){var a=Object(i["resolveComponent"])("FieldArray");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,W),Object(i["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 Q=Object(i["defineComponent"])({components:{FieldArray:l["FieldArray"]},props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],methods:{onValueUpdate:function(e){this.$emit("update:modelValue",e)}}});Q.render=G;var X=Q,Y={class:"btn"},Z=["for","innerHTML"],ee=["name","id"],te={class:"file-path-wrapper"},ne=["value"];function re(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("div",Y,[Object(i["createElementVNode"])("span",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Z),Object(i["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,ee)]),Object(i["createElementVNode"])("div",te,[Object(i["createElementVNode"])("input",{class:"file-path validate",value:e.modelValue,type:"text"},null,8,ne)])])}var oe=Object(i["defineComponent"])({props:{name:String,title:String,modelValue:String},inheritAttrs:!1,emits:["update:modelValue"],setup:function(e){var t=Object(i["ref"])(null);return Object(i["watch"])((function(){return e.modelValue}),(function(e){if(""===e){var n=t.value;n.value=""}})),{fileInput:t}},methods:{onChange:function(e){var t=e.target.files.item(0);this.$emit("update:modelValue",t)}}});oe.render=re;var le=oe,ie=["type","name","value"];function ae(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("input",{type:e.uiControl,name:e.name,value:e.modelValue,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,ie)])}var ue=Object(i["defineComponent"])({props:{modelValue:null,uiControl:String,name:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});ue.render=ae;var ce=ue,se={class:"fieldMultiTuple"},de=["for","innerHTML"];function me(e,t,n,r,o,l){var a=Object(i["resolveComponent"])("MultiPairField");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",se,[Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,de),Object(i["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 fe=Object(i["defineComponent"])({props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,components:{MultiPairField:l["MultiPairField"]},emits:["update:modelValue"],methods:{onUpdateValue:function(e){this.$emit("update:modelValue",e)}}});fe.render=me;var pe=fe,be=["type","id","name","value"],he=["for","innerHTML"];function Oe(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("input",Object(i["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,be),Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,he)],64)}var ve=Object(i["defineComponent"])({props:{uiControl:String,name:String,title:String,modelValue:[Number,String],uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onChange=Object(l["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()}))}}});ve.render=Oe;var ye=ve,je=["value","id","name","disabled","checked"];function ge(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(i["toDisplayString"])(e.title),513),[[i["vShow"],e.title]]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.availableOptions||[],(function(n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("p",{key:n.key,class:"radio"},[Object(i["createElementVNode"])("label",null,[Object(i["createElementVNode"])("input",Object(i["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,je),Object(i["createElementVNode"])("span",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(n.value)+" ",1),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{class:"form-description"},Object(i["toDisplayString"])(n.description),513),[[i["vShow"],n.description]])])])])})),128))])}var we=Object(i["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)}}});we.render=ge;var Ve=we;function Ce(e,t){return Be(e)||Fe(e,t)||Se(e,t)||Ae()}function Ae(){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 Se(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,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Fe(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l=[],i=!0,a=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(l.push(r.value),t&&l.length===t)break}catch(u){a=!0,o=u}finally{try{i||null==n["return"]||n["return"]()}finally{if(a)throw o}}return l}}function Be(e){if(Array.isArray(e))return e}var Ee={key:0,class:"matomo-field-select"},xe=["multiple","name"],Te=["label"],Ne=["value","selected"],Pe=["for","innerHTML"],$e={key:1,class:"matomo-field-select"},Me=["multiple","name"],De=["value","selected"],Je=["for","innerHTML"];function He(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[e.groupedOptions?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",Ee,[Object(i["createElementVNode"])("select",Object(i["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(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.groupedOptions,(function(t){var n=Ce(t,2),r=n[0],o=n[1];return Object(i["openBlock"])(),Object(i["createElementBlock"])("optgroup",{key:r,label:r},[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(o,(function(t){return Object(i["openBlock"])(),Object(i["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},Object(i["toDisplayString"])(t.value),9,Ne)})),128))],8,Te)})),128))],16,xe),Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,Pe)])):Object(i["createCommentVNode"])("",!0),!e.groupedOptions&&e.options?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",$e,[Object(i["createElementVNode"])("select",Object(i["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(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.options,(function(t){return Object(i["openBlock"])(),Object(i["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},Object(i["toDisplayString"])(t.value),9,De)})),128))],16,Me),Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,Je)])):Object(i["createCommentVNode"])("",!0)],64)}function Le(e){return Ke(e)||Ie(e)||Re(e)||ze()}function ze(){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 Ie(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Ke(e){if(Array.isArray(e))return _e(e)}function Ue(e,t){return Ge(e)||We(e,t)||Re(e,t)||qe()}function qe(){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 Re(e,t){if(e){if("string"===typeof e)return _e(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)?_e(e,t):void 0}}function _e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function We(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l=[],i=!0,a=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(l.push(r.value),t&&l.length===t)break}catch(u){a=!0,o=u}finally{try{i||null==n["return"]||n["return"]()}finally{if(a)throw o}}return l}}function Ge(e){if(Array.isArray(e))return e}function Qe(e){return Qe="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},Qe(e)}function Xe(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4?arguments[4]:void 0;if(e){var l=window.$(e);if(Array.from(e.options).forEach((function(e){e.selected=o?t&&-1!==t.indexOf(e.value.replace(/^string:/,"")):"string:".concat(t)===e.value})),l.formSelect(r),n){var i=l.closest(".select-wrapper").find("input");i.attr("placeholder",n)}}}function Ye(e){return!Array.isArray(e)&&"object"===Qe(e)&&Object.values(e).some((function(e){return"object"===Qe(e)}))}function Ze(e,t){return e.some((function(e){return e.key===t}))}function et(e,t,n){if(!e)return[];var r=!0,o=e;Ye(o)||(o={"":e},r=!1);var l=[];return Object.entries(o).forEach((function(e){var n=Ue(e,2),o=n[0],i=n[1];Object.entries(i).forEach((function(e){var n=Ue(e,2),i=n[0],a=n[1];if("object"!==Qe(a)||"undefined"===typeof a.key){var u=i;"integer"===t&&"string"===typeof i&&(u=parseInt(i,10)),l.push({group:r?o:void 0,key:u,value:a})}else l.push(a)}))})),n.placeholder&&!Ze(l,"")?[{key:"",value:""}].concat(l):l}function tt(e){return"string"===typeof e?e.replace(/^string:/,""):e}var nt=Object(i["defineComponent"])({props:{modelValue:null,multiple:Boolean,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,uiControlOptions:Object},inheritAttrs:!1,emits:["update:modelValue"],computed:{options:function(){return!this.availableOptions||Ze(this.availableOptions,"")||"undefined"!==typeof this.modelValue&&null!==this.modelValue&&""!==this.modelValue?this.availableOptions:[{key:"",value:this.modelValue,group:this.hasGroups?"":void 0}].concat(Le(this.availableOptions))},hasGroups:function(){var e=this.availableOptions;return e&&e[0]&&"undefined"!==typeof e[0].group},groupedOptions:function(){if(!this.hasGroups)return null;var e=this.options,t={};e.forEach((function(e){t[e.group]=t[e.group]||[],t[e.group].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=e.target;this.multiple?(t=Array.from(n.options).filter((function(e){return e.selected})).map((function(e){return e.value})),t=t.map(tt)):(t=n.value,t=tt(t)),this.$emit("update:modelValue",t)}},watch:{modelValue:function(e){var t=this;window.$(this.$refs.select).val(e),setTimeout((function(){Xe(t.$refs.select,e,t.uiControlAttributes.placeholder,t.uiControlOptions,t.multiple)}))},"uiControlAttributes.disabled":{handler:function(e,t){var n=this;setTimeout((function(){e!==t&&Xe(n.$refs.select,n.modelValue,n.uiControlAttributes.placeholder,n.uiControlOptions,n.multiple)}))}},availableOptions:function(e,t){var n=this;e!==t&&setTimeout((function(){Xe(n.$refs.select,n.modelValue,n.uiControlAttributes.placeholder,n.uiControlOptions,n.multiple)}))}},mounted:function(){var e=this;setTimeout((function(){Xe(e.$refs.select,e.modelValue,e.uiControlAttributes.placeholder,e.uiControlOptions,e.multiple)}))}});nt.render=He;var rt=nt,ot=["for","innerHTML"],lt={class:"sites_autocomplete"};function it(e,t,n,r,o,l){var a=Object(i["resolveComponent"])("SiteSelector");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("label",{for:e.name,class:"siteSelectorLabel",innerHTML:e.$sanitize(e.title)},null,8,ot),Object(i["createElementVNode"])("div",lt,[Object(i["createVNode"])(a,Object(i["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 at=Object(i["defineComponent"])({props:{name:String,title:String,modelValue:Object,uiControlAttributes:Object},inheritAttrs:!1,components:{SiteSelector:l["SiteSelector"]},emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});at.render=it;var ut=at,ct=["type","id","name","value"],st=["for","innerHTML"];function dt(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("input",Object(i["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,ct),Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,st)],64)}var mt=Object(i["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(l["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){this.$emit("update:modelValue",e.target.value)}}});mt.render=dt;var ft=mt,pt=["for","innerHTML"],bt=["type","name","value"];function ht(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,pt),Object(i["createElementVNode"])("input",Object(i["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,bt)])}var Ot=Object(i["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(l["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(",").map((function(e){return e.trim()}));this.$emit("update:modelValue",t)}}});Ot.render=ht;var vt=Ot,yt=["name","id","value"],jt=["for","innerHTML"];function gt(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("textarea",Object(i["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,yt),Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,jt)],64)}var wt=Object(i["defineComponent"])({props:{name:String,uiControlAttributes:Object,modelValue:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onKeydown=Object(l["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()}))}});wt.render=gt;var Vt=wt,Ct=["for","innerHTML"],At=["name","value"];function St(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",null,[Object(i["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Ct),Object(i["createElementVNode"])("textarea",Object(i["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,At)])}var kt="\n",Ft=Object(i["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(kt)}},created:function(){this.onKeydown=Object(l["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(kt);this.$emit("update:modelValue",t)}},watch:{modelValue:function(e,t){var n=this;e!==t&&setTimeout((function(){window.Materialize.textareaAutoResize(n.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});Ft.render=St;var Bt=Ft;function Et(e){return Et="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},Et(e)}function xt(e,t){return Mt(e)||$t(e,t)||Nt(e,t)||Tt()}function Tt(){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 Nt(e,t){if(e){if("string"===typeof e)return Pt(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)?Pt(e,t):void 0}}function Pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $t(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l=[],i=!0,a=!1;try{for(n=n.call(e);!(i=(r=n.next()).done);i=!0)if(l.push(r.value),t&&l.length===t)break}catch(u){a=!0,o=u}finally{try{i||null==n["return"]||n["return"]()}finally{if(a)throw o}}return l}}function Mt(e){if(Array.isArray(e))return e} +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */function Dt(e,t){if(!e)return[];var n=[];return Object.entries(e).forEach((function(e){var r=xt(e,2),o=r[0],l=r[1];if("object"!==Et(l)||"undefined"===typeof l.key){var i=o;"integer"===t&&"string"===typeof o&&(i=parseInt(i,10)),n.push({key:i,value:l})}else n.push(l)})),n}function Jt(e){return Jt="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},Jt(e)}var Ht=["password","url","search","email"],Lt=["textarea","checkbox","text"],zt={checkbox:"FieldCheckbox","expandable-select":"FieldExpandableSelect","field-array":"FieldFieldArray",file:"FieldFile",hidden:"FieldHidden",multiselect:"FieldSelect",multituple:"FieldMultituple",number:"FieldNumber",radio:"FieldRadio",select:"FieldSelect",site:"FieldSite",text:"FieldText",textarea:"FieldTextarea"},It={FieldSelect:et,FieldCheckboxArray:Dt,FieldRadio:Dt,FieldExpandableSelect:q},Kt=Object(i["defineComponent"])({props:{modelValue:null,formField:{type:Object,required:!0},allSettings:[Object,Array]},emits:["update:modelValue"],components:{FieldCheckbox:g,FieldCheckboxArray:T,FieldExpandableSelect:_,FieldFieldArray:X,FieldFile:le,FieldHidden:ce,FieldMultituple:pe,FieldNumber:ye,FieldRadio:Ve,FieldSelect:rt,FieldSite:ut,FieldText:ft,FieldTextArray:vt,FieldTextarea:Vt,FieldTextareaArray:Bt},setup:function(e){var t=Object(i["ref"])(null),n=function(e){var n;e&&(n="string"===typeof e&&e&&0===e.indexOf("#")?window.$(e):window.vueSanitize(e),window.$(t.value).html("").append(n))};return Object(i["watch"])((function(){return e.formField.inlineHelp}),n),Object(i["onMounted"])((function(){n(e.formField.inlineHelp)})),{inlineHelp:t}},computed:{childComponent:function(){if(this.formField.component)return this.formField.component;var e=this.formField.uiControl,t=zt[e];return-1!==Ht.indexOf(e)&&(t="FieldText"),"array"===this.formField.type&&-1!==Lt.indexOf(e)&&(t="".concat(t,"Array")),t},extraChildComponentParams:function(){return"multiselect"===this.formField.uiControl?{multiple:!0}:{}},showFormHelp:function(){return this.formField.description||this.formField.inlineHelp||this.showDefaultValue},showDefaultValue:function(){return this.defaultValuePretty&&"checkbox"!==this.formField.uiControl&&"radio"!==this.formField.uiControl},showField:function(){if(!this.formField.condition||!this.allSettings||!Object.values(this.allSettings).length)return!0;var e={};return Object.values(this.allSettings).forEach((function(t){"0"===t.value?e[t.name]=0:e[t.name]=t.value})),this.formField.condition(e)},processedModelValue:function(){var e=this.formField;if("boolean"===e.type){var t=this.modelValue&&this.modelValue>0&&"0"!==this.modelValue;if("checkbox"===e.uiControl)return t;if("radio"===e.uiControl)return t?"1":"0"}return this.modelValue},defaultValue:function(){var e=this.formField.defaultValue;return Array.isArray(e)&&(e=e.join(",")),e},availableOptions:function(){var e=this.childComponent,t=this.formField;return t.availableValues&&It[e]?It[e](t.availableValues,t.type,t.uiControlAttributes):null},defaultValuePretty:function(){var e=this.formField.defaultValue,t=this.availableOptions;if("string"===typeof e&&e){var n=null;try{n=JSON.parse(e)}catch(o){}if(null!==n&&"object"===Jt(n))return""}if(!Array.isArray(t))return Array.isArray(e)?"":e?e.toString():"";var r=[];return Array.isArray(e)||(e=[e]),(t||[]).forEach((function(t){-1!==e.indexOf(t.key)&&"undefined"!==typeof t.value&&r.push(t.value)})),r.join(", ")},defaultValuePrettyTruncated:function(){return this.defaultValuePretty.substring(0,50)}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});Kt.render=b;var Ut=Kt,qt={ref:"root"};function Rt(e,t,n,r,o,l){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",qt,null,512)}function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_t(Object(n),!0).forEach((function(t){Gt(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Gt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qt(e){if("undefined"!==typeof e)return JSON.parse(JSON.stringify(e))}var Xt=Object(i["defineComponent"])({props:{modelValue:null,formField:null,templateFile:String},emits:["update:modelValue"],inheritAttrs:!1,setup:function(e,t){var n=Object(i["ref"])(null),r=window.$("<div ng-include=\"'".concat(e.templateFile,"?cb=").concat(l["Matomo"].cacheBuster,"'\"></div>")),o=l["Matomo"].helper.getAngularDependency("$timeout"),a=l["Matomo"].helper.getAngularDependency("$rootScope"),u=a.$new();return u.formField=Wt(Wt({},Qt(e.formField)),{},{value:Qt(e.modelValue)}),u.$watch("formField.value",(function(n,r){n!==r&&n!==e.modelValue&&t.emit("update:modelValue",Qt(n))})),Object(i["watch"])((function(){return e.modelValue}),(function(e){o((function(){u.formField.value=Qt(e)}))})),Object(i["watch"])((function(){return e.formField}),(function(e){o((function(){var t=u.formField.value;u.formField=Wt(Wt({},Qt(e)),{},{value:t})}))}),{deep:!0}),Object(i["onMounted"])((function(){window.$(n.value).append(r),l["Matomo"].helper.compileAngularComponents(r,{scope:u,params:{formField:Wt(Wt({},Qt(e.formField)),{},{value:e.modelValue})}})})),{root:n}}});Xt.render=Rt;var Yt=Xt; +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */function Zt(e,t){return Object(i["defineAsyncComponent"])((function(){return new Promise((function(n){window.$(document).ready((function(){window[e]?n(window[e][t]):n(null)}))}))}))}function en(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function tn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?en(Object(n),!0).forEach((function(t){nn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):en(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function nn(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 + */function rn(e){if(e){var t=e.plugin,n=e.name;if(!t||!n)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Zt(t,n)}}Object(l["createAngularJsAdapter"])({component:Ut,scope:{modelValue:{default:function(e){var t=e.piwikFormField;return"string"!==typeof t.value||!t.value||"array"!==t.type&&"multituple"!==t.uiControl&&"field-array"!==t.uiControl&&"multiselect"!==t.uiControl&&"site"!==t.uiControl||(t.value=JSON.parse(t.value)),"checkbox"===t.uiControl?Object(l["transformAngularJsBoolAttr"])(t.value):t.value}},piwikFormField:{vue:"formField",angularJsBind:"=",transform:function(e,t,n){return tn(tn({},e),{},{condition:e.condition?function(t){return n.$eval(e.condition,t)}:e.condition,disabled:Object(l["transformAngularJsBoolAttr"])(e.disabled),autocomplete:Object(l["transformAngularJsBoolAttr"])(e.autocomplete),autofocus:Object(l["transformAngularJsBoolAttr"])(e.autofocus),tabindex:Object(l["transformAngularJsIntAttr"])(e.tabindex),fullWidth:Object(l["transformAngularJsBoolAttr"])(e.fullWidth),maxlength:Object(l["transformAngularJsIntAttr"])(e.maxlength),required:Object(l["transformAngularJsBoolAttr"])(e.required),rows:Object(l["transformAngularJsIntAttr"])(e.rows),min:Object(l["transformAngularJsIntAttr"])(e.min),max:Object(l["transformAngularJsIntAttr"])(e.max),component:Object(i["shallowRef"])(e.templateFile?Yt:rn(e.component))})}},allSettings:{angularJsBind:"="}},directiveName:"piwikFormField",events:{"update:modelValue":function(e,t,n,r,o,l,i){e!==n.piwikFormField.value&&i((function(){n.piwikFormField.value=e}))}},$inject:["$timeout"],postCreate:function(e,t){t.$watch("piwikFormField.value",(function(t,n){t!==n&&(e.modelValue=t)}))}});function on(e,t,n,r,o,l){var a=Object(i["resolveComponent"])("FormField");return Object(i["openBlock"])(),Object(i["createBlock"])(a,{"form-field":e.field,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)}),component:e.component},null,8,["form-field","model-value","component"])}function ln(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function an(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ln(Object(n),!0).forEach((function(t){un(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ln(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function un(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var cn={multiselect:"array",checkbox:"boolean",site:"object",number:"integer"},sn=Object(i["defineComponent"])({props:{modelValue:null,uicontrol:String,name:String,defaultValue:null,options:[Object,Array],description:String,introduction:String,title:String,inlineHelp:String,disabled:Boolean,uiControlAttributes:{type:Object,default:function(){return{}}},uiControlOptions:{type:Object,default:function(){return{}}},autocomplete:Boolean,condition:Function,varType:String,autofocus:Boolean,tabindex:Number,fullWidth:Boolean,maxlength:Number,required:Boolean,placeholder:String,rows:Number,min:Number,max:Number,component:null},emits:["update:modelValue"],components:{FormField:Ut},computed:{type:function(){return this.varType?this.varType:cn[this.uicontrol]?cn[this.uicontrol]:"string"},field:function(){return{uiControl:this.uicontrol,type:this.type,name:this.name,defaultValue:this.defaultValue,availableValues:this.options,description:this.description,introduction:this.introduction,inlineHelp:this.inlineHelp,title:this.title,uiControlAttributes:an(an({},this.uiControlAttributes),{},{disabled:this.disabled,autocomplete:this.autocomplete,tabindex:this.tabindex,autofocus:this.autofocus,rows:this.rows,required:this.required,maxlength:this.maxlength,placeholder:this.placeholder,min:this.min,max:this.max}),fullWidth:this.fullWidth,uiControlOptions:this.uiControlOptions}}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});sn.render=on;var dn=sn;function mn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mn(Object(n),!0).forEach((function(t){pn(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function pn(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 + */function bn(e,t,n){if("string"===typeof e&&e&&("array"===t||"multituple"===n||"field-array"===n||"multiselect"===n||"site"===n)){var r=JSON.parse(e);return"site"===n&&(r.name=l["Matomo"].helper.htmlDecode(r.name)),r}return"checkbox"===n&&"array"!==t?Object(l["transformAngularJsBoolAttr"])(e):e}Object(l["createAngularJsAdapter"])({component:dn,require:"?ngModel",scope:{uicontrol:{angularJsBind:"@"},name:{angularJsBind:"@"},value:{vue:"modelValue",angularJsBind:"@",transform:function(e,t,n){return bn(e,n.varType,n.uicontrol)}},default:{vue:"defaultValue",angularJsBind:"@"},options:{angularJsBind:"="},description:{angularJsBind:"@"},introduction:{angularJsBind:"@"},title:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@"},disabled:{angularJsBind:"=",transform:l["transformAngularJsBoolAttr"]},uiControlAttributes:{angularJsBind:"="},uiControlOptions:{angularJsBind:"="},autocomplete:{angularJsBind:"@",transform:l["transformAngularJsBoolAttr"]},condition:{angularJsBind:"@",transform:function(e,t,n){var r=e;return e&&(r=function(t){return n.$eval(e,t)}),r}},varType:{angularJsBind:"@"},autofocus:{angularJsBind:"@",transform:l["transformAngularJsBoolAttr"]},tabindex:{angularJsBind:"@",transform:l["transformAngularJsIntAttr"]},fullWidth:{angularJsBind:"@",transform:l["transformAngularJsBoolAttr"]},maxlength:{angularJsBind:"@",transform:l["transformAngularJsIntAttr"]},required:{angularJsBind:"@",transform:l["transformAngularJsBoolAttr"]},placeholder:{angularJsBind:"@"},rows:{angularJsBind:"@",transform:l["transformAngularJsIntAttr"]},min:{angularJsBind:"@",transform:l["transformAngularJsIntAttr"]},max:{angularJsBind:"@",transform:l["transformAngularJsIntAttr"]},component:{angularJsBind:"<",transform:function(e,t,n){if(!e)return e;if(n.templateFile)return Object(i["shallowRef"])(Yt);var r=e.plugin,o=e.name;if(!r||!o)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Object(i["shallowRef"])(Object(l["useExternalPluginComponent"])(r,o))}}},directiveName:"piwikField",$inject:["$timeout"],events:{"update:modelValue":function(e,t,n,r,o,l,i){var a=l?l.$viewValue:n.value;e!==a&&i((function(){l?(l.$setViewValue(e),l.$render()):n.value=e}))}},postCreate:function(e,t,n,r,o){var a=o;if(a){if(a.$render=function(){Object(i["nextTick"])((function(){e.modelValue=Object(l["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value){var u=bn(t.value,t.varType,t.uicontrol);a.$setViewValue(u)}else a.$setViewValue(e.modelValue);"site"===t.uicontrol&&setTimeout((function(){a.$setViewValue(fn({},a.$viewValue))}))}else t.$watch("value",(function(n){if(n!==e.modelValue){var r=bn(n,t.varType,t.uicontrol);Object(i["nextTick"])((function(){e.modelValue=r}))}}))}}); +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +*/}})})); +//# sourceMappingURL=CorePluginsAdmin.umd.min.js.map
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/vue/dist/umd.metadata.json b/plugins/CorePluginsAdmin/vue/dist/umd.metadata.json new file mode 100644 index 0000000000..9ecfcc0456 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/dist/umd.metadata.json @@ -0,0 +1,5 @@ +{ + "dependsOn": [ + "CoreHome" + ] +}
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts b/plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts new file mode 100644 index 0000000000..51dc7dff9e --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts @@ -0,0 +1,226 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { INgModelController, ITimeoutService } from 'angular'; +import { nextTick, shallowRef } from 'vue'; +import { + createAngularJsAdapter, + transformAngularJsBoolAttr, + transformAngularJsIntAttr, + removeAngularJsSpecificProperties, + Matomo, + useExternalPluginComponent, +} from 'CoreHome'; +import Field from './Field.vue'; +import FieldAngularJsTemplate from '../FormField/FieldAngularJsTemplate.vue'; + +function handleJsonValue(value: unknown, varType: string, uiControl: string) { + if (typeof value === 'string' + && value + && (varType === 'array' + || uiControl === 'multituple' + || uiControl === 'field-array' + || uiControl === 'multiselect' + || uiControl === 'site') + ) { + const result = JSON.parse(value); + + // the angularjs site field supplied siteid/sitename properties which initializes the + // siteselector value. the sitename is assumed to be encoded, and is decoded once. + // so the value for 'site' Field's in angularjs is assumed to be encoded. + if (uiControl === 'site') { + result.name = Matomo.helper.htmlDecode(result.name); + } + + return result; + } + + if (uiControl === 'checkbox' && varType !== 'array') { + return transformAngularJsBoolAttr(value); + } + + return value; +} + +export default createAngularJsAdapter<[ITimeoutService]>({ + component: Field, + require: '?ngModel', + scope: { + uicontrol: { + angularJsBind: '@', + }, + name: { + angularJsBind: '@', + }, + value: { + vue: 'modelValue', + angularJsBind: '@', + transform(value, vm, scope) { + // vue components expect object data as input, so we parse JSON data + // for angularjs directives that use JSON. + return handleJsonValue(value, scope.varType, scope.uicontrol); + }, + }, + default: { + vue: 'defaultValue', + angularJsBind: '@', + }, + options: { + angularJsBind: '=', + }, + description: { + angularJsBind: '@', + }, + introduction: { + angularJsBind: '@', + }, + title: { + angularJsBind: '@', + }, + inlineHelp: { + angularJsBind: '@', + }, + disabled: { + angularJsBind: '=', + transform: transformAngularJsBoolAttr, + }, + uiControlAttributes: { + angularJsBind: '=', + }, + uiControlOptions: { + angularJsBind: '=', + }, + autocomplete: { + angularJsBind: '@', + transform: transformAngularJsBoolAttr, + }, + condition: { + angularJsBind: '@', + transform(value, vm, scope) { + let transformed = value; + if (value) { + transformed = (values: unknown[]) => scope.$eval(value, values); + } + return transformed; + }, + }, + varType: { + angularJsBind: '@', + }, + autofocus: { + angularJsBind: '@', + transform: transformAngularJsBoolAttr, + }, + tabindex: { + angularJsBind: '@', + transform: transformAngularJsIntAttr, + }, + fullWidth: { + angularJsBind: '@', + transform: transformAngularJsBoolAttr, + }, + maxlength: { + angularJsBind: '@', + transform: transformAngularJsIntAttr, + }, + required: { + angularJsBind: '@', + transform: transformAngularJsBoolAttr, + }, + placeholder: { + angularJsBind: '@', + }, + rows: { + angularJsBind: '@', + transform: transformAngularJsIntAttr, + }, + min: { + angularJsBind: '@', + transform: transformAngularJsIntAttr, + }, + max: { + angularJsBind: '@', + transform: transformAngularJsIntAttr, + }, + component: { + angularJsBind: '<', + transform(value, vm, scope) { + if (!value) { + return value; + } + + if (scope.templateFile) { + return shallowRef(FieldAngularJsTemplate); + } + + const { plugin, name } = value; + if (!plugin || !name) { + throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}"); + } + + return shallowRef(useExternalPluginComponent(plugin, name)); + }, + }, + }, + directiveName: 'piwikField', + $inject: ['$timeout'], + events: { + 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel, $timeout) => { + const currentValue = ngModel ? ngModel.$viewValue : scope.value; + if (newValue !== currentValue) { + $timeout(() => { + if (!ngModel) { + scope.value = newValue; + return; + } + + // ngModel being used + (ngModel as INgModelController).$setViewValue(newValue); + (ngModel as INgModelController).$render(); // not detected by the watch for some reason + }); + } + }, + }, + postCreate(vm, scope, element, attrs, controller) { + const ngModel = controller as INgModelController; + + if (!ngModel) { + scope.$watch('value', (newVal) => { + if (newVal !== vm.modelValue) { + const transformed = handleJsonValue(newVal, scope.varType, scope.uicontrol); + + nextTick(() => { + vm.modelValue = transformed; + }); + } + }); + return; + } + + // ngModel being used + ngModel.$render = () => { + nextTick(() => { + vm.modelValue = removeAngularJsSpecificProperties(ngModel.$viewValue); + }); + }; + + if (typeof scope.value !== 'undefined') { + const transformed = handleJsonValue(scope.value, scope.varType, scope.uicontrol); + (ngModel as INgModelController).$setViewValue(transformed); + } else { + ngModel.$setViewValue(vm.modelValue); + } + + // to provide same behavior in angularjs/<4.6.0, we trigger a model update to the same + // value, but only for 'site' uicontrols. this only happened for site selectors, no others. + if (scope.uicontrol === 'site') { + setTimeout(() => { + ngModel.$setViewValue({ ...ngModel.$viewValue }); + }); + } + }, +}); diff --git a/plugins/CorePluginsAdmin/vue/src/Field/Field.vue b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue new file mode 100644 index 0000000000..02a327d18e --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue @@ -0,0 +1,112 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <FormField + :form-field="field" + :model-value="modelValue" + @update:model-value="onChange($event)" + :component="component" + /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import FormField from '../FormField/FormField.vue'; + +const UI_CONTROLS_TO_TYPE = { + multiselect: 'array', + checkbox: 'boolean', + site: 'object', + number: 'integer', +}; + +export default defineComponent({ + props: { + modelValue: null, + uicontrol: String, + name: String, + defaultValue: null, + options: [Object, Array], + description: String, + introduction: String, + title: String, + inlineHelp: String, + disabled: Boolean, + uiControlAttributes: { + type: Object, + default: () => ({}), + }, + uiControlOptions: { + type: Object, + default: () => ({}), + }, + autocomplete: Boolean, + condition: Function, + varType: String, + autofocus: Boolean, + tabindex: Number, + fullWidth: Boolean, + maxlength: Number, + required: Boolean, + placeholder: String, + rows: Number, + min: Number, + max: Number, + component: null, + }, + emits: ['update:modelValue'], + components: { + FormField, + }, + computed: { + type() { + if (this.varType) { + return this.varType; + } + + if (UI_CONTROLS_TO_TYPE[this.uicontrol]) { + return UI_CONTROLS_TO_TYPE[this.uicontrol]; + } + + return 'string'; + }, + field() { + return { + uiControl: this.uicontrol, + type: this.type, + name: this.name, + defaultValue: this.defaultValue, + availableValues: this.options, + description: this.description, + introduction: this.introduction, + inlineHelp: this.inlineHelp, + title: this.title, + uiControlAttributes: { + ...this.uiControlAttributes, + disabled: this.disabled, + autocomplete: this.autocomplete, + tabindex: this.tabindex, + autofocus: this.autofocus, + rows: this.rows, + required: this.required, + maxlength: this.maxlength, + placeholder: this.placeholder, + min: this.min, + max: this.max, + }, + fullWidth: this.fullWidth, + uiControlOptions: this.uiControlOptions, + }; + }, + }, + methods: { + onChange(newValue) { + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue new file mode 100644 index 0000000000..c9763858ff --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue @@ -0,0 +1,96 @@ +<!-- + 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 ref="root"/> +</template> + +<script lang="ts"> +import { + defineComponent, + ref, + watch, + onMounted, +} from 'vue'; +import { Matomo } from 'CoreHome'; + +function clone(obj) { + if (typeof obj === 'undefined') { + return undefined; + } + + return JSON.parse(JSON.stringify(obj)); +} + +export default defineComponent({ + props: { + modelValue: null, + formField: null, + templateFile: String, + }, + emits: ['update:modelValue'], + inheritAttrs: false, + setup(props, context) { + const root = ref(null); + + const $element = window.$( + `<div ng-include="'${props.templateFile}?cb=${Matomo.cacheBuster}'"></div>`, + ); + + const $timeout = Matomo.helper.getAngularDependency('$timeout'); + const $rootScope = Matomo.helper.getAngularDependency('$rootScope'); + + const scope = $rootScope.$new(); + scope.formField = { + ...clone(props.formField), + value: clone(props.modelValue), + }; + + scope.$watch('formField.value', (newValue, oldValue) => { + if (newValue !== oldValue + && newValue !== props.modelValue + ) { + context.emit('update:modelValue', clone(newValue)); + } + }); + + watch(() => props.modelValue, (newValue) => { + $timeout(() => { + scope.formField.value = clone(newValue); + }); + }); + + watch(() => props.formField, (newValue) => { + $timeout(() => { + const currentValue = scope.formField.value; + scope.formField = { + ...clone(newValue), + value: currentValue, + }; + }); + }, { deep: true }); + + // append on mount + onMounted(() => { + window.$(root.value).append($element); + + Matomo.helper.compileAngularComponents($element, { + scope, + params: { + formField: { + ...clone(props.formField), + value: props.modelValue, + }, + }, + }); + }); + + return { + root, + }; + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue new file mode 100644 index 0000000000..3e172d63d7 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue @@ -0,0 +1,45 @@ +<!-- + 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="checkbox"> + <label> + <input + @change="onChange($event)" + v-bind="uiControlAttributes" + :value="1" + :checked="!!modelValue" + type="checkbox" + :id="name" + :name="name" + /> + + <span v-html="$sanitize(title)"/> + </label> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; + +export default defineComponent({ + props: { + modelValue: Boolean, + uiControlAttributes: Object, + name: String, + title: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange(event: Event) { + if (this.modelValue !== event.target.checked) { + this.$emit('update:modelValue', event.target.checked); + } + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue new file mode 100644 index 0000000000..3eb91ea865 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue @@ -0,0 +1,77 @@ +<!-- + 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> + <label class="fieldRadioTitle" v-show="title">{{ title }}</label> + <p + v-for="(checkboxModel, $index) in availableOptions" + :key="$index" + class="checkbox" + > + <label> + <input + :value="checkboxModel.key" + :checked="!!checkboxStates[$index]" + @change="onChange($index)" + v-bind="uiControlAttributes" + type="checkbox" + :id="`${name}${checkboxModel.key}`" + :name="checkboxModel.name" + /> + <span>{{ checkboxModel.value }}</span> + + <span class="form-description" v-show="checkboxModel.description"> + {{ checkboxModel.description }} + </span> + </label> + </p> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; + +function getCheckboxStates(availableOptions, modelValue) { + return (availableOptions || []).map((o) => modelValue && modelValue.indexOf(o.key) !== -1); +} + +export default defineComponent({ + props: { + modelValue: Object, + name: String, + title: String, + availableOptions: Array, + uiControlAttributes: Object, + type: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + checkboxStates() { + return getCheckboxStates(this.availableOptions, this.modelValue); + }, + }, + mounted() { + window.Materialize.updateTextFields(); + }, + methods: { + onChange(changedIndex: number) { + const checkboxStates = [...this.checkboxStates]; + checkboxStates[changedIndex] = !checkboxStates[changedIndex]; + + const newValue = []; + Object.values(this.availableOptions).forEach((option, index) => { + if (checkboxStates[index]) { + newValue.push(option.key); + } + }); + + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less index 75a8c2428c..75a8c2428c 100644 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue new file mode 100644 index 0000000000..c775e120f8 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.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> + <div class="expandableSelector" v-focus-anywhere-but-here="{ blur: onBlur }"> + <div @click="showSelect = !showSelect" class="select-wrapper"> + <svg class="caret" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"> + <path d="M7 10l5 5 5-5z"></path><path d="M0 0h24v24H0z" fill="none"></path> + </svg> + <input type="text" class="select-dropdown" readonly="readonly" :value="modelValueText"/> + </div> + + <div v-show="showSelect" class="expandableList z-depth-2"> + + <div class="searchContainer"> + <input + type="text" + placeholder="Search" + v-model="searchTerm" + class="expandableSearch browser-default" + v-focus-if="showSelect" + /> + </div> + <ul class="collection firstLevel"> + <li + v-for="(options, index) in availableOptions" + class="collection-item" + v-show="options.values.filter(x => x.value.indexOf(searchTerm) !== -1).length" + :key="index" + > + <h4 + class="expandableListCategory" + @click="onCategoryClicked(options)" + > + {{ options.group }} + <span + class="secondary-content" + :class='{ + "icon-arrow-right": showCategory !== options.group, + "icon-arrow-bottom": showCategory === options.group + }' + /> + </h4> + + <ul v-show="showCategory === options.group || searchTerm" class="collection secondLevel"> + <li + class="expandableListItem collection-item valign-wrapper" + v-for="children in options.values.filter(x => x.value.indexOf(searchTerm) !== -1)" + :key="children.key" + @click="onValueClicked(children)" + > + <span class="primary-content">{{ children.value }}</span> + <span + v-show="children.tooltip" + :title="children.tooltip" + class="secondary-content icon-help" + ></span> + </li> + </ul> + </li> + </ul> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { FocusAnywhereButHere, FocusIf } from 'CoreHome'; + +interface SelectValueInfo { + key: unknown; +} + +interface AvailableOptions { + group: string; + key: unknown; + value: unknown; + tooltip?: string; +} + +export function getAvailableOptions( + availableValues: Record<string, unknown>, +): { key: string, value: unknown }[] { + const flatValues = []; + + const groups = {}; + Object.values(availableValues).forEach((uncastedValue) => { + const value = uncastedValue as AvailableOptions; + const group = value.group || ''; + + if (!(group in groups) || !groups[group]) { + groups[group] = { values: [], group }; + } + + const formatted: Record<string, unknown> = { key: value.key, value: value.value }; + + if ('tooltip' in value && value.tooltip) { + formatted.tooltip = value.tooltip; + } + + groups[group].values.push(formatted); + }); + + Object.values(groups).forEach((group) => { + if (group.values.length) { + flatValues.push(group); + } + }); + + return flatValues; +} + +export default defineComponent({ + props: { + modelValue: [Number, String], + availableOptions: Array, + title: String, + }, + directives: { + FocusAnywhereButHere, + FocusIf, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + data() { + return { + showSelect: false, + searchTerm: '', + showCategory: '', + }; + }, + computed: { + modelValueText() { + if (this.title) { + return this.title; + } + + const key = this.modelValue; + + let keyItem: { key: string|number, value: unknown }; + (this.availableOptions || []).some((option) => { + keyItem = option.values.find((item) => item.key === key); + return keyItem; // stop iterating if found + }); + + if (keyItem) { + return keyItem.value.toString(); + } + return key; + }, + }, + methods: { + onBlur() { + this.showSelect = false; + }, + onCategoryClicked(options: AvailableOptions) { + if (this.showCategory === options.group) { + this.showCategory = ''; + } else { + this.showCategory = options.group; + } + }, + onValueClicked(selectedValue: SelectValueInfo) { + this.$emit('update:modelValue', selectedValue.key); + this.showSelect = false; + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue new file mode 100644 index 0000000000..0ea559cd2d --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue @@ -0,0 +1,42 @@ +<!-- + 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> + <label :for="name" v-html="$sanitize(title)"></label> + + <FieldArray + :name="name" + :model-value="modelValue" + @update:modelValue="onValueUpdate($event)" + :field="uiControlAttributes.field" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { FieldArray } from 'CoreHome'; + +export default defineComponent({ + components: { + FieldArray, + }, + props: { + name: String, + title: String, + modelValue: null, + uiControlAttributes: Object, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onValueUpdate(newValue: unknown) { + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue new file mode 100644 index 0000000000..12faca52de --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue @@ -0,0 +1,56 @@ +<!-- + 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 class="btn"> + <span :for="name" v-html="$sanitize(title)"></span> + <input ref="fileInput" :name="name" type="file" :id="name" @change="onChange($event)" /> + </div> + + <div class="file-path-wrapper"> + <input class="file-path validate" :value="modelValue" type="text"/> + </div> + </div> +</template> + +<script lang="ts"> +import { + defineComponent, + watch, + ref, +} from 'vue'; + +export default defineComponent({ + props: { + name: String, + title: String, + modelValue: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + setup(props) { + const fileInput = ref<HTMLInputElement>(null); + + watch(() => props.modelValue, (v) => { + if (v === '') { + const fileInputElement = fileInput.value; + fileInputElement.value = ''; + } + }); + + return { + fileInput, + }; + }, + methods: { + onChange(event: Event) { + const file = (event.target as HTMLInputElement).files.item(0); + this.$emit('update:modelValue', file); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue new file mode 100644 index 0000000000..38c5ee248a --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue @@ -0,0 +1,35 @@ +<!-- + 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> + <input + :type="uiControl" + :name="name" + :value="modelValue" + @change="onChange($event)" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; + +export default defineComponent({ + props: { + modelValue: null, + uiControl: String, + name: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange(event: Event) { + this.$emit('update:modelValue', (event.target as HTMLInputElement).value); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less index d887465f94..d887465f94 100644 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue new file mode 100644 index 0000000000..8a9213befd --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue @@ -0,0 +1,45 @@ +<!-- + 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="fieldMultiTuple"> + <label :for="name" v-html="$sanitize(title)"></label> + <MultiPairField + :name="name" + :model-value="modelValue" + @update:modelValue="onUpdateValue" + :field1="uiControlAttributes.field1" + :field2="uiControlAttributes.field2" + :field3="uiControlAttributes.field3" + :field4="uiControlAttributes.field4" + > + </MultiPairField> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { MultiPairField } from 'CoreHome'; + +export default defineComponent({ + props: { + name: String, + title: String, + modelValue: null, + uiControlAttributes: Object, + }, + inheritAttrs: false, + components: { + MultiPairField, + }, + emits: ['update:modelValue'], + methods: { + onUpdateValue(newValue: unknown) { + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue new file mode 100644 index 0000000000..9b209d298d --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue @@ -0,0 +1,56 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <!-- note: @change is used in case the change event is programmatically triggered --> + <input + :class="`control_${uiControl}`" + :type="uiControl" + :id="name" + :name="name" + :value="(modelValue || '').toString()" + @keydown="onChange($event)" + @change="onChange($event)" + v-bind="uiControlAttributes" + /> + <label :for="name" v-html="$sanitize(title)"></label> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { debounce } from 'CoreHome'; + +export default defineComponent({ + props: { + uiControl: String, + name: String, + title: String, + modelValue: [Number, String], + uiControlAttributes: Object, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + created() { + this.onChange = debounce(this.onChange.bind(this), 50); + }, + methods: { + onChange(event: Event) { + const value = parseFloat((event.target as HTMLInputElement).value); + this.$emit('update:modelValue', value); + }, + }, + mounted() { + window.Materialize.updateTextFields(); + }, + watch: { + modelValue() { + setTimeout(() => { + window.Materialize.updateTextFields(); + }); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue new file mode 100644 index 0000000000..d48b62a283 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue @@ -0,0 +1,60 @@ +<!-- + 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> + <label class="fieldRadioTitle" v-show="title">{{ title }}</label> + + <p + v-for="radioModel in (availableOptions || [])" + :key="radioModel.key" + class="radio" + > + <label> + <input + :value="radioModel.key" + @change="onChange($event)" + type="radio" + :id="`${name}${radioModel.key}`" + :name="name" + :disabled="radioModel.disabled || disabled" + v-bind="uiControlAttributes" + :checked="modelValue === radioModel.key || `${modelValue}` === radioModel.key" + /> + + <span> + {{ radioModel.value }} + + <span class="form-description" v-show="radioModel.description"> + {{ radioModel.description }} + </span> + </span> + </label> + </p> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; + +export default defineComponent({ + props: { + title: String, + availableOptions: Array, + name: String, + disabled: Boolean, + uiControlAttributes: Object, + modelValue: [String, Number], + }, + inheritAttrs: false, + emits: ['update:modelValue'], + methods: { + onChange(event: Event) { + this.$emit('update:modelValue', (event.target as HTMLInputElement).value); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.less b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.less new file mode 100644 index 0000000000..f65b95a637 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.less @@ -0,0 +1,3 @@ +.matomo-field-select label { + top: -14px; // compensate for extra div added in vue +}
\ No newline at end of file diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue new file mode 100644 index 0000000000..67eb4638e0 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue @@ -0,0 +1,296 @@ +<!-- + 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-if="groupedOptions" class="matomo-field-select"> + <select + ref="select" + class="grouped" + :multiple="multiple" + :name="name" + @change="onChange($event)" + v-bind="uiControlAttributes" + > + <optgroup + v-for="[group, options] in groupedOptions" + :key="group" + :label="group" + > + <option + v-for="option in options" + :key="option.key" + :value="`string:${option.key}`" + :selected="multiple + ? modelValue && modelValue.indexOf(option.key) !== -1 + : modelValue === option.key" + > + {{ option.value }} + </option> + </optgroup> + </select> + <label :for="name" v-html="title"></label> + </div> + <div v-if="!groupedOptions && options" class="matomo-field-select"> + <select + class="ungrouped" + ref="select" + :multiple="multiple" + :name="name" + @change="onChange($event)" + v-bind="uiControlAttributes" + > + <option + v-for="option in options" + :key="option.key" + :value="`string:${option.key}`" + :selected="multiple + ? modelValue && modelValue.indexOf(option.key) !== -1 + : modelValue === option.key" + > + {{ option.value }} + </option> + </select> + <label :for="name" v-html="title"></label> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; + +interface OptionGroup { + group?: string; + key: string; + value: unknown; +} + +function initMaterialSelect( + select: HTMLSelectElement, + modelValue: unknown[], + placeholder: string, + uiControlOptions = {}, + multiple: boolean, +) { + if (!select) { + return; + } + + const $select = window.$(select); + + // reset selected since materialize removes them + Array.from(select.options).forEach((opt) => { + if (multiple) { + opt.selected = modelValue + && modelValue.indexOf(opt.value.replace(/^string:/, '')) !== -1; + } else { + opt.selected = `string:${modelValue}` === opt.value; + } + }); + + $select.formSelect(uiControlOptions); + + // add placeholder to input + if (placeholder) { + const $materialInput = $select.closest('.select-wrapper').find('input'); + $materialInput.attr('placeholder', placeholder); + } +} + +function hasGroupedValues(availableValues) { + if (Array.isArray(availableValues) + || !(typeof availableValues === 'object') + ) { + return false; + } + + return Object.values(availableValues).some((v) => typeof v === 'object'); +} + +function hasOption(flatValues: OptionGroup[], key: string) { + return flatValues.some((f) => f.key === key); +} + +export function getAvailableOptions( + givenAvailableValues?: Record<string, unknown>|null, + type: string, + uiControlAttributes: Record<string, unknown>, +): OptionGroup[] { + if (!givenAvailableValues) { + return []; + } + + let hasGroups = true; + + let availableValues = givenAvailableValues as Record<string, Record<string|number, unknown>>; + if (!hasGroupedValues(availableValues)) { + availableValues = { '': givenAvailableValues }; + hasGroups = false; + } + + const flatValues = []; + Object.entries(availableValues).forEach(([group, values]) => { + Object.entries(values).forEach(([valueObjKey, value]) => { + if (typeof value === 'object' && typeof value.key !== 'undefined') { + flatValues.push(value); + return; + } + + let key: number = valueObjKey as number; + if (type === 'integer' && typeof valueObjKey === 'string') { + key = parseInt(valueObjKey, 10); + } + + flatValues.push({ group: hasGroups ? group : undefined, key, value }); + }); + }); + + // for selects w/ a placeholder, add an option to unset the select + if (uiControlAttributes.placeholder + && !hasOption(flatValues, '') + ) { + return [{ key: '', value: '' }, ...flatValues]; + } + + return flatValues; +} + +function handleOldAngularJsValues(value: unknown) { + if (typeof value === 'string') { + return value.replace(/^string:/, ''); + } + return value; +} + +export default defineComponent({ + props: { + modelValue: null, + multiple: Boolean, + name: String, + title: String, + availableOptions: Array, + uiControlAttributes: Object, + uiControlOptions: Object, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + options() { + // if modelValue is empty, but there is no empty value allowed in availableOptions, + // add one temporarily until something is set + if (this.availableOptions + && !hasOption(this.availableOptions, '') + && (typeof this.modelValue === 'undefined' + || this.modelValue === null + || this.modelValue === '') + ) { + return [ + { key: '', value: this.modelValue, group: this.hasGroups ? '' : undefined }, + ...this.availableOptions, + ]; + } + return this.availableOptions; + }, + hasGroups() { + const { availableOptions } = this; + return availableOptions && availableOptions[0] && typeof availableOptions[0].group !== 'undefined'; + }, + groupedOptions() { + if (!this.hasGroups) { + return null; + } + + const { options } = this; + const groups = {}; + options.forEach((entry) => { + groups[entry.group] = groups[entry.group] || []; + groups[entry.group].push(entry); + }); + + const result = Object.entries(groups); + result.sort((lhs, rhs) => { + if (lhs[0] < rhs[0]) { + return -1; + } + + if (lhs[0] > rhs[0]) { + return 1; + } + + return 0; + }); + return result; + }, + }, + methods: { + onChange(event: Event) { + const element = event.target as HTMLSelectElement; + + let newValue: string|number|(string|number)[]; + if (this.multiple) { + newValue = Array.from(element.options).filter((e) => e.selected).map((e) => e.value); + newValue = newValue.map(handleOldAngularJsValues); + } else { + newValue = element.value; + newValue = handleOldAngularJsValues(newValue); + } + + this.$emit('update:modelValue', newValue); + }, + }, + watch: { + modelValue(newVal) { + window.$(this.$refs.select).val(newVal); + setTimeout(() => { + initMaterialSelect( + this.$refs.select, + newVal, + this.uiControlAttributes.placeholder, + this.uiControlOptions, + this.multiple, + ); + }); + }, + 'uiControlAttributes.disabled': { + handler(newVal, oldVal) { + setTimeout(() => { + if (newVal !== oldVal) { + initMaterialSelect( + this.$refs.select, + this.modelValue, + this.uiControlAttributes.placeholder, + this.uiControlOptions, + this.multiple, + ); + } + }); + }, + }, + availableOptions(newVal, oldVal) { + if (newVal !== oldVal) { + setTimeout(() => { + initMaterialSelect( + this.$refs.select, + this.modelValue, + this.uiControlAttributes.placeholder, + this.uiControlOptions, + this.multiple, + ); + }); + } + }, + }, + mounted() { + setTimeout(() => { + initMaterialSelect( + this.$refs.select, + this.modelValue, + this.uiControlAttributes.placeholder, + this.uiControlOptions, + this.multiple, + ); + }); + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue new file mode 100644 index 0000000000..54441fdcda --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue @@ -0,0 +1,47 @@ +<!-- + 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> + <label :for="name" class="siteSelectorLabel" v-html="$sanitize(title)"></label> + <div class="sites_autocomplete"> + <SiteSelector + :model-value="modelValue" + @update:modelValue="onChange($event)" + :id="name" + :show-all-sites-item="uiControlAttributes.showAllSitesItem || false" + :switch-site-on-select="false" + :show-selected-site="true" + :only-sites-with-admin-access="uiControlAttributes.onlySitesWithAdminAccess || false" + v-bind="uiControlAttributes" + /> + </div> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { SiteSelector, SiteReference } from 'CoreHome'; + +export default defineComponent({ + props: { + name: String, + title: String, + modelValue: Object, + uiControlAttributes: Object, + }, + inheritAttrs: false, + components: { + SiteSelector, + }, + emits: ['update:modelValue'], + methods: { + onChange(newValue: SiteReference) { + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue new file mode 100644 index 0000000000..8074fb8ad7 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue @@ -0,0 +1,71 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <!-- note: @change is used in case the change event is programmatically triggered --> + <input + :class="`control_${uiControl}`" + :type="uiControl" + :id="name" + :name="name" + :value="modelValueText" + @keydown="onKeydown($event)" + @change="onKeydown($event)" + v-bind="uiControlAttributes" + /> + <label + :for="name" + v-html="$sanitize(title)" + /> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { debounce } from 'CoreHome'; + +export default defineComponent({ + props: { + title: String, + name: String, + uiControlAttributes: Object, + modelValue: [String, Number], + uiControl: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + modelValueText() { + if (typeof this.modelValue === 'undefined' || this.modelValue === null) { + return ''; + } + + return this.modelValue.toString(); + }, + }, + created() { + // debounce because puppeteer types reeaally fast + this.onKeydown = debounce(this.onKeydown.bind(this), 50); + }, + mounted() { + setTimeout(() => { + window.Materialize.updateTextFields(); + }); + }, + watch: { + modelValue() { + setTimeout(() => { + window.Materialize.updateTextFields(); + }); + }, + }, + methods: { + onKeydown(event: Event) { + this.$emit('update:modelValue', (event.target as HTMLInputElement).value); + }, + }, +}); + +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue new file mode 100644 index 0000000000..0d4762d490 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue @@ -0,0 +1,60 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <!-- note: @change is used in case the change event is programmatically triggered --> + <div> + <label + :for="name" + v-html="$sanitize(title)" + /> + <input + :class="`control_${ uiControl }`" + :type="uiControl" + :name="name" + @keydown="onKeydown($event)" + @change="onKeydown($event)" + :value="concattedValues" + v-bind="uiControlAttributes" + /> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { debounce } from 'CoreHome'; + +export default defineComponent({ + props: { + name: String, + title: String, + uiControl: String, + modelValue: Array, + uiControlAttributes: Object, + }, + inheritAttrs: false, + computed: { + concattedValues() { + if (typeof this.modelValue === 'string') { + return this.modelValue; + } + + return (this.modelValue || []).join(', '); + }, + }, + emits: ['update:modelValue'], + created() { + // debounce because puppeteer types reeaally fast + this.onKeydown = debounce(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown(event: Event) { + const values = (event.target as HTMLInputElement).value.split(',').map((v) => v.trim()); + this.$emit('update:modelValue', values); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue new file mode 100644 index 0000000000..2529663f92 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue @@ -0,0 +1,58 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <!-- note: @change is used in case the change event is programmatically triggered --> + <textarea + :name="name" + v-bind="uiControlAttributes" + :id="name" + :value="modelValue" + @keydown="onKeydown($event)" + @change="onKeydown($event)" + class="materialize-textarea" + ref="textarea" + ></textarea> + <label :for="name" v-html="$sanitize(title)"></label> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { debounce } from 'CoreHome'; + +export default defineComponent({ + props: { + name: String, + uiControlAttributes: Object, + modelValue: String, + title: String, + }, + inheritAttrs: false, + emits: ['update:modelValue'], + created() { + this.onKeydown = debounce(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown(event: Event) { + this.$emit('update:modelValue', (event.target as HTMLTextAreaElement).value); + }, + }, + watch: { + modelValue() { + setTimeout(() => { + window.Materialize.textareaAutoResize(this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + }, + }, + mounted() { + setTimeout(() => { + window.Materialize.textareaAutoResize(this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue new file mode 100644 index 0000000000..46530c5531 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue @@ -0,0 +1,76 @@ +<!-- + Matomo - free/libre analytics platform + @link https://matomo.org + @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +--> + +<template> + <!-- note: @change is used in case the change event is programmatically triggered --> + <div> + <label + :for="name" + v-html="$sanitize(title)" + ></label> + <textarea + ref="textarea" + :name="name" + v-bind="uiControlAttributes" + :value="concattedValue" + @keydown="onKeydown($event)" + @change="onKeydown($event)" + class="materialize-textarea" + ></textarea> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { debounce } from 'CoreHome'; + +const SEPARATOR = '\n'; + +export default defineComponent({ + props: { + name: String, + title: String, + uiControlAttributes: Object, + modelValue: [Array, String], + }, + inheritAttrs: false, + emits: ['update:modelValue'], + computed: { + concattedValue() { + if (typeof this.modelValue === 'string') { + return this.modelValue; + } + + return (this.modelValue || []).join(SEPARATOR); + }, + }, + created() { + this.onKeydown = debounce(this.onKeydown.bind(this), 50); + }, + methods: { + onKeydown(event) { + const value = (event.target as HTMLTextAreaElement).value.split(SEPARATOR); + this.$emit('update:modelValue', value); + }, + }, + watch: { + modelValue(newVal, oldVal) { + if (newVal !== oldVal) { + setTimeout(() => { + window.Materialize.textareaAutoResize(this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + } + }, + }, + mounted() { + setTimeout(() => { + window.Materialize.textareaAutoResize(this.$refs.textarea); + window.Materialize.updateTextFields(); + }); + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts new file mode 100644 index 0000000000..6f7b6708f8 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts @@ -0,0 +1,106 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +import { ITimeoutService } from 'angular'; +import { + createAngularJsAdapter, + transformAngularJsBoolAttr, + transformAngularJsIntAttr, +} from 'CoreHome'; +import { shallowRef } from 'vue'; +import FormField from './FormField.vue'; +import FieldAngularJsTemplate from './FieldAngularJsTemplate.vue'; +import useExternalPluginComponent from '../../../../CoreHome/vue/src/useExternalPluginComponent'; + +function transformVueComponentRef(value?: Record<string, string>) { + if (!value) { + return undefined; + } + + const { plugin, name } = value; + if (!plugin || !name) { + throw new Error('Invalid component property given to piwik-field directive, must be ' + + '{plugin: \'...\',name: \'...\'}'); + } + + return useExternalPluginComponent(plugin, name); +} + +export default createAngularJsAdapter<[ITimeoutService]>({ + component: FormField, + scope: { + modelValue: { + default(scope) { + const field = scope.piwikFormField; + + // vue components expect object data as input, so we parse JSON data + // for angularjs directives that use JSON. + if (typeof field.value === 'string' + && field.value + && (field.type === 'array' + || field.uiControl === 'multituple' + || field.uiControl === 'field-array' + || field.uiControl === 'multiselect' + || field.uiControl === 'site') + ) { + field.value = JSON.parse(field.value); + } + + if (field.uiControl === 'checkbox') { + return transformAngularJsBoolAttr(field.value); + } + return field.value; + }, + }, + piwikFormField: { + vue: 'formField', + angularJsBind: '=', + transform(value, vm, scope) { + return { + ...value, + condition: value.condition + ? (values: unknown[]) => scope.$eval(value.condition, values) + : value.condition, + disabled: transformAngularJsBoolAttr(value.disabled), + autocomplete: transformAngularJsBoolAttr(value.autocomplete), + autofocus: transformAngularJsBoolAttr(value.autofocus), + tabindex: transformAngularJsIntAttr(value.tabindex), + fullWidth: transformAngularJsBoolAttr(value.fullWidth), + maxlength: transformAngularJsIntAttr(value.maxlength), + required: transformAngularJsBoolAttr(value.required), + rows: transformAngularJsIntAttr(value.rows), + min: transformAngularJsIntAttr(value.min), + max: transformAngularJsIntAttr(value.max), + component: shallowRef( + value.templateFile ? FieldAngularJsTemplate : transformVueComponentRef(value.component), + ), + }; + }, + }, + allSettings: { + angularJsBind: '=', + }, + }, + directiveName: 'piwikFormField', + events: { + 'update:modelValue': (newValue, vm, scope, element, attrs, controller, $timeout) => { + if (newValue !== scope.piwikFormField.value) { + $timeout(() => { + scope.piwikFormField.value = newValue; + }); + } + }, + }, + $inject: ['$timeout'], + postCreate(vm, scope) { + scope.$watch('piwikFormField.value', (newVal, oldVal) => { + if (newVal !== oldVal) { + vm.modelValue = newVal; + } + }); + }, +}); diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue new file mode 100644 index 0000000000..2f26c9c307 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue @@ -0,0 +1,328 @@ +<!-- + 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="form-group row" + v-show="showField" + > + <h3 + v-if="formField.introduction" + class="col s12" + > + {{ formField.introduction }} + </h3> + <div + class="col s12" + :class="{ + 'input-field': formField.uiControl !== 'checkbox' && formField.uiControl !== 'radio', + 'file-field': formField.uiControl === 'file', + 'm6': !formField.fullWidth, + }" + > + <component + :is="childComponent" + v-bind="{ + formField, + ...formField, + modelValue: processedModelValue, + availableOptions, + ...extraChildComponentParams, + }" + @update:modelValue="onChange($event)" + > + </component> + </div> + <div + class="col s12" + :class="{ 'm6': !formField.fullWidth }" + > + <div + v-if="showFormHelp" + class="form-help" + > + <div + v-show="formField.description" + class="form-description" + > + {{ formField.description }} + </div> + <span + class="inline-help" + ref="inlineHelp" + v-if="formField.inlineHelp" + /> + <span v-show="showDefaultValue"> + <br /> + {{ translate('General_Default') }}: + <span>{{ defaultValuePrettyTruncated }}</span> + </span> + </div> + </div> + </div> +</template> + +<script lang="ts"> +import { + defineComponent, + onMounted, + ref, + watch, +} from 'vue'; +import FieldCheckbox from './FieldCheckbox.vue'; +import FieldCheckboxArray from './FieldCheckboxArray.vue'; +import FieldExpandableSelect, { + getAvailableOptions as getExpandableSelectAvailableOptions, +} from './FieldExpandableSelect.vue'; +import FieldFieldArray from './FieldFieldArray.vue'; +import FieldFile from './FieldFile.vue'; +import FieldHidden from './FieldHidden.vue'; +import FieldMultituple from './FieldMultituple.vue'; +import FieldNumber from './FieldNumber.vue'; +import FieldRadio from './FieldRadio.vue'; +import FieldSelect, { + getAvailableOptions as getSelectAvailableOptions, +} from './FieldSelect.vue'; +import FieldSite from './FieldSite.vue'; +import FieldText from './FieldText.vue'; +import FieldTextArray from './FieldTextArray.vue'; +import FieldTextarea from './FieldTextarea.vue'; +import FieldTextareaArray from './FieldTextareaArray.vue'; +import { processCheckboxAndRadioAvailableValues } from './utilities'; + +const TEXT_CONTROLS = ['password', 'url', 'search', 'email']; +const CONTROLS_SUPPORTING_ARRAY = ['textarea', 'checkbox', 'text']; +const CONTROL_TO_COMPONENT_MAP = { + checkbox: 'FieldCheckbox', + 'expandable-select': 'FieldExpandableSelect', + 'field-array': 'FieldFieldArray', + file: 'FieldFile', + hidden: 'FieldHidden', + multiselect: 'FieldSelect', + multituple: 'FieldMultituple', + number: 'FieldNumber', + radio: 'FieldRadio', + select: 'FieldSelect', + site: 'FieldSite', + text: 'FieldText', + textarea: 'FieldTextarea', +}; + +const CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = { + FieldSelect: getSelectAvailableOptions, + FieldCheckboxArray: processCheckboxAndRadioAvailableValues, + FieldRadio: processCheckboxAndRadioAvailableValues, + FieldExpandableSelect: getExpandableSelectAvailableOptions, +}; + +interface Setting { + name: string; + value: unknown; +} + +export default defineComponent({ + props: { + modelValue: null, + formField: { + type: Object, + required: true, + }, + allSettings: [Object, Array], + }, + emits: ['update:modelValue'], + components: { + FieldCheckbox, + FieldCheckboxArray, + FieldExpandableSelect, + FieldFieldArray, + FieldFile, + FieldHidden, + FieldMultituple, + FieldNumber, + FieldRadio, + FieldSelect, + FieldSite, + FieldText, + FieldTextArray, + FieldTextarea, + FieldTextareaArray, + }, + setup(props) { + const inlineHelpNode = ref(null); + + const setInlineHelp = (newVal) => { + let toAppend: HTMLElement|string; + + if (!newVal) { + return; + } + + if (typeof newVal === 'string' && newVal && newVal.indexOf('#') === 0) { + toAppend = window.$(newVal); + } else { + toAppend = window.vueSanitize(newVal); + } + + window.$(inlineHelpNode.value).html('').append(toAppend); + }; + + watch(() => props.formField.inlineHelp, setInlineHelp); + + onMounted(() => { + setInlineHelp(props.formField.inlineHelp); + }); + + return { + inlineHelp: inlineHelpNode, + }; + }, + computed: { + childComponent() { + if (this.formField.component) { + return this.formField.component; + } + + const { uiControl } = this.formField; + + let control = CONTROL_TO_COMPONENT_MAP[uiControl]; + if (TEXT_CONTROLS.indexOf(uiControl) !== -1) { + control = 'FieldText'; // we use same template for text and password both + } + + if (this.formField.type === 'array' && CONTROLS_SUPPORTING_ARRAY.indexOf(uiControl) !== -1) { + control = `${control}Array`; + } + + return control; + }, + extraChildComponentParams() { + if (this.formField.uiControl === 'multiselect') { + return { multiple: true }; + } + return {}; + }, + showFormHelp() { + return this.formField.description + || this.formField.inlineHelp + || this.showDefaultValue; + }, + showDefaultValue() { + return this.defaultValuePretty + && this.formField.uiControl !== 'checkbox' + && this.formField.uiControl !== 'radio'; + }, + showField() { + if (!this.formField.condition + || !this.allSettings + || !Object.values(this.allSettings).length + ) { + return true; + } + + const values = {}; + Object.values(this.allSettings as Record<string, Setting>).forEach((setting) => { + if (setting.value === '0') { + values[setting.name] = 0; + } else { + values[setting.name] = setting.value; + } + }); + + return this.formField.condition(values); + }, + processedModelValue() { + const field = this.formField; + + // convert boolean values since angular 1.6 uses strict equals when determining if a model + // value matches the ng-value of an input. + if (field.type === 'boolean') { + const valueIsTruthy = this.modelValue && this.modelValue > 0 && this.modelValue !== '0'; + + // for checkboxes, the value MUST be either true or false + if (field.uiControl === 'checkbox') { + return valueIsTruthy; + } + + if (field.uiControl === 'radio') { + return valueIsTruthy ? '1' : '0'; + } + } + + return this.modelValue; + }, + defaultValue() { + let { defaultValue } = this.formField; + if (Array.isArray(defaultValue)) { + defaultValue = defaultValue.join(','); + } + return defaultValue; + }, + availableOptions() { + const { childComponent, formField } = this; + + if (!formField.availableValues + || !CONTROL_TO_AVAILABLE_OPTION_PROCESSOR[childComponent] + ) { + return null; + } + + return CONTROL_TO_AVAILABLE_OPTION_PROCESSOR[childComponent]( + formField.availableValues, + formField.type, + formField.uiControlAttributes, + ); + }, + defaultValuePretty() { + let { defaultValue } = this.formField; + const { availableOptions } = this; + + if (typeof defaultValue === 'string' && defaultValue) { + // eg default value for multi tuple + let defaultParsed = null; + try { + defaultParsed = JSON.parse(defaultValue); + } catch (e) { + // invalid JSON + } + + if (defaultParsed !== null && typeof defaultParsed === 'object') { + return ''; + } + } + + if (!Array.isArray(availableOptions)) { + if (Array.isArray(defaultValue)) { + return ''; + } + + return defaultValue ? defaultValue.toString() : ''; + } + + const prettyValues = []; + + if (!Array.isArray(defaultValue)) { + defaultValue = [defaultValue]; + } + + (availableOptions || []).forEach((value) => { + if (defaultValue.indexOf(value.key) !== -1 && typeof value.value !== 'undefined') { + prettyValues.push(value.value); + } + }); + + return prettyValues.join(', '); + }, + defaultValuePrettyTruncated() { + return this.defaultValuePretty.substring(0, 50); + }, + }, + methods: { + onChange(newValue: unknown) { + this.$emit('update:modelValue', newValue); + }, + }, +}); +</script> diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/utilities.ts b/plugins/CorePluginsAdmin/vue/src/FormField/utilities.ts new file mode 100644 index 0000000000..eeb50f347e --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/utilities.ts @@ -0,0 +1,32 @@ +/*! + * 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 processCheckboxAndRadioAvailableValues( + availableValues: Record<string, unknown>, + type: string, +): { key: string, value: unknown }[] { + if (!availableValues) { + return []; + } + + const flatValues = []; + Object.entries(availableValues).forEach(([valueObjKey, value]) => { + if (typeof value === 'object' && typeof value.key !== 'undefined') { + flatValues.push(value); + return; + } + + let key: number|string = valueObjKey; + if (type === 'integer' && typeof valueObjKey === 'string') { + key = parseInt(key, 10); + } + + flatValues.push({ key, value }); + }); + + return flatValues; +} diff --git a/plugins/CorePluginsAdmin/vue/src/index.ts b/plugins/CorePluginsAdmin/vue/src/index.ts new file mode 100644 index 0000000000..47621721d9 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/index.ts @@ -0,0 +1,11 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later +*/ +import './FormField/FormField.adapter'; +import './Field/Field.adapter'; + +export { default as FormField } from './FormField/FormField.vue'; +export { default as Field } from './Field/Field.vue'; diff --git a/plugins/CoreVue/polyfills/babel.config.js b/plugins/CoreVue/polyfills/babel.config.js index d3e4967596..3b8e56f4b1 100644 --- a/plugins/CoreVue/polyfills/babel.config.js +++ b/plugins/CoreVue/polyfills/babel.config.js @@ -7,6 +7,7 @@ module.exports = { 'es.object.assign', 'es.promise.finally', 'es.object.entries', + 'es.string.trim', // TODO: what else do we want included? ], diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js index f057527a1f..3c2fb99476 100644 --- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js +++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js @@ -984,6 +984,28 @@ eval("var anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_ /***/ }), +/***/ "./node_modules/core-js/internals/string-trim-forced.js": +/*!**************************************************************!*\ + !*** ./node_modules/core-js/internals/string-trim-forced.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/string-trim-forced.js"); + +/***/ }), + +/***/ "./node_modules/core-js/internals/string-trim.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/string-trim.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var 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 whitespaces = __webpack_require__(/*! ../internals/whitespaces */ \"./node_modules/core-js/internals/whitespaces.js\");\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/string-trim.js"); + +/***/ }), + /***/ "./node_modules/core-js/internals/task.js": /*!************************************************!*\ !*** ./node_modules/core-js/internals/task.js ***! @@ -1083,6 +1105,17 @@ eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symb /***/ }), +/***/ "./node_modules/core-js/internals/to-string.js": +/*!*****************************************************!*\ + !*** ./node_modules/core-js/internals/to-string.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ \"./node_modules/core-js/internals/is-symbol.js\");\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/to-string.js"); + +/***/ }), + /***/ "./node_modules/core-js/internals/uid.js": /*!***********************************************!*\ !*** ./node_modules/core-js/internals/uid.js ***! @@ -1116,6 +1149,17 @@ eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modul /***/ }), +/***/ "./node_modules/core-js/internals/whitespaces.js": +/*!*******************************************************!*\ + !*** ./node_modules/core-js/internals/whitespaces.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/whitespaces.js"); + +/***/ }), + /***/ "./node_modules/core-js/modules/es.array.iterator.js": /*!***********************************************************!*\ !*** ./node_modules/core-js/modules/es.array.iterator.js ***! @@ -1174,6 +1218,18 @@ eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/ /***/ }), +/***/ "./node_modules/core-js/modules/es.string.trim.js": +/*!********************************************************!*\ + !*** ./node_modules/core-js/modules/es.string.trim.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 $trim = __webpack_require__(/*! ../internals/string-trim */ \"./node_modules/core-js/internals/string-trim.js\").trim;\nvar forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ \"./node_modules/core-js/internals/string-trim-forced.js\");\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.string.trim.js"); + +/***/ }), + /***/ "./node_modules/dompurify/dist/purify.js": /*!***********************************************!*\ !*** ./node_modules/dompurify/dist/purify.js ***! @@ -1205,7 +1261,19 @@ 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_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__ = __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_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__ = __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_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\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\nwindow['tslib'] = tslib__WEBPACK_IMPORTED_MODULE_6__;\nwindow.vueSanitize = dompurify__WEBPACK_IMPORTED_MODULE_5___default.a.sanitize.bind(dompurify__WEBPACK_IMPORTED_MODULE_5___default.a);\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_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__ = __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_0___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_2__ = __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_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__ = __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_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__ = __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_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_5__ = __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_5___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./jqueryNativeEventTrigger */ \"./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_8__);\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\nwindow.tslib = tslib__WEBPACK_IMPORTED_MODULE_7__;\nwindow.vueSanitize = dompurify__WEBPACK_IMPORTED_MODULE_6___default.a.sanitize.bind(dompurify__WEBPACK_IMPORTED_MODULE_6___default.a);\n\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/index.ts"); + +/***/ }), + +/***/ "./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts": +/*!*******************************************************************!*\ + !*** ./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\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\nvar oldTrigger = window.$.fn.trigger;\n\nfunction triggerWithNativeEventDispatch(jqEventOrType, data) {\n function nativeDispatch(element) {\n var type = jqEventOrType.type || jqEventOrType;\n var onEventAttributeName = \"on\".concat(type);\n\n if (element[onEventAttributeName] || element[type] instanceof Function) {\n // if a on... (eg, onchange) handler is specified, it will be triggered by jquery.\n // it will also be triggered by addEventListener, and we don't want that so just\n // assume there is no addEventListener event.\n return;\n } // eslint-disable-next-line\n\n\n if ((window.$._data(element, 'events') || {})[type] && window.$._data(element, 'handle')) {\n // there is an event handler in jquery private data, assume this was handled.\n return;\n }\n\n if (element.dispatchEvent) {\n var event = new Event(type, {\n // do not rely on browser bubbling so we can keep checking for the on... attribute\n bubbles: false,\n cancelable: true\n });\n element.dispatchEvent(event);\n }\n\n var parent = element.parentElement;\n\n if (parent) {\n nativeDispatch(parent);\n }\n }\n\n var result = oldTrigger.call(this, jqEventOrType, data);\n this.each(function onEach() {\n nativeDispatch(this);\n });\n return result;\n}\n\nwindow.$.fn.trigger = triggerWithNativeEventDispatch;\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts"); /***/ }) diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js index b508fee647..77d72e379c 100644 --- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js +++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js @@ -1,10 +1,16 @@ -(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)}}},"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])}},"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}))},"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}},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,m,v,y,h=n&&n.that,b=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),w=!(!n||!n.INTERRUPTED),x=a(e,h,1+b+w),O=function(t){return l&&u(l),new f(!0,t)},_=function(t){return b?(r(t),w?x(t[0],t[1],O):x(t[0],t[1])):w?x(t,O):x(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(m=_(t[p]),m&&m instanceof f)return m;return new f(!1)}l=s.call(t)}v=l.next;while(!(y=v.call(l)).done){try{m=_(y.value)}catch(S){throw u(l),S}if("object"==typeof m&&m&&m instanceof f)return m}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,m,v=t.target,y=t.global,h=t.stat;if(l=y?r:h?r[v]||c(v,{}):(r[v]||{}).prototype,l)for(s in e){if(d=e[s],t.noTargetGet?(m=o(l,s),p=m&&m.value):p=l[s],n=f(y?s:v+(h?".":"#")+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"),m=c.setImmediate,v=c.clearImmediate,y=c.process,h=c.MessageChannel,b=c.Dispatch,g=0,w={},x="onreadystatechange";try{r=c.location}catch(A){}var O=function(t){if(w.hasOwnProperty(t)){var e=w[t];delete w[t],e()}},_=function(t){return function(){O(t)}},S=function(t){O(t.data)},T=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};m&&v||(m=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return w[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},v=function(t){delete w[t]},d?o=function(t){y.nextTick(_(t))}:b&&b.now?o=function(t){b.now(_(t))}:h&&!p?(i=new h,a=i.port2,i.port1.onmessage=S,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(T)?(o=T,c.addEventListener("message",S,!1)):o=x in s("script")?function(t){l.appendChild(s("script"))[x]=function(){l.removeChild(this),O(t)}}:function(t){setTimeout(_(t),0)}),t.exports={set:m,clear:v}},"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}},"3f8c":function(t,e){t.exports={}},"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={};n.r(r),n.d(r,"__extends",(function(){return c})),n.d(r,"__assign",(function(){return u})),n.d(r,"__rest",(function(){return f})),n.d(r,"__decorate",(function(){return l})),n.d(r,"__param",(function(){return s})),n.d(r,"__metadata",(function(){return p})),n.d(r,"__awaiter",(function(){return d})),n.d(r,"__generator",(function(){return m})),n.d(r,"__createBinding",(function(){return v})),n.d(r,"__exportStar",(function(){return y})),n.d(r,"__values",(function(){return h})),n.d(r,"__read",(function(){return b})),n.d(r,"__spread",(function(){return g})),n.d(r,"__spreadArrays",(function(){return w})),n.d(r,"__await",(function(){return x})),n.d(r,"__asyncGenerator",(function(){return O})),n.d(r,"__asyncDelegator",(function(){return _})),n.d(r,"__asyncValues",(function(){return S})),n.d(r,"__makeTemplateObject",(function(){return T})),n.d(r,"__importStar",(function(){return A})),n.d(r,"__importDefault",(function(){return j})),n.d(r,"__classPrivateFieldGet",(function(){return E})),n.d(r,"__classPrivateFieldSet",(function(){return k}));n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad");var o=n("c0c4"),i=n.n(o),a=function(t,e){return a=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])},a(t,e)};function c(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var u=function(){return u=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},u.apply(this,arguments)};function f(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 l(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 s(t,e){return function(n,r){e(n,r,t)}}function p(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function d(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 m(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 v(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function y(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function h(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 b(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 g(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(b(arguments[e]));return t}function w(){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 x(t){return this instanceof x?(this.v=t,this):new x(t)}function O(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 x?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 _(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:x(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function S(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 h?h(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 T(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function A(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 j(t){return t&&t.__esModule?t:{default:t}}function E(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function k(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n} +(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)}}},"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"),s=Object.getOwnPropertyDescriptor;e.f=r?s:function(t,e){if(t=a(t),e=c(e),f)try{return s(t,e)}catch(n){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},"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}))},"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}},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 s,l,p,d,m,v,h,y=n&&n.that,b=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),w=!(!n||!n.INTERRUPTED),x=a(e,y,1+b+w),O=function(t){return s&&u(s),new f(!0,t)},_=function(t){return b?(r(t),w?x(t[0],t[1],O):x(t[0],t[1])):w?x(t,O):x(t)};if(g)s=t;else{if(l=c(t),"function"!=typeof l)throw TypeError("Target is not iterable");if(o(l)){for(p=0,d=i(t.length);d>p;p++)if(m=_(t[p]),m&&m instanceof f)return m;return new f(!1)}s=l.call(t)}v=s.next;while(!(h=v.call(s)).done){try{m=_(h.value)}catch(S){throw u(s),S}if("object"==typeof m&&m&&m instanceof f)return m}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,s,l,p,d,m,v=t.target,h=t.global,y=t.stat;if(s=h?r:y?r[v]||c(v,{}):(r[v]||{}).prototype,s)for(l in e){if(d=e[l],t.noTargetGet?(m=o(s,l),p=m&&m.value):p=s[l],n=f(h?l:v+(y?".":"#")+l,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(s,l,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"),s=n("1be4"),l=n("cc12"),p=n("1cdc"),d=n("605d"),m=c.setImmediate,v=c.clearImmediate,h=c.process,y=c.MessageChannel,b=c.Dispatch,g=0,w={},x="onreadystatechange";try{r=c.location}catch(A){}var O=function(t){if(w.hasOwnProperty(t)){var e=w[t];delete w[t],e()}},_=function(t){return function(){O(t)}},S=function(t){O(t.data)},T=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};m&&v||(m=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return w[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},v=function(t){delete w[t]},d?o=function(t){h.nextTick(_(t))}:b&&b.now?o=function(t){b.now(_(t))}:y&&!p?(i=new y,a=i.port2,i.port1.onmessage=S,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(T)?(o=T,c.addEventListener("message",S,!1)):o=x in l("script")?function(t){s.appendChild(l("script"))[x]=function(){s.removeChild(this),O(t)}}:function(t){setTimeout(_(t),0)}),t.exports={set:m,clear:v}},"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,s=f&&f.v8;s?(r=s.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}},"3f8c":function(t,e){t.exports={}},"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={};n.r(r),n.d(r,"__extends",(function(){return c})),n.d(r,"__assign",(function(){return u})),n.d(r,"__rest",(function(){return f})),n.d(r,"__decorate",(function(){return s})),n.d(r,"__param",(function(){return l})),n.d(r,"__metadata",(function(){return p})),n.d(r,"__awaiter",(function(){return d})),n.d(r,"__generator",(function(){return m})),n.d(r,"__createBinding",(function(){return v})),n.d(r,"__exportStar",(function(){return h})),n.d(r,"__values",(function(){return y})),n.d(r,"__read",(function(){return b})),n.d(r,"__spread",(function(){return g})),n.d(r,"__spreadArrays",(function(){return w})),n.d(r,"__await",(function(){return x})),n.d(r,"__asyncGenerator",(function(){return O})),n.d(r,"__asyncDelegator",(function(){return _})),n.d(r,"__asyncValues",(function(){return S})),n.d(r,"__makeTemplateObject",(function(){return T})),n.d(r,"__importStar",(function(){return A})),n.d(r,"__importDefault",(function(){return E})),n.d(r,"__classPrivateFieldGet",(function(){return j})),n.d(r,"__classPrivateFieldSet",(function(){return k}));n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad"),n("498a");var o=n("c0c4"),i=n.n(o),a=function(t,e){return a=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])},a(t,e)};function c(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var u=function(){return u=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},u.apply(this,arguments)};function f(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 s(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 l(t,e){return function(n,r){e(n,r,t)}}function p(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function d(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 m(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 v(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function h(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function y(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 b(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 g(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(b(arguments[e]));return t}function w(){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 x(t){return this instanceof x?(this.v=t,this):new x(t)}function O(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){l(i[0][3],n)}}function u(t){t.value instanceof x?Promise.resolve(t.value.v).then(f,s):l(i[0][2],t)}function f(t){c("next",t)}function s(t){c("throw",t)}function l(t,e){t(e),i.shift(),i.length&&c(i[0][0],i[0][1])}}function _(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:x(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function S(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 y?y(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 T(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function A(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 E(t){return t&&t.__esModule?t:{default:t}}function j(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function k(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("a572"); /*! * 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,window.vueSanitize=i.a.sanitize.bind(i.a)},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}))},"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)}},"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)}},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}},"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,m=f(arguments[l++]),v=s?i(m).concat(s(m)):i(m),y=v.length,h=0;while(y>h)d=v[h++],r&&!p.call(m,d)||(n[d]=m[d])}return n}:l},"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"),m="Object already initialized",v=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},h=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 v),g=b.get,w=b.has,x=b.set;r=function(t,e){if(w.call(b,t))throw new TypeError(m);return e.facade=t,x.call(b,t,e),e},o=function(t){return g.call(b,t)||{}},i=function(t){return w.call(b,t)}}else{var O=p("state");d[O]=!0,r=function(t,e){if(l(t,O))throw new TypeError(m);return e.facade=t,f(t,O,e),e},o=function(t){return l(t,O)?t[O]:{}},i=function(t){return l(t,O)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:h}},"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},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",m="script",v=l("IE_PROTO"),y=function(){},h=function(t){return p+m+s+t+p+"/"+m+s},b=function(t){t.write(h("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+m+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(h("document.F=Object")),t.close(),t.F},w=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}w="undefined"!=typeof document?document.domain&&r?b(r):g():b(r);var t=a.length;while(t--)delete w[d][a[t]];return w()};c[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(y[d]=o(t),n=new y,y[d]=null,n[v]=t):n=w(),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"),m=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,y=l("iterator"),h="keys",b="values",g="entries",w=function(){return this};t.exports=function(t,e,n,l,d,x,O){o(n,e,l);var _,S,T,A=function(t){if(t===d&&R)return R;if(!v&&t in k)return k[t];switch(t){case h: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)}},j=e+" Iterator",E=!1,k=t.prototype,P=k[y]||k["@@iterator"]||d&&k[d],R=!v&&P||A(d),M="Array"==e&&k.entries||P;if(M&&(_=i(M.call(new t)),m!==Object.prototype&&_.next&&(s||i(_)===m||(a?a(_,m):"function"!=typeof _[y]&&u(_,y,w)),c(_,j,!0,!0),s&&(p[j]=w))),d==b&&P&&P.name!==b&&(E=!0,R=function(){return P.call(this)}),s&&!O||k[y]===R||u(k,y,R),p[e]=R,d)if(S={values:A(b),keys:x?R:A(h),entries:A(g)},O)for(T in S)(v||E||!(T in k))&&f(k,T,S[T]);else r({target:e,proto:!0,forced:v||E},S);return S}},"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]}))},"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},"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}},"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},"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}},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)},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})}},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,m=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var v=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));v&&(r={}),s&&!v||f(r,p)||u(r,p,m),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},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,m=n("1cdc"),v=n("d4c3"),y=n("a4b4"),h=n("605d"),b=s.MutationObserver||s.WebKitMutationObserver,g=s.document,w=s.process,x=s.Promise,O=p(s,"queueMicrotask"),_=O&&O.value;_||(r=function(){var t,e;h&&(t=w.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()},m||h||y||!b||!g?!v&&x&&x.resolve?(f=x.resolve(void 0),f.constructor=x,l=f.then,a=function(){l.call(f,r)}):a=h?function(){w.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=_||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]}},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){ + */window.tslib=r,window.vueSanitize=i.a.sanitize.bind(i.a)},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),s=i(a,f);if(t&&n!=n){while(f>s)if(c=u[s++],c!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"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)}},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"),s=Object.assign,l=Object.defineProperty;t.exports=!s||o((function(){if(r&&1!==s({b:1},s(l({},"a",{enumerable:!0,get:function(){l(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!=s({},t)[n]||i(s({},e)).join("")!=o}))?function(t,e){var n=u(t),o=arguments.length,s=1,l=a.f,p=c.f;while(o>s){var d,m=f(arguments[s++]),v=l?i(m).concat(l(m)):i(m),h=v.length,y=0;while(h>y)d=v[y++],r&&!p.call(m,d)||(n[d]=m[d])}return n}:s},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),u=n("861d"),f=n("9112"),s=n("5135"),l=n("c6cd"),p=n("f772"),d=n("d012"),m="Object already initialized",v=c.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},y=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||l.state){var b=l.state||(l.state=new v),g=b.get,w=b.has,x=b.set;r=function(t,e){if(w.call(b,t))throw new TypeError(m);return e.facade=t,x.call(b,t,e),e},o=function(t){return g.call(b,t)||{}},i=function(t){return w.call(b,t)}}else{var O=p("state");d[O]=!0,r=function(t,e){if(s(t,O))throw new TypeError(m);return e.facade=t,f(t,O,e),e},o=function(t){return s(t,O)?t[O]:{}},i=function(t){return s(t,O)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:y}},"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,s=u.enforce,l=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=s(n),u.source||(u.source=l.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,s=0,l=[];while(f>s)n=u[s++],r&&!a.call(c,n)||l.push(t?[n,c[n]]:c[n]);return l}};t.exports={entries:c(!0),values:c(!1)}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},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"),s=n("f772"),l=">",p="<",d="prototype",m="script",v=s("IE_PROTO"),h=function(){},y=function(t){return p+m+l+t+p+"/"+m+l},b=function(t){t.write(y("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+m+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(y("document.F=Object")),t.close(),t.F},w=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}w="undefined"!=typeof document?document.domain&&r?b(r):g():b(r);var t=a.length;while(t--)delete w[d][a[t]];return w()};c[v]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h[d]=o(t),n=new h,h[d]=null,n[v]=t):n=w(),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"),s=n("b622"),l=n("c430"),p=n("3f8c"),d=n("ae93"),m=d.IteratorPrototype,v=d.BUGGY_SAFARI_ITERATORS,h=s("iterator"),y="keys",b="values",g="entries",w=function(){return this};t.exports=function(t,e,n,s,d,x,O){o(n,e,s);var _,S,T,A=function(t){if(t===d&&P)return P;if(!v&&t in k)return k[t];switch(t){case y: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,k=t.prototype,R=k[h]||k["@@iterator"]||d&&k[d],P=!v&&R||A(d),M="Array"==e&&k.entries||R;if(M&&(_=i(M.call(new t)),m!==Object.prototype&&_.next&&(l||i(_)===m||(a?a(_,m):"function"!=typeof _[h]&&u(_,h,w)),c(_,E,!0,!0),l&&(p[E]=w))),d==b&&R&&R.name!==b&&(j=!0,P=function(){return R.call(this)}),l&&!O||k[h]===P||u(k,h,P),p[e]=P,d)if(S={values:A(b),keys:x?P:A(y),entries:A(g)},O)for(T in S)(v||j||!(T in k))&&f(k,T,S[T]);else r({target:e,proto:!0,forced:v||j},S);return S}},"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]}))},"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},"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}},"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},"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}},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)},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){function n(e){var r=t.type||t,o="on".concat(r);if(!(e[o]||e[r]instanceof Function)&&(!(window.$._data(e,"events")||{})[r]||!window.$._data(e,"handle"))){if(e.dispatchEvent){var i=new Event(r,{bubbles:!1,cancelable:!0});e.dispatchEvent(i)}var a=e.parentElement;a&&n(a)}}var o=r.call(this,t,e);return this.each((function(){n(this)})),o}window.$.fn.trigger=o},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"),s=n("6eeb"),l=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:l},{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&&s(i.prototype,"finally",p,{unsafe:!0})}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),u=n("9112"),f=n("5135"),s=n("b622"),l=n("c430"),p=s("iterator"),d=!1,m=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var v=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));v&&(r={}),l&&!v||f(r,p)||u(r,p,m),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},b575:function(t,e,n){var r,o,i,a,c,u,f,s,l=n("da84"),p=n("06cf").f,d=n("2cf4").set,m=n("1cdc"),v=n("d4c3"),h=n("a4b4"),y=n("605d"),b=l.MutationObserver||l.WebKitMutationObserver,g=l.document,w=l.process,x=l.Promise,O=p(l,"queueMicrotask"),_=O&&O.value;_||(r=function(){var t,e;y&&(t=w.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()},m||y||h||!b||!g?!v&&x&&x.resolve?(f=x.resolve(void 0),f.constructor=x,s=f.then,a=function(){s.call(f,r)}):a=y?function(){w.nextTick(r)}:function(){d.call(l,r)}:(c=!0,u=g.createTextNode(""),new b(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=_||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"),s=r.Symbol,l=u?s:s&&s.withoutSetter||a;t.exports=function(t){return i(f,t)&&(c||"string"==typeof f[t])||(c&&i(s,t)?f[t]=s[t]:f[t]=l("Symbol."+t)),f[t]}},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=O(Array.prototype.forEach),d=O(Array.prototype.pop),m=O(Array.prototype.push),v=O(String.prototype.toLowerCase),y=O(String.prototype.match),h=O(String.prototype.replace),b=O(String.prototype.indexOf),g=O(String.prototype.trim),w=O(RegExp.prototype.test),x=_(TypeError);function O(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 _(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 S(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=v(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function T(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 O(n.get);if("function"===typeof n.value)return O(n.value)}t=o(t)}function r(t){return console.warn("fallback value for",t),null}return r}var j=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"]),E=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"]),k=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"]),R=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"]),M=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),D=a(["#text"]),N=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"]),I=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"]),L=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"]),F=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),C=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),z=c(/<%[\s\S]*|[\s\S]*%>/gm),U=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),W=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q="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 Y(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 K=function(){return"undefined"===typeof window?null:window},V=function(t,e){if("object"!==("undefined"===typeof t?"undefined":q(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 X(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:K(),e=function(t){return X(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,O=t.Text,_=t.Comment,$=t.DOMParser,Z=t.trustedTypes,J=u.prototype,Q=A(J,"cloneNode"),tt=A(J,"nextSibling"),et=A(J,"childNodes"),nt=A(J,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=V(Z,n),it=ot&&Ft?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,lt=at.getElementsByTagName,st=n.importNode,pt={};try{pt=T(r).documentMode?r.documentMode:{}}catch(Oe){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var mt=C,vt=z,yt=U,ht=H,bt=G,gt=W,wt=B,xt=null,Ot=S({},[].concat(Y(j),Y(E),Y(k),Y(R),Y(D))),_t=null,St=S({},[].concat(Y(N),Y(I),Y(L),Y(F))),Tt=null,At=null,jt=!0,Et=!0,kt=!1,Pt=!1,Rt=!1,Mt=!1,Dt=!1,Nt=!1,It=!1,Lt=!0,Ft=!1,Ct=!0,zt=!0,Ut=!1,Ht={},Bt=null,Gt=S({},["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"]),Wt=null,qt=S({},["audio","video","img","source","image","track"]),Yt=null,Kt=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Vt="http://www.w3.org/1998/Math/MathML",Xt="http://www.w3.org/2000/svg",$t="http://www.w3.org/1999/xhtml",Zt=$t,Jt=!1,Qt=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":q(t))||(t={}),t=T(t),xt="ALLOWED_TAGS"in t?S({},t.ALLOWED_TAGS):Ot,_t="ALLOWED_ATTR"in t?S({},t.ALLOWED_ATTR):St,Yt="ADD_URI_SAFE_ATTR"in t?S(T(Kt),t.ADD_URI_SAFE_ATTR):Kt,Wt="ADD_DATA_URI_TAGS"in t?S(T(qt),t.ADD_DATA_URI_TAGS):qt,Bt="FORBID_CONTENTS"in t?S({},t.FORBID_CONTENTS):Gt,Tt="FORBID_TAGS"in t?S({},t.FORBID_TAGS):{},At="FORBID_ATTR"in t?S({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,jt=!1!==t.ALLOW_ARIA_ATTR,Et=!1!==t.ALLOW_DATA_ATTR,kt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=t.SAFE_FOR_TEMPLATES||!1,Rt=t.WHOLE_DOCUMENT||!1,Nt=t.RETURN_DOM||!1,It=t.RETURN_DOM_FRAGMENT||!1,Lt=!1!==t.RETURN_DOM_IMPORT,Ft=t.RETURN_TRUSTED_TYPE||!1,Dt=t.FORCE_BODY||!1,Ct=!1!==t.SANITIZE_DOM,zt=!1!==t.KEEP_CONTENT,Ut=t.IN_PLACE||!1,wt=t.ALLOWED_URI_REGEXP||wt,Zt=t.NAMESPACE||$t,Qt=Qt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Qt?function(t){return t}:v,Pt&&(Et=!1),It&&(Nt=!0),Ht&&(xt=S({},[].concat(Y(D))),_t=[],!0===Ht.html&&(S(xt,j),S(_t,N)),!0===Ht.svg&&(S(xt,E),S(_t,I),S(_t,F)),!0===Ht.svgFilters&&(S(xt,k),S(_t,I),S(_t,F)),!0===Ht.mathMl&&(S(xt,R),S(_t,L),S(_t,F))),t.ADD_TAGS&&(xt===Ot&&(xt=T(xt)),S(xt,t.ADD_TAGS)),t.ADD_ATTR&&(_t===St&&(_t=T(_t)),S(_t,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&S(Yt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=T(Bt)),S(Bt,t.FORBID_CONTENTS)),zt&&(xt["#text"]=!0),Rt&&S(xt,["html","head","body"]),xt.table&&(S(xt,["tbody"]),delete Tt.tbody),a&&a(t),re=t)},ae=S({},["mi","mo","mn","ms","mtext"]),ce=S({},["foreignobject","desc","title","annotation-xml"]),ue=S({},E);S(ue,k),S(ue,P);var fe=S({},R);S(fe,M);var le=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:$t,tagName:"template"});var n=v(t.tagName),r=v(e.tagName);if(t.namespaceURI===Xt)return e.namespaceURI===$t?"svg"===n:e.namespaceURI===Vt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Vt)return e.namespaceURI===$t?"math"===n:e.namespaceURI===Xt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===$t){if(e.namespaceURI===Xt&&!ce[r])return!1;if(e.namespaceURI===Vt&&!ae[r])return!1;var o=S({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},se=function(t){m(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Oe){try{t.outerHTML=it}catch(Oe){t.remove()}}},pe=function(t,n){try{m(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Oe){m(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!_t[t])if(Nt||It)try{se(n)}catch(Oe){}else try{n.setAttribute(t,"")}catch(Oe){}},de=function(t){var e=void 0,n=void 0;if(Dt)t="<remove></remove>"+t;else{var o=y(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Qt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Zt===$t)try{e=(new $).parseFromString(i,Qt)}catch(Oe){}if(!e||!e.documentElement){e=ct.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=Jt?"":i}catch(Oe){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Zt===$t?lt.call(e,Rt?"html":"body")[0]:Rt?e.documentElement:a},me=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},ve=function(t){return!(t instanceof O||t instanceof _)&&!("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":q(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":q(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},he=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(he("beforeSanitizeElements",t,null),ve(t))return se(t),!0;if(y(t.nodeName,/[\u0080-\uFFFF]/))return se(t),!0;var r=ne(t.nodeName);if(he("uponSanitizeElement",t,{tagName:r,allowedTags:xt}),!ye(t.firstElementChild)&&(!ye(t.content)||!ye(t.content.firstElementChild))&&w(/<[/\w]/g,t.innerHTML)&&w(/<[/\w]/g,t.textContent))return se(t),!0;if("select"===r&&w(/<template/i,t.innerHTML))return se(t),!0;if(!xt[r]||Tt[r]){if(zt&&!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(Q(i[c],!0),tt(t))}return se(t),!0}return t instanceof u&&!le(t)?(se(t),!0):"noscript"!==r&&"noembed"!==r||!w(/<\/no(script|embed)/i,t.innerHTML)?(Pt&&3===t.nodeType&&(n=t.textContent,n=h(n,mt," "),n=h(n,vt," "),t.textContent!==n&&(m(e.removed,{element:t.cloneNode()}),t.textContent=n)),he("afterSanitizeElements",t,null),!1):(se(t),!0)},ge=function(t,e,n){if(Ct&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(Et&&!At[e]&&w(yt,e));else if(jt&&w(ht,e));else{if(!_t[e]||At[e])return!1;if(Yt[e]);else if(w(wt,h(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==b(n,"data:")||!Wt[t]){if(kt&&!w(bt,h(n,gt,"")));else if(n)return!1}else;}return!0},we=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;he("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:_t};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,he("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(w(/\/>/i,r))pe(f,t);else{Pt&&(r=h(r,mt," "),r=h(r,vt," "));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(Oe){}}}he("afterSanitizeAttributes",t,null)}},xe=function t(e){var n=void 0,r=me(e);he("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())he("uponSanitizeShadowNode",n,null),be(n)||(n.content instanceof o&&t(n.content),we(n));he("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(Jt=!r,Jt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!ye(r)){if("function"!==typeof r.toString)throw x("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw x("dirty is not a string, aborting")}if(!e.isSupported){if("object"===q(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(Mt||ie(i),e.removed=[],"string"===typeof r&&(Ut=!1),Ut);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(!Nt&&!Pt&&!Rt&&-1===r.indexOf("<"))return ot&&Ft?ot.createHTML(r):r;if(a=de(r),!a)return Nt?null:it}a&&Dt&&se(a.firstChild);var p=me(Ut?r:a);while(f=p.nextNode())3===f.nodeType&&f===l||be(f)||(f.content instanceof o&&xe(f.content),we(f),l=f);if(l=null,Ut)return r;if(Nt){if(It){s=ft.call(a.ownerDocument);while(a.firstChild)s.appendChild(a.firstChild)}else s=a;return Lt&&(s=st.call(n,s,!0)),s}var d=Rt?a.outerHTML:a.innerHTML;return Pt&&(d=h(d,mt," "),d=h(d,vt," ")),ot&&Ft?ot.createHTML(d):d},e.setConfig=function(t){ie(t),Mt=!0},e.clearConfig=function(){re=null,Mt=!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]||[],m(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();return $}))},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},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},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)},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},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"))},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},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}},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"),m=n("d2bb"),v=n("d44e"),y=n("2626"),h=n("861d"),b=n("1c0b"),g=n("19aa"),w=n("8925"),x=n("2266"),O=n("1c7e"),_=n("4840"),S=n("2cf4").set,T=n("b575"),A=n("cdf9"),j=n("44de"),E=n("f069"),k=n("e667"),P=n("69f3"),R=n("94ca"),M=n("b622"),D=n("6069"),N=n("605d"),I=n("2d00"),L=M("species"),F="Promise",C=P.get,z=P.set,U=P.getterFor(F),H=s&&s.prototype,B=s,G=H,W=f.TypeError,q=f.document,Y=f.process,K=E.f,V=K,X=!!(q&&q.createEvent&&f.dispatchEvent),$="function"==typeof PromiseRejectionEvent,Z="unhandledrejection",J="rejectionhandled",Q=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=R(F,(function(){var t=w(B),e=t!==String(B);if(!e&&66===I)return!0;if(u&&!G["finally"])return!0;if(I>=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[L]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&D&&!$})),at=it||!O((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!h(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;T((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(W("Promise-chain cycle")):(c=ct(a))?c.call(a,s,p):s(a)):p(r)}catch(m){d&&!u&&d.exit(),p(m)}}t.reactions=[],t.notified=!1,e&&!t.rejection&<(t)}))}},ft=function(t,e,n){var r,o;X?(r=q.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),f.dispatchEvent(r)):r={promise:e,reason:n},!$&&(o=f["on"+t])?o(r):t===Z&&j("Unhandled promise rejection",n)},lt=function(t){S.call(f,(function(){var e,n=t.facade,r=t.value,o=st(t);if(o&&(e=k((function(){N?Y.emit("unhandledRejection",r,n):ft(Z,n,r)})),t.rejection=N||st(t)?rt:nt,e.error))throw e.value}))},st=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){S.call(f,(function(){var e=t.facade;N?Y.emit("rejectionHandled",e):ft(J,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},mt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},vt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw W("Promise can't be resolved itself");var r=ct(e);r?T((function(){var n={done:!1};try{r.call(e,dt(vt,n,t),dt(mt,n,t))}catch(o){mt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){mt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,F),b(t),r.call(this);var e=C(this);try{t(dt(vt,e),dt(mt,e))}catch(n){mt(e,n)}},G=B.prototype,r=function(t){z(this,{type:F,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Q,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=U(this),r=K(_(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=N?Y.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Q&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=C(t);this.promise=t,this.resolve=dt(vt,e),this.reject=dt(mt,e)},E.f=K=function(t){return t===B||t===i?new o(t):V(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){}m&&m(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),v(B,F,!1,!0),y(F),i=l(F),c({target:F,stat:!0,forced:it},{reject:function(t){var e=K(this);return e.reject.call(void 0,t),e.promise}}),c({target:F,stat:!0,forced:u||it},{resolve:function(t){return A(u&&this===i?B:this,t)}}),c({target:F,stat:!0,forced:at},{all:function(t){var e=this,n=K(e),r=n.resolve,o=n.reject,i=k((function(){var n=b(e.resolve),i=[],a=0,c=1;x(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=K(e),r=n.reject,o=k((function(){var o=b(e.resolve);x(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))}}},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))}},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},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,s=f.apply,l=f.construct;s||(s=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),c||(c=function(t){return t}),l||(l=function(e,n){return new(Function.prototype.bind.apply(e,[null].concat(t(n))))});var p=O(Array.prototype.forEach),d=O(Array.prototype.pop),m=O(Array.prototype.push),v=O(String.prototype.toLowerCase),h=O(String.prototype.match),y=O(String.prototype.replace),b=O(String.prototype.indexOf),g=O(String.prototype.trim),w=O(RegExp.prototype.test),x=_(TypeError);function O(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 s(t,e,r)}}function _(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return l(t,n)}}function S(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=v(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function T(t){var n=u(null),r=void 0;for(r in t)s(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 O(n.get);if("function"===typeof n.value)return O(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"]),k=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),R=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"]),P=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"]),M=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),D=a(["#text"]),N=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"]),I=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"]),L=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"]),F=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),C=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),z=c(/<%[\s\S]*|[\s\S]*%>/gm),U=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),W=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q="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 Y(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 $=function(){return"undefined"===typeof window?null:window},K=function(t,e){if("object"!==("undefined"===typeof t?"undefined":q(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 V(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:$(),e=function(t){return V(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,s=t.NamedNodeMap,l=void 0===s?t.NamedNodeMap||t.MozNamedAttrMap:s,O=t.Text,_=t.Comment,X=t.DOMParser,Z=t.trustedTypes,J=u.prototype,Q=A(J,"cloneNode"),tt=A(J,"nextSibling"),et=A(J,"childNodes"),nt=A(J,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=K(Z,n),it=ot&&Ft?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,st=at.getElementsByTagName,lt=n.importNode,pt={};try{pt=T(r).documentMode?r.documentMode:{}}catch(Oe){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var mt=C,vt=z,ht=U,yt=H,bt=G,gt=W,wt=B,xt=null,Ot=S({},[].concat(Y(E),Y(j),Y(k),Y(P),Y(D))),_t=null,St=S({},[].concat(Y(N),Y(I),Y(L),Y(F))),Tt=null,At=null,Et=!0,jt=!0,kt=!1,Rt=!1,Pt=!1,Mt=!1,Dt=!1,Nt=!1,It=!1,Lt=!0,Ft=!1,Ct=!0,zt=!0,Ut=!1,Ht={},Bt=null,Gt=S({},["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"]),Wt=null,qt=S({},["audio","video","img","source","image","track"]),Yt=null,$t=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Kt="http://www.w3.org/1998/Math/MathML",Vt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Zt=Xt,Jt=!1,Qt=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":q(t))||(t={}),t=T(t),xt="ALLOWED_TAGS"in t?S({},t.ALLOWED_TAGS):Ot,_t="ALLOWED_ATTR"in t?S({},t.ALLOWED_ATTR):St,Yt="ADD_URI_SAFE_ATTR"in t?S(T($t),t.ADD_URI_SAFE_ATTR):$t,Wt="ADD_DATA_URI_TAGS"in t?S(T(qt),t.ADD_DATA_URI_TAGS):qt,Bt="FORBID_CONTENTS"in t?S({},t.FORBID_CONTENTS):Gt,Tt="FORBID_TAGS"in t?S({},t.FORBID_TAGS):{},At="FORBID_ATTR"in t?S({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,jt=!1!==t.ALLOW_DATA_ATTR,kt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Rt=t.SAFE_FOR_TEMPLATES||!1,Pt=t.WHOLE_DOCUMENT||!1,Nt=t.RETURN_DOM||!1,It=t.RETURN_DOM_FRAGMENT||!1,Lt=!1!==t.RETURN_DOM_IMPORT,Ft=t.RETURN_TRUSTED_TYPE||!1,Dt=t.FORCE_BODY||!1,Ct=!1!==t.SANITIZE_DOM,zt=!1!==t.KEEP_CONTENT,Ut=t.IN_PLACE||!1,wt=t.ALLOWED_URI_REGEXP||wt,Zt=t.NAMESPACE||Xt,Qt=Qt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Qt?function(t){return t}:v,Rt&&(jt=!1),It&&(Nt=!0),Ht&&(xt=S({},[].concat(Y(D))),_t=[],!0===Ht.html&&(S(xt,E),S(_t,N)),!0===Ht.svg&&(S(xt,j),S(_t,I),S(_t,F)),!0===Ht.svgFilters&&(S(xt,k),S(_t,I),S(_t,F)),!0===Ht.mathMl&&(S(xt,P),S(_t,L),S(_t,F))),t.ADD_TAGS&&(xt===Ot&&(xt=T(xt)),S(xt,t.ADD_TAGS)),t.ADD_ATTR&&(_t===St&&(_t=T(_t)),S(_t,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&S(Yt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=T(Bt)),S(Bt,t.FORBID_CONTENTS)),zt&&(xt["#text"]=!0),Pt&&S(xt,["html","head","body"]),xt.table&&(S(xt,["tbody"]),delete Tt.tbody),a&&a(t),re=t)},ae=S({},["mi","mo","mn","ms","mtext"]),ce=S({},["foreignobject","desc","title","annotation-xml"]),ue=S({},j);S(ue,k),S(ue,R);var fe=S({},P);S(fe,M);var se=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var n=v(t.tagName),r=v(e.tagName);if(t.namespaceURI===Vt)return e.namespaceURI===Xt?"svg"===n:e.namespaceURI===Kt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Kt)return e.namespaceURI===Xt?"math"===n:e.namespaceURI===Vt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===Xt){if(e.namespaceURI===Vt&&!ce[r])return!1;if(e.namespaceURI===Kt&&!ae[r])return!1;var o=S({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},le=function(t){m(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Oe){try{t.outerHTML=it}catch(Oe){t.remove()}}},pe=function(t,n){try{m(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Oe){m(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!_t[t])if(Nt||It)try{le(n)}catch(Oe){}else try{n.setAttribute(t,"")}catch(Oe){}},de=function(t){var e=void 0,n=void 0;if(Dt)t="<remove></remove>"+t;else{var o=h(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Qt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Zt===Xt)try{e=(new X).parseFromString(i,Qt)}catch(Oe){}if(!e||!e.documentElement){e=ct.createDocument(Zt,"template",null);try{e.documentElement.innerHTML=Jt?"":i}catch(Oe){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Zt===Xt?st.call(e,Pt?"html":"body")[0]:Pt?e.documentElement:a},me=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},ve=function(t){return!(t instanceof O||t instanceof _)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof l&&"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":q(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":q(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},ye=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(ye("beforeSanitizeElements",t,null),ve(t))return le(t),!0;if(h(t.nodeName,/[\u0080-\uFFFF]/))return le(t),!0;var r=ne(t.nodeName);if(ye("uponSanitizeElement",t,{tagName:r,allowedTags:xt}),!he(t.firstElementChild)&&(!he(t.content)||!he(t.content.firstElementChild))&&w(/<[/\w]/g,t.innerHTML)&&w(/<[/\w]/g,t.textContent))return le(t),!0;if("select"===r&&w(/<template/i,t.innerHTML))return le(t),!0;if(!xt[r]||Tt[r]){if(zt&&!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(Q(i[c],!0),tt(t))}return le(t),!0}return t instanceof u&&!se(t)?(le(t),!0):"noscript"!==r&&"noembed"!==r||!w(/<\/no(script|embed)/i,t.innerHTML)?(Rt&&3===t.nodeType&&(n=t.textContent,n=y(n,mt," "),n=y(n,vt," "),t.textContent!==n&&(m(e.removed,{element:t.cloneNode()}),t.textContent=n)),ye("afterSanitizeElements",t,null),!1):(le(t),!0)},ge=function(t,e,n){if(Ct&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(jt&&!At[e]&&w(ht,e));else if(Et&&w(yt,e));else{if(!_t[e]||At[e])return!1;if(Yt[e]);else if(w(wt,y(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==b(n,"data:")||!Wt[t]){if(kt&&!w(bt,y(n,gt,"")));else if(n)return!1}else;}return!0},we=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;ye("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:_t};i=a.length;while(i--){n=a[i];var u=n,f=u.name,s=u.namespaceURI;if(r=g(n.value),o=ne(f),c.attrName=o,c.attrValue=r,c.keepAttr=!0,c.forceKeepAttr=void 0,ye("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(w(/\/>/i,r))pe(f,t);else{Rt&&(r=y(r,mt," "),r=y(r,vt," "));var l=ne(t.nodeName);if(ge(l,o,r))try{s?t.setAttributeNS(s,f,r):t.setAttribute(f,r),d(e.removed)}catch(Oe){}}}ye("afterSanitizeAttributes",t,null)}},xe=function t(e){var n=void 0,r=me(e);ye("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())ye("uponSanitizeShadowNode",n,null),be(n)||(n.content instanceof o&&t(n.content),we(n));ye("afterSanitizeShadowDOM",e,null)};return e.sanitize=function(r,i){var a=void 0,u=void 0,f=void 0,s=void 0,l=void 0;if(Jt=!r,Jt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!he(r)){if("function"!==typeof r.toString)throw x("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw x("dirty is not a string, aborting")}if(!e.isSupported){if("object"===q(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(Mt||ie(i),e.removed=[],"string"===typeof r&&(Ut=!1),Ut);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(!Nt&&!Rt&&!Pt&&-1===r.indexOf("<"))return ot&&Ft?ot.createHTML(r):r;if(a=de(r),!a)return Nt?null:it}a&&Dt&&le(a.firstChild);var p=me(Ut?r:a);while(f=p.nextNode())3===f.nodeType&&f===s||be(f)||(f.content instanceof o&&xe(f.content),we(f),s=f);if(s=null,Ut)return r;if(Nt){if(It){l=ft.call(a.ownerDocument);while(a.firstChild)l.appendChild(a.firstChild)}else l=a;return Lt&&(l=lt.call(n,l,!0)),l}var d=Pt?a.outerHTML:a.innerHTML;return Rt&&(d=y(d,mt," "),d=y(d,vt," ")),ot&&Ft?ot.createHTML(d):d},e.setConfig=function(t){ie(t),Mt=!0},e.clearConfig=function(){re=null,Mt=!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]||[],m(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=V();return X}))},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},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)},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},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"))},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},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,s=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=s(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}},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"),s=n("d066"),l=n("fea9"),p=n("6eeb"),d=n("e2cc"),m=n("d2bb"),v=n("d44e"),h=n("2626"),y=n("861d"),b=n("1c0b"),g=n("19aa"),w=n("8925"),x=n("2266"),O=n("1c7e"),_=n("4840"),S=n("2cf4").set,T=n("b575"),A=n("cdf9"),E=n("44de"),j=n("f069"),k=n("e667"),R=n("69f3"),P=n("94ca"),M=n("b622"),D=n("6069"),N=n("605d"),I=n("2d00"),L=M("species"),F="Promise",C=R.get,z=R.set,U=R.getterFor(F),H=l&&l.prototype,B=l,G=H,W=f.TypeError,q=f.document,Y=f.process,$=j.f,K=$,V=!!(q&&q.createEvent&&f.dispatchEvent),X="function"==typeof PromiseRejectionEvent,Z="unhandledrejection",J="rejectionhandled",Q=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=P(F,(function(){var t=w(B),e=t!==String(B);if(!e&&66===I)return!0;if(u&&!G["finally"])return!0;if(I>=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[L]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&D&&!X})),at=it||!O((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!y(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;T((function(){var r=t.value,o=t.state==tt,i=0;while(n.length>i){var a,c,u,f=n[i++],s=o?f.ok:f.fail,l=f.resolve,p=f.reject,d=f.domain;try{s?(o||(t.rejection===rt&&pt(t),t.rejection=nt),!0===s?a=r:(d&&d.enter(),a=s(r),d&&(d.exit(),u=!0)),a===f.promise?p(W("Promise-chain cycle")):(c=ct(a))?c.call(a,l,p):l(a)):p(r)}catch(m){d&&!u&&d.exit(),p(m)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&st(t)}))}},ft=function(t,e,n){var r,o;V?(r=q.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===Z&&E("Unhandled promise rejection",n)},st=function(t){S.call(f,(function(){var e,n=t.facade,r=t.value,o=lt(t);if(o&&(e=k((function(){N?Y.emit("unhandledRejection",r,n):ft(Z,n,r)})),t.rejection=N||lt(t)?rt:nt,e.error))throw e.value}))},lt=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){S.call(f,(function(){var e=t.facade;N?Y.emit("rejectionHandled",e):ft(J,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},mt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},vt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw W("Promise can't be resolved itself");var r=ct(e);r?T((function(){var n={done:!1};try{r.call(e,dt(vt,n,t),dt(mt,n,t))}catch(o){mt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){mt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,F),b(t),r.call(this);var e=C(this);try{t(dt(vt,e),dt(mt,e))}catch(n){mt(e,n)}},G=B.prototype,r=function(t){z(this,{type:F,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Q,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=U(this),r=$(_(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=N?Y.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Q&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=C(t);this.promise=t,this.resolve=dt(vt,e),this.reject=dt(mt,e)},j.f=$=function(t){return t===B||t===i?new o(t):K(t)},!u&&"function"==typeof l&&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){}m&&m(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),v(B,F,!1,!0),h(F),i=s(F),c({target:F,stat:!0,forced:it},{reject:function(t){var e=$(this);return e.reject.call(void 0,t),e.promise}}),c({target:F,stat:!0,forced:u||it},{resolve:function(t){return A(u&&this===i?B:this,t)}}),c({target:F,stat:!0,forced:at},{all:function(t){var e=this,n=$(e),r=n.resolve,o=n.reject,i=k((function(){var n=b(e.resolve),i=[],a=0,c=1;x(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=$(e),r=n.reject,o=k((function(){var o=b(e.resolve);x(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 s=n[f];r(t,s)||c(t,s,u(e,s))}}},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))}},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},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 4260f6030d..3d14990f66 100644 --- a/plugins/CoreVue/polyfills/src/index.ts +++ b/plugins/CoreVue/polyfills/src/index.ts @@ -12,7 +12,8 @@ import DOMPurify from 'dompurify'; import * as tslib from 'tslib'; -window['tslib'] = tslib; +window.tslib = tslib; window.vueSanitize = DOMPurify.sanitize.bind(DOMPurify); +import './jqueryNativeEventTrigger'; diff --git a/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts b/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts new file mode 100644 index 0000000000..09057159d7 --- /dev/null +++ b/plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts @@ -0,0 +1,53 @@ +/*! + * Matomo - free/libre analytics platform + * + * @link https://matomo.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +const oldTrigger = window.$.fn.trigger; + +function triggerWithNativeEventDispatch(jqEventOrType, data) { + function nativeDispatch(element: HTMLElement) { + const type = jqEventOrType.type || jqEventOrType; + const onEventAttributeName = `on${type}`; + + if (element[onEventAttributeName] + || element[type] instanceof Function + ) { + // if a on... (eg, onchange) handler is specified, it will be triggered by jquery. + // it will also be triggered by addEventListener, and we don't want that so just + // assume there is no addEventListener event. + return; + } + + // eslint-disable-next-line + if (((window.$._data(element, 'events') || {}) as any)[type] && window.$._data(element, 'handle')) { + // there is an event handler in jquery private data, assume this was handled. + return; + } + + if (element.dispatchEvent) { + const event = new Event(type, { + // do not rely on browser bubbling so we can keep checking for the on... attribute + bubbles: false, + cancelable: true, + }); + element.dispatchEvent(event); + } + + const parent = element.parentElement; + if (parent) { + nativeDispatch(parent); + } + } + + const result = oldTrigger.call(this, jqEventOrType, data); + this.each(function onEach() { + nativeDispatch(this); + }); + + return result; +} + +window.$.fn.trigger = triggerWithNativeEventDispatch; diff --git a/plugins/CoreVue/types/index.d.ts b/plugins/CoreVue/types/index.d.ts index cb9ac2d5df..a8a3dda00c 100644 --- a/plugins/CoreVue/types/index.d.ts +++ b/plugins/CoreVue/types/index.d.ts @@ -70,7 +70,7 @@ declare global { escape(text: string): string; redirect(params: any); htmlDecode(encoded: string): string; - modalConfirm(element: JQuery|JQLite|HTMLElement|string, callbacks: ModalConfirmCallbacks, options: ModalConfirmOptions); + modalConfirm(element: JQuery|JQLite|HTMLElement|string, callbacks?: ModalConfirmCallbacks, options?: ModalConfirmOptions); getAngularDependency(eventName: string): any; isAngularRenderingThePage(): boolean; setMarginLeftToBeInViewport(elementToPosition: JQuery|JQLite|HTMLElement|string); @@ -142,6 +142,7 @@ declare global { broadcast: BroadcastGlobal; hasBlockedContent: boolean; piwik_translations: {[key: string]: string}; + Materialize: M; _pk_translate(translationStringId: string, values: string[]): string; require(p: string): any; diff --git a/plugins/IntranetMeasurable/tests/UI/IntranetMeasurable_spec.js b/plugins/IntranetMeasurable/tests/UI/IntranetMeasurable_spec.js index 46063f9108..ab0d7bf3ce 100644 --- a/plugins/IntranetMeasurable/tests/UI/IntranetMeasurable_spec.js +++ b/plugins/IntranetMeasurable/tests/UI/IntranetMeasurable_spec.js @@ -48,6 +48,7 @@ describe("IntranetMeasurable", function () { it("should load intranet specific fields", async function () { await page.type('.editingSite [placeholder="Name"]', 'My intranet'); await page.type('.editingSite [name="urls"]', 'https://www.example.com'); + await page.waitForTimeout(250); await page.click('.editingSiteFooter input.btn'); await page.waitForNetworkIdle(); @@ -55,4 +56,4 @@ describe("IntranetMeasurable", function () { expect(await pageWrap.screenshot()).to.matchImage('intranet_created'); }); -});
\ No newline at end of file +}); diff --git a/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js index b678f1fcf4..adc146beb4 100644 --- a/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js +++ b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js @@ -20,4 +20,4 @@ piwik.broadcast.propagateNewPage('query=&show=' + this.pluginType); }; } -})();
\ No newline at end of file +})(); diff --git a/plugins/Marketplace/tests/UI/Marketplace_spec.js b/plugins/Marketplace/tests/UI/Marketplace_spec.js index a0abe6df0f..de38c7f32d 100644 --- a/plugins/Marketplace/tests/UI/Marketplace_spec.js +++ b/plugins/Marketplace/tests/UI/Marketplace_spec.js @@ -202,6 +202,7 @@ describe("Marketplace", function () { await page.goto(pluginsUrl); await page.type('#license_key', 'invalid'); + await page.waitForTimeout(200); await page.click('.marketplace-paid-intro'); // click outside so change event is triggered await page.click('#submit_license_key input'); await page.waitForNetworkIdle(); @@ -233,6 +234,7 @@ describe("Marketplace", function () { await page.goto(pluginsUrl); await page.type('#license_key', 'valid'); + await page.waitForTimeout(200); setEnvironment(mode, validLicense); await page.click('#submit_license_key input'); diff --git a/plugins/Morpheus/templates/demo.twig b/plugins/Morpheus/templates/demo.twig index 085f030a7c..e5f6d4957f 100644 --- a/plugins/Morpheus/templates/demo.twig +++ b/plugins/Morpheus/templates/demo.twig @@ -435,7 +435,7 @@ data-title="Select field array" value='["one", "two"]' inline-help="Multiple selects" - ui-control-attributes='{"field":{"title":"Index","uiControl":"select","availableValues":{"one":"text onw", "two":"text two", "three":"text three"}}}'> + ui-control-attributes='{"field":{"title":"Index","uiControl":"select","availableValues":{"one":"text one", "two":"text two", "three":"text three"}}}'> </div> <div piwik-field uicontrol="checkbox" name="enableFeature" diff --git a/plugins/Morpheus/tests/UI/expected-screenshots/Morpheus_load.png b/plugins/Morpheus/tests/UI/expected-screenshots/Morpheus_load.png index 3ae46276db..faf3bd63a1 100644 --- a/plugins/Morpheus/tests/UI/expected-screenshots/Morpheus_load.png +++ b/plugins/Morpheus/tests/UI/expected-screenshots/Morpheus_load.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9781aab6bafa5926298983370a330b632e911ee564cecf9d0be0cb9e00789ced -size 1672310 +oid sha256:0f458b527e21cf7df95d57675977be9dc849628962d70d63c86d6246e26e43de +size 1672113 diff --git a/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js index 6e4410867a..75a7fb496a 100644 --- a/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js +++ b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js @@ -29,7 +29,7 @@ describe("PrivacyManager", function () { $('input.anonymizeEndDate').val('2018-03-02').change(); }); } - + async function loadActionPage(action) { await page.goto(urlBase + action); @@ -73,6 +73,7 @@ describe("PrivacyManager", function () { $(this).val(theVal).change(); }); }, value); + await page.waitForTimeout(100); } async function selectVisitColumn(title) @@ -92,9 +93,11 @@ describe("PrivacyManager", function () { await page.evaluate(function () { $('.selectedActionColumns:last input.select-dropdown').click(); }); + await page.waitForTimeout(100); await page.evaluate(theTitle => { $('.selectedActionColumns:last .dropdown-content li:contains(' + theTitle + ')').click(); }, title); + await page.waitForTimeout(100); } async function capturePage(screenshotName) { @@ -207,6 +210,7 @@ describe("PrivacyManager", function () { $('input.anonymizeStartDate').val('2017-01-01').change(); $('input.anonymizeEndDate').val('2017-02-14').change(); }); + await page.waitForTimeout(100); await captureAnonymizeLogData('anonymizelogdata_one_site_and_custom_date_prefilled'); }); @@ -294,4 +298,4 @@ describe("PrivacyManager", function () { await capturePage('gdpr_tools_delete_visit_confirmed'); }); -});
\ No newline at end of file +}); diff --git a/plugins/Referrers/tests/UI/CampaignBuilder_spec.js b/plugins/Referrers/tests/UI/CampaignBuilder_spec.js index 2220ec39ba..57c2a46d31 100644 --- a/plugins/Referrers/tests/UI/CampaignBuilder_spec.js +++ b/plugins/Referrers/tests/UI/CampaignBuilder_spec.js @@ -64,4 +64,4 @@ describe("CampaignBuilder", function () { await generateUrl(); }); }); -});
\ No newline at end of file +}); diff --git a/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js b/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js index 4dd1ee6114..4d584960a2 100644 --- a/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js +++ b/plugins/ScheduledReports/angularjs/manage-scheduled-report/manage-scheduled-report.controller.js @@ -262,4 +262,4 @@ this.showListOfReports(false); } -})();
\ No newline at end of file +})(); diff --git a/plugins/Transitions/tests/UI/Transitions_spec.js b/plugins/Transitions/tests/UI/Transitions_spec.js index 4e0d716d09..a3cb8208cd 100644 --- a/plugins/Transitions/tests/UI/Transitions_spec.js +++ b/plugins/Transitions/tests/UI/Transitions_spec.js @@ -13,7 +13,6 @@ describe("Transitions", function () { var generalParams = 'idSite=1&period=year&date=2012-08-09', urlBase = 'module=CoreHome&action=index&' + generalParams; - async function selectValue(field, title) { await page.webpage.evaluate((field) => { @@ -96,6 +95,4 @@ describe("Transitions", function () { testEnvironment.overrideConfig('Transitions_1', 'max_period_allowed', 'all'); testEnvironment.save(); }); - - }); diff --git a/plugins/UsersManager/angularjs/paged-users-list/paged-users-list.component.less b/plugins/UsersManager/angularjs/paged-users-list/paged-users-list.component.less index c36d8da4cd..c8e263d2d6 100644 --- a/plugins/UsersManager/angularjs/paged-users-list/paged-users-list.component.less +++ b/plugins/UsersManager/angularjs/paged-users-list/paged-users-list.component.less @@ -2,9 +2,8 @@ piwik-paged-users-list { display: block; position: relative; - [piwik-siteselector] { + .siteSelector { display: inline-block; - margin-left: .3rem; } .dropdown-content li > span { @@ -116,10 +115,10 @@ piwik-paged-users-list { padding: 0; } - .form-group, [piwik-form-field] .input-field { + .form-group, .form-group .input-field { margin: 0; } - [piwik-form-field] input { + .form-group input { margin-bottom: 0; } diff --git a/plugins/UsersManager/tests/UI/UsersManager_spec.js b/plugins/UsersManager/tests/UI/UsersManager_spec.js index f8d41e6f46..e53e654cd3 100644 --- a/plugins/UsersManager/tests/UI/UsersManager_spec.js +++ b/plugins/UsersManager/tests/UI/UsersManager_spec.js @@ -556,6 +556,7 @@ describe("UsersManager", function () { it('should allow editing user permissions for admin users', async function () { await page.click('.userEditForm .menuPermissions'); + await page.mouse.move(-10, -10); expect(await page.screenshotSelector('.usersManager')).to.matchImage('admin_edit_permissions'); }); diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php index 5a99f19a5b..47ecd95958 100644 --- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php +++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php @@ -1075,6 +1075,7 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase || strpos($file, 'node_modules/') !== false || strpos($file, 'vendor/mayflower/mo4-coding-standard/') !== false || strpos($file, 'vendor/symfony/polyfill-iconv/') !== false + || strpos($file, 'plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js') !== false || strpos($file, 'plugins/VisitorGenerator/vendor/fzaninotto/faker/src/Faker/Provider/') !== false) { continue; } diff --git a/tests/UI/expected-screenshots/Theme_demo.png b/tests/UI/expected-screenshots/Theme_demo.png index 04d0a716e8..34169ba256 100644 --- a/tests/UI/expected-screenshots/Theme_demo.png +++ b/tests/UI/expected-screenshots/Theme_demo.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:27a560f7cc0d0ae8b486cd2174173aeba9c9831b0ff9b2fa92eecf519b98ac0f -size 1672370 +oid sha256:43685c811b492c8566056d1fd532853c383e33eba41b810620c19aac86d837ac +size 1672106 diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_settings_mobilemessaging_provider.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_settings_mobilemessaging_provider.png index 3c4a8688d6..a47ee9174b 100644 --- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_settings_mobilemessaging_provider.png +++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_settings_mobilemessaging_provider.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f90c81de61a11dc755c1ec572feece95cf5cec7f4dc67b7bf2e17c2a4a81802 -size 120238 +oid sha256:a210ad533741772461a36c3b1b1379d6e27e4e18c7399f2131bc953fc839281b +size 120233 diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png index 64b57438f6..91034e2299 100644 --- a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png +++ b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cd32eb0a526a62a4fd85c637f0a35f159f42b638cdf9997206d217f30c8c5cfb -size 477041 +oid sha256:c914006f7cd524b75795688ce7dd4a29f20251e40fa199eeb82f6a2bed142d2c +size 481387 diff --git a/tests/UI/specs/PieGraph_spec.js b/tests/UI/specs/PieGraph_spec.js index 070d79d587..7e9e65edac 100644 --- a/tests/UI/specs/PieGraph_spec.js +++ b/tests/UI/specs/PieGraph_spec.js @@ -38,4 +38,4 @@ describe("PieGraph", function () { expect(await page.screenshot({ fullPage: true })).to.matchImage('other_metric'); }); -});
\ No newline at end of file +}); diff --git a/tests/UI/specs/ReportExporting_spec.js b/tests/UI/specs/ReportExporting_spec.js index 7d03a1eb40..d0971dcd37 100644 --- a/tests/UI/specs/ReportExporting_spec.js +++ b/tests/UI/specs/ReportExporting_spec.js @@ -26,6 +26,7 @@ describe("ReportExporting", function () { await page.evaluate(function () { $('[name=filter_limit] input').val(100).trigger('change'); }); + await page.waitForTimeout(250); var url = await page.evaluate(function () { return $('#reportExport a.btn').attr('href'); @@ -50,6 +51,7 @@ describe("ReportExporting", function () { await page.evaluate(function(){ $('[name=filter_limit] input').val(100).trigger('change'); }); + await page.waitForTimeout(250); var url = await page.evaluate(function() { return $('#reportExport a.btn').attr('href'); @@ -84,6 +86,7 @@ describe("ReportExporting", function () { await page.evaluate(function(){ $('[name=filter_limit] input').val(100).trigger('change'); }); + await page.waitForTimeout(250); var url = await page.evaluate(function() { return $('#reportExport a.btn').attr('href'); @@ -98,4 +101,4 @@ describe("ReportExporting", function () { formats.forEach(normalReportTest); formats.forEach(evolutionReportTest); formats.forEach(rowEvolutionReportTest); -});
\ No newline at end of file +}); diff --git a/tests/UI/specs/SiteSelector_spec.js b/tests/UI/specs/SiteSelector_spec.js index 68bc8e25d8..2aff9454d5 100644 --- a/tests/UI/specs/SiteSelector_spec.js +++ b/tests/UI/specs/SiteSelector_spec.js @@ -60,7 +60,8 @@ describe("SiteSelector", function () { elem = await page.jQuery(".custom_select_ul_list>li:visible"); elem.click(); await page.waitForNetworkIdle(); + await page.waitForTimeout(200); expect(await page.screenshotSelector(selectorToCapture)).to.matchImage('site_selected'); }); -});
\ No newline at end of file +}); diff --git a/tests/UI/specs/UIIntegration_spec.js b/tests/UI/specs/UIIntegration_spec.js index 9cbf89757c..a2286ac74f 100644 --- a/tests/UI/specs/UIIntegration_spec.js +++ b/tests/UI/specs/UIIntegration_spec.js @@ -815,7 +815,7 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik? it('should switch the SMS provider correctly', async function () { await page.evaluate(function () { - $('[name=smsProviders] ul li:nth-child(3)').click(); + $('[name=smsProviders] ul li:nth-child(2)').click(); }); pageWrap = await page.$('.pageWrap'); diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js index 1c4abe09a0..1564fe225e 100644 --- a/tests/lib/screenshot-testing/support/page-renderer.js +++ b/tests/lib/screenshot-testing/support/page-renderer.js @@ -55,7 +55,6 @@ const PAGE_METHODS_TO_PROXY = [ 'tap', 'target', 'title', - 'type', 'url', 'viewport', 'waitForFunction', @@ -121,14 +120,19 @@ PageRenderer.prototype._reset = function () { PageRenderer.prototype.waitFor = function (selectorOrTimeoutOrFunction) { console.log('Using page.waitFor is deprecated, please use one of this instead: waitForSelector, waitForFunction, waitForTimeout'); if (typeof selectorOrTimeoutOrFunction === 'function') { - this.webpage.waitForFunction(selectorOrTimeoutOrFunction) + return this.webpage.waitForFunction(selectorOrTimeoutOrFunction) } else if (typeof selectorOrTimeoutOrFunction === 'number') { - this.webpage.waitForTimeout(selectorOrTimeoutOrFunction) + return this.webpage.waitForTimeout(selectorOrTimeoutOrFunction) } else if (typeof selectorOrTimeoutOrFunction === 'string') { - this.webpage.waitForSelector(selectorOrTimeoutOrFunction) + return this.webpage.waitForSelector(selectorOrTimeoutOrFunction) } } +PageRenderer.prototype.type = async function (...args) { + await this.webpage.type(...args); + await this.waitForTimeout(50); // puppeteer types faster than vue can update the model state +}; + PageRenderer.prototype.isVisible = function (selector) { return this.webpage.evaluate(() => { return jQuery(selector).is(':visible'); @@ -490,7 +494,9 @@ PageRenderer.prototype._setupWebpageEvents = function () { return arg.stack || arg.message; } return arg; - }, arg))); + }, arg))).catch((e) => { + console.log(`Could not print message: ${e.message}`); + }); const message = args.join(' '); this._logMessage(`Log: ${message}`); }); |