{"version":3,"sources":["../../src/NavScroll/useNavScroll.ts","../../src/NavScroll/debounce.ts","../../src/NavScroll/useSizeDetector.ts","../../node_modules/uuid/dist/esm-node/rng.js","../../node_modules/uuid/dist/esm-node/regex.js","../../node_modules/uuid/dist/esm-node/validate.js","../../node_modules/uuid/dist/esm-node/stringify.js","../../node_modules/uuid/dist/esm-node/v4.js"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*--------------------------------------------------------------------------\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati (@dej611)\n * Code: https://github.com/dej611/react-use-navscroll\n * --------------------------------------------------------------------------\n * Parts of this code has been modified using Bootstrap Italia source code\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * License: BSD-3-Clause (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { createRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { debounce } from './debounce';\nimport type { useNavScrollArgs, useNavScrollResult, TrackedElement } from './types';\nimport { useSizeDetector } from './useSizeDetector';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nlet ticking: boolean = false;\nlet callbacks: any[] = [];\n\nclass ScrollCallback {\n  private _callback: any;\n  id: string;\n  constructor(id: string, callback: any) {\n    this.id = id;\n    this._callback = callback;\n  }\n\n  //Public\n  dispose() {\n    removeCallBack(this.id);\n  }\n\n  //Private\n  _execute(data: any) {\n    this._callback(data);\n  }\n}\n\nconst removeCallBack = (id: string) => {\n  callbacks = callbacks.filter((cb) => cb.id !== id);\n};\n\nconst onDocumentScroll = (callback: any) => {\n  if (typeof document === 'undefined') {\n    return;\n  }\n  if (!callbacks.length) {\n    if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n      document.addEventListener('scroll', (evt) => {\n        if (!ticking) {\n          window.requestAnimationFrame(() => {\n            callbacks.forEach((cbObj) => cbObj.cb._execute(evt));\n            ticking = false;\n          });\n          ticking = true;\n        }\n      });\n    }\n  }\n\n  if (typeof callback === 'function') {\n    const newCb = new ScrollCallback(uuidv4(), callback);\n    callbacks.push({\n      id: newCb.id,\n      cb: newCb\n    });\n    return newCb;\n  }\n\n  console.error('[onDocumentScroll] the provided data has to be of type function');\n  return null;\n};\n\nconst hasWindow = typeof window !== 'undefined';\nconst REGISTER_DELAY = 50;\n\nfunction resolveHierarchyIds(id: string, lookup: Record<string, string | undefined>) {\n  const newActiveIds = [id];\n  let lastId: string | undefined = newActiveIds[0];\n  while (lastId != null && lookup[lastId] != null) {\n    newActiveIds.push(lookup[lastId] as string);\n    lastId = lookup[lastId];\n  }\n  // return a list from parent to current child\n  return newActiveIds.reverse();\n}\n/**\n * This is the main hook: use it in a react function component to track\n * the state of the passed ids. The function accepts an initial configuration\n * of type `useNavScrollArgs` to customize the behaviour.\n */\nexport function useNavScroll(args: useNavScrollArgs = {}): useNavScrollResult {\n  const { onChange, root, offset = 50, isHorizontal = false } = args;\n  const els = useRef<TrackedElement[]>([]);\n  const [counter, setCounter] = useState(0);\n  const [forceRecompute, setForceRecompute] = useState(false);\n  const [activeId, updateActiveId] = useState<string | null>(null);\n  const [percentageValue, setPercentageValue] = useState(0);\n\n  const { targetSize, useViewport } = useSizeDetector({\n    root,\n    isHorizontal,\n    onChange,\n    activeId,\n    setForceRecompute,\n    updateActiveId,\n    hasWindow\n  });\n\n  const observerMargin = Math.floor((targetSize * offset) / 100) || 1;\n  const observerOptions = useMemo(() => {\n    const topMargin = observerMargin % 2 === 1 ? observerMargin - 1 : observerMargin;\n    const bottomMargin = targetSize - observerMargin;\n    return {\n      root: useViewport ? null : root,\n      rootMargin: isHorizontal\n        ? `0px ${-topMargin}px 0px ${-bottomMargin}px`\n        : `${-topMargin}px 0px ${-bottomMargin}px 0px`\n    };\n  }, [root, targetSize, observerMargin, isHorizontal, useViewport]);\n\n  const elsLookup = useMemo(() => {\n    const lookup: Record<string, string | undefined> = {};\n    for (const { id, parent } of els.current) {\n      lookup[id] = parent;\n    }\n    return lookup;\n  }, [counter]);\n  const activeIds = useMemo(() => (activeId ? resolveHierarchyIds(activeId, elsLookup) : []), [activeId, elsLookup]);\n\n  const activeLookups = useMemo(() => new Set(activeIds), [activeIds]);\n  useEffect(() => {\n    if (!hasWindow) {\n      return;\n    }\n    const _onScroll = () => {\n      let intersectionId = null;\n      for (let k = 0; k < els.current.length; k++) {\n        const entry = els.current[k].ref.current;\n        const min = entry?.getBoundingClientRect().top ? entry?.getBoundingClientRect().top : 0;\n        if (!min) {\n          break;\n        }\n        if (min > 0 && k > 0) {\n          const totEls =\n            root?.previousSibling?.firstChild?.parentNode?.querySelectorAll('.it-navscroll-wrapper .nav-link').length ||\n            1;\n          setPercentageValue((k / (totEls / 2)) * 100);\n          intersectionId = els.current[k - 1].ref.current?.id;\n          break;\n        }\n      }\n      if (intersectionId != null) {\n        updateActiveId(intersectionId);\n        if (onChange) {\n          const diffIds = {\n            added: intersectionId,\n            removed: activeId\n          };\n          onChange(diffIds);\n        }\n      }\n    };\n\n    onDocumentScroll(_onScroll);\n\n    setTimeout(() => {\n      _onScroll();\n    }, 300);\n  }, [\n    activeIds,\n    updateActiveId,\n    els,\n    elsLookup,\n    onChange,\n    activeLookups,\n    activeId,\n    observerOptions,\n    isHorizontal,\n    root,\n    forceRecompute\n  ]);\n\n  const refresh = useCallback(\n    debounce(() => {\n      setCounter(counter + 1);\n    }, REGISTER_DELAY),\n    [counter]\n  );\n\n  const register = useCallback(\n    (id: string, options: any = {}) => {\n      if (!hasWindow) {\n        return { id, ref: null };\n      }\n      const alreadyRegistered = id in elsLookup;\n      const entry = alreadyRegistered ? els.current.find(({ id: existingId }) => existingId === id) : options;\n      const ref = (entry && entry.ref) || createRef();\n\n      if (!alreadyRegistered) {\n        els.current = [...els.current, { id, ref, parent: options.parent }];\n        refresh();\n      }\n      return { id, ref };\n    },\n    [counter]\n  );\n\n  const unregister = useCallback(\n    (idToUnregister: string) => {\n      els.current = els.current.filter(({ id }) => id !== idToUnregister);\n    },\n    [counter]\n  );\n\n  const isActive = useCallback((id: string) => activeLookups.has(id), [activeLookups]);\n  const percentage = useMemo(() => percentageValue, [percentageValue]);\n\n  const getActiveRef = useCallback(() => {\n    const entry = els.current.find(({ id }) => id === activeId);\n    return entry ? entry.ref : null;\n  }, [activeId]);\n\n  return {\n    percentage,\n    register,\n    unregister,\n    activeIds,\n    isActive,\n    getActiveRef\n  };\n}\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nexport const debounce = (callback: CallableFunction, wait: number) => {\n  let timeoutId: NodeJS.Timeout;\n  return (...args: unknown[]) => {\n    clearTimeout(timeoutId);\n    timeoutId = setTimeout(() => {\n      callback(...args);\n    }, wait);\n  };\n};\n","/*\n * This work derives from the React Use Navscroll library\n * Released under the MIT license by Marco Liberati\n * Code: https://github.com/dej611/react-use-navscroll\n */\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { debounce } from './debounce';\nimport { useNavScrollArgs } from './types';\n\nconst DEFAULT_DELAY = 150;\n\nexport type useSizeDetectorArgs = Omit<useNavScrollArgs, 'offset'> & {\n  activeId: string | null;\n  hasWindow: boolean;\n  setForceRecompute: (force: boolean) => void;\n  updateActiveId: (id: string | null) => void;\n};\n\nexport const useSizeDetector = ({\n  root,\n  isHorizontal,\n  activeId,\n  onChange,\n  setForceRecompute,\n  updateActiveId,\n  hasWindow\n}: useSizeDetectorArgs) => {\n  const [targetSize, setTargetSize] = useState<number>(1);\n\n  const useViewport =\n    root == null ||\n    (hasWindow && (isHorizontal ? window.innerWidth < root.clientWidth : window.innerHeight < root.clientHeight));\n\n  const scrollEnd = useCallback(\n    debounce(() => {\n      setForceRecompute(true);\n    }, DEFAULT_DELAY),\n    [setForceRecompute]\n  );\n\n  useEffect(() => {\n    if (!hasWindow) {\n      return;\n    }\n    let observer: IntersectionObserver | null = null;\n\n    const resizeWindowHandler = () => {\n      setTimeout(() => {\n        setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n      }, DEFAULT_DELAY);\n    };\n\n    const resizeElementHandler: IntersectionObserverCallback = (entries) => {\n      const [entry] = entries;\n      if (!useViewport) {\n        setTargetSize(isHorizontal ? entry.boundingClientRect.width : entry.boundingClientRect.height);\n      }\n\n      if (entry.intersectionRatio === 0) {\n        if (activeId != null) {\n          updateActiveId(null);\n          if (onChange) {\n            onChange({\n              added: null,\n              removed: activeId\n            });\n          }\n        }\n      }\n    };\n\n    addEventListener('scroll', scrollEnd);\n    if (useViewport) {\n      setTargetSize(isHorizontal ? window.innerWidth : window.innerHeight);\n      addEventListener('resize', resizeWindowHandler);\n    }\n    if (root) {\n      observer = new IntersectionObserver(resizeElementHandler);\n      observer.observe(root);\n    }\n    return () => {\n      if (observer) {\n        observer.disconnect();\n      }\n      removeEventListener('resize', resizeWindowHandler);\n      removeEventListener('scroll', scrollEnd);\n    };\n  }, [root, isHorizontal, activeId, onChange, useViewport, scrollEnd, hasWindow, updateActiveId]);\n  return { targetSize, useViewport };\n};\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n  if (poolPtr > rnds8Pool.length - 16) {\n    crypto.randomFillSync(rnds8Pool);\n    poolPtr = 0;\n  }\n\n  return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return stringify(rnds);\n}\n\nexport default v4;"],"mappings":"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","names":["useNavScroll_exports","__export","useNavScroll","__toCommonJS","import_react","debounce","callback","wait","timeoutId","args","import_react","DEFAULT_DELAY","useSizeDetector","root","isHorizontal","activeId","onChange","setForceRecompute","updateActiveId","hasWindow","targetSize","setTargetSize","useViewport","scrollEnd","debounce","observer","resizeWindowHandler","resizeElementHandler","entries","entry","import_crypto","rnds8Pool","poolPtr","rng","crypto","regex_default","validate","uuid","regex_default","validate_default","byteToHex","i","stringify","arr","offset","uuid","validate_default","stringify_default","v4","options","buf","offset","rnds","rng","i","stringify_default","v4_default","ticking","callbacks","ScrollCallback","id","callback","removeCallBack","data","cb","onDocumentScroll","evt","cbObj","newCb","v4_default","hasWindow","REGISTER_DELAY","resolveHierarchyIds","lookup","newActiveIds","lastId","useNavScroll","args","onChange","root","offset","isHorizontal","els","counter","setCounter","forceRecompute","setForceRecompute","activeId","updateActiveId","percentageValue","setPercentageValue","targetSize","useViewport","useSizeDetector","observerMargin","observerOptions","topMargin","bottomMargin","elsLookup","parent","activeIds","activeLookups","_onScroll","intersectionId","k","entry","min","totEls","refresh","debounce","register","options","alreadyRegistered","existingId","ref","unregister","idToUnregister","isActive","percentage","getActiveRef"]}