{"version":3,"sources":["viewer-wrapper/altavia-viewer/license.ts","viewer-wrapper/altavia-viewer/index.tsx","viewer-wrapper/viewer-sidebar/style.ts","ui-common/inline-loader/index.tsx","ui-common/collapsible-panel-title/style.ts","ui-common/collapsible-panel-title/index.tsx","viewer-wrapper/viewer-sidebar/sidebar-color-layer-picker/style.ts","common/fn.utils.ts","common/color.utils.ts","viewer-wrapper/viewer-sidebar/sidebar-color-layer-picker/index.tsx","viewer-wrapper/viewer-sidebar/sidebar-barcode-extractor/barcode.utils.ts","viewer-wrapper/viewer-sidebar/sidebar-barcode-extractor/index.tsx","viewer-wrapper/viewer-sidebar/index.tsx","viewer-wrapper/index.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["encodedLicense","process","REACT_APP_PDFTRON_LICENSE","localStorage","undefined","obfs","str","key","n","toString","chars","split","i","length","c","charCodeAt","String","fromCharCode","join","License","defs","atob","AltaviaViewer","props","viewer","useRef","qs","URLSearchParams","window","location","search","initialDoc","get","initialLang","useEffect","WebViewer","path","css","enableMeasurement","licenseKey","current","then","instance","setPdfTronInstance","docViewer","getTool","setStyles","Scale","setLanguage","enableFeatures","Feature","Measurement","setLayoutMode","LayoutMode","FacingContinuous","enableElements","className","ref","style","height","width","AexViewerLogo","styled","img","SideBarNav","div","InlineLoader","type","color","PrefixContainer","TitleLabel","ClickableTitle","DisclosureTriangleContainer","CollapsiblePanelTitle","title","shouldShowLoader","onClick","icon","isOpen","faChevronDown","faChevronRight","ColorListItem","ColorSwatch","stub","x","isColorLightOrDark","r","g","b","Math","sqrt","ColorListItemWrapper","colorData","rgb","enabled","backgroundColor","faCheck","name","SidebarColorLayerPicker","useState","colors","setColors","randomState","setRandomState","setIsOpen","on","pdfDoc","getDocument","enableColorSeparations","allColors","getColorSeparations","random","Col","xs","faPalette","Collapse","map","visible","enableSeparation","refreshAll","updateView","toggleColor","recognizeBarcodeFromCanvas","canvas","Image","src","toDataURL","document","body","appendChild","console","log","javascriptBarcodeReader","image","barcode","code","catch","err","SidebarBarcodeExtractor","isLoading","recognizeBarcodeOnPage","a","iframeWindow","iframeDocument","pageIndex","getCurrentPage","pageContainer","getElementById","pageCanvas","querySelector","faBarcode","ViewerSidebar","Row","borderRight","ViewerWrapper","pdfTronInstance","Container","fluid","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode"],"mappings":"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","file":"static/js/main.8019f3ba.chunk.js","sourcesContent":["const encodedLicense = process.env.REACT_APP_PDFTRON_LICENSE || localStorage['_PDFTRON_LICENSE'] || undefined;\n\nconst defs = (str, key, n = 126) => {\n if (!(typeof (key) === 'number' && key % 1 === 0)\n || !(typeof (key) === 'number' && key % 1 === 0)) {\n return str.toString();\n }\n\n return obfs(str.toString(), n - key);\n};\n\nconst obfs = (str, key, n = 126) => {\n if (!(typeof (key) === 'number' && key % 1 === 0)\n || !(typeof (key) === 'number' && key % 1 === 0)) {\n return str.toString();\n }\n\n var chars = str.toString().split('');\n\n for (var i = 0; i < chars.length; i++) {\n var c = chars[i].charCodeAt(0);\n\n if (c <= n) {\n chars[i] = String.fromCharCode((chars[i].charCodeAt(0) + key) % n);\n }\n }\n\n return chars.join('');\n};\nconst License = encodedLicense ? defs(atob(encodedLicense), 122) : undefined;\nexport default License;","import { useEffect, useRef } from \"react\";\nimport WebViewer from \"@pdftron/webviewer\";\n// import CoreControls from \"@pdftron/webviewer\";\nimport License from \"./license\";\n\nconst AltaviaViewer = (props) => {\n const viewer = useRef(null);\n\n const qs = new URLSearchParams(window.location.search);\n\n const initialDoc = qs?.get(\"atob\") ? atob(qs?.get(\"atob\")) : qs?.get(\"file\");\n const initialLang = qs?.get(\"lc\") || \"fr\";\n useEffect(() => {\n WebViewer(\n {\n path: \"/webviewer/lib/\",\n initialDoc: initialDoc || \"/sample-files/sleeve-yab-fraise.pdf\",\n css: \"/viewer.style.css\",\n enableMeasurement: true,\n\n licenseKey: License,\n //@ts-ignore\n // pdftronServer:'http://10.9.8.220:8090' //PDFTron doc...\n },\n viewer.current\n ).then((instance) => {\n props.setPdfTronInstance(instance);\n const { docViewer } = instance;\n const distanceMeasurementTool = docViewer.getTool(\n \"AnnotationCreateDistanceMeasurement\"\n );\n distanceMeasurementTool.setStyles(() => ({\n Scale: [\n [1, \"mm\"],\n [1, \"mm\"],\n ],\n }));\n instance.setLanguage(initialLang);\n instance.enableFeatures([instance.Feature.Measurement]);\n instance.setLayoutMode(instance.LayoutMode.FacingContinuous);\n instance.enableElements([\"leftPanel\"]);\n\n // instance.disableElements([\"toolbarGroup-Shapes\"]);\n // instance.disableElements([\"toolbarGroup-Edit\"]);\n // instance.disableElements([\"toolbarGroup-Insert\"]);\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n
\n
\n \n );\n};\n\nexport default AltaviaViewer;\n","import styled from 'styled-components';\n\nexport const AexViewerLogo = styled.img`\nmax-height:1.5em;\n`;\n\nexport const SideBarNav = styled.div`\nheight: 36px;\nmax-width:100%;\nbackground-color:#343434;\nborder-bottom: 1px solid #484848;\n`\n","import Loader from \"react-loader-spinner\";\n\nconst InlineLoader = () => {\n return (\n \n )\n}\n\nexport default InlineLoader;","import styled from 'styled-components';\n\nexport const PrefixContainer = styled.div`\ndisplay:inline-block;\nmargin-right:1em;\n`;\n\nexport const TitleLabel = styled.div`\ndisplay:inline-block;\ncolor:#868686;\nfont-size:14px;\nfont-weight:600;`\n\nexport const ClickableTitle = styled.div`\ncursor:pointer;\nborder-top:1px solid #484848;\n`\n\nexport const DisclosureTriangleContainer = styled.div`\ndisplay:inline-block;\nposition:absolute;\nright:10px;\n`","import InlineLoader from \"../inline-loader\";\nimport {\n ClickableTitle,\n DisclosureTriangleContainer,\n PrefixContainer,\n TitleLabel,\n} from \"./style\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronRight,\n faChevronDown,\n} from \"@fortawesome/free-solid-svg-icons\";\n\nconst CollapsiblePanelTitle = ({\n title,\n shouldShowLoader,\n onClick,\n icon,\n isOpen,\n}) => {\n return (\n \n \n {shouldShowLoader ? (\n \n ) : (\n \n )}\n {!shouldShowLoader && \n \n \n \n }\n \n\n {title}\n \n );\n};\n\nexport default CollapsiblePanelTitle;\n","import styled from 'styled-components';\n\nexport const ColorListItem = styled.div`\nwidth:100%;\nheight:25px;\ncursor:pointer;\nfont-size:12px;\n`\n\nexport const ColorSwatch = styled.div`\n width:20px;\n height:20px;\n display:inline-block;\n border:1px solid #eee;\n font-size:14px;\n margin-right:10px;\n margin-left:10px;\n text-align:center;\n &.light{\n color:black;\n }\n &.dark {\n color:white;\n }\n`","export type Stub = {\n\t(): T;\n};\n\nexport const identity = (x: T): T => x;\nexport const stub = (x: T): Stub => () => x;\nexport const noop = stub(void 0);\nexport const stubFalse = stub(false);\nexport const stubTrue = stub(true);\n\nexport const noopFor = () => (x: Args) =>\n\tvoid 0 as Ret;\n\nexport function throwErr(message: string): never {\n\tthrow new Error(message);\n}\n\nexport const coerceToPromise = (x: T | Promise): Promise =>\n\tx instanceof Promise ? x : Promise.resolve(x);\n","import { getRandomInt } from './math';\nimport { throwErr } from './fn.utils';\n\nexport const randomHue = () => getRandomInt(360);\n\n\nconst pastelShade = (h: number) => `hsl(${h}, 100%, 95%)`;\nconst darkShade = (h: number) => `hsl(${h}, 100%, 30%)`;\n\nexport const toRGBA = (hex: string, alpha: number): string => {\n\tconst [r, g, b] = getRGBfromHEX(hex);\n\treturn `rgba(${r},${g},${b},${alpha})`;\n};\n\nexport const getRandomPastel = () => pastelShade(randomHue());\nexport const getRandomDarkColor = () => darkShade(randomHue());\n\n\nexport function getRGBfromHEX(string: string): number[] {\n\tconst hex = string.replace(/[^0-9a-f]/ig, '');\n\n\tswitch (hex.length) {\n\t\tcase 3:\n\t\t\treturn hex.split('').map(x => parseInt(`${x}${x}`, 16));\n\t\tcase 6:\n\t\t\treturn hex.match(/[0-9a-f]{2}/ig)!.map(x => parseInt(x, 16));\n\t\tdefault:\n\t\t\treturn throwErr(`Invalid hex color ${string}`);\n\t}\n}\n\n\nexport function isColorLightOrDark(color: number[]): \"light\" | \"dark\" {\n\tconst [r,g,b] = color;\n\t\n\tconst hsp = Math.sqrt(\n\t\t0.299 * (r * r) +\n\t\t0.587 * (g * g) +\n\t\t0.114 * (b * b)\n\t);\n\n\t// Using the HSP value, determine whether the color is light or dark\n\tif (hsp > 127.5) {\n\n\t\treturn 'light';\n\t}\n\telse {\n\n\t\treturn 'dark';\n\t}\n}","import { useState, useEffect } from \"react\";\nimport CollapsiblePanelTitle from \"../../../ui-common/collapsible-panel-title\";\nimport { Collapse, Col } from \"reactstrap\";\nimport { faPalette, faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport { ColorListItem, ColorSwatch } from \"./style\";\nimport { isColorLightOrDark } from \"../../../common/color.utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { WebViewerInstance } from \"@pdftron/webviewer\";\nconst ColorListItemWrapper = (props) => {\n const { colorData, onClick } = props;\n\n const toggleColor = () => {\n onClick(!colorData.enabled);\n };\n\n const rgb = `rgb(${colorData.rgb[0]},${colorData.rgb[1]},${colorData.rgb[2]})`;\n return (\n \n \n {colorData.enabled && }\n {\" \"}\n {colorData.name}\n \n );\n};\n\nconst SidebarColorLayerPicker = (props) => {\n const instance: WebViewerInstance = props.instance;\n const [colors, setColors] = useState([]);\n const [randomState, setRandomState] = useState(0);\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n instance?.docViewer.on(\"documentLoaded\", () => {\n const pdfDoc = instance.docViewer.getDocument();\n\n pdfDoc.enableColorSeparations(true);\n \n pdfDoc?.on(\"colorSeparationAdded\", () => {\n const allColors = pdfDoc?.getColorSeparations();\n setColors(allColors);\n setRandomState(allColors.length+Math.random()); //Not sure why but this is required to re-render after the state change\n });\n });\n });\n\n const handleCollapseToggle = () => {\n //Temporary. TODO: A better UI would be to have collapsible panels but for a demo it looks empty\n setIsOpen(!isOpen)\n };\n\n const toggleColor = (color, visible) => {\n const pdfDoc = instance.docViewer.getDocument();\n pdfDoc?.enableSeparation(color.name, visible);\n const allColors = pdfDoc?.getColorSeparations();\n setColors(allColors);\n setRandomState(allColors.length+Math.random()); //Not sure why but this is required to re-render after the state change\n\n instance.docViewer.refreshAll();\n\n //@ts-ignore\n instance.docViewer.updateView(); //From PDFTron's doc\n };\n\n return (\n \n \n \n {colors?.map((color) => (\n toggleColor(color, visible)}\n />\n ))}\n \n \n );\n};\n\nexport default SidebarColorLayerPicker;\n","import javascriptBarcodeReader from 'javascript-barcode-reader'\n\nconst _debugPrintImage = (image: HTMLImageElement) => {\n console.log(image.src);\n console.log('%c ', 'font-size:' + image.width + 'px; background:url(' + image.src + ') no-repeat;');\n}\n\ndeclare var BarcodeDetector: any;\n\nexport const recognizeBarcodeFromCanvas = (canvas: HTMLCanvasElement) => {\n\n const img = new Image();\n img.height = canvas.height;\n img.src = canvas.toDataURL();\n img.width = canvas.width;\n document.body.appendChild(img);\n\n // if (BarcodeDetector) {\n // const barcodeDetector = new BarcodeDetector({ formats: ['ean_8'] })\n // barcodeDetector.detect(img)\n // .then(barcodes => {\n // console.log('barcodes detected', barcodes)\n // barcodes.forEach(barcode => console.log(barcode.rawData));\n // })\n // .catch(err => {\n // console.log(err);\n // })\n // }\n console.log('jsb', javascriptBarcodeReader)\n javascriptBarcodeReader({\n /* Image file Path || {data: Uint8ClampedArray, width, height} || HTML5 Canvas ImageData */\n image: canvas,\n barcode: 'ean-8',\n \n })\n .then(code => {\n console.log(code)\n })\n .catch(err => {\n console.log(err)\n })\n\n // // Quagga.decodeSingle({\n // // decoder: {\n // // readers: [\"upc_e_reader\", \"upc_reader\",\"ean_reader\",\"ean_8_reader\"] // List of active readers\n // // },\n // // locate: true, // try to locate the barcode in the image\n // // src: canvas.toDataURL() // or 'data:image/jpg;base64,' + data\n // // }, function(result){\n // // if(result?.codeResult) {\n // // console.log(\"result\", result.codeResult.code);\n // // } else {\n // // console.log(\"not detected\");\n // // }\n // // });\n\n // javascriptBarcodeReader({\n // /* Image file Path || {data: Uint8ClampedArray, width, height} || HTML5 Canvas ImageData */\n // image: canvas}) .then(code => {\n // console.log(code)\n // }).catch(err => {\n // console.log(err)\n // })\n\n\n}","import { useState, useEffect } from \"react\";\nimport CollapsiblePanelTitle from \"../../../ui-common/collapsible-panel-title\";\nimport { Collapse, Col } from \"reactstrap\";\nimport { faBarcode } from \"@fortawesome/free-solid-svg-icons\";\nimport { CoreControls, WebViewerInstance } from \"@pdftron/webviewer\";\nimport { recognizeBarcodeFromCanvas } from \"./barcode.utils\";\n\nconst SidebarBarcodeExtractor = (props) => {\n const instance: WebViewerInstance = props.instance;\n const [isOpen, setIsOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n let pdfDoc: CoreControls.Document;\n useEffect(() => {\n instance?.docViewer.on(\"documentLoaded\", () => {\n pdfDoc = instance.docViewer.getDocument();\n });\n });\n\n const handleCollapseToggle = () => {\n setIsOpen(!isOpen);\n };\n\n const recognizeBarcodeOnPage = async () => {\n const iframeWindow = instance?.iframeWindow;\n const iframeDocument = iframeWindow.document;\n const pageIndex = instance?.docViewer.getCurrentPage();\n \n\n const pageContainer = iframeDocument.getElementById(\n \"pageContainer\" + pageIndex\n );\n const pageCanvas: HTMLCanvasElement = pageContainer.querySelector(\".canvas\" + pageIndex);\n \n console.log(recognizeBarcodeFromCanvas(pageCanvas));\n };\n\n return (\n \n \n \n
\n \n Reconnaître sur cette page\n \n
\n
\n \n );\n};\n\nexport default SidebarBarcodeExtractor;\n","import { AexViewerLogo, SideBarNav } from \"./style\";\nimport { Row, Col } from \"reactstrap\";\nimport SidebarColorLayerPicker from \"./sidebar-color-layer-picker\";\nimport SidebarBarcodeExtractor from \"./sidebar-barcode-extractor\";\nimport { WebViewerInstance } from \"@pdftron/webviewer\";\n\nfunction ViewerSidebar(props) {\n const instance: WebViewerInstance = props.instance;\n\n return (\n <>\n \n \n \n \n \n \n {/* \n {pdfDoc?.filename}\n */}\n

Outils

\n {instance && }\n {instance && }\n\n
\n \n );\n}\n\nexport default ViewerSidebar;\n","import AltaviaViewer from \"./altavia-viewer\";\nimport { Container, Col, Row } from \"reactstrap\";\nimport ViewerSidebar from \"./viewer-sidebar\";\nimport { useState } from \"react\";\n\nconst ViewerWrapper = () => {\n const [pdfTronInstance, setPdfTronInstance] = useState(null); // the lifted state\n\n const hasInstance = (instance) => {\n console.log(\"has instance\", instance);\n setPdfTronInstance(instance);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ViewerWrapper;\n","import React from 'react';\nimport './styles/App.scss';\n\nimport ViewerWrapper from './viewer-wrapper';\n\nfunction App() {\n return (\n \n \n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}