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

CoreHome.umd.min.js.map « dist « vue « CoreHome « plugins - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 84e80fadec68dcd0e26746f67bc694a21d7469b8 (plain)
1
{"version":3,"sources":["webpack://CoreHome/webpack/universalModuleDefinition","webpack://CoreHome/webpack/bootstrap","webpack://CoreHome/external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://CoreHome/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://CoreHome/./plugins/CoreHome/vue/src/PiwikUrl/PiwikUrl.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/PiwikUrl/PiwikUrl.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Periods.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/utilities.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Piwik/Piwik.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Piwik/Piwik.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/ActivityIndicator/ActivityIndicator.vue","webpack://CoreHome/./plugins/CoreHome/vue/src/translate.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/ActivityIndicator/ActivityIndicator.vue?0bf6","webpack://CoreHome/./plugins/CoreHome/vue/src/ActivityIndicator/ActivityIndicator.vue?6f80","webpack://CoreHome/./plugins/CoreHome/vue/src/ActivityIndicator/ActivityIndicator.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Alert/Alert.vue","webpack://CoreHome/./plugins/CoreHome/vue/src/Alert/Alert.vue?14a2","webpack://CoreHome/./plugins/CoreHome/vue/src/Alert/Alert.vue?cc69","webpack://CoreHome/./plugins/CoreHome/vue/src/Alert/Alert.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Range.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Periods.adapter.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Day.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Week.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Month.ts","webpack://CoreHome/./plugins/CoreHome/vue/src/Periods/Year.ts"],"names":["root","factory","exports","module","require","define","amd","self","this","__WEBPACK_EXTERNAL_MODULE__8bbf__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","currentScript","document","src","match","PiwikUrl","paramName","hash","location","href","split","regex","RegExp","test","decodeURIComponent","valueFromHash","broadcast","getValueFromHash","getValueFromUrl","search","defaultErrorCallback","deferred","status","loadingError","$","Piwik_Popover","isOpen","body","html","piwikHelper","escape","responseText","show","globalAjaxQueue","active","clean","length","readyState","splice","push","args","Array","abort","forEach","x","errorCallback","params","type","getValuesFromUrl","arrayParams","keys","indexOf","toLowerCase","getParams","postParams","withToken","url","addParams","urls","urlsProcessed","map","u","param","method","format","timeout","callback","useRegularCallbackInCaseOfError","setCallback","redirect","completeCallback","element","loadingElement","errorElement","parameter","defaultParams","hide","fadeIn","requestHandle","buildAjaxCall","parameters","mixinDefaultGetParams","getUrl","segment","date","toString","ajaxCall","async","dataType","complete","error","apply","arguments","success","response","request","result","placeAt","message","UI","notification","Notification","placeat","context","id","scrollToNotification","piwik","ajaxRequestFinished","data","mixinDefaultPostParams","undefined","ajax","isRequestToApiMethod","shouldPropagateTokenAuth","token_auth","force_api_session","isWidgetizeRequestWithoutSession","getDefaultPostParams","mergedParams","originalParams","getSearchParam","idSite","period","useGETDefaultParameter","currentDateString","ajaxQueue","piwikUrl","model","ajaxHelper","angular","service","$inject","Periods","periodClass","periods","Error","periodOrder","concat","strPeriod","strDate","parse","datepicker","formatDate","getToday","Date","now","setTime","getTime","getTimezoneOffset","setHours","getHours","timezoneOffset","setMinutes","setSeconds","setMilliseconds","parseDate","yesterday","setDate","getDate","lastWeek","lastMonth","setMonth","getMonth","lastYear","setFullYear","getFullYear","err","console","todayIsInRange","dateRange","originalTitle","isValidPeriod","periodStr","dateStr","e","helper","updatePeriodParamsFromUrl","getDateRange","startDateString","endDateString","updateDateInTitle","title","siteName","dateString","getPrettyString","substr","hasUserCapability","capability","isArray","userCapabilities","Piwik","piwikService","initPiwikService","$rootScope","$on","run","class","alt","loadingMessage","loading","translate","translationStringId","values","_pk_translate","props","Boolean","required","default","String","render","activityIndicatorAdapter","restrict","scope","template","link","app","component","ActivityIndicator","vm","mount","$watch","newValue","severity","directive","alertAdapter","transclude","compile","post","clone","find","transcludeTarget","Alert","append","startDate","endDate","childPeriodType","strAmount","strEndDate","nAmount","Math","max","parseInt","Number","isNaN","startPeriod","endPeriod","firstWebsiteDate","getLastNRange","substring","parts","start","end","piwikPeriods","getAllLabels","isRecognizedPeriod","RangePeriod","addCustomPeriod","dateInPeriod","weekDates","startWeek","endWeek","daysToMonday","getDay","month","startMonth","endMonth","startYear","endYear"],"mappings":"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","file":"CoreHome.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"CoreHome\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"CoreHome\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fae3\");\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  var currentScript = window.document.currentScript\n  if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n    var getCurrentScript = require('@soda/get-current-script')\n    currentScript = getCurrentScript()\n\n    // for backward compatibility, because previously we directly included the polyfill\n    if (!('currentScript' in document)) {\n      Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n    }\n  }\n\n  var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n  if (src) {\n    __webpack_public_path__ = src[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\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/**\n * Similar to angulars $location but works around some limitation. Use it if you need to access\n * search params\n */\nconst PiwikUrl = {\n  getSearchParam(paramName: string): string {\n    const hash = window.location.href.split('#');\n\n    const regex = new RegExp(`${paramName}(\\\\[]|=)`);\n    if (hash && hash[1] && regex.test(decodeURIComponent(hash[1]))) {\n      const valueFromHash = window.broadcast.getValueFromHash(paramName, window.location.href);\n\n      // for date, period and idsite fall back to parameter from url, if non in hash was provided\n      if (valueFromHash\n        || (paramName !== 'date' && paramName !== 'period' && paramName !== 'idSite')\n      ) {\n        return valueFromHash;\n      }\n    }\n\n    return window.broadcast.getValueFromUrl(paramName, window.location.search);\n  },\n};\n\nexport default PiwikUrl;\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\nimport PiwikUrl from '../PiwikUrl/PiwikUrl';\n\nwindow.globalAjaxQueue = [] as GlobalAjaxQueue;\nwindow.globalAjaxQueue.active = 0;\n\nwindow.globalAjaxQueue.clean = function globalAjaxQueueClean() {\n  for (let i = this.length; i >= 0; i -= 1) {\n    if (!this[i] || this[i].readyState === 4) {\n      this.splice(i, 1);\n    }\n  }\n};\n\nwindow.globalAjaxQueue.push = function globalAjaxQueuePush(...args: (XMLHttpRequest|null)[]) {\n  this.active += args.length;\n\n  // cleanup ajax queue\n  this.clean();\n\n  // call original array push\n  return Array.prototype.push.call(this, ...args);\n};\n\nwindow.globalAjaxQueue.abort = function globalAjaxQueueAbort() {\n  // abort all queued requests if possible\n  this.forEach((x) => x && x.abort && x.abort());\n\n  // remove all elements from array\n  this.splice(0, this.length);\n\n  this.active = 0;\n};\n\ntype ParameterValue = string | number | null | undefined | ParameterValue[];\ntype Parameters = {[name: string]: ParameterValue | Parameters};\ntype AnyFunction = (...params:any[]) => any; // eslint-disable-line\n\n/**\n * error callback to use by default\n */\nfunction defaultErrorCallback(deferred: XMLHttpRequest, status: string): void {\n  // do not display error message if request was aborted\n  if (status === 'abort') {\n    return;\n  }\n\n  const loadingError = $('#loadingError');\n  if (Piwik_Popover.isOpen() && deferred && deferred.status === 500) {\n    if (deferred && deferred.status === 500) {\n      $(document.body).html(piwikHelper.escape(deferred.responseText));\n    }\n  } else {\n    loadingError.show();\n  }\n}\n\n/**\n * Global ajax helper to handle requests within piwik\n */\nexport default class AjaxHelper {\n  /**\n   * Format of response\n   */\n  format = 'json';\n\n  /**\n   * A timeout for the request which will override any global timeout\n   */\n  timeout = null;\n\n  /**\n   * Callback function to be executed on success\n   */\n  callback: AnyFunction = null;\n\n  /**\n   * Use this.callback if an error is returned\n   */\n  useRegularCallbackInCaseOfError = false;\n\n  /**\n   * Callback function to be executed on error\n   */\n  errorCallback: AnyFunction;\n\n  withToken = false;\n\n  /**\n   * Callback function to be executed on complete (after error or success)\n   */\n  completeCallback: AnyFunction;\n\n  /**\n   * Params to be passed as GET params\n   * @see ajaxHelper.mixinDefaultGetParams\n   */\n  getParams: Parameters = {};\n\n  /**\n   * Base URL used in the AJAX request. Can be set by setUrl.\n   *\n   * It is set to '?' rather than 'index.php?' to increase chances that it works\n   * including for users who have an automatic 301 redirection from index.php? to ?\n   * POST values are missing when there is such 301 redirection. So by by-passing\n   * this 301 redirection, we avoid this issue.\n   *\n   * @see ajaxHelper.setUrl\n   */\n  getUrl = '?';\n\n  /**\n   * Params to be passed as GET params\n   * @see ajaxHelper.mixinDefaultPostParams\n   */\n  postParams: Parameters = {};\n\n  /**\n   * Element to be displayed while loading\n   */\n  loadingElement: HTMLElement|null|JQuery|JQLite|string = null;\n\n  /**\n   * Element to be displayed on error\n   */\n  errorElement: HTMLElement|JQuery|JQLite|string = '#ajaxError';\n\n  /**\n   * Handle for current request\n   */\n  requestHandle: XMLHttpRequest|JQuery.jqXHR|null = null;\n\n  defaultParams = ['idSite', 'period', 'date', 'segment'];\n\n  constructor() {\n    this.errorCallback = defaultErrorCallback;\n  }\n\n  /**\n   * Adds params to the request.\n   * If params are given more then once, the latest given value is used for the request\n   *\n   * @param  params\n   * @param  type  type of given parameters (POST or GET)\n   * @return {void}\n   */\n  addParams(params: Parameters|string, type: string): void {\n    if (typeof params === 'string') {\n      // TODO: add global types for broadcast (multiple uses below)\n      params = window['broadcast'].getValuesFromUrl(params); // eslint-disable-line\n    }\n\n    const arrayParams = ['compareSegments', 'comparePeriods', 'compareDates'];\n    Object.keys(params).forEach((key) => {\n      const value = params[key];\n      if (arrayParams.indexOf(key) !== -1\n        && !value\n      ) {\n        return;\n      }\n\n      if (type.toLowerCase() === 'get') {\n        this.getParams[key] = value;\n      } else if (type.toLowerCase() === 'post') {\n        this.postParams[key] = value;\n      }\n    });\n  }\n\n  withTokenInUrl(): void {\n    this.withToken = true;\n  }\n\n  /**\n   * Sets the base URL to use in the AJAX request.\n   */\n  setUrl(url: string): void {\n    this.addParams(broadcast.getValuesFromUrl(url), 'GET');\n  }\n\n  /**\n   * Gets this helper instance ready to send a bulk request. Each argument to this\n   * function is a single request to use.\n   */\n  setBulkRequests(...urls: string[]): void {\n    const urlsProcessed = urls.map((u) => $.param(u));\n\n    this.addParams({\n      module: 'API',\n      method: 'API.getBulkRequest',\n      urls: urlsProcessed,\n      format: 'json',\n    }, 'post');\n  }\n\n  /**\n   * Set a timeout (in milliseconds) for the request. This will override any global timeout.\n   *\n   * @param timeout  Timeout in milliseconds\n   */\n  setTimeout(timeout: number): void {\n    this.timeout = timeout;\n  }\n\n  /**\n   * Sets the callback called after the request finishes\n   *\n   * @param callback  Callback function\n   */\n  setCallback(callback: AnyFunction): void {\n    this.callback = callback;\n  }\n\n  /**\n   * Set that the callback passed to setCallback() should be used if an application error (i.e. an\n   * Exception in PHP) is returned.\n   */\n  useCallbackInCaseOfError(): void {\n    this.useRegularCallbackInCaseOfError = true;\n  }\n\n  /**\n   * Set callback to redirect on success handler\n   * &update=1(+x) will be appended to the current url\n   *\n   * @param [params] to modify in redirect url\n   * @return {void}\n   */\n  redirectOnSuccess(params: Parameters): void {\n    this.setCallback(() => {\n      piwikHelper.redirect(params);\n    });\n  }\n\n  /**\n   * Sets the callback called in case of an error within the request\n   */\n  setErrorCallback(callback: AnyFunction): void {\n    this.errorCallback = callback;\n  }\n\n  /**\n   * Sets the complete callback which is called after an error or success callback.\n   */\n  setCompleteCallback(callback: AnyFunction): void {\n    this.completeCallback = callback;\n  }\n\n  /**\n   * Sets the response format for the request\n   *\n   * @param format  response format (e.g. json, html, ...)\n   */\n  setFormat(format: string): void {\n    this.format = format;\n  }\n\n  /**\n   * Set the div element to show while request is loading\n   *\n   * @param [element]  selector for the loading element\n   */\n  setLoadingElement(element: string|HTMLElement|JQuery): void {\n    this.loadingElement = element || '#ajaxLoadingDiv';\n  }\n\n  /**\n   * Set the div element to show on error\n   *\n   * @param element  selector for the error element\n   */\n  setErrorElement(element: HTMLElement|JQuery|string): void {\n    if (!element) {\n      return;\n    }\n    this.errorElement = element;\n  }\n\n  /**\n   * Detect whether are allowed to use the given default parameter or not\n   */\n  private useGETDefaultParameter(parameter: string): boolean {\n    if (parameter && this.defaultParams) {\n      for (let i = 0; i < this.defaultParams.length; i += 1) {\n        if (this.defaultParams[i] === parameter) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Removes a default parameter that is usually send automatically along the request.\n   *\n   * @param parameter  A name such as \"period\", \"date\", \"segment\".\n   */\n  removeDefaultParameter(parameter: string): void {\n    if (parameter && this.defaultParams) {\n      for (let i = 0; i < this.defaultParams.length; i += 1) {\n        if (this.defaultParams[i] === parameter) {\n          this.defaultParams.splice(i, 1);\n        }\n      }\n    }\n  }\n\n  /**\n   * Send the request\n   */\n  send(): void {\n    if ($(this.errorElement).length) {\n      $(this.errorElement).hide();\n    }\n\n    if (this.loadingElement) {\n      $(this.loadingElement).fadeIn();\n    }\n\n    this.requestHandle = this.buildAjaxCall();\n    globalAjaxQueue.push(this.requestHandle);\n  }\n\n  /**\n   * Aborts the current request if it is (still) running\n   */\n  abort(): void {\n    if (this.requestHandle && typeof this.requestHandle.abort === 'function') {\n      this.requestHandle.abort();\n      this.requestHandle = null;\n    }\n  }\n\n  /**\n   * Builds and sends the ajax requests\n   */\n  private buildAjaxCall(): JQuery.jqXHR {\n    const self = this;\n    const parameters = this.mixinDefaultGetParams(this.getParams);\n\n    let url = this.getUrl;\n    if (url[url.length - 1] !== '?') {\n      url += '&';\n    }\n\n    // we took care of encoding &segment properly already, so we don't use $.param for it ($.param\n    // URL encodes the values)\n    if (parameters.segment) {\n      url = `${url}segment=${parameters.segment}&`;\n      delete parameters.segment;\n    }\n    if (parameters.date) {\n      url = `${url}date=${decodeURIComponent(parameters.date.toString())}&`;\n      delete parameters.date;\n    }\n    url += $.param(parameters);\n    const ajaxCall = {\n      type: 'POST',\n      async: true,\n      url,\n      dataType: this.format || 'json',\n      complete: this.completeCallback,\n      error: function errorCallback() {\n        globalAjaxQueue.active -= 1;\n\n        if (self.errorCallback) {\n          self.errorCallback.apply(this, arguments); // eslint-disable-line\n        }\n      },\n      success: (response, status, request) => {\n        if (this.loadingElement) {\n          $(this.loadingElement).hide();\n        }\n\n        if (response && response.result === 'error' && !this.useRegularCallbackInCaseOfError) {\n          let placeAt = null;\n          let type = 'toast';\n          if ($(this.errorElement).length && response.message) {\n            $(this.errorElement).show();\n            placeAt = this.errorElement;\n            type = null;\n          }\n\n          if (response.message) {\n            const UI = window['require']('piwik/UI'); // eslint-disable-line\n            const notification = new UI.Notification();\n            notification.show(response.message, {\n              placeat: placeAt,\n              context: 'error',\n              type,\n              id: 'ajaxHelper',\n            });\n            notification.scrollToNotification();\n          }\n        } else if (this.callback) {\n          this.callback(response, status, request);\n        }\n\n        globalAjaxQueue.active -= 1;\n        const { piwik } = window;\n        if (piwik\n          && piwik.ajaxRequestFinished\n        ) {\n          piwik.ajaxRequestFinished();\n        }\n      },\n      data: this.mixinDefaultPostParams(this.postParams),\n      timeout: this.timeout !== null ? this.timeout : undefined,\n    };\n\n    return $.ajax(ajaxCall);\n  }\n\n  private isRequestToApiMethod() {\n    return (this.getParams && this.getParams.module === 'API' && this.getParams.method)\n      || (this.postParams && this.postParams.module === 'API' && this.postParams.method);\n  }\n\n  isWidgetizedRequest(): boolean {\n    return (broadcast.getValueFromUrl('module') === 'Widgetize');\n  }\n\n  private getDefaultPostParams() {\n    if (this.withToken || this.isRequestToApiMethod() || piwik.shouldPropagateTokenAuth) {\n      return {\n        token_auth: piwik.token_auth,\n        // When viewing a widgetized report there won't be any session that can be used, so don't\n        // force session usage\n        force_api_session: broadcast.isWidgetizeRequestWithoutSession() ? 0 : 1,\n      };\n    }\n\n    return {};\n  }\n\n  /**\n   * Mixin the default parameters to send as POST\n   *\n   * @param params   parameter object\n   */\n  private mixinDefaultPostParams(params): Parameters {\n    const defaultParams = this.getDefaultPostParams();\n\n    const mergedParams = {\n      ...defaultParams,\n      ...params,\n    };\n\n    return mergedParams;\n  }\n\n  /**\n   * Mixin the default parameters to send as GET\n   *\n   * @param   params   parameter object\n   */\n  private mixinDefaultGetParams(originalParams): Parameters {\n    const segment = PiwikUrl.getSearchParam('segment');\n\n    const defaultParams = {\n      idSite: piwik.idSite || broadcast.getValueFromUrl('idSite'),\n      period: piwik.period || broadcast.getValueFromUrl('period'),\n      segment,\n    };\n\n    const params = originalParams;\n\n    // never append token_auth to url\n    if (params.token_auth) {\n      params.token_auth = null;\n      delete params.token_auth;\n    }\n\n    Object.keys(defaultParams).forEach((key) => {\n      if (this.useGETDefaultParameter(key)\n        && !params[key]\n        && !this.postParams[key]\n        && defaultParams[key]\n      ) {\n        params[key] = defaultParams[key];\n      }\n    });\n\n    // handle default date & period if not already set\n    if (this.useGETDefaultParameter('date') && !params.date && !this.postParams.date) {\n      params.date = piwik.currentDateString;\n    }\n\n    return params;\n  }\n}\n","import AjaxHelper from './AjaxHelper';\n\ndeclare global {\n  interface Window {\n    ajaxHelper: AjaxHelper;\n  }\n}\n\nwindow.ajaxHelper = AjaxHelper;\n\nfunction ajaxQueue() {\n  return globalAjaxQueue;\n}\n\nangular.module('piwikApp.service').service('globalAjaxQueue', ajaxQueue);\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 */\nimport PiwikUrl from './PiwikUrl';\n\nfunction piwikUrl() {\n  const model = {\n    getSearchParam: PiwikUrl.getSearchParam.bind(PiwikUrl),\n  };\n\n  return model;\n}\n\npiwikUrl.$inject = [];\n\nangular.module('piwikApp.service').service('piwikUrl', piwikUrl);\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\ninterface Period {\n  getPrettyString(): string;\n  getDateRange(): Date[];\n  containsToday(): boolean;\n}\n\ninterface PeriodClass {\n  parse(strDate: string|Date): Period;\n  getDisplayText(): string;\n}\n\n/**\n * Piwik period management service for the frontend.\n *\n * Usage:\n *\n *     var DayPeriod = piwikPeriods.get('day');\n *     var day = new DayPeriod(new Date());\n *\n * or\n *\n *     var day = piwikPeriods.parse('day', '2013-04-05');\n *\n * Adding custom periods:\n *\n * To add your own period to the frontend, create a period class for it\n * w/ the following methods:\n *\n * - **getPrettyString()**: returns a human readable display string for the period.\n * - **getDateRange()**: returns an array w/ two elements, the first being the start\n *                       Date of the period, the second being the end Date. The dates\n *                       must be Date objects, not strings, and are inclusive.\n * - **containsToday()**: returns true if the date period contains today. False if not.\n * - (_static_) **parse(strDate)**: creates a new instance of this period from the\n *                                  value of the 'date' query parameter.\n * - (_static_) **getDisplayText**: returns translated text for the period, eg, 'month',\n *                                  'week', etc.\n *\n * Then call piwik.addCustomPeriod w/ your period class:\n *\n *     piwik.addCustomPeriod('mycustomperiod', MyCustomPeriod);\n *\n * NOTE: currently only single date periods like day, week, month year can\n *       be extended. Other types of periods that require a special UI to\n *       view/edit aren't, since there is currently no way to use a\n *       custom UI for a custom period.\n */\nclass Periods {\n  periods: {[name: string]: PeriodClass} = {};\n\n  periodOrder: string[] = [];\n\n  addCustomPeriod(name: string, periodClass: PeriodClass) {\n    if (this.periods[name]) {\n      throw new Error(`The \"${name}\" period already exists! It cannot be overridden.`);\n    }\n\n    this.periods[name] = periodClass;\n    this.periodOrder.push(name);\n  }\n\n  getAllLabels(): string[] {\n    return Array<string>().concat(this.periodOrder);\n  }\n\n  get(strPeriod: string): PeriodClass {\n    const periodClass = this.periods[strPeriod];\n    if (!periodClass) {\n      throw new Error(`Invalid period label: ${strPeriod}`);\n    }\n    return periodClass;\n  }\n\n  parse(strPeriod: string, strDate: string): Period {\n    return this.get(strPeriod).parse(strDate);\n  }\n\n  isRecognizedPeriod(strPeriod: string): boolean {\n    return !!this.periods[strPeriod];\n  }\n}\n\nexport default new Periods();\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\nexport function format(date: Date): string {\n  return $.datepicker.formatDate('yy-mm-dd', date);\n}\n\nexport function getToday(): Date {\n  const date = new Date(Date.now());\n\n  // undo browser timezone\n  date.setTime(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n\n  // apply piwik site timezone (if it exists)\n  date.setHours(date.getHours() + ((window.piwik.timezoneOffset || 0) / 3600));\n\n  // get rid of hours/minutes/seconds/etc.\n  date.setHours(0);\n  date.setMinutes(0);\n  date.setSeconds(0);\n  date.setMilliseconds(0);\n  return date;\n}\n\nexport function parseDate(date: string|Date): Date {\n  if (date instanceof Date) {\n    return date;\n  }\n\n  const strDate = decodeURIComponent(date);\n\n  if (strDate === 'today'\n    || strDate === 'now'\n  ) {\n    return getToday();\n  }\n\n  if (strDate === 'yesterday'\n    // note: ignoring the 'same time' part since the frontend doesn't care about the time\n    || strDate === 'yesterdaySameTime'\n  ) {\n    const yesterday = getToday();\n    yesterday.setDate(yesterday.getDate() - 1);\n    return yesterday;\n  }\n\n  if (strDate.match(/last[ -]?week/i)) {\n    const lastWeek = getToday();\n    lastWeek.setDate(lastWeek.getDate() - 7);\n    return lastWeek;\n  }\n\n  if (strDate.match(/last[ -]?month/i)) {\n    const lastMonth = getToday();\n    lastMonth.setDate(1);\n    lastMonth.setMonth(lastMonth.getMonth() - 1);\n    return lastMonth;\n  }\n\n  if (strDate.match(/last[ -]?year/i)) {\n    const lastYear = getToday();\n    lastYear.setFullYear(lastYear.getFullYear() - 1);\n    return lastYear;\n  }\n\n  try {\n    return $.datepicker.parseDate('yy-mm-dd', strDate);\n  } catch (err) {\n    // angular swallows this error, so manual console log here\n    console.error(err.message || err);\n    throw err;\n  }\n}\n\nexport function todayIsInRange(dateRange: Date[]): boolean {\n  if (dateRange.length !== 2) {\n    return false;\n  }\n\n  if (getToday() >= dateRange[0] && getToday() <= dateRange[1]) {\n    return true;\n  }\n\n  return false;\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\nimport PiwikUrl from '../PiwikUrl/PiwikUrl';\nimport Periods from '../Periods/Periods';\nimport { format } from '../Periods/utilities';\n\nlet originalTitle: string;\n\nconst { piwik, broadcast, piwikHelper } = window;\n\npiwik.helper = piwikHelper;\npiwik.broadcast = broadcast;\n\nfunction isValidPeriod(periodStr: string, dateStr: string) {\n  try {\n    Periods.parse(periodStr, dateStr);\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\npiwik.updatePeriodParamsFromUrl = function updatePeriodParamsFromUrl() {\n  let date = PiwikUrl.getSearchParam('date');\n  const period = PiwikUrl.getSearchParam('period');\n  if (!isValidPeriod(period, date)) {\n    // invalid data in URL\n    return;\n  }\n\n  if (piwik.period === period && piwik.currentDateString === date) {\n    // this period / date is already loaded\n    return;\n  }\n\n  piwik.period = period;\n\n  const dateRange = Periods.parse(period, date).getDateRange();\n  piwik.startDateString = format(dateRange[0]);\n  piwik.endDateString = format(dateRange[1]);\n\n  piwik.updateDateInTitle(date, period);\n\n  // do not set anything to previousN/lastN, as it's more useful to plugins\n  // to have the dates than previousN/lastN.\n  if (piwik.period === 'range') {\n    date = `${piwik.startDateString},${piwik.endDateString}`;\n  }\n\n  piwik.currentDateString = date;\n};\n\npiwik.updateDateInTitle = function updateDateInTitle(date: string, period: string) {\n  if (!$('.top_controls #periodString').length) {\n    return;\n  }\n\n  // Cache server-rendered page title\n  originalTitle = originalTitle || document.title;\n\n  if (originalTitle.indexOf(piwik.siteName) === 0) {\n    const dateString = ` - ${Periods.parse(period, date).getPrettyString()} `;\n    document.title = `${piwik.siteName}${dateString}${originalTitle.substr(piwik.siteName.length)}`;\n  }\n};\n\npiwik.hasUserCapability = function hasUserCapability(capability: string) {\n  return window.angular.isArray(piwik.userCapabilities)\n    && piwik.userCapabilities.indexOf(capability) !== -1;\n};\n\nconst Piwik = piwik;\nexport default Piwik;\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\nimport Piwik from './Piwik';\n\nfunction piwikService() {\n  return Piwik;\n}\n\nangular.module('piwikApp.service').service('piwik', piwikService);\n\nfunction initPiwikService(piwik, $rootScope) {\n  $rootScope.$on('$locationChangeSuccess', piwik.updatePeriodParamsFromUrl);\n}\n\ninitPiwikService.$inject = ['piwik', '$rootScope'];\n\nangular.module('piwikApp.service').run(initPiwikService);\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<template>\n  <div v-show=\"loading\" class=\"loadingPiwik\">\n    <img src=\"plugins/Morpheus/images/loading-blue.gif\" alt=\"\"/>\n    <span>{{ loadingMessage }}</span>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport translate from '../translate';\n\nexport default defineComponent({\n  props: {\n    loading: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n    loadingMessage: {\n      type: String,\n      required: false,\n      default: translate('General_LoadingData'),\n    },\n  },\n});\n</script>\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\nexport default function translate(translationStringId: string, values: string[] = []): string {\n  return window._pk_translate(translationStringId, values); // eslint-disable-line\n}\n","\nimport { defineComponent } from 'vue';\nimport translate from '../translate';\n\nexport default defineComponent({\n  props: {\n    loading: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n    loadingMessage: {\n      type: String,\n      required: false,\n      default: translate('General_LoadingData'),\n    },\n  },\n});\n","import { render } from \"./ActivityIndicator.vue?vue&type=template&id=6af4d064\"\nimport script from \"./ActivityIndicator.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivityIndicator.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","/*!\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\nimport { createApp } from 'vue';\nimport ActivityIndicator from './ActivityIndicator.vue';\nimport translate from '../translate';\n\ninterface ActivityIndicatorAdapterScope extends ng.IScope {\n  loading: boolean;\n  loadingMessage: string;\n}\n\nexport default function activityIndicatorAdapter(): ng.IDirective {\n  return {\n    restrict: 'A',\n    scope: {\n      loading: '<',\n      loadingMessage: '<',\n    },\n    template: '',\n    link: function activityIndicatorAdapterLink(\n      scope: ActivityIndicatorAdapterScope,\n      element: ng.IAugmentedJQuery,\n    ) {\n      const app = createApp({\n        template: '<activity-indicator :loading=\"loading\" :loadingMessage=\"loadingMessage\"/>',\n        data() {\n          return {\n            loading: scope.loading,\n            loadingMessage: scope.loadingMessage,\n          };\n        },\n      });\n      app.component('activity-indicator', ActivityIndicator);\n      const vm = app.mount(element[0]);\n\n      scope.$watch('loading', (newValue: boolean) => {\n        vm.loading = newValue;\n      });\n\n      scope.$watch('loadingMessage', (newValue: string) => {\n        vm.loadingMessage = newValue || translate('General_LoadingData');\n      });\n    },\n  };\n}\n\nactivityIndicatorAdapter.$inject = [];\n\nangular.module('piwikApp').directive('piwikActivityIndicator', activityIndicatorAdapter);\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<template>\n  <div\n    class=\"alert\"\n    :class=\"{ [`alert-${severity}`]: true }\"\n  >\n    <slot></slot>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  props: {\n    severity: {\n      type: String,\n      required: true,\n    },\n  },\n});\n</script>\n","\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n  props: {\n    severity: {\n      type: String,\n      required: true,\n    },\n  },\n});\n","import { render } from \"./Alert.vue?vue&type=template&id=c3863ae2\"\nimport script from \"./Alert.vue?vue&type=script&lang=ts\"\nexport * from \"./Alert.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","/*!\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\nimport { createApp, ref } from 'vue';\nimport Alert from './Alert.vue';\n\ninterface AlertAdapterScope extends ng.IScope {\n  severity: string;\n}\n\nexport default function alertAdapter(): ng.IDirective {\n  return {\n    restrict: 'A',\n    transclude: true,\n    scope: {\n      severity: '@piwikAlert',\n    },\n    template: '<div ng-transclude/>',\n    compile: function alertAdapterCompile() {\n      return {\n        post: function alertAdapterPostLink(\n          scope: AlertAdapterScope,\n          element: ng.IAugmentedJQuery,\n        ) {\n          const clone = element.find('[ng-transclude]');\n\n          const app = createApp({\n            template: '<alert :severity=\"severity\"><div ref=\"transcludeTarget\"/></alert>',\n            data() {\n              return { severity: scope.severity };\n            },\n            setup() {\n              const transcludeTarget = ref(null);\n              return {\n                transcludeTarget,\n              };\n            },\n          });\n          app.component('alert', Alert);\n          const vm = app.mount(element[0]);\n\n          scope.$watch('severity', (newValue: string) => {\n            vm.severity = newValue;\n          });\n\n          $(vm.transcludeTarget).append(clone);\n        },\n      };\n    },\n  };\n}\n\nalertAdapter.$inject = [];\n\nangular.module('piwikApp').directive('piwikAlert', alertAdapter);\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\nimport translate from '../translate';\nimport Periods from './Periods';\nimport {\n  parseDate,\n  format,\n  getToday,\n  todayIsInRange,\n} from './utilities';\n\nexport default class RangePeriod {\n  constructor(\n    public readonly startDate: Date,\n    public readonly endDate: Date,\n    public readonly childPeriodType: string,\n  ) {}\n\n  /**\n   * Returns a range representing the last N childPeriodType periods, including the current one.\n   */\n  static getLastNRange(\n    childPeriodType: string,\n    strAmount: string|number,\n    strEndDate?: Date|string,\n  ): RangePeriod {\n    const nAmount = Math.max(parseInt(strAmount.toString(), 10) - 1, 0);\n    if (Number.isNaN(nAmount)) {\n      throw new Error('Invalid range strAmount');\n    }\n\n    let endDate = strEndDate ? parseDate(strEndDate) : getToday();\n\n    let startDate = new Date(endDate.getTime());\n    if (childPeriodType === 'day') {\n      startDate.setDate(startDate.getDate() - nAmount);\n    } else if (childPeriodType === 'week') {\n      startDate.setDate(startDate.getDate() - (nAmount * 7));\n    } else if (childPeriodType === 'month') {\n      startDate.setDate(1);\n      startDate.setMonth(startDate.getMonth() - nAmount);\n    } else if (childPeriodType === 'year') {\n      startDate.setFullYear(startDate.getFullYear() - nAmount);\n    } else {\n      throw new Error(`Unknown period type '${childPeriodType}'.`);\n    }\n\n    if (childPeriodType !== 'day') {\n      const startPeriod = Periods.periods[childPeriodType].parse(startDate);\n      const endPeriod = Periods.periods[childPeriodType].parse(endDate);\n\n      [startDate] = startPeriod.getDateRange();\n      [, endDate] = endPeriod.getDateRange();\n    }\n\n    const firstWebsiteDate = new Date(1991, 7, 6);\n    if (startDate.getTime() - firstWebsiteDate.getTime() < 0) {\n      switch (childPeriodType) {\n        case 'year':\n          startDate = new Date(1992, 0, 1);\n          break;\n        case 'month':\n          startDate = new Date(1991, 8, 1);\n          break;\n        case 'week':\n          startDate = new Date(1991, 8, 12);\n          break;\n        case 'day':\n        default:\n          startDate = firstWebsiteDate;\n          break;\n      }\n    }\n\n    return new RangePeriod(startDate, endDate, childPeriodType);\n  }\n\n  static parse(strDate: string, childPeriodType = 'day'): RangePeriod {\n    if (/^previous/.test(strDate)) {\n      const endDate = RangePeriod.getLastNRange(childPeriodType, '2').startDate;\n      return RangePeriod.getLastNRange(childPeriodType, strDate.substring(8), endDate);\n    }\n\n    if (/^last/.test(strDate)) {\n      return RangePeriod.getLastNRange(childPeriodType, strDate.substring(4));\n    }\n\n    const parts = decodeURIComponent(strDate).split(',');\n    return new RangePeriod(parseDate(parts[0]), parseDate(parts[1]), childPeriodType);\n  }\n\n  static getDisplayText(): string {\n    return translate('General_DateRangeInPeriodList');\n  }\n\n  getPrettyString(): string {\n    const start = format(this.startDate);\n    const end = format(this.endDate);\n    return translate('General_DateRangeFromTo', [start, end]);\n  }\n\n  getDateRange(): Date[] {\n    return [this.startDate, this.endDate];\n  }\n\n  containsToday(): boolean {\n    return todayIsInRange(this.getDateRange());\n  }\n}\n\nPeriods.addCustomPeriod('range', RangePeriod);\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\nimport Periods from './Periods';\nimport RangePeriod from './Range';\nimport { parseDate, format, todayIsInRange } from './utilities';\n\nwindow.piwik.addCustomPeriod = Periods.addCustomPeriod.bind(Periods);\n\nfunction piwikPeriods() {\n  return {\n    getAllLabels: Periods.getAllLabels.bind(Periods),\n    isRecognizedPeriod: Periods.isRecognizedPeriod.bind(Periods),\n    get: Periods.get.bind(Periods),\n    parse: Periods.parse.bind(Periods),\n    parseDate,\n    format,\n    RangePeriod,\n    todayIsInRange,\n  };\n}\n\nangular.module('piwikApp.service').factory('piwikPeriods', piwikPeriods);\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\nimport translate from '../translate';\nimport Periods from './Periods';\nimport { parseDate, format, todayIsInRange } from './utilities';\n\nexport default class DayPeriod {\n  constructor(private dateInPeriod: Date) {}\n\n  static parse(strDate: string): DayPeriod {\n    return new DayPeriod(parseDate(strDate));\n  }\n\n  static getDisplayText(): string {\n    return translate('Intl_PeriodDay');\n  }\n\n  getPrettyString(): string {\n    return format(this.dateInPeriod);\n  }\n\n  getDateRange(): Date[] {\n    return [new Date(this.dateInPeriod.getTime()), new Date(this.dateInPeriod.getTime())];\n  }\n\n  containsToday(): boolean {\n    return todayIsInRange(this.getDateRange());\n  }\n}\n\nPeriods.addCustomPeriod('day', DayPeriod);\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\nimport translate from '../translate';\nimport Periods from './Periods';\nimport { parseDate, format, todayIsInRange } from './utilities';\n\nexport default class WeekPeriod {\n  constructor(private dateInPeriod: Date) {}\n\n  static parse(strDate: string): WeekPeriod {\n    return new WeekPeriod(parseDate(strDate));\n  }\n\n  static getDisplayText(): string {\n    return translate('Intl_PeriodWeek');\n  }\n\n  getPrettyString(): string {\n    const weekDates = this.getDateRange();\n    const startWeek = format(weekDates[0]);\n    const endWeek = format(weekDates[1]);\n\n    return translate('General_DateRangeFromTo', [startWeek, endWeek]);\n  }\n\n  getDateRange(): Date[] {\n    const daysToMonday = (this.dateInPeriod.getDay() + 6) % 7;\n\n    const startWeek = new Date(this.dateInPeriod.getTime());\n    startWeek.setDate(this.dateInPeriod.getDate() - daysToMonday);\n\n    const endWeek = new Date(startWeek.getTime());\n    endWeek.setDate(startWeek.getDate() + 6);\n\n    return [startWeek, endWeek];\n  }\n\n  containsToday(): boolean {\n    return todayIsInRange(this.getDateRange());\n  }\n}\n\nPeriods.addCustomPeriod('week', WeekPeriod);\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\nimport translate from '../translate';\nimport Periods from './Periods';\nimport { parseDate, todayIsInRange } from './utilities';\n\nexport default class MonthPeriod {\n  constructor(private dateInPeriod: Date) {}\n\n  static parse(strDate: string): MonthPeriod {\n    return new MonthPeriod(parseDate(strDate));\n  }\n\n  static getDisplayText(): string {\n    return translate('Intl_PeriodMonth');\n  }\n\n  getPrettyString(): string {\n    const month = translate(`Intl_Month_Long_StandAlone_${this.dateInPeriod.getMonth() + 1}`);\n    return `${month} ${this.dateInPeriod.getFullYear()}`;\n  }\n\n  getDateRange(): Date[] {\n    const startMonth = new Date(this.dateInPeriod.getTime());\n    startMonth.setDate(1);\n\n    const endMonth = new Date(this.dateInPeriod.getTime());\n    endMonth.setDate(1);\n    endMonth.setMonth(endMonth.getMonth() + 1);\n    endMonth.setDate(0);\n\n    return [startMonth, endMonth];\n  }\n\n  containsToday(): boolean {\n    return todayIsInRange(this.getDateRange());\n  }\n}\n\nPeriods.addCustomPeriod('month', MonthPeriod);\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\nimport translate from '../translate';\nimport Periods from './Periods';\nimport { parseDate, todayIsInRange } from './utilities';\n\nexport default class YearPeriod {\n  constructor(private dateInPeriod: Date) {}\n\n  static parse(strDate: string): YearPeriod {\n    return new YearPeriod(parseDate(strDate));\n  }\n\n  static getDisplayText(): string {\n    return translate('Intl_PeriodYear');\n  }\n\n  getPrettyString(): string {\n    return this.dateInPeriod.getFullYear().toString();\n  }\n\n  getDateRange(): Date[] {\n    const startYear = new Date(this.dateInPeriod.getTime());\n    startYear.setMonth(0);\n    startYear.setDate(1);\n\n    const endYear = new Date(this.dateInPeriod.getTime());\n    endYear.setMonth(12);\n    endYear.setDate(0);\n\n    return [startYear, endYear];\n  }\n\n  containsToday(): boolean {\n    return todayIsInRange(this.getDateRange());\n  }\n}\n\nPeriods.addCustomPeriod('year', YearPeriod);\n"],"sourceRoot":""}