{"ast":null,"code":"'use client';\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport pdfjs from '../pdfjs.js';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function PageCanvas(props) {\n  const pageContext = usePageContext();\n  invariant(pageContext, 'Unable to find Page context.');\n  const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n  const {\n    _className,\n    canvasBackground,\n    devicePixelRatio = getDevicePixelRatio(),\n    onRenderError: onRenderErrorProps,\n    onRenderSuccess: onRenderSuccessProps,\n    page,\n    renderForms,\n    renderTextLayer,\n    rotate,\n    scale\n  } = mergedProps;\n  const {\n    canvasRef\n  } = props;\n  invariant(page, 'Attempted to render page canvas, but no page was specified.');\n  const canvasElement = useRef(null);\n  /**\n   * Called when a page is rendered successfully.\n   */\n  function onRenderSuccess() {\n    if (!page) {\n      // Impossible, but TypeScript doesn't know that\n      return;\n    }\n    if (onRenderSuccessProps) {\n      onRenderSuccessProps(makePageCallback(page, scale));\n    }\n  }\n  /**\n   * Called when a page fails to render.\n   */\n  function onRenderError(error) {\n    if (isCancelException(error)) {\n      return;\n    }\n    warning(false, error.toString());\n    if (onRenderErrorProps) {\n      onRenderErrorProps(error);\n    }\n  }\n  const renderViewport = useMemo(() => page.getViewport({\n    scale: scale * devicePixelRatio,\n    rotation: rotate\n  }), [devicePixelRatio, page, rotate, scale]);\n  const viewport = useMemo(() => page.getViewport({\n    scale,\n    rotation: rotate\n  }), [page, rotate, scale]);\n  function drawPageOnCanvas() {\n    if (!page) {\n      return;\n    }\n    // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n    page.cleanup();\n    const {\n      current: canvas\n    } = canvasElement;\n    if (!canvas) {\n      return;\n    }\n    canvas.width = renderViewport.width;\n    canvas.height = renderViewport.height;\n    canvas.style.width = `${Math.floor(viewport.width)}px`;\n    canvas.style.height = `${Math.floor(viewport.height)}px`;\n    canvas.style.visibility = 'hidden';\n    const renderContext = {\n      annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n      canvasContext: canvas.getContext('2d', {\n        alpha: false\n      }),\n      viewport: renderViewport\n    };\n    if (canvasBackground) {\n      renderContext.background = canvasBackground;\n    }\n    const cancellable = page.render(renderContext);\n    const runningTask = cancellable;\n    cancellable.promise.then(() => {\n      canvas.style.visibility = '';\n      onRenderSuccess();\n    }).catch(onRenderError);\n    return () => cancelRunningTask(runningTask);\n  }\n  useEffect(drawPageOnCanvas,\n  // Ommitted callbacks so they are not called every time they change\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [canvasBackground, canvasElement, devicePixelRatio, page, renderForms, renderViewport, viewport]);\n  const cleanup = useCallback(() => {\n    const {\n      current: canvas\n    } = canvasElement;\n    /**\n     * Zeroing the width and height cause most browsers to release graphics\n     * resources immediately, which can greatly reduce memory consumption.\n     */\n    if (canvas) {\n      canvas.width = 0;\n      canvas.height = 0;\n    }\n  }, [canvasElement]);\n  useEffect(() => cleanup, [cleanup]);\n  return React.createElement(\"canvas\", {\n    className: `${_className}__canvas`,\n    dir: \"ltr\",\n    ref: mergeRefs(canvasRef, canvasElement),\n    style: {\n      display: 'block',\n      userSelect: 'none'\n    }\n  }, renderTextLayer ? React.createElement(StructTree, null) : null);\n}","map":{"version":3,"names":["React","useCallback","useEffect","useMemo","useRef","mergeRefs","invariant","warning","pdfjs","StructTree","usePageContext","cancelRunningTask","getDevicePixelRatio","isCancelException","makePageCallback","ANNOTATION_MODE","AnnotationMode","PageCanvas","props","pageContext","mergedProps","Object","assign","_className","canvasBackground","devicePixelRatio","onRenderError","onRenderErrorProps","onRenderSuccess","onRenderSuccessProps","page","renderForms","renderTextLayer","rotate","scale","canvasRef","canvasElement","error","toString","renderViewport","getViewport","rotation","viewport","drawPageOnCanvas","cleanup","current","canvas","width","height","style","Math","floor","visibility","renderContext","annotationMode","ENABLE_FORMS","ENABLE","canvasContext","getContext","alpha","background","cancellable","render","runningTask","promise","then","catch","createElement","className","dir","ref","display","userSelect"],"sources":["/Users/chrishaack/UC_Trains_Voice/react-demo/node_modules/react-pdf/dist/esm/Page/PageCanvas.js"],"sourcesContent":["'use client';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport pdfjs from '../pdfjs.js';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isCancelException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function PageCanvas(props) {\n    const pageContext = usePageContext();\n    invariant(pageContext, 'Unable to find Page context.');\n    const mergedProps = Object.assign(Object.assign({}, pageContext), props);\n    const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, rotate, scale, } = mergedProps;\n    const { canvasRef } = props;\n    invariant(page, 'Attempted to render page canvas, but no page was specified.');\n    const canvasElement = useRef(null);\n    /**\n     * Called when a page is rendered successfully.\n     */\n    function onRenderSuccess() {\n        if (!page) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onRenderSuccessProps) {\n            onRenderSuccessProps(makePageCallback(page, scale));\n        }\n    }\n    /**\n     * Called when a page fails to render.\n     */\n    function onRenderError(error) {\n        if (isCancelException(error)) {\n            return;\n        }\n        warning(false, error.toString());\n        if (onRenderErrorProps) {\n            onRenderErrorProps(error);\n        }\n    }\n    const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n    const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n    function drawPageOnCanvas() {\n        if (!page) {\n            return;\n        }\n        // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n        page.cleanup();\n        const { current: canvas } = canvasElement;\n        if (!canvas) {\n            return;\n        }\n        canvas.width = renderViewport.width;\n        canvas.height = renderViewport.height;\n        canvas.style.width = `${Math.floor(viewport.width)}px`;\n        canvas.style.height = `${Math.floor(viewport.height)}px`;\n        canvas.style.visibility = 'hidden';\n        const renderContext = {\n            annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n            canvasContext: canvas.getContext('2d', { alpha: false }),\n            viewport: renderViewport,\n        };\n        if (canvasBackground) {\n            renderContext.background = canvasBackground;\n        }\n        const cancellable = page.render(renderContext);\n        const runningTask = cancellable;\n        cancellable.promise\n            .then(() => {\n            canvas.style.visibility = '';\n            onRenderSuccess();\n        })\n            .catch(onRenderError);\n        return () => cancelRunningTask(runningTask);\n    }\n    useEffect(drawPageOnCanvas, \n    // Ommitted callbacks so they are not called every time they change\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n        canvasBackground,\n        canvasElement,\n        devicePixelRatio,\n        page,\n        renderForms,\n        renderViewport,\n        viewport,\n    ]);\n    const cleanup = useCallback(() => {\n        const { current: canvas } = canvasElement;\n        /**\n         * Zeroing the width and height cause most browsers to release graphics\n         * resources immediately, which can greatly reduce memory consumption.\n         */\n        if (canvas) {\n            canvas.width = 0;\n            canvas.height = 0;\n        }\n    }, [canvasElement]);\n    useEffect(() => cleanup, [cleanup]);\n    return (React.createElement(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n            display: 'block',\n            userSelect: 'none',\n        } }, renderTextLayer ? React.createElement(StructTree, null) : null));\n}\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}