{"version":3,"file":"rzlProgress-BAJa7b4v.cjs","names":[],"sources":["../src/progress-bar/constants/index.ts","../src/progress-bar/utils/rzlProgress.ts"],"sourcesContent":["import type { RzlProgressType, ElementProgress } from \"../types\";\n\n/** @internal */\nexport const defaultOptionsProgressBar = {\n  easing: \"ease\",\n  showSpinner: true,\n  minimum: 0.08,\n  maximum: 1,\n  // eslint-disable-next-line quotes\n  template: `<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>`,\n  positionUsing: \"\",\n  speed: 200,\n  trickle: true,\n  trickleSpeed: 200,\n  // eslint-disable-next-line quotes\n  barSelector: '[role=\"bar\"]',\n  // eslint-disable-next-line quotes\n  spinnerSelector: '[role=\"spinner\"]',\n  parent: \"body\",\n  direction: \"ltr\"\n} as const satisfies RzlProgressType;\n\n/** @internal */\nexport const DATA_ATTRIBUTE = {\n  BUTTON_SUBMIT: \"data-submit-rzl-progress-bar\",\n  CHILD_BUTTON_SUBMIT: \"data-child-submit-rzl-progress-bar\",\n  PREVENT_RZL_PROGRESS: \"data-prevent-rzl-progress-bar\",\n  IS_PREVENT_RZL_PROGRESS: (element?: ElementProgress | null) => {\n    return (\n      element?.getAttribute(DATA_ATTRIBUTE.PREVENT_RZL_PROGRESS) === \"true\"\n    );\n  },\n  IS_BTN_SUBMIT_RZL_PROGRESS: (element?: ElementProgress | null) => {\n    return element?.getAttribute(DATA_ATTRIBUTE.BUTTON_SUBMIT) === \"true\";\n  },\n  IS_CHILD_BTN_SUBMIT_RZL_PROGRESS: (\n    element?: Element | ElementProgress | null\n  ) => {\n    return element?.getAttribute(DATA_ATTRIBUTE.CHILD_BUTTON_SUBMIT) === \"true\";\n  },\n  IS_VALID_BTN_SUBMIT_RZL_PROGRESS: (\n    element?: Element | ElementProgress | null\n  ): element is HTMLButtonElement => {\n    if (!element) return false;\n\n    return (\n      element &&\n      element instanceof HTMLButtonElement &&\n      element.tagName.toLowerCase() == \"button\" &&\n      element.getAttribute(DATA_ATTRIBUTE.BUTTON_SUBMIT) === \"true\"\n    );\n  },\n  FORM: {\n    IS_METHOD_POST_FORM: (form?: HTMLFormElement | null) => {\n      return form?.getAttribute(\"method\")?.toLowerCase() === \"post\";\n    },\n    IS_AUTO_GENERATE_ERROR_NEXTJS_SERVER_ACTION: (\n      form?: HTMLFormElement | null\n    ) => {\n      return (\n        form?.getAttribute(\"action\")?.toLowerCase().replace(\"\\\\'r\", \"'r\") ===\n        DATA_ATTRIBUTE.FORM.ERROR_NEXTJS_SERVER_ACTION\n      );\n    },\n    FIXING_AND_LOWERCASE_TEXT: (value?: string) => {\n      return value?.toLowerCase().replace(\"\\\\'r\", \"'r\").trim();\n    },\n    ERROR_NEXTJS_SERVER_ACTION:\n      \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you're trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n        .toLowerCase()\n        .replace(\"\\\\'r\", \"'r\")\n  }\n} as const;\n\n/** @internal */\nexport const SETTING_CONFIGS_PROGRESS_BAR = {\n  MAXIMUM_COUNT_LIMIT_INTERVAL: 200\n} as const;\n\n/** @internal */\nexport const defaultPropsInitRzlNextProgressBar = {\n  // showProgressOnInitial = {\n  //   delay: 100,\n  //   enabled: true\n  // },\n  classNameIfLoading: \"on_processing\",\n  spinnerSpeed: 400,\n  spinnerSize: \"3px\",\n  spinnerEase: \"linear\",\n  color: \"linear-gradient(45deg, #b656cb, #29f)\",\n  height: \"3px\",\n  zIndex: 9999,\n  showAtBottom: false,\n  startPosition: 0,\n  delay: 0,\n  stopDelay: 0,\n  showForHashAnchor: true,\n  options: defaultOptionsProgressBar,\n\n  //? Options for PagesDir type.\n  disableSameURL: false,\n  shallowRouting: false\n} as const;\n\n/** @internal */\nexport const DATA_RZL_PROGRESS = {\n  MAIN_ID: \"rzl-progress\",\n  ON_BUSY: \"rzl-progress-busy\",\n  CUSTOM_PARENT: \"rzl-progress-custom-parent\",\n  STYLE_ELEMENT: {\n    MAIN_IDENTITY: { KEY: \"data-styles\", VALUE: \"rzlzone-progress_bar\" },\n    KEY_DATA: {\n      CLASS_NAME_LOADING: \"data-classname-loading\"\n    }\n  }\n} as const;\n","/* eslint-disable quotes */\n\nimport type { AnyFunction } from \"@rzl-zone/ts-types-plus\";\nimport {\n  isBoolean,\n  isFunction,\n  isInteger,\n  isNil,\n  isNonEmptyString,\n  isNumber,\n  isPlainObject,\n  isServer,\n  isString,\n  isUndefined\n} from \"@rzl-zone/utils-js/predicates\";\n\nimport {\n  DATA_RZL_PROGRESS,\n  defaultPropsInitRzlNextProgressBar\n} from \"../constants\";\nimport type { RzlProgressEasing, RzlProgressOptions } from \"../types\";\n\nconst { MAIN_IDENTITY, KEY_DATA } = DATA_RZL_PROGRESS.STYLE_ELEMENT;\n\n/** @internal */\nexport function clamp(n: number, min: number, max: number): number {\n  return Math.max(min, Math.min(n, max));\n}\n\n/** @internal */\nexport function toBarPercent(n: number, direction: \"ltr\" | \"rtl\"): number {\n  return direction === \"rtl\" ? (1 - n) * 100 : (-1 + n) * 100;\n}\n\n/** @internal */\nexport function css(\n  element: HTMLElement,\n  properties: string | Partial<CSSStyleDeclaration>,\n  value?: string\n): void {\n  if (isNonEmptyString(properties)) {\n    if (!isUndefined(value)) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      element.style[properties as any] = value;\n    }\n  } else {\n    for (const prop in properties) {\n      if (Object.prototype.hasOwnProperty.call(properties, prop)) {\n        const val = properties[prop];\n        if (!isUndefined(val)) {\n          element.style[prop] = val;\n        }\n      }\n    }\n  }\n}\n\n/** @internal */\nexport function addClass(element: HTMLElement, name: string): void {\n  element.classList.add(name);\n}\n\n/** @internal */\nexport function removeClass(element: HTMLElement, name: string): void {\n  element.classList.remove(name);\n}\n\n/** @internal */\nexport function removeElement(element: HTMLElement | null): void {\n  if (element && element.parentNode) {\n    element.parentNode.removeChild(element);\n  }\n}\n\n/** @internal */\nexport const isValidEasingValue = (\n  value: string\n): value is RzlProgressEasing => {\n  if (!isString(value)) return false;\n  const presets = [\"linear\", \"ease\", \"ease-in\", \"ease-out\", \"ease-in-out\"];\n  return presets.includes(value);\n};\n\n/** @internal */\nexport function isValidParentValue(\n  value: unknown\n): value is HTMLElement | string {\n  const validHtmlElement =\n    typeof HTMLElement === \"function\" && value instanceof HTMLElement;\n  if (isString(value) || validHtmlElement) return true;\n  return false;\n}\n\n/** @internal */\nexport class RzlProgress {\n  /** * ***Default options settings.*** */\n  static settings: Required<RzlProgressOptions> = {\n    classNameIfLoading:\n      defaultPropsInitRzlNextProgressBar[\"classNameIfLoading\"],\n    minimum: 0.08,\n    maximum: 1,\n    template: `<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>`,\n    easing: \"linear\",\n    positionUsing: \"\",\n    speed: 200,\n    trickle: true,\n    trickleSpeed: 200,\n    showSpinner: true,\n    barSelector: '[role=\"bar\"]',\n    spinnerSelector: '[role=\"spinner\"]',\n    parent: \"body\",\n    direction: \"ltr\"\n  };\n\n  static status: number | null = null;\n  /** * ***Queue for animation functions.*** */\n  private static pending: Array<(next: VoidFunction) => void> = [];\n  private static isPaused: boolean = false;\n\n  /** * ***Configure the `RzlProgress` behavior.*** */\n  static configure(options: Partial<RzlProgressOptions>): typeof RzlProgress {\n    if (!isPlainObject(options)) options = this.settings;\n\n    let {\n      barSelector,\n      direction,\n      easing,\n      maximum,\n      minimum,\n      speed,\n      trickleSpeed,\n      trickle,\n      showSpinner,\n      template,\n      parent,\n      positionUsing,\n      spinnerSelector\n    } = options;\n\n    if (!isUndefined(parent) && !isValidParentValue(parent))\n      parent = this.settings.parent;\n\n    if (!isUndefined(positionUsing) && !isString(positionUsing))\n      positionUsing = this.settings.positionUsing;\n    if (!isUndefined(spinnerSelector) && !isString(spinnerSelector))\n      spinnerSelector = this.settings.spinnerSelector;\n    if (!isUndefined(template) && !isString(template))\n      template = this.settings.template;\n\n    if (!isUndefined(showSpinner) && !isBoolean(showSpinner))\n      showSpinner = this.settings.showSpinner;\n    if (!isUndefined(trickle) && !isBoolean(trickle))\n      trickle = this.settings.trickle;\n\n    if (!isUndefined(speed) && !isInteger(speed)) speed = this.settings.speed;\n    if (!isUndefined(minimum) && !isNumber(minimum))\n      minimum = this.settings.minimum;\n    if (!isUndefined(maximum) && !isNumber(maximum))\n      maximum = this.settings.maximum;\n\n    if (!isUndefined(trickleSpeed) && !isInteger(trickleSpeed))\n      trickleSpeed = this.settings.trickleSpeed;\n    if (!isUndefined(barSelector) && !isString(barSelector))\n      barSelector = this.settings.barSelector;\n\n    if (\n      !isUndefined(direction) &&\n      !(isString(direction) && [\"ltr\", \"rtl\"].includes(direction))\n    ) {\n      direction = this.settings.direction;\n    }\n\n    if (!isUndefined(easing) && !isValidEasingValue(easing)) {\n      easing = this.settings.easing;\n    }\n\n    Object.assign(this.settings, {\n      barSelector,\n      direction,\n      easing,\n      maximum,\n      minimum,\n      speed,\n      trickleSpeed,\n      trickle,\n      showSpinner,\n      template,\n      parent,\n      positionUsing,\n      spinnerSelector\n    });\n\n    return this;\n  }\n\n  /** * ***Check if `RzlProgress` has started.*** */\n  static isStarted(): boolean {\n    return typeof this.status === \"number\";\n  }\n\n  /** * ***Set the progress status.*** */\n  static set(n: number): typeof RzlProgress {\n    if (!isNumber(n)) n = 0;\n\n    if (this.isPaused) return this;\n\n    const started = this.isStarted();\n\n    n = clamp(n, this.settings.minimum, this.settings.maximum);\n    this.status = n === this.settings.maximum ? null : n;\n\n    const progress = this.render(!started);\n    if (progress) {\n      const bar = progress.querySelector<HTMLElement>(\n        this.settings.barSelector\n      );\n      const speed = this.settings.speed;\n      const ease = this.settings.easing;\n\n      progress.offsetWidth;\n\n      this.queue((next) => {\n        if (this.settings.positionUsing === \"\") {\n          this.settings.positionUsing = this.getPositioningCSS();\n        }\n        if (bar) css(bar, this.barPositionCSS(n, speed, ease));\n        if (n === this.settings.maximum) {\n          css(progress, { transition: \"none\", opacity: \"1\" });\n          progress.offsetWidth;\n          setTimeout(() => {\n            css(progress, {\n              transition: `all ${speed}ms linear`,\n              opacity: \"0.5\"\n            });\n            setTimeout(() => {\n              this.remove();\n              next();\n            }, speed);\n          }, speed);\n        } else {\n          setTimeout(next, speed);\n        }\n      });\n    }\n\n    return this;\n  }\n\n  /** * ***Start the `RzlProgress`.*** */\n  static start(): typeof RzlProgress {\n    if (!this.status) this.set(0);\n    const work = () => {\n      if (this.isPaused) return;\n      setTimeout(() => {\n        if (!this.status) return;\n        this.trickle();\n        work();\n      }, this.settings.trickleSpeed);\n    };\n    if (this.settings.trickle) work();\n    return this;\n  }\n\n  /**\n   * @param force Default `false`\n   * @returns Instance `RzlProgress` Class.\n   */\n  static done(force?: boolean) {\n    if (!isBoolean(force)) force = false;\n    if (!force && !this.status) return this;\n    return this.inc(0.3 + 0.5 * Math.random()).set(1);\n  }\n\n  /** * ***Increment the `RzlProgress`.*** */\n  static inc(amount?: number): typeof RzlProgress {\n    if (this.isPaused) return this;\n    let n = this.status;\n    if (isNil(n)) {\n      return this.start();\n    } else if (n > 1) {\n      return this;\n    } else {\n      if (typeof amount !== \"number\") {\n        if (n >= 0 && n < 0.2) {\n          amount = 0.1;\n        } else if (n >= 0.2 && n < 0.5) {\n          amount = 0.04;\n        } else if (n >= 0.5 && n < 0.8) {\n          amount = 0.02;\n        } else if (n >= 0.8 && n < 0.99) {\n          amount = 5e-3;\n        } else {\n          amount = 0;\n        }\n      }\n      n = clamp(n + amount, 0, 0.994);\n      return this.set(n);\n    }\n  }\n\n  /** * ***Advance the `RzlProgress`.*** */\n  static trickle() {\n    if (this.isPaused) return this;\n    return this.inc();\n  }\n\n  /** * ***Handle jQuery promises (for compatibility).*** */\n  static promise($promise?: { state?: AnyFunction; always?: AnyFunction }) {\n    if (\n      !$promise ||\n      (isFunction($promise.state) && $promise.state() === \"resolved\")\n    ) {\n      return this;\n    }\n\n    let initial = 0,\n      current = 0;\n\n    if (current === 0) {\n      this.start();\n    }\n\n    initial++;\n    current++;\n\n    if (isFunction($promise.always)) {\n      $promise.always(() => {\n        current--;\n        if (current === 0) {\n          initial = 0;\n          this.done();\n        } else {\n          this.set((initial - current) / initial);\n        }\n      });\n    }\n\n    return this;\n  }\n\n  /** * ***Render the `RzlProgress` component.*** */\n  static render(fromStart = false): HTMLElement | undefined {\n    if (isServer()) return;\n\n    if (this.isRendered()) {\n      const nProgEl = document.getElementById(DATA_RZL_PROGRESS.MAIN_ID);\n      if (nProgEl) return nProgEl;\n    }\n\n    addClass(document.documentElement, DATA_RZL_PROGRESS.ON_BUSY);\n\n    const progress = document.createElement(\"div\");\n    progress.id = DATA_RZL_PROGRESS.MAIN_ID;\n    progress.innerHTML = this.settings.template;\n\n    const bar = progress.querySelector<HTMLElement>(this.settings.barSelector);\n    const percent = fromStart\n      ? toBarPercent(0, this.settings.direction)\n      : toBarPercent(this.status || 0, this.settings.direction);\n    const parent =\n      typeof this.settings.parent === \"string\"\n        ? document.querySelector<HTMLElement>(this.settings.parent)\n        : this.settings.parent;\n\n    if (bar) {\n      css(bar, {\n        transition: \"all 0 linear\",\n        transform: `translate3d(${percent}%,0,0)`\n      });\n    }\n\n    if (!this.settings.showSpinner) {\n      const spinner = progress.querySelector<HTMLElement>(\n        this.settings.spinnerSelector\n      );\n      if (spinner) removeElement(spinner);\n    }\n\n    if (parent && parent !== document.body)\n      addClass(parent, DATA_RZL_PROGRESS.CUSTOM_PARENT);\n\n    parent?.appendChild(progress);\n\n    return progress;\n  }\n\n  /** * ***Remove `RzlProgress` from the DOM.*** */\n  static remove(): void {\n    if (isServer()) return;\n\n    removeClass(document.documentElement, DATA_RZL_PROGRESS.ON_BUSY);\n    const parent =\n      typeof this.settings.parent === \"string\"\n        ? document.querySelector<HTMLElement>(this.settings.parent)\n        : this.settings.parent;\n\n    if (parent) removeClass(parent, DATA_RZL_PROGRESS.CUSTOM_PARENT);\n    const progress = document.getElementById(DATA_RZL_PROGRESS.MAIN_ID);\n    if (progress) removeElement(progress);\n  }\n\n  /** * ***Pause the `RzlProgress`.*** */\n  static pause() {\n    this.isPaused = true;\n    return this;\n  }\n\n  /** * ***Resume the `RzlProgress`.*** */\n  static resume() {\n    this.isPaused = false;\n    return this;\n  }\n\n  /** * ***Check if `RzlProgress` is rendered in the DOM.*** */\n  static isRendered(): boolean {\n    if (isServer()) return false;\n    return !!document.getElementById(DATA_RZL_PROGRESS.MAIN_ID);\n  }\n\n  /** * ***Queue function for animations.*** */\n  static queue(callback: (next: VoidFunction) => void): void {\n    if (isFunction(callback)) {\n      this.pending.push(callback);\n      if (this.pending.length === 1) this.next();\n    }\n  }\n\n  /** * ***Determine the `RzlProgress` direction passed.*** */\n  static getDirection() {\n    return this.settings.direction;\n  }\n\n  /** * ***Determine the CSS positioning `RzlProgress` method to use.*** */\n  static getPositioningCSS(): \"translate3d\" | \"translate\" | \"margin\" {\n    const bodyStyle = document.body.style;\n    const vendorPrefix =\n      \"WebkitTransform\" in bodyStyle\n        ? \"Webkit\"\n        : \"MozTransform\" in bodyStyle\n          ? \"Moz\"\n          : \"msTransform\" in bodyStyle\n            ? \"ms\"\n            : \"OTransform\" in bodyStyle\n              ? \"O\"\n              : \"\";\n    if (`${vendorPrefix}Perspective` in bodyStyle) {\n      return \"translate3d\";\n    } else if (`${vendorPrefix}Transform` in bodyStyle) {\n      return \"translate\";\n    } else {\n      return \"margin\";\n    }\n  }\n\n  /** @internal */\n  static getClassNameIfLoading() {\n    if (isServer()) return null;\n\n    const styleElement = document.querySelector<HTMLStyleElement>(\n      `style[${MAIN_IDENTITY.KEY}=\"${MAIN_IDENTITY.VALUE}\"]`\n    );\n\n    if (isNil(styleElement)) return null;\n\n    return styleElement.getAttribute(KEY_DATA.CLASS_NAME_LOADING);\n  }\n\n  /** @internal */\n  private static next(): void {\n    const fn = this.pending.shift();\n    if (fn) fn(this.next.bind(this));\n  }\n\n  /** @internal */\n  private static barPositionCSS(\n    n: number,\n    speed: number,\n    ease: string\n  ): Partial<CSSStyleDeclaration> {\n    let barCSS: Partial<CSSStyleDeclaration>;\n\n    if (this.settings.positionUsing === \"translate3d\") {\n      barCSS = {\n        transform: `translate3d(${toBarPercent(n, this.settings.direction)}%,0,0)`\n      };\n    } else if (this.settings.positionUsing === \"translate\") {\n      barCSS = {\n        transform: `translate(${toBarPercent(n, this.settings.direction)}%,0)`\n      };\n    } else {\n      barCSS = {\n        // @ts-expect-error its render in client\n        \"margin-left\": `${toBarPercent(n, this.settings.direction)}%`\n      };\n    }\n\n    barCSS.transition = `all ${speed}ms ${ease}`;\n\n    return barCSS;\n  }\n}\n"],"mappings":"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"}
