{"version":3,"sources":["components/ads-pagination/ads-pagination.types.ts","components/ads-pagination/components/ads-pagination-item.tsx","../node_modules/@fortawesome/pro-solid-svg-icons/faChevronLeft.js","../node_modules/@fortawesome/pro-solid-svg-icons/faChevronRight.js","components/ads-pagination/components/ads-pagination-navigation-button.tsx","components/ads-pagination/components/ads-pagination-truncation.tsx","components/ads-pagination/ads-pagination.tsx","components/ads-pagination/ads-pagination.scss?tag=ads-pagination&encapsulation=shadow","components/core/global/pipeline.ts","components/core/utils/pipeline.ts","components/core/utils/components.ts","utils/imageHelper.tsx"],"names":["AdsPaginationTriggerTypes","AdsPaginationNavigationButtonTypes","AdsPaginationErrors","AdsPaginationItem","index","isActive","isMobileFriendly","onItemSelect","ariaAttrs","get","class","role","part","type","onClick","evt","Object","defineProperty","exports","value","aliases","svgPathData","prefix","iconName","icon","definition","AdsPaginationNavigationButton","navigationType","currentActiveIndex","totalNumOfIndices","onButtonClick","previousIndex","nextIndex","previousMessage","total","nextMessage","disabled","PREVIOUS_BUTTON","iconWidth","iconLeftWidth","iconRightWidth","iconHeight","iconLeftHeight","iconRightHeight","iconPath","iconLeftPath","iconRightPath","data","height","width","AdsPaginationTruncation","truncationSymbol","AdsPagination","getTruncateStart","totalItems","maxIndicesInternal","currentIndexInternal","Math","floor","getTruncateEnd","getStartPosition","availables","getEndPosition","ceil","isIndexActive","num","parseInt","isNaN","goToIndex","gotoIndex","eventTrigger","pageIndex","indexWithinBoundary","indexChange","emit","newIndex","trigger","indexChangeHandler","this","el","setAttribute","identifier","component","registerComponent","newValue","boundedValue","INDEX_OUT_OF_RANGE","setTimeout","INVALID_MAX_INDICES","maxIndices","handleMaxDisplayedIndicesChanged","currentIndex","detail","Promise","resolve","mobileElements","round","INDEX_ELEMENT","pages","push","Array","from","keys","map","toString","Pipeline.addComponent","boundedIndex","Pipeline.removeComponent","hostAttributes","srLabel","getIndices","item","getIndexElement","isIndexMobileFriendly","NEXT_BUTTON","add","window","pipeline","set","id","tagName","toLowerCase","config","getBoolean","trackEvent","name","COMPONENT_REGISTER","componentId","environment","version","host","location","err","console","log","sendCustomEvent","addComponent","Pipeline.add","removeComponent","delete","Pipeline.remove","generateId","namespace","generateRandomString","random","substr","getClassFromSize","size","MEDIUM","SMALL","getClassFromLevel","level","PRIMARY","SECONDARY","TERTIARY","getMediaQueryBreakpointClassUp","bp","getMediaQueryBreakpointClassDown","showErrorMessage","message","ADS_CONSOLE_ERROR","warn","generateSVGImage","className","xmlns","viewBox","d"],"mappings":"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","file":"static/js/23.e998da44.chunk.js","sourcesContent":["/**\n * Trigger event possible values\n */\nexport enum AdsPaginationTriggerTypes {\n  PREVIOUS_BUTTON = 'previous-button',\n  INDEX_ELEMENT = 'index-element',\n  NEXT_BUTTON = 'next-button',\n}\n\nexport type AdsPaginationTriggerTypePreviousButton = 'previous-button';\nexport type AdsPaginationTriggerTypeIndexElement = 'index-element';\nexport type AdsPaginationTriggerTypeNextButton = 'next-button';\n\n/**\n * Pagination trigger types\n * @docs\n */\nexport type AdsPaginationTriggerType =\n  | AdsPaginationTriggerTypePreviousButton\n  | AdsPaginationTriggerTypeIndexElement\n  | AdsPaginationTriggerTypeNextButton;\n\n/**\n * Navigation button types\n */\nexport enum AdsPaginationNavigationButtonTypes {\n  PREVIOUS_BUTTON = 'previous',\n  NEXT_BUTTON = 'next',\n}\n\nexport type AdsPaginationNavigationButtonTypePrevious = 'previous';\nexport type AdsPaginationNavigationButtonTypeNext = 'next';\n\n/**\n * Pagination button types\n * @docs\n */\nexport type AdsPaginationNavigationButtonType = AdsPaginationNavigationButtonTypePrevious | AdsPaginationNavigationButtonTypeNext;\n\nexport enum AdsPaginationErrors {\n  INDEX_OUT_OF_RANGE = \"Prop 'currentIndex' is outside of the range of possible values\",\n  INVALID_MAX_INDICES = \"Prop 'maxIndices' must be greater than 4 and lower than 'totalItems'\",\n}\n\n/**\n * Interface for the event emitted when the active index changes\n * @docs\n */\nexport interface IndexChangeEvent {\n  /**\n   * The event that caused the emit\n   */\n  evt: Event;\n\n  /**\n   * The new pagination index\n   */\n  newIndex: number;\n\n  /**\n   * The trigger for the event. The value of what triggered the event. It can be \"previous-button\", \"index-element\", or \"next-button\".\n   */\n  trigger: AdsPaginationTriggerType;\n}\n\n/**\n * Interface for indexChange handler\n */\nexport type IndexChangeHandler = (evt: IndexChangeEvent) => void;\n","import { FunctionalComponent, VNode, h } from '@stencil/core';\n\nimport { Dictionary } from '../../core/classes/Dictionary';\n\ninterface AdsPaginationItemProps {\n  index: number;\n  isActive: boolean;\n  isMobileFriendly: boolean;\n  onItemSelect: (evt: MouseEvent) => void;\n}\n\nexport const AdsPaginationItem: FunctionalComponent<AdsPaginationItemProps> = ({ index, isActive, isMobileFriendly, onItemSelect }) => {\n  const ariaAttrs = {\n    'aria-label': isActive\n      ? Dictionary.get(`Current Page, Page ${index}`, 'CURRENT_PAGE_PAGE_X', { index })\n      : Dictionary.get(`Go to page ${index}`, 'GO_TO_PAGE_X', { index }),\n    'aria-current': isActive,\n    'data-track': 'true',\n    'data-track-value': isActive\n      ? Dictionary.get(`Current Page, Page ${index}`, 'CURRENT_PAGE_PAGE_X', { index })\n      : Dictionary.get(`Go to page ${index}`, 'GO_TO_PAGE_X', { index }),\n  };\n\n  const onClick = (evt: MouseEvent) => onItemSelect(evt);\n\n  return (\n    <li class={`c-pagination__item ${isMobileFriendly ? 'is-mobile-friendly' : ''}`} role=\"presentation\">\n      <button\n        part=\"index\"\n        class={`c-pagination-item c-pagination-index ${isActive ? 'is-active' : ''}`}\n        type=\"button\"\n        role=\"listitem\"\n        onClick={onClick}\n        {...ariaAttrs}\n      >\n        <span aria-hidden=\"true\">{`${index}`}</span>\n      </button>\n    </li>\n  ) as VNode;\n};\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chevron-left';\nvar width = 320;\nvar height = 512;\nvar aliases = [9001];\nvar unicode = 'f053';\nvar svgPathData = 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z';\n\nexports.definition = {\n  prefix: prefix,\n  iconName: iconName,\n  icon: [\n    width,\n    height,\n    aliases,\n    unicode,\n    svgPathData\n  ]};\n\nexports.faChevronLeft = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'chevron-right';\nvar width = 320;\nvar height = 512;\nvar aliases = [9002];\nvar unicode = 'f054';\nvar svgPathData = 'M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z';\n\nexports.definition = {\n  prefix: prefix,\n  iconName: iconName,\n  icon: [\n    width,\n    height,\n    aliases,\n    unicode,\n    svgPathData\n  ]};\n\nexports.faChevronRight = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","import { FunctionalComponent, VNode, h } from '@stencil/core';\n\nimport { AdsPaginationNavigationButtonType, AdsPaginationNavigationButtonTypes } from '../ads-pagination.types';\nimport { Dictionary } from '../../core/classes/Dictionary';\nimport { generateSVGImage } from 'utils/imageHelper';\nimport { height as iconLeftHeight, svgPathData as iconLeftPath, width as iconLeftWidth } from '@fortawesome/pro-solid-svg-icons/faChevronLeft';\nimport { height as iconRightHeight, svgPathData as iconRightPath, width as iconRightWidth } from '@fortawesome/pro-solid-svg-icons/faChevronRight';\n\ninterface AdsPaginationNavigationButton {\n  navigationType: AdsPaginationNavigationButtonType;\n  onButtonClick: (evt: MouseEvent) => void;\n  currentActiveIndex: number;\n  totalNumOfIndices: number;\n}\n\nexport const AdsPaginationNavigationButton: FunctionalComponent<AdsPaginationNavigationButton> = ({\n  navigationType,\n  currentActiveIndex,\n  totalNumOfIndices,\n  onButtonClick,\n}) => {\n  const previousIndex = currentActiveIndex - 1 > 0 ? currentActiveIndex - 1 : -1;\n  const nextIndex = currentActiveIndex + 1;\n  const previousMessage =\n    previousIndex >= 0\n      ? Dictionary.get(`Go to page ${previousIndex} of ${totalNumOfIndices}`, 'GO_TO_PAGE_X_OF_X', { index: previousIndex, total: totalNumOfIndices })\n      : Dictionary.get(`Already on page 1`, 'ALREADY_ON_PAGE_X', { index: 1 });\n  const nextMessage =\n    nextIndex <= totalNumOfIndices\n      ? Dictionary.get(`Go to page ${nextIndex} of ${totalNumOfIndices}`, 'GO_TO_PAGE_X_OF_X', { index: nextIndex, total: totalNumOfIndices })\n      : Dictionary.get(`Already on page ${totalNumOfIndices}`, 'ALREADY_ON_PAGE_X', { index: totalNumOfIndices });\n  const disabled =\n    !totalNumOfIndices ||\n    (navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? currentActiveIndex === 1 : currentActiveIndex === totalNumOfIndices);\n\n  const iconWidth = navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? iconLeftWidth : iconRightWidth;\n  const iconHeight = navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? iconLeftHeight : iconRightHeight;\n  const iconPath = navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? iconLeftPath : iconRightPath;\n\n  return (\n    <button\n      part=\"action\"\n      class={`c-pagination-item c-pagination-action c-pagination-action${\n        navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? '--previous' : '--next'\n      } ${disabled ? 'is-disabled' : ''}`}\n      type=\"button\"\n      role=\"listitem\"\n      disabled={disabled}\n      onClick={onButtonClick}\n      data-track=\"true\"\n      data-track-value={navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? previousMessage : nextMessage}\n    >\n      <span class=\"sr-only\">{navigationType === AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON ? previousMessage : nextMessage}</span>\n      {generateSVGImage({ data: iconPath, height: iconHeight, width: iconWidth })}\n    </button>\n  ) as VNode;\n};\n","import { FunctionalComponent, VNode, h } from '@stencil/core';\n\ninterface AdsPaginationTruncationProps {\n  truncationSymbol: string;\n}\n\nexport const AdsPaginationTruncation: FunctionalComponent<AdsPaginationTruncationProps> = ({ truncationSymbol }) => {\n  return (\n    <li class=\"c-pagination__item\" role=\"presentation\">\n      <button\n        data-track=\"true\"\n        data-track-value={`${truncationSymbol}`}\n        class=\"c-pagination-item c-pagination-index c-pagination-truncation is-disabled\"\n        disabled\n        role=\"listitem\"\n      >{`${truncationSymbol}`}</button>\n    </li>\n  ) as VNode;\n};\n","import { Component, Element, Event, EventEmitter, Listen, Method, Prop, State, VNode, Watch, h } from '@stencil/core';\n\nimport * as Pipeline from '../core/utils/pipeline';\nimport {\n  AdsPaginationErrors,\n  AdsPaginationNavigationButtonTypes,\n  AdsPaginationTriggerTypes,\n  IndexChangeEvent,\n  IndexChangeHandler,\n} from './ads-pagination.types';\nimport { AdsPaginationItem } from './components/ads-pagination-item';\nimport { AdsPaginationNavigationButton } from './components/ads-pagination-navigation-button';\nimport { AdsPaginationTruncation } from './components/ads-pagination-truncation';\nimport { BaseComponent } from '../core/interfaces/BaseComponent';\nimport { Dictionary } from '../core/classes/Dictionary';\nimport { Theme } from '../core/types/globalTypes';\nimport { generateId, showErrorMessage } from '../core/utils/components';\nimport { isNullOrUndefined } from 'utils/collection';\n\n/**\n * Pagination is used for splitting up content or data into several pages or table data views. Pagination has controls for navigating to the next or previous page as well as to individual pages or table views. Pagination elements should have numeric labels and should clearly identify the current page number.\n * @tag `<ads-pagination>`\n * @example <ads-pagination total-items=\"200\"></ads-pagination>\n */\n@Component({\n  tag: 'ads-pagination',\n  styleUrl: 'ads-pagination.scss',\n  shadow: true,\n})\nexport class AdsPagination implements BaseComponent {\n  /**\n   * @hidden\n   */\n  public component: string;\n\n  constructor() {\n    this.el.setAttribute('id', this.identifier || generateId('ads-pagination'));\n    this.component = 'ads-pagination';\n    Dictionary.registerComponent(this);\n  }\n\n  @Element() private el: HTMLAdsPaginationElement;\n\n  /**\n   * @hidden\n   */\n  @State() maxIndicesInternal = 7;\n\n  /**\n   * @hidden\n   */\n  @State() truncationSymbol = '...';\n\n  /**\n   * State to keep track of active index\n   * @hidden\n   */\n  @State() currentIndexInternal = 1;\n\n  /**\n   * The unique identifier (optional)\n   */\n  @Prop({ attribute: 'id' }) identifier?: string;\n\n  /**\n   * The theme for this component instance (optional)\n   * Values: \"default\", \"dark\"\n   */\n  @Prop({ reflect: true }) theme?: Theme;\n\n  /**\n   * The value for the aria-label, to describe the purpose of the pagination component (optional)\n   * @default \"Pagination\"\n   */\n  @Prop({ reflect: true }) srLabel = Dictionary.get('Pagination', 'PAGINATION');\n\n  /**\n   * The max number of indices to display (between truncations)\n   */\n  @Prop({ reflect: true }) maxIndices?: number;\n\n  /**\n   * Set the current page\n   */\n  @Prop({ reflect: true }) currentIndex?: number;\n\n  /**\n   * Set the total number of pages\n   */\n  @Prop({ reflect: true }) totalItems: number;\n\n  /**\n   * Callback function for the index change (optional)\n   */\n  @Prop() indexChangeHandler?: IndexChangeHandler;\n\n  /**\n   * Emits 'indexChange' custom event.<br/>\n   * Usage: `document.querySelector('ads-pagination').addEventListener('indexChange', function(evt) {});`\n   * @event\n   */\n  @Event({ bubbles: false }) indexChange: EventEmitter<IndexChangeEvent>;\n\n  /**\n   * Handle identifier property changes\n   * @param {string} newValue The new value for \"identifier\"\n   * @hidden\n   */\n  @Watch('identifier')\n  handleIdentifierChange(newValue: string): void {\n    this.el.setAttribute('id', newValue || generateId('ads-pagination'));\n  }\n\n  /**\n   * Handles change of currentIndex\n   * Sets the local state based on the new value and the boundaries\n   * Logs warning if new value out of range\n   * @param {number} newValue the new value\n   * @hidden\n   */\n  @Watch('currentIndex')\n  handleCurrentIndexChanged(newValue: number): void {\n    if (!isNaN(newValue)) {\n      const boundedValue = this.indexWithinBoundary(newValue);\n      this.currentIndexInternal = boundedValue;\n      if (boundedValue !== newValue) {\n        showErrorMessage(AdsPaginationErrors.INDEX_OUT_OF_RANGE, this.el);\n      }\n    }\n  }\n\n  /**\n   * Handles change of maxIndices\n   * Sets the local state if the new value is valid\n   * Logs warning if the new value is not valid but does so after a small delay, in case totalItems is also updating\n   * @param {number} newValue the new value\n   * @hidden\n   */\n  @Watch('maxIndices')\n  handleMaxDisplayedIndicesChanged(newValue: number): void {\n    if (!isNaN(newValue) && newValue >= 5 && newValue <= this.totalItems) {\n      this.maxIndicesInternal = newValue;\n    } else {\n      setTimeout(() => {\n        if (newValue < 5 || newValue > this.totalItems) {\n          showErrorMessage(AdsPaginationErrors.INVALID_MAX_INDICES, this.el);\n        }\n      }, 50);\n    }\n  }\n\n  /**\n   * Handles change of totalItems\n   * @hidden\n   */\n  @Watch('totalItems')\n  handleTotalItemsChanged(): void {\n    // in the case that maxIndices updated before totalItems (on the same pass)\n    // but at that time maxIndices was greater than totalItems, we need to allow it to try again\n    // to set the value\n    if (this.maxIndicesInternal !== this.maxIndices && !isNaN(this.maxIndices)) {\n      this.handleMaxDisplayedIndicesChanged(this.maxIndices);\n    }\n  }\n\n  /**\n   * Listener for the event \"indexChange\"\n   * If prop currentIndex is not defined we update the local state\n   * @param {CustomEvent<IndexChangeEvent>} evt the event\n   * @hidden\n   */\n  @Listen('indexChange')\n  onIndexChanged(evt: CustomEvent<IndexChangeEvent>): void {\n    if (isNaN(this.currentIndex)) {\n      this.currentIndexInternal = this.indexWithinBoundary(evt.detail.newIndex);\n    }\n  }\n\n  /**\n   * Returns the current index of the pagination\n   * @return {Promise<number>}  The index of the pagination\n   */\n  @Method()\n  value(): Promise<number> {\n    return Promise.resolve(this.currentIndexInternal);\n  }\n\n  /**\n   * @returns {boolean} true if it should truncate start. False otherwise\n   */\n  private getTruncateStart = (): boolean => {\n    return (\n      this.totalItems > this.maxIndicesInternal && this.currentIndexInternal > Math.floor(this.maxIndicesInternal / 2) + (this.maxIndicesInternal % 2)\n    );\n  };\n\n  /**\n   * @returns {boolean} true if it should truncate end. False otherwise\n   */\n  private getTruncateEnd = (): boolean => {\n    return (\n      this.totalItems > this.maxIndicesInternal &&\n      this.totalItems - this.currentIndexInternal >= Math.floor(this.maxIndicesInternal / 2) + (this.maxIndicesInternal % 2)\n    );\n  };\n\n  /**\n   * Get the starting position\n   * @returns {number} Returns the first index to display\n   */\n  private getStartPosition = (): number => {\n    // has no truncated start\n    if (!this.getTruncateStart()) {\n      return 2;\n    }\n    // has truncated start but not end\n    if (!this.getTruncateEnd()) {\n      return this.totalItems - this.maxIndicesInternal + 3;\n    }\n    // has both\n    const availables = this.maxIndicesInternal - 4;\n    if (availables % 2 !== 0) {\n      return this.currentIndexInternal - Math.floor(availables / 2);\n    }\n    return this.currentIndexInternal - Math.floor((availables - 1) / 2);\n  };\n\n  /**\n   * Get the ending position\n   * @returns {number} Returns the last index to display\n   */\n  private getEndPosition = (): number => {\n    // has no truncated end\n    if (!this.getTruncateEnd()) {\n      return this.totalItems - 1;\n    }\n    // has truncated end but not start\n    if (!this.getTruncateStart()) {\n      return this.maxIndicesInternal - 2;\n    }\n    // both\n    const availables = this.maxIndicesInternal - 4;\n    if (availables % 2 !== 0) {\n      return this.currentIndexInternal + Math.floor(availables / 2);\n    }\n    return this.currentIndexInternal + Math.ceil((availables - 1) / 2);\n  };\n\n  /**\n   * @param {string} index The index in question\n   * @returns {boolean} Returns true if the index is mobile friendly. False otherwise\n   */\n  private isIndexMobileFriendly(index: string) {\n    // On mobile\n    // If active index is the start then render the 2 next items\n    // If active index is the end then render the 2 previous items\n    // If active index is in the middle then render 1 item on each side\n    const mobileElements = 2;\n\n    const num = parseInt(index, 10);\n    return (\n      num === this.currentIndexInternal ||\n      (this.currentIndexInternal === 1 && num <= mobileElements + 1) ||\n      (this.currentIndexInternal === this.totalItems && num >= this.totalItems - mobileElements) ||\n      num === this.currentIndexInternal - Math.round(mobileElements / 2) ||\n      num === this.currentIndexInternal + Math.round(mobileElements / 2)\n    );\n  }\n\n  /**\n   * Get index being active or not\n   * @param {string} index The index in question\n   * @returns {boolean} Returns true if index is active. False otherwise\n   */\n  private isIndexActive = (index: string) => {\n    const num = parseInt(index, 10);\n    return isNaN(num) ? false : num === this.currentIndexInternal;\n  };\n\n  /**\n   * Generate an index element\n   * @param  {number}   index       The index of the element to generate\n   * @param  {Boolean}  isActive    Whether or not to index is active\n   * @param  {Boolean}  isMobileFriendly    Whether or not the index should be rendered on small devices\n   * @return {element}              The generated index element\n   */\n  private getIndexElement(index: string, isActive: boolean, isMobileFriendly: boolean) {\n    const num = parseInt(index, 10);\n    if (isNaN(num)) {\n      return (<AdsPaginationTruncation truncationSymbol={this.truncationSymbol} />) as HTMLElement;\n    }\n    return (\n      <AdsPaginationItem\n        index={num}\n        isActive={isActive}\n        isMobileFriendly={isMobileFriendly}\n        onItemSelect={(evt: MouseEvent) => this.goToIndex(evt, num, AdsPaginationTriggerTypes.INDEX_ELEMENT)}\n      />\n    ) as HTMLElement;\n  }\n\n  /**\n   * Navigates to the given index\n   * @param {Event} evt The event\n   * @param {number} gotoIndex The index to go to\n   * @param {AdsPaginationTriggerTypes} eventTrigger The triggering reason\n   */\n  private goToIndex = (evt: Event, gotoIndex: number, eventTrigger: AdsPaginationTriggerTypes) => {\n    const pageIndex = this.indexWithinBoundary(gotoIndex);\n    this.indexChange.emit({ evt, newIndex: pageIndex, trigger: eventTrigger });\n    if (!isNullOrUndefined(this.indexChangeHandler)) {\n      this.indexChangeHandler({ evt, newIndex: pageIndex, trigger: eventTrigger });\n    }\n  };\n\n  /**\n   * Sets the indices that should be shown\n   * @return {string[]} The list of indices to be shown including any truncation\n   */\n  private getIndices() {\n    const pages: string[] = [];\n\n    if (isNaN(this.totalItems) || this.totalItems <= 0) {\n      return pages;\n    }\n    // add the first item\n    pages.push('1');\n\n    if (this.totalItems > 1) {\n      // truncate start\n      if (this.getTruncateStart()) {\n        pages.push(this.truncationSymbol);\n      }\n      // add all indices between\n\n      const indices = Array.from(Array(this.getEndPosition() - this.getStartPosition() + 1).keys()).map(\n        (value: number) => value + this.getStartPosition()\n      );\n      indices.map((index: number) => pages.push(index.toString()));\n      // truncate end\n      if (this.getTruncateEnd()) {\n        pages.push(this.truncationSymbol);\n      }\n      // add the last item\n      pages.push(this.totalItems.toString());\n    }\n\n    return pages;\n  }\n\n  /**\n   * Returns the index if within boundary,\n   * else returns the edge index which is closest\n   * @param {number}  pageIndex index\n   * @return {number} the index constrained within the boundary\n   */\n  private indexWithinBoundary(pageIndex: number) {\n    let index = pageIndex;\n    if (pageIndex < 1) {\n      index = 1;\n    } else if (pageIndex > this.totalItems) {\n      index = this.totalItems;\n    }\n    return index;\n  }\n\n  protected componentWillLoad(): void {\n    Pipeline.addComponent(this.el);\n\n    if (!isNaN(this.totalItems) && this.totalItems > 0) {\n      // initialise current index state based on prop. Log warning if value out of range\n      if (!isNaN(this.currentIndex)) {\n        const boundedIndex = this.indexWithinBoundary(this.currentIndex);\n        this.currentIndexInternal = boundedIndex;\n        if (boundedIndex !== this.currentIndex) {\n          showErrorMessage(AdsPaginationErrors.INDEX_OUT_OF_RANGE, this.el);\n        }\n      }\n      // initialise max displayed indices and log warning if invalid\n      if (!isNaN(this.maxIndices) && this.maxIndices >= 5 && this.maxIndices <= this.totalItems) {\n        this.maxIndicesInternal = this.maxIndices;\n      } else if (!isNaN(this.maxIndices)) {\n        showErrorMessage(AdsPaginationErrors.INVALID_MAX_INDICES, this.el);\n      }\n    }\n  }\n\n  protected disconnectedCallback(): void {\n    Pipeline.removeComponent(this.el);\n  }\n\n  protected render(): VNode {\n    const previousButtonOpts: {\n      type: string;\n      disabled?: boolean;\n    } = { type: 'button' };\n    const previousButtonClasses = ['c-pagination-item', 'c-pagination-action', 'c-pagination-action--previous'];\n    if (this.currentIndexInternal === 1) {\n      previousButtonOpts['disabled'] = true;\n      previousButtonClasses.push('is-disabled');\n    }\n\n    const nextButtonOpts: {\n      type: string;\n      disabled?: boolean;\n    } = { type: 'button' };\n    const nextButtonClasses = ['c-pagination-item', 'c-pagination-action', 'c-pagination-action--next'];\n    if (this.currentIndexInternal === this.totalItems) {\n      nextButtonOpts['disabled'] = true;\n      nextButtonClasses.push('is-disabled');\n    }\n\n    const previousIndex = this.currentIndexInternal - 1 > 0 ? this.currentIndexInternal - 1 : -1;\n    const nextIndex = this.currentIndexInternal + 1;\n\n    const hostAttributes = {\n      role: 'navigation',\n      'aria-label': this.srLabel,\n    };\n\n    return (\n      <nav class=\"c-pagination\" {...hostAttributes}>\n        <ul class=\"c-pagination__items\" role=\"list\">\n          <li class=\"c-pagination__item is-mobile-friendly\" role=\"presentation\">\n            <AdsPaginationNavigationButton\n              navigationType={AdsPaginationNavigationButtonTypes.PREVIOUS_BUTTON}\n              currentActiveIndex={this.currentIndexInternal}\n              totalNumOfIndices={this.totalItems}\n              onButtonClick={(evt) => this.goToIndex(evt, previousIndex, AdsPaginationTriggerTypes.PREVIOUS_BUTTON)}\n            />\n          </li>\n          {this.getIndices().map((item) => this.getIndexElement(item, this.isIndexActive(item), this.isIndexMobileFriendly(item)))}\n          <li class=\"c-pagination__item is-mobile-friendly\" role=\"presentation\">\n            <AdsPaginationNavigationButton\n              navigationType={AdsPaginationNavigationButtonTypes.NEXT_BUTTON}\n              currentActiveIndex={this.currentIndexInternal}\n              totalNumOfIndices={this.totalItems}\n              onButtonClick={(evt) => this.goToIndex(evt, nextIndex, AdsPaginationTriggerTypes.NEXT_BUTTON)}\n            />\n          </li>\n        </ul>\n      </nav>\n    ) as VNode;\n  }\n}\n","@use 'sass:math';\n\n@import 'core';\n\n/**\n * @prop --ads-pagination-action-background-color: Default background color\n * @prop --ads-pagination-action-background-disabled: Background color on disabled\n * @prop --ads-pagination-action-background-hover: Background color on hover\n\n * @prop --ads-pagination-action-border-color: Default border color\n * @prop --ads-pagination-action-border-color-disabled: Border color on disabled\n * @prop --ads-pagination-action-border-color-hover: Default border color on hover\n * @prop --ads-pagination-action-color: Action fill color\n * @prop --ads-pagination-action-color-disabled: Action fill color on disabled\n * @prop --ads-pagination-action-color-hover: Action fill color on hover\n\n * @prop --ads-pagination-disabled-opacity: Disabled opacity value\n\n * @prop --ads-pagination-index-background-color: Index background color\n * @prop --ads-pagination-index-background-color-active: Index background color on active\n * @prop --ads-pagination-index-background-color-hover: Index background color on hover\n\n * @prop --ads-pagination-index-color: Index text color\n * @prop --ads-pagination-index-color-active: Index text color on active\n * @prop --ads-pagination-index-color-hover: Index text color on hover\n\n * @prop --ads-pagination-truncation-color: Truncation text color\n */\n\n$ads-pagination-action-size: 40px;\n$ads-pagination-action-border-radius: math.div($ads-pagination-action-size, 2);\n\n$ads-pagination-index-size: 30px;\n$ads-pagination-index-border-radius: math.div($ads-pagination-index-size, 2);\n\n:host {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n}\n\n:host([theme='default']) {\n  @include ads-vars-component-pagination-default;\n}\n\n:host([theme='dark']) {\n  @include ads-vars-component-pagination-dark;\n}\n\n:host([dir='ltr']) {\n  @include ads-vars-component-pagination-ltr;\n}\n\n:host([dir='rtl']) {\n  @include ads-vars-component-pagination-rtl;\n}\n\n.sr-only {\n  border: 0;\n  clip: rect(0 0 0 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.c-pagination {\n  font-family: var(--ads-font-family);\n  display: block;\n  position: relative;\n\n  &__items {\n    align-items: center;\n    display: flex;\n    flex-direction: row;\n    justify-content: center;\n    list-style-type: none;\n    margin: 0;\n    padding-inline-start: 0;\n  }\n\n  &__item {\n    display: none;\n    font-family: inherit;\n\n    &.is-mobile-friendly {\n      display: block;\n    }\n\n    @include media-query(sm-up) {\n      display: block;\n    }\n  }\n\n  &-item {\n    appearance: none;\n    -moz-appearance: none;\n    -webkit-appearance: none;\n    border-style: solid;\n    display: block;\n    font-family: inherit !important;\n    padding: 0;\n    position: relative;\n    text-align: center;\n    text-indent: 0;\n\n    & > * {\n      display: inline;\n    }\n  }\n\n  &-action {\n    align-items: center;\n    background-color: var(--ads-pagination-action-background-color, $ads-pagination-action-background-color);\n    border-color: var(--ads-pagination-action-border-color, $ads-pagination-action-border-color);\n    border-radius: $ads-pagination-action-border-radius;\n    border-width: 1px;\n    cursor: pointer;\n    display: flex;\n    fill: var(--ads-pagination-action-color, $ads-pagination-action-color);\n    height: $ads-pagination-action-size;\n    justify-content: center;\n    min-width: $ads-pagination-action-size;\n    transform: rotate(var(--ads-pagination-action-rotate, $ads-pagination-action-rotate-ltr));\n\n    &:focus,\n    &:hover {\n      background-color: var(--ads-pagination-action-background-color-hover, $ads-pagination-action-background-color-hover);\n      border-color: var(--ads-pagination-action-border-color-hover, $ads-pagination-action-border-color-hover);\n      fill: var(--ads-pagination-action-color-hover, $ads-pagination-action-color-hover);\n    }\n\n    &.is-disabled {\n      background-color: var(--ads-pagination-action-background-color-disabled, $ads-pagination-action-background-color-disabled);\n      border-color: var(--ads-pagination-action-border-color-disabled, $ads-pagination-action-border-color-disabled);\n      cursor: default;\n      fill: var(--ads-pagination-action-color-disabled, $ads-pagination-action-color-disabled);\n      opacity: var(--ads-pagination-disabled-opacity, $ads-pagination-disabled-opacity);\n    }\n\n    svg {\n      fill: inherit;\n      height: 16px;\n      width: 16px;\n    }\n  }\n\n  &-index {\n    background-color: var(--ads-pagination-index-background-color, $ads-pagination-index-background-color);\n    border-radius: $ads-pagination-index-border-radius;\n    border-width: 0;\n    color: var(--ads-pagination-index-color, $ads-pagination-index-color);\n    cursor: pointer;\n    font-size: 14px;\n    height: $ads-pagination-index-size;\n    margin: 0 5px;\n    min-width: $ads-pagination-index-size;\n\n    @include media-query(sm-up) {\n      margin: 0 8px;\n    }\n\n    &:focus,\n    &:hover {\n      background-color: var(--ads-pagination-index-background-color-hover, $ads-pagination-index-background-color-hover);\n      color: var(--ads-pagination-index-color-hover, $ads-pagination-index-color-hover);\n    }\n\n    &.is-active {\n      background-color: var(--ads-pagination-index-background-color-active, $ads-pagination-index-background-color-active);\n      color: var(--ads-pagination-index-color-active, $ads-pagination-index-color-active);\n      cursor: default;\n    }\n  }\n\n  &-truncation {\n    color: var(--ads-pagination-truncation-color, $ads-pagination-truncation-color);\n    cursor: initial;\n\n    &:hover {\n      color: var(--ads-pagination-truncation-color, $ads-pagination-truncation-color);\n    }\n  }\n}\n","import { EventTypes, environment, version } from './AppInsights/constants';\nimport { WindowGlobal } from '../types/globalTypes';\n\n/**\n * Send custom event to AppInsights\n * @param  {string} component   The reference to the component\n * @returns {void}\n * @hidden\n */\nconst sendCustomEvent = (component: HTMLElement): void => {\n  try {\n    (window as WindowGlobal)['AppInsights'].trackEvent(\n      {\n        name: EventTypes.COMPONENT_REGISTER,\n      },\n      {\n        component: component.tagName.toLowerCase(),\n        componentId: component.id,\n        environment,\n        version,\n        host: window.location.host,\n      }\n    );\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.log('[APP INSIGHTS] Could not send event', err);\n  }\n};\n\n/**\n * Add the component to the pipeline and send component events to AppInsights\n * @param   {HTMLElement} component  The component element\n * @returns {void}\n * @hidden\n */\nexport function add(component: HTMLElement): void {\n  (window as WindowGlobal)['ArmDesignSystem'].pipeline.set(component.id, component.tagName.toLowerCase());\n\n  // Disable sending events to AppInsights during unit tests\n  if (!(window as WindowGlobal)['ArmDesignSystem'].config.getBoolean('_isTesting')) {\n    sendCustomEvent(component);\n  }\n}\n\n/**\n * Remove the component from the pipeline\n * @param   {HTMLElement} component  The component element\n * @returns {void}\n * @hidden\n */\nexport function remove(component: HTMLElement): void {\n  (window as WindowGlobal)['ArmDesignSystem'].pipeline.delete(component.id);\n}\n","import * as Pipeline from '../global/pipeline';\n\n/**\n * Add a component to the ADS pipeline\n * @param  {HTMLElement} component   The component element\n * @return {void}\n */\nexport const addComponent = (component: HTMLElement): void => {\n  Pipeline.add(component);\n};\n\n/**\n * Remove a component from the ADS pipeline\n * @param  {HTMLElement} component   The component element\n * @return {void}\n */\nexport const removeComponent = (component: HTMLElement): void => {\n  Pipeline.remove(component);\n};\n","import { Breakpoint, ButtonLevel, ButtonLevels, ButtonSize, ButtonSizes, WindowGlobal } from '../types/globalTypes';\nimport { EventTypes, environment, version } from '../global/AppInsights/constants';\n\nexport type ShadowRootLegacy = ShadowRoot & { tagName: string };\n\n/**\n * Generates a unique component ID\n * @param   {string}  namespace   The unique id's namespace (e.g. ads)\n * @returns {string}              A generated random id (e.g. ads-1234)\n */\nexport const generateId = (namespace = 'ads'): string => {\n  return `${namespace}-${generateRandomString()}`;\n};\n\n/**\n * Generates a randon string\n * @returns {string}              A generated random string\n */\nexport const generateRandomString = (): string => {\n  return Math.random().toString(36).substr(2, 16);\n};\n\n/**\n * Generates a size class based on a button size\n * @param {ButtonSize}  size    The size of the button (e.g. ButtonSizes.SMALL)\n * @returns {string}            The button size class (e.g. 'is-small')\n */\nexport const getClassFromSize = (size: ButtonSize): string => {\n  switch (size) {\n    case ButtonSizes.MEDIUM:\n      return 'is-medium';\n    case ButtonSizes.SMALL:\n      return 'is-small';\n    default:\n      return '';\n  }\n};\n\n/**\n * Generates a level class based on button a level\n * @param {ButtonLevel} level   The level of the button (e.g. ButtonLevels.PRIMARY)\n * @returns {string}            The button level class (e.g. 'is-primary')\n */\nexport const getClassFromLevel = (level: ButtonLevel): string => {\n  switch (level) {\n    case ButtonLevels.PRIMARY:\n      return 'is-primary';\n    case ButtonLevels.SECONDARY:\n      return 'is-secondary';\n    case ButtonLevels.TERTIARY:\n      return 'is-tertiary';\n    default:\n      return '';\n  }\n};\n\n/**\n * Given a breakpoint it will return the appropriate class for the media-queries (breakpoints-up).\n * @param {Breakpoint} bp The breakpoint.\n * @returns {string} The class.\n */\nexport const getMediaQueryBreakpointClassUp = (bp: Breakpoint): string => `${bp.toString()}-up`;\n\n/**\n * Given a breakpoint it will return the appropriate class for the media-queries (breakpoints-down).\n * @param {Breakpoint} bp The breakpoint.\n * @returns {string} The class.\n */\nexport const getMediaQueryBreakpointClassDown = (bp: Breakpoint): string => `${bp.toString()}-down`;\n\n/**\n * Display an ADS warning with the given message\n * @param {string}  message       The error message to show\n * @param {string}  component     The reference to the component\n * @returns {void}\n */\nexport const showErrorMessage = (message: string, component: HTMLElement): void => {\n  try {\n    (window as WindowGlobal)['AppInsights'].trackEvent(\n      {\n        name: EventTypes.ADS_CONSOLE_ERROR as string,\n      },\n      {\n        component: component.tagName.toLowerCase(),\n        componentId: component.id,\n        message: message,\n        environment,\n        version,\n        host: window.location.host,\n      }\n    );\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.log('[APP INSIGHTS] Could not send console error', err);\n  }\n  // eslint-disable-next-line no-console\n  console.warn(`ADS-Warning: ${message}`);\n};\n","import { SVGIconData } from '../components/core/interfaces/Icon';\nimport { h } from '@stencil/core';\n\n/**\n * Generates an SVG image\n * @param   {IconData}       icon        The SVG image properties\n * @param   {string}            className   The SVG image class name\n * @returns {HTMLElement}                   The generated SVG image\n */\nexport const generateSVGImage = (icon: SVGIconData, className?: string): HTMLElement => {\n  return (\n    <svg class={className ? className : null} xmlns=\"http://www.w3.org/2000/svg\" viewBox={`0 0 ${icon.width} ${icon.height}`}>\n      <path d={icon.data} />\n    </svg>\n  ) as HTMLElement;\n};\n"],"sourceRoot":""}