{"version":3,"sources":["knowledgepool-logo.png","index.js"],"names":["module","exports","App","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","data","pages","markers","loading","prefix","fetchData","listBlobs","bind","assertThisInitialized","instance","_this2","setState","anonymousCredential","AnonymousCredential","pipeline","StorageURL","newPipeline","serviceURL","ServiceURL","concat","containerURL","ContainerURL","fromServiceURL","URLSearchParams","window","location","search","get","listBlobHierarchySegment","Aborter","none","page","maxresults","pageSize","then","res","slice","totalPages","nextMarker","Array","prototype","push","apply","segment","blobItems","blobPrefixes","sortedData","_","orderBy","sorted","map","sort","row","id","Infinity","undefined","properties","toLowerCase","d","desc","blobName","link","react_default","a","createElement","href","_this3","_this$state","dataset","name","src","logo","alt","es","columns","Header","accessor","Cell","renderLink","value","lastModified","toISOString","maxWidth","contentLength","manual","onFetchData","defaultPageSize","className","React","Component","render","src_App","document","getElementById"],"mappings":"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","file":"static/js/main.c1a3797a.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAABACAYAAACgPErgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE1OEMwMzdBQTc3QzExRTg4MzBGOTczQ0FGRTEwOTI5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE1OEMwMzc5QTc3QzExRTg4MzBGOTczQ0FGRTEwOTI5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIDIyLjEgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YWNiNjI3NTItMTVjMS0zMjQzLWEwNzQtZTY4NTQ5MWVlMGM4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlk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\"","import './polyfills'\r\nimport React from \"react\";\r\nimport { render } from \"react-dom\";\r\nimport _ from \"lodash\";\r\nimport \"./index.css\";\r\nimport logo from './knowledgepool-logo.png'; \r\n\r\n// This sample uses React Table\r\n// Check it out at https://react-table.js.org/#/story/readme\r\nimport ReactTable from \"react-table\";\r\nimport \"react-table/react-table.css\";\r\n\r\n// Import Azure Storage Blob SDK\r\nimport { Aborter, ServiceURL, ContainerURL, StorageURL, AnonymousCredential } from \"@azure/storage-blob\";\r\n\r\n// Account name, and the container to list from\r\nconst account = 'lsstoreuksouthvideo'\r\nconst container = '$web'\r\n\r\nclass App extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n data: [],\r\n pages: 2,\r\n markers: [],\r\n loading: true,\r\n prefix: \"\"\r\n };\r\n this.fetchData = this.listBlobs.bind(this);\r\n }\r\n \r\n listBlobs(state, instance) {\r\n // this lists Blobs in pages defined in state.pageSize\r\n this.setState({ loading: true });\r\n \r\n // Use AnonymousCredential since $web container is made a 'public container' \r\n // and does not require authorization\r\n const anonymousCredential = new AnonymousCredential();\r\n const pipeline = StorageURL.newPipeline(anonymousCredential);\r\n \r\n const serviceURL = new ServiceURL(\r\n `https://${account}.blob.core.windows.net`,\r\n pipeline\r\n );\r\n \r\n // If you are using a SAS token, simply append to ContainerURL here. \r\n // We will use anonymous access hence no SAS token\r\n const containerName = container //+ `?st=2018-11-06T06%3A15%3A24Z&se=2019-11-07T06%3A15%3A00Z&sp=rl&sv=2018-03-28&sr=c&sig=4vCT7aInDWRiypkuYlezN8dos0K2h2DvQ0pnNkMJSFs%3D`;\r\n const containerURL = ContainerURL.fromServiceURL(serviceURL, containerName);\r\n \r\n // Fetch the prefix in the query params to browse into folders\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const prefix = urlParams.get('prefix') || \"resources\";\r\n\r\n // List objects from Blob storage using the prefix\r\n // Delimiter for virtual directories is a forward slash '/' here\r\n containerURL.listBlobHierarchySegment (\r\n Aborter.none,\r\n \"/\",\r\n state.markers[state.page],\r\n {\r\n maxresults: state.pageSize,\r\n prefix: prefix\r\n }\r\n ).then(res => {\r\n // Store the nextMarker in an array for prev/next buttons only if there are more blobs to show\r\n const markers = state.markers.slice();\r\n var totalPages = state.page+1;\r\n if (res.nextMarker) {\r\n markers[(state.page+1)] = res.nextMarker;\r\n totalPages++;\r\n }\r\n \r\n // Combine the found virtual directories and files\r\n Array.prototype.push.apply(res.segment.blobItems, res.segment.blobPrefixes)\r\n\r\n // This is to sort rows, and handles blobName, contentLength and lastModified time\r\n const sortedData = _.orderBy(\r\n res.segment.blobItems,\r\n state.sorted.map(sort => {\r\n return row => {\r\n if (row[sort.id] === null) {\r\n return -Infinity;\r\n } // TODO: following is a workaround to special case contentLength and lastModified\r\n else if(row[sort.id] === undefined){\r\n if(row.properties === undefined)\r\n {\r\n return -Infinity;\r\n } else {\r\n return row.properties[sort.id];\r\n }\r\n }\r\n return typeof row[sort.id] === \"string\"\r\n ? row[sort.id].toLowerCase()\r\n : row[sort.id];\r\n };\r\n }),\r\n state.sorted.map(d => (d.desc ? \"desc\" : \"asc\"))\r\n );\r\n\r\n // Store the state\r\n this.setState({\r\n data: sortedData,\r\n pages: totalPages,\r\n markers: markers,\r\n loading: false,\r\n prefix: prefix\r\n });\r\n });\r\n }\r\n\r\n // Custom links for various scenarios (handles blobs, directories and go back link)\r\n renderLink(blobName) {\r\n var link;\r\n if(blobName === \"../\")\r\n {\r\n link = \"/\"\r\n }\r\n else if(blobName.slice(-1) === \"/\")\r\n {\r\n link = \"?prefix=\" + blobName\r\n } else {\r\n link = \"/\" + blobName\r\n }\r\n return (\r\n \r\n {blobName}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { data, pages, markers, loading, prefix } = this.state;\r\n\r\n // If this is a directory view, add a go back link for the root\r\n var dataset = data\r\n if(prefix !== null)\r\n {\r\n dataset = [{name: \"../\"}].concat(dataset);\r\n }\r\n\r\n return (\r\n