From 43c21c99ef0451772a52a449729f832bfad8e82e Mon Sep 17 00:00:00 2001 From: dizzy Date: Wed, 1 Dec 2021 09:19:20 -0800 Subject: [Vue] migrate piwik-field and related directives (#18352) * forgot to remove old files * built vue files * first pass at migrating notification directive, notification service and parts of UI.Notification to Vue * rewrite URL handling to use computed properties in a URL store + do the same for other dependent data in the comparison store to allow vues to subscribe to the properties for changes to global state * fix some tests * some more fixes * more fixes + disallow modifications to MatomoUrl state * get angularjs unit tests to pass + fix a couple more issues * another fix * fix bad merge * self review + fixes * remove old fix as it may not be needed anymore * empty string is not a valid date + do not report invalid date exception just rethrow * update screenshots and try to fix random failure * use jquery $destroy event instead of scope one since the scope one is broadcasted * rangeChange event must be triggered once on mount * initialize startDateText/endDateText correctly * use jquery $destroy event instead of angularjs one * built vue files * fix menudropdown.directive.js reference * load vue in installation/updater & correctly make focusanywherebuthere stateful * correctly implement stateful directives for ExpandOnClick/ExpandOnHover * less tweak (angularjs comment removal) * fix submenu check * quick type fix * load vue in installation workflow * add broadcast.js to Installation workflow + do not fail in pk_translate if no translations are loaded * update expected screenshots (spacing of arrow changed because of angularjs comment no longer being there) * start moving Notification class code to notifications store * fix prop type * fix html escaping * built vue files * get toast and other transitions to work + fix broken toast * move all of notification.js to NotificationStore * wait for angular to be initialized to post events to avoid loading race condition * get scroll to notification to work + get initialization of notification groups to work * correct unmount + remove notifications service file * fix some test failures * re add accidentally removed (?) file * remove no longer needed file * Add CoreHome UMD in CoreUpdater/Installation. * self review * fix type + add default value * remove file from JS list * fix test * fix UI tests * set correct type in users manager notification and allow scope values to be transformed in createAngularAdapter * start converting form field directives * start migrating siteselector * small addition * migrate rest of site selector code + make some breaking changes to function signatures in createAngularJsAdapter * disable webpack asset size hints/warnings + get siteselector code to build * fixing some bugs * fix some more issues (allow specifing require in createAngularJsAdapter and make AjaxHelper promises abortable) * get npm test to pass * a couple more fixes * remove existing files * convert quick-access directive and use shared code/state with site selector * remove site selector model * fix more issues and get UI tests to pass for quickaccess * remove debugging code / todo * fix initial value * add back a $timeout() * fixing tests, the post blur scope.$apply()s are apparently required for angularjs to function properly * migrate field-array * fixing more UI test failures * rebuild * start converting multipairfield * fix vue build * why were these deleted? * remove debug code * first pass migrate multipairfield.vue * move form-field code relevant to selects to FieldSelect.vue * fix css class issue + update expected screenshots * rebuild CoreHome * move more of form-field.directive.js to new vue classes * revert styling change * finish converting last of form-field.directive.js code (completely untested) * built vue files * get focus-if to work and remove debugging return; * rebuilt vue * should not need to specify type there * built CoreHome * built vue files * Fix for misaligned evolution trend icons (#18323) * Aligned evolution trend icons, text tweak * Update plugins/MultiSites/angularjs/dashboard/dashboard.directive.less Co-authored-by: Stefan Giehl * apply review feedback * Hide feedback banner in zen mode (#18329) * [Vue] 4.6.0 fixes (#18334) * feedback plugin may not be loaded * fix copy paste * async/await not supported * built UMDs * get local files to build * built files * get auto clearing behavior to work in site selector * fix a couple more bugs * use jQuery click for expand on click * undo submodule change * rebuild vue * get vue files to run * missing element * more fixes * get more fields working properly * rebuild * fix even more issues * [Vue] use jQuery click for expand on click (#18341) * use jQuery click for expand on click * undo submodule change * migrate piwik-field directive and fix some issues * forgot to add migrated directive files and get demo.twig to work * use event target * make sure angularjs and vue do not share data * fix ng model mapping * fix a couple more issues * fix a couple more bugs * more fixes * mimic existing behavior where an empty value will result in an extra field appearing in a select option list, but only at first * another fix * built vue files * more fixes * do not use UMD if vue/src is not present * use non-minified angularjs if in development mode * deprecate custom template file property * remove angularjs properties in scope properties (ie, $$hashKey) otherwise vue will fail when it tries to process them * fixing some more issues from ui tests * more fixes * fix form field issue + patch jquery so .trigger() will also trigger events added via addEventHandler() * true bc fix * get the jquery patch to work * ignore polyfill map * fix ng-model issue in report limit in report export directive * full width property was not handled properly before in angularjs * do not try and parseInt null values * fix several more issues for tests * fix some tests * fix data binding * fix css class * fixing more ui test issues * do not decode model value of site name in site selector, so it is always the same as what is in the DB * 4.6.0-rc2 * more ng-model fixes * rebuild * html tweaks * add timeout to test * rebuild * fix another UI test * rebuild vue files * update some expected screenshots * fix more issues * Revert "[Vue] do not decode model value of site name in site selector, so it is always matches the DB value (#18356)" This reverts commit 8c7539f073e7a49311cbe6dc2474eb1bbfb8718d. * update screenshots * more fixes * another fix + screenshot update * more screenshot updates * more fixes * even more fixes * another ui test fix * more type fixes * rebuilt vue JS * couple more fixes * undo debugging * do not convert undefined to bool * update screenshot * another bool checking fix * rebuild vue files * more fixes * initial site value in field is assumed to be encoded * file headers and custom field component support * get custom component field code to work * rebuild vue * allow using angularjs templateFile for custom field (for BC) * get angularjs template embedding to work for rollupreporting at least * deal with some in source TODO items * fix a couple more issues * Use separate div in modals to display notifications otherwise Vue will erase modal content when initializing NotificationGroup component. * build again * refactor some code and fix an issue with checkbox array field handling in angularjs * more fixes * another fix * even more fixes * remove more todo * hopefully the last changes * update vue files * update submodule * revert debugging change + fix issue * built vue files * fix another select issue * rebuild vue files * fix broken refactor * update two screenshots * add some more timeouts and update screenshots * fix site selector model binding * rebuild vue * fix field array title * apply some pr feedback * apply more pr feedback * another fix * tweak * fix ng-change not executed before ng-model * fix another set of issues * fix another issue * rebuild vue * better ng-change/ng-model fix * initiate initial ng-change ONLY for site selectors where this behavior applies * update screenshots and try to fix random failure * undo submodule change * fix test Co-authored-by: sgiehl Co-authored-by: Ben Burgess <88810029+bx80@users.noreply.github.com> Co-authored-by: Matthieu Aubry --- .gitignore | 2 + CHANGELOG.md | 8 + .../UIAssetFetcher/JScriptUIAssetFetcher.php | 14 +- core/Settings/FieldConfig.php | 12 + .../angularjs/branding/branding.controller.js | 2 +- .../trackingcode/jstrackingcode.controller.js | 2 +- plugins/CoreHome/CoreHome.php | 22 +- .../field-array/field-array.controller.js | 71 - .../field-array/field-array.directive.html | 23 - .../angularjs/field-array/field-array.directive.js | 61 - .../field-array/field-array.directive.less | 17 - .../multipairfield/multipairfield.controller.js | 129 -- .../multipairfield/multipairfield.directive.html | 61 - .../multipairfield/multipairfield.directive.js | 64 - .../multipairfield/multipairfield.directive.less | 60 - .../report-export/reportexport.directive.js | 7 +- .../report-export/reportexport.popover.html | 19 +- .../siteselector/siteselector-model.service.js | 140 ++ plugins/CoreHome/vue/dist/CoreHome.umd.js | 703 +++++- plugins/CoreHome/vue/dist/CoreHome.umd.min.js | 102 +- .../vue/src/Comparisons/Comparisons.store.ts | 2 +- .../vue/src/EnrichedHeadline/EnrichedHeadline.vue | 20 +- .../vue/src/FieldArray/FieldArray.adapter.ts | 51 + .../CoreHome/vue/src/FieldArray/FieldArray.less | 17 + plugins/CoreHome/vue/src/FieldArray/FieldArray.vue | 87 + .../vue/src/MatomoDialog/MatomoDialog.adapter.ts | 2 +- .../src/MultiPairField/MultiPairField.adapter.ts | 60 + .../vue/src/MultiPairField/MultiPairField.less | 60 + .../vue/src/MultiPairField/MultiPairField.vue | 200 ++ .../vue/src/Notification/Notification.adapter.ts | 4 +- .../vue/src/SiteSelector/SiteSelector.adapter.ts | 47 +- .../CoreHome/vue/src/SiteSelector/SiteSelector.vue | 31 +- plugins/CoreHome/vue/src/createAngularJsAdapter.ts | 84 +- plugins/CoreHome/vue/src/debounce.ts | 2 +- plugins/CoreHome/vue/src/index.ts | 11 +- plugins/CoreHome/vue/src/translate.ts | 2 +- .../CoreHome/vue/src/useExternalPluginComponent.ts | 23 + plugins/CorePluginsAdmin/CorePluginsAdmin.php | 5 +- plugins/CorePluginsAdmin/SettingsMetadata.php | 9 +- .../angularjs/field/field.directive.html | 3 - .../angularjs/field/field.directive.js | 172 -- .../angularjs/form-field/field-checkbox-array.html | 18 - .../angularjs/form-field/field-checkbox.html | 13 - .../form-field/field-expandable-select.html | 25 - .../form-field/field-expandable-select.less | 88 - .../angularjs/form-field/field-field-array.html | 8 - .../angularjs/form-field/field-file.html | 10 - .../angularjs/form-field/field-hidden.html | 6 - .../angularjs/form-field/field-multiselect.html | 7 - .../angularjs/form-field/field-multituple.html | 11 - .../angularjs/form-field/field-multituple.less | 3 - .../angularjs/form-field/field-number.html | 11 - .../angularjs/form-field/field-radio.html | 21 - .../angularjs/form-field/field-select.html | 8 - .../angularjs/form-field/field-site.html | 17 - .../angularjs/form-field/field-text-array.html | 10 - .../angularjs/form-field/field-text.html | 11 - .../angularjs/form-field/field-textarea-array.html | 9 - .../angularjs/form-field/field-textarea.html | 7 - .../angularjs/form-field/form-field.directive.html | 28 - .../angularjs/form-field/form-field.directive.js | 438 ---- .../vue/dist/CorePluginsAdmin.umd.js | 2442 ++++++++++++++++++++ .../vue/dist/CorePluginsAdmin.umd.min.js | 32 + .../CorePluginsAdmin/vue/dist/umd.metadata.json | 5 + .../vue/src/Field/Field.adapter.ts | 226 ++ plugins/CorePluginsAdmin/vue/src/Field/Field.vue | 112 + .../vue/src/FormField/FieldAngularJsTemplate.vue | 96 + .../vue/src/FormField/FieldCheckbox.vue | 45 + .../vue/src/FormField/FieldCheckboxArray.vue | 77 + .../vue/src/FormField/FieldExpandableSelect.less | 88 + .../vue/src/FormField/FieldExpandableSelect.vue | 172 ++ .../vue/src/FormField/FieldFieldArray.vue | 42 + .../vue/src/FormField/FieldFile.vue | 56 + .../vue/src/FormField/FieldHidden.vue | 35 + .../vue/src/FormField/FieldMultituple.less | 3 + .../vue/src/FormField/FieldMultituple.vue | 45 + .../vue/src/FormField/FieldNumber.vue | 56 + .../vue/src/FormField/FieldRadio.vue | 60 + .../vue/src/FormField/FieldSelect.less | 3 + .../vue/src/FormField/FieldSelect.vue | 296 +++ .../vue/src/FormField/FieldSite.vue | 47 + .../vue/src/FormField/FieldText.vue | 71 + .../vue/src/FormField/FieldTextArray.vue | 60 + .../vue/src/FormField/FieldTextarea.vue | 58 + .../vue/src/FormField/FieldTextareaArray.vue | 76 + .../vue/src/FormField/FormField.adapter.ts | 106 + .../vue/src/FormField/FormField.vue | 328 +++ .../vue/src/FormField/utilities.ts | 32 + plugins/CorePluginsAdmin/vue/src/index.ts | 11 + plugins/CoreVue/polyfills/babel.config.js | 1 + plugins/CoreVue/polyfills/dist/MatomoPolyfills.js | 70 +- .../CoreVue/polyfills/dist/MatomoPolyfills.min.js | 12 +- plugins/CoreVue/polyfills/src/index.ts | 3 +- .../polyfills/src/jqueryNativeEventTrigger.ts | 53 + plugins/CoreVue/types/index.d.ts | 3 +- .../tests/UI/IntranetMeasurable_spec.js | 3 +- .../marketplace/marketplace.controller.js | 2 +- plugins/Marketplace/tests/UI/Marketplace_spec.js | 2 + plugins/Morpheus/templates/demo.twig | 2 +- .../UI/expected-screenshots/Morpheus_load.png | 4 +- .../PrivacyManager/tests/UI/PrivacyManager_spec.js | 8 +- plugins/Referrers/tests/UI/CampaignBuilder_spec.js | 2 +- .../manage-scheduled-report.controller.js | 2 +- plugins/Transitions/tests/UI/Transitions_spec.js | 3 - .../paged-users-list.component.less | 7 +- plugins/UsersManager/tests/UI/UsersManager_spec.js | 1 + tests/PHPUnit/Integration/ReleaseCheckListTest.php | 1 + tests/UI/expected-screenshots/Theme_demo.png | 4 +- ...est_admin_settings_mobilemessaging_provider.png | 4 +- .../UIIntegrationTest_email_reports_editor.png | 4 +- tests/UI/specs/PieGraph_spec.js | 2 +- tests/UI/specs/ReportExporting_spec.js | 5 +- tests/UI/specs/SiteSelector_spec.js | 3 +- tests/UI/specs/UIIntegration_spec.js | 2 +- .../screenshot-testing/support/page-renderer.js | 16 +- 115 files changed, 6373 insertions(+), 1686 deletions(-) delete mode 100644 plugins/CoreHome/angularjs/field-array/field-array.controller.js delete mode 100644 plugins/CoreHome/angularjs/field-array/field-array.directive.html delete mode 100644 plugins/CoreHome/angularjs/field-array/field-array.directive.js delete mode 100644 plugins/CoreHome/angularjs/field-array/field-array.directive.less delete mode 100644 plugins/CoreHome/angularjs/multipairfield/multipairfield.controller.js delete mode 100644 plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.html delete mode 100644 plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.js delete mode 100644 plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less create mode 100644 plugins/CoreHome/angularjs/siteselector/siteselector-model.service.js create mode 100644 plugins/CoreHome/vue/src/FieldArray/FieldArray.adapter.ts create mode 100644 plugins/CoreHome/vue/src/FieldArray/FieldArray.less create mode 100644 plugins/CoreHome/vue/src/FieldArray/FieldArray.vue create mode 100644 plugins/CoreHome/vue/src/MultiPairField/MultiPairField.adapter.ts create mode 100644 plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less create mode 100644 plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue create mode 100644 plugins/CoreHome/vue/src/useExternalPluginComponent.ts delete mode 100644 plugins/CorePluginsAdmin/angularjs/field/field.directive.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/field/field.directive.js delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox-array.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-checkbox.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-field-array.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-file.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-hidden.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-multiselect.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-number.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-radio.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-select.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-site.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-text-array.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-text.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-textarea-array.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/field-textarea.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.html delete mode 100644 plugins/CorePluginsAdmin/angularjs/form-field/form-field.directive.js create mode 100644 plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js create mode 100644 plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js create mode 100644 plugins/CorePluginsAdmin/vue/dist/umd.metadata.json create mode 100644 plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts create mode 100644 plugins/CorePluginsAdmin/vue/src/Field/Field.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckboxArray.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldFieldArray.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldFile.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldHidden.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldNumber.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldRadio.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.less create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldText.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldTextArray.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldTextarea.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FieldTextareaArray.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue create mode 100644 plugins/CorePluginsAdmin/vue/src/FormField/utilities.ts create mode 100644 plugins/CorePluginsAdmin/vue/src/index.ts create mode 100644 plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts 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,9 +123,21 @@ 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 @@ -
-
- -
-
- - -
-
\ 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: - *
- */ -(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/field-array/field-array.directive.less b/plugins/CoreHome/angularjs/field-array/field-array.directive.less deleted file mode 100644 index 29f63392d7..0000000000 --- a/plugins/CoreHome/angularjs/field-array/field-array.directive.less +++ /dev/null @@ -1,17 +0,0 @@ -.fieldArray { - margin-top: 40px !important; - - .form-group.row { - margin-top: 2px; - margin-bottom: 2px; - } - - .fieldUiControl { - width: ~"calc(100% - 60px)"; - padding-right: 0.75rem; - } - - .icon-minus { - cursor: pointer; - } -} \ 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 @@ -
-
- -
-
- -
-
- -
-
- -
-
- - -
-
\ 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: - *
- */ -(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/multipairfield/multipairfield.directive.less b/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less deleted file mode 100644 index 3a2f34c736..0000000000 --- a/plugins/CoreHome/angularjs/multipairfield/multipairfield.directive.less +++ /dev/null @@ -1,60 +0,0 @@ -.multiPairField { - margin-top: 40px !important; - - .form-group.row { - margin-top: 2px; - margin-bottom: 2px; - } - - .multiPairFieldTable { - - &.has1Fields { - .fieldUiControl1{ - width: ~"calc(100% - 60px)"; - padding-right: 0.75rem; - } - } - - &:not(.has1Fields) { - .fieldUiControl { - display: inline-block; - padding-right: 0.75rem; - } - } - - &.has2Fields { - .fieldUiControl1 { - width: 160px; - } - .fieldUiControl2 { - width: ~"calc(100% - 190px)"; - padding: 0.75rem; - } - } - - &.has3Fields { - .fieldUiControl1 { - width: 120px; - } - .fieldUiControl2, - .fieldUiControl3 { - width: 220px; - } - } - - &.has4Fields { - .fieldUiControl1 { - width: 120px; - } - .fieldUiControl2, - .fieldUiControl3, - .fieldUiControl4 { - width: 148px; - } - } - } - - .icon-minus { - cursor: pointer; - } -} \ 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">
+
+ ng-model="limitContainer.reportLimit" + value="{{ $parent.reportLimit }}" + full-width="true" + ng-if="$parent.reportLimitAll == 'no' && maxFilterLimit <= 0">
+ ng-if="$parent.reportLimitAll == 'no' && maxFilterLimit > 0">
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: '@?' @@ -6825,6 +7328,10 @@ NotificationGroupvue_type_script_lang_ts.render = NotificationGroupvue_type_temp + + + + 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;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r=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=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);n1&&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;n1&&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;n1?t-1:0),r=1;r1&&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;r1?n-1:0),i=1;i1?t-1:0),r=1;r1?n-1:0),i=1;i=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;r1&&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;r1&&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);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n')),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')),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=$('
');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="

".concat(r,"

"),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=$('
');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="

".concat(r,"

"),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;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1||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"+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"))},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='
',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+="

",s+=D("General_ComparisonCardTooltip2",[o.nb_visits_change.toString(),c.compareSegmentPretty,c.comparePeriodPretty])),s+="
",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);n1||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"+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"))},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='
',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+="

",l+=C("General_ComparisonCardTooltip2",[a.nb_visits_change.toString(),c.compareSegmentPretty,c.comparePeriodPretty])),l+="
",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=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=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]=urn[1]?n[1]:dr,n}function c(t,n){var r=tdr,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;tn[1]?n[1]:vr,n}function c(t,n){var r=tvr,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: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;a1},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,'').concat(this.searchTerm,"").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;t0||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=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: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;o1},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,'').concat(this.searchTerm,"").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;t0||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=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-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;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n-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'),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:'',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'),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:'',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(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 @@ 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/vue/src/MultiPairField/MultiPairField.less b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less new file mode 100644 index 0000000000..3a2f34c736 --- /dev/null +++ b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.less @@ -0,0 +1,60 @@ +.multiPairField { + margin-top: 40px !important; + + .form-group.row { + margin-top: 2px; + margin-bottom: 2px; + } + + .multiPairFieldTable { + + &.has1Fields { + .fieldUiControl1{ + width: ~"calc(100% - 60px)"; + padding-right: 0.75rem; + } + } + + &:not(.has1Fields) { + .fieldUiControl { + display: inline-block; + padding-right: 0.75rem; + } + } + + &.has2Fields { + .fieldUiControl1 { + width: 160px; + } + .fieldUiControl2 { + width: ~"calc(100% - 190px)"; + padding: 0.75rem; + } + } + + &.has3Fields { + .fieldUiControl1 { + width: 120px; + } + .fieldUiControl2, + .fieldUiControl3 { + width: 220px; + } + } + + &.has4Fields { + .fieldUiControl1 { + width: 120px; + } + .fieldUiControl2, + .fieldUiControl3, + .fieldUiControl4 { + width: 148px; + } + } + } + + .icon-minus { + cursor: pointer; + } +} \ No newline at end of file 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 @@ + + + + + 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 @@ {{ placeholder }} @@ -81,8 +81,8 @@
  • { - 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 { 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 = { [scopeVarName: string]: SingleScopeVarInfo }; type AdapterFunction = ( scope: ng.IScope, @@ -64,10 +72,21 @@ function toAngularJsCamelCase(arg: string): string { .replace(/-([a-z])/g, (s, p) => p.toUpperCase()); } +export function removeAngularJsSpecificProperties(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(options: { component: ComponentType, require?: string, - scope?: ScopeMapping, + scope?: ScopeMapping, directiveName: string, events?: EventMapping, $inject?: string[], @@ -76,6 +95,7 @@ export default function createAngularJsAdapter(options: { postCreate?: PostCreateFunction, noScope?: boolean, restrict?: string, + priority?: number, }): ng.IDirectiveFactory { const { component, @@ -89,6 +109,7 @@ export default function createAngularJsAdapter(options: { postCreate, noScope, restrict = 'A', + priority, } = options; const currentTranscludeCounter = transcludeCounter; @@ -110,6 +131,7 @@ export default function createAngularJsAdapter(options: { const adapter: ng.IDirective = { restrict, require, + priority, scope: noScope ? undefined : angularJsScope, compile: function angularJsAdapterCompile() { return { @@ -125,7 +147,7 @@ export default function createAngularJsAdapter(options: { let rootVueTemplate = ' { 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(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(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(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(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 @@ -
    - {{ field.myProperty }} -
    \ 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: - *
    - * - * eg
    - * - * 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: '
    ', - 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 @@ -
    - -

    - -

    -
    \ 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 @@ -
    - -
    \ 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 @@ -
    -
    - - -
    - -
    - -
    - -
    -
      -
    • -

      {{ options.group }}

      - -
        -
      • {{ children.value }}
      • -
      -
    • -
    -
    -
    \ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less b/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less deleted file mode 100644 index 75a8c2428c..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-expandable-select.less +++ /dev/null @@ -1,88 +0,0 @@ -.expandableSelector { - - position: relative; - - .secondary-content { - font-size: 16px; - margin-top: -3px; - color: @theme-color-link; - cursor: help; - } - - ul { - min-width: 250px; - - &.collection.firstLevel { - border-top: 0; - margin-top: 0; - margin-bottom: 0; - font-size: 12px; - - > li { - padding: 0 !important; - } - } - - .expandableListCategory { - padding: 10px 20px; - color: @theme-color-link; - } - - li { - &:hover { - background: #f2f2f2 !important; - } - - &.collection-item { - cursor: pointer; - } - } - - ul { - margin-top: 0; - margin-bottom: 0; - - .primary-content { - width: 100%; - } - .secondary-content { - margin-top: 3px; - } - - li { - padding-top: 6px !important; - padding-bottom: 6px !important; - padding-left: 30px !important; - min-width: 200px; - - &:hover { - background: #f2f2f2 !important; - } - } - } - } - - .searchContainer { - padding: 5px; - border-left: 1px solid #e0e0e0; - border-right: 1px solid #e0e0e0; - border-top: 1px solid #e0e0e0; - } - - .expandableSearch { - vertical-align: top; - padding: 7px 6px !important; - border: 1px solid #d0d0d0 !important; - background: #fff !important; - font-size: 11px !important; - color: #454545 !important; - width: 100% !important; - } - - .expandableList { - position: absolute; - z-index: 9999; - margin-top: -48px; - background: #fff; - } -} \ 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 @@ -
    - -
    -
    -
    \ 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 @@ -
    -
    - - -
    - -
    - -
    -
    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 @@ -
    - -
    \ 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 @@ - - \ 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 @@ -
    - -
    -
    -
    \ No newline at end of file diff --git a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less b/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less deleted file mode 100644 index d887465f94..0000000000 --- a/plugins/CorePluginsAdmin/angularjs/form-field/field-multituple.less +++ /dev/null @@ -1,3 +0,0 @@ -.fieldMultiTuple { - font-size: 1rem; -} \ 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 @@ - - \ 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 @@ -
    - - -

    - -

    -
    \ 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 @@ - - 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 @@ -
    - - -
    -
    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 @@ -
    - - -
    \ 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 @@ - - 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 @@ -
    - - -
    \ 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 @@ - - 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 @@ -
    - -

    {{ formField.introduction }}

    - -
    - -
    -
    -
    - -
    {{ formField.description }}
    - - - - -
    - {{ 'General_Default'|translate }}: - {{formField.defaultValuePretty|limitTo:50}} -
    -
    -
    -
    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: - *
    - */ -(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.$("
    ")); + 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;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n3&&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: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);n0&&"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
    ")),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({ + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less new file mode 100644 index 0000000000..75a8c2428c --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldExpandableSelect.less @@ -0,0 +1,88 @@ +.expandableSelector { + + position: relative; + + .secondary-content { + font-size: 16px; + margin-top: -3px; + color: @theme-color-link; + cursor: help; + } + + ul { + min-width: 250px; + + &.collection.firstLevel { + border-top: 0; + margin-top: 0; + margin-bottom: 0; + font-size: 12px; + + > li { + padding: 0 !important; + } + } + + .expandableListCategory { + padding: 10px 20px; + color: @theme-color-link; + } + + li { + &:hover { + background: #f2f2f2 !important; + } + + &.collection-item { + cursor: pointer; + } + } + + ul { + margin-top: 0; + margin-bottom: 0; + + .primary-content { + width: 100%; + } + .secondary-content { + margin-top: 3px; + } + + li { + padding-top: 6px !important; + padding-bottom: 6px !important; + padding-left: 30px !important; + min-width: 200px; + + &:hover { + background: #f2f2f2 !important; + } + } + } + } + + .searchContainer { + padding: 5px; + border-left: 1px solid #e0e0e0; + border-right: 1px solid #e0e0e0; + border-top: 1px solid #e0e0e0; + } + + .expandableSearch { + vertical-align: top; + padding: 7px 6px !important; + border: 1px solid #d0d0d0 !important; + background: #fff !important; + font-size: 11px !important; + color: #454545 !important; + width: 100% !important; + } + + .expandableList { + position: absolute; + z-index: 9999; + margin-top: -48px; + background: #fff; + } +} \ No newline at end of file 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less new file mode 100644 index 0000000000..d887465f94 --- /dev/null +++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldMultituple.less @@ -0,0 +1,3 @@ +.fieldMultiTuple { + font-size: 1rem; +} \ No newline at end of file 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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 @@ + + + + + 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) { + 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 @@ + + + + + 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, + 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=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]=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;e1||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=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]=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;e1||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);e1?n-1:0),o=1;o/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);e0&&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=""+t;else{var o=y(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Qt&&(t=''+t+"");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(/