{"version":3,"file":"mdb-angular-ui-kit-ripple.mjs","sources":["../../../projects/mdb-angular-ui-kit/ripple/ripple-utils.ts","../../../projects/mdb-angular-ui-kit/ripple/ripple.directive.ts","../../../projects/mdb-angular-ui-kit/ripple/ripple.module.ts","../../../projects/mdb-angular-ui-kit/ripple/mdb-angular-ui-kit-ripple.ts"],"sourcesContent":["const DEFAULT_RIPPLE_COLOR = [0, 0, 0];\n\nexport function durationToMsNumber(time: string): number {\n  return Number(time.replace('ms', '').replace('s', '000'));\n}\n\nexport function colorToRGB(color: any): number[] {\n  function hexToRgb(color: any): any {\n    const HEX_COLOR_LENGTH = 7;\n    const IS_SHORT_HEX = color.length < HEX_COLOR_LENGTH;\n    if (IS_SHORT_HEX) {\n      color = `#${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;\n    }\n    return [\n      parseInt(color.substr(1, 2), 16),\n      parseInt(color.substr(3, 2), 16),\n      parseInt(color.substr(5, 2), 16),\n    ];\n  }\n\n  function namedColorsToRgba(color: any): any {\n    const tempElem = document.body.appendChild(document.createElement('fictum'));\n    const flag = 'rgb(1, 2, 3)';\n    tempElem.style.color = flag;\n    if (tempElem.style.color !== flag) {\n      return DEFAULT_RIPPLE_COLOR;\n    }\n    tempElem.style.color = color;\n    if (tempElem.style.color === flag || tempElem.style.color === '') {\n      return DEFAULT_RIPPLE_COLOR;\n    } // color parse failed\n    color = getComputedStyle(tempElem).color;\n    document.body.removeChild(tempElem);\n    return color;\n  }\n\n  function rgbaToRgb(color: any): any {\n    color = color.match(/[.\\d]+/g).map((a) => +Number(a));\n    color.length = 3;\n    return color;\n  }\n\n  if (color.toLowerCase() === 'transparent') {\n    return DEFAULT_RIPPLE_COLOR;\n  }\n  if (color[0] === '#') {\n    return hexToRgb(color);\n  }\n  if (color.indexOf('rgb') === -1) {\n    color = namedColorsToRgba(color);\n  }\n  if (color.indexOf('rgb') === 0) {\n    return rgbaToRgb(color);\n  }\n\n  return DEFAULT_RIPPLE_COLOR;\n}\n\nexport function getDiameter({\n  offsetX,\n  offsetY,\n  height,\n  width,\n}: {\n  [key: string]: number;\n}): number {\n  const top = offsetY <= height / 2;\n  const left = offsetX <= width / 2;\n  const pythagorean = (sideA: number, sideB: number) => Math.sqrt(sideA ** 2 + sideB ** 2);\n\n  const positionCenter = offsetY === height / 2 && offsetX === width / 2;\n  // mouse position on the quadrants of the coordinate system\n  const quadrant = {\n    first: top === true && left === false,\n    second: top === true && left === true,\n    third: top === false && left === true,\n    fourth: top === false && left === false,\n  };\n\n  const getCorner = {\n    topLeft: pythagorean(offsetX, offsetY),\n    topRight: pythagorean(width - offsetX, offsetY),\n    bottomLeft: pythagorean(offsetX, height - offsetY),\n    bottomRight: pythagorean(width - offsetX, height - offsetY),\n  };\n\n  let diameter = 0;\n\n  if (positionCenter || quadrant.fourth) {\n    diameter = getCorner.topLeft;\n  } else if (quadrant.third) {\n    diameter = getCorner.topRight;\n  } else if (quadrant.second) {\n    diameter = getCorner.bottomRight;\n  } else if (quadrant.first) {\n    diameter = getCorner.bottomLeft;\n  }\n\n  return diameter * 2;\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, HostBinding, HostListener, Input, Renderer2 } from '@angular/core';\nimport { colorToRGB, durationToMsNumber, getDiameter } from './ripple-utils';\n\nconst TRANSITION_BREAK_OPACITY = 0.5;\n\nconst GRADIENT =\n  'rgba({{color}}, 0.2) 0, rgba({{color}}, 0.3) 40%, rgba({{color}}, 0.4) 50%, rgba({{color}}, 0.5) 60%, rgba({{color}}, 0) 70%';\nconst BOOTSTRAP_COLORS = [\n  'primary',\n  'secondary',\n  'success',\n  'danger',\n  'warning',\n  'info',\n  'light',\n  'dark',\n];\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[mdbRipple]',\n  exportAs: 'mdbRipple',\n  standalone: false,\n})\nexport class MdbRippleDirective {\n  @Input()\n  get rippleCentered(): boolean {\n    return this._rippleCentered;\n  }\n  set rippleCentered(value: boolean) {\n    this._rippleCentered = coerceBooleanProperty(value);\n  }\n  private _rippleCentered = false;\n\n  @Input() rippleColor = '';\n  @Input() rippleDuration = '500ms';\n  @Input() rippleRadius = 0;\n\n  @Input()\n  get rippleUnbound(): boolean {\n    return this._rippleUnbound;\n  }\n  set rippleUnbound(value: boolean) {\n    this._rippleUnbound = coerceBooleanProperty(value);\n  }\n  private _rippleUnbound = false;\n\n  private _rippleInSpan = false;\n\n  private _rippleTimer = null;\n\n  constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {}\n\n  get host(): HTMLElement {\n    return this._elementRef.nativeElement;\n  }\n\n  @HostBinding('class.ripple-surface') ripple = true;\n\n  @HostListener('click', ['$event'])\n  _createRipple(event: any): void {\n    const { layerX, layerY } = event;\n    const offsetX = layerX;\n    const offsetY = layerY;\n    const height = this.host.offsetHeight;\n    const width = this.host.offsetWidth;\n    const duration = durationToMsNumber(this.rippleDuration);\n    const diameterOptions = {\n      offsetX: this.rippleCentered ? height / 2 : offsetX,\n      offsetY: this.rippleCentered ? width / 2 : offsetY,\n      height,\n      width,\n    };\n    const diameter = getDiameter(diameterOptions);\n    const radiusValue = this.rippleRadius || diameter / 2;\n\n    const opacity = {\n      delay: duration * TRANSITION_BREAK_OPACITY,\n      duration: duration - duration * TRANSITION_BREAK_OPACITY,\n    };\n\n    const styles = {\n      left: this.rippleCentered ? `${width / 2 - radiusValue}px` : `${offsetX - radiusValue}px`,\n      top: this.rippleCentered ? `${height / 2 - radiusValue}px` : `${offsetY - radiusValue}px`,\n      height: `${this.rippleRadius * 2 || diameter}px`,\n      width: `${this.rippleRadius * 2 || diameter}px`,\n      transitionDelay: `0s, ${opacity.delay}ms`,\n      transitionDuration: `${duration}ms, ${opacity.duration}ms`,\n    };\n\n    const rippleHTML = this._renderer.createElement('div');\n\n    if (this.host.tagName.toLowerCase() === 'input') {\n      this._createWrapperSpan();\n    }\n\n    this._createHTMLRipple(this.host, rippleHTML, styles);\n    this._removeHTMLRipple(rippleHTML, duration);\n  }\n\n  private _createWrapperSpan(): void {\n    const parent = this._renderer.parentNode(this.host);\n    this._rippleInSpan = true;\n    if (parent.tagName.toLowerCase() === 'span' && parent.classList.contains('ripple-surface')) {\n      this._elementRef.nativeElement = parent;\n    } else {\n      const wrapper = this._renderer.createElement('span');\n\n      this._renderer.addClass(wrapper, 'ripple-surface');\n      this._renderer.addClass(wrapper, 'input-wrapper');\n\n      this._renderer.setStyle(wrapper, 'border', 0);\n\n      const shadow = getComputedStyle(this.host).boxShadow;\n      this._renderer.setStyle(wrapper, 'box-shadow', shadow);\n\n      // Put element as child\n      parent.replaceChild(wrapper, this.host);\n      wrapper.appendChild(this.host);\n      this._elementRef.nativeElement = wrapper;\n    }\n    this.host.focus();\n  }\n\n  _removeWrapperSpan() {\n    const child = this.host.firstChild;\n    this.host.replaceWith(child);\n    this._elementRef.nativeElement = child;\n    this.host.focus();\n    this._rippleInSpan = false;\n  }\n\n  private _createHTMLRipple(wrapper: HTMLElement, ripple: HTMLElement, styles: any): void {\n    Object.keys(styles).forEach((property) => (ripple.style[property] = styles[property]));\n    this._renderer.addClass(ripple, 'ripple-wave');\n\n    if (this.rippleColor !== '') {\n      this._removeOldColorClasses(wrapper);\n      this._addColor(ripple, wrapper);\n    }\n\n    this._toggleUnbound(wrapper);\n    this._appendRipple(ripple, wrapper);\n  }\n\n  private _removeHTMLRipple(ripple: HTMLElement, duration: number): void {\n    if (this._rippleTimer) {\n      clearTimeout(this._rippleTimer);\n      this._rippleTimer = null;\n    }\n    this._rippleTimer = setTimeout(() => {\n      if (ripple) {\n        ripple.remove();\n        this.host.querySelectorAll('.ripple-wave').forEach((rippleEl) => {\n          rippleEl.remove();\n        });\n        if (this._rippleInSpan && this.host.classList.contains('input-wrapper')) {\n          this._removeWrapperSpan();\n        }\n      }\n    }, duration);\n  }\n\n  _appendRipple(target: HTMLElement, parent: HTMLElement): void {\n    const FIX_ADD_RIPPLE_EFFECT = 50; // delay for active animations\n    this._renderer.appendChild(parent, target);\n    setTimeout(() => {\n      this._renderer.addClass(target, 'active');\n    }, FIX_ADD_RIPPLE_EFFECT);\n  }\n\n  _toggleUnbound(target: HTMLElement): void {\n    if (this.rippleUnbound) {\n      this._renderer.addClass(target, 'ripple-surface-unbound');\n    } else {\n      this._renderer.removeClass(target, 'ripple-surface-unbound');\n    }\n  }\n\n  _addColor(target: HTMLElement, parent: HTMLElement): void {\n    const isBootstrapColor = BOOTSTRAP_COLORS.find(\n      (color) => color === this.rippleColor.toLowerCase()\n    );\n\n    if (isBootstrapColor) {\n      this._renderer.addClass(parent, `${'ripple-surface'}-${this.rippleColor.toLowerCase()}`);\n    } else {\n      const rgbValue = colorToRGB(this.rippleColor).join(',');\n      const gradientImage = GRADIENT.split('{{color}}').join(`${rgbValue}`);\n      target.style.backgroundImage = `radial-gradient(circle, ${gradientImage})`;\n    }\n  }\n\n  _removeOldColorClasses(target: HTMLElement): void {\n    const REGEXP_CLASS_COLOR = new RegExp(`${'ripple-surface'}-[a-z]+`, 'gi');\n    const PARENT_CLASSS_COLOR = target.classList.value.match(REGEXP_CLASS_COLOR) || [];\n    PARENT_CLASSS_COLOR.forEach((className) => {\n      this._renderer.removeClass(target, className);\n    });\n  }\n\n  static ngAcceptInputType_rippleCentered: BooleanInput;\n  static ngAcceptInputType_rippleUnbound: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { MdbRippleDirective } from './ripple.directive';\n\n@NgModule({\n  declarations: [MdbRippleDirective],\n  imports: [],\n  exports: [MdbRippleDirective],\n})\nexport class MdbRippleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}