{"version":3,"sources":["api/quest/types-search.ts","images/KennisID-logo.png","api/quest/index.ts","api/quest/document.ts","api/quest/search.ts","images/logo-komo-online.svg","images/logo-komo.svg","images/cover/beoordelingsrichtlijn.svg","images/cover/kwaliteitsverklaring.svg","images/cover/bestekspecificatie.svg","images/cover/unknown.svg","api/quest/utils.ts","components/ToggleFullScreen.tsx","components/Head.tsx","components/Foot.tsx","components/CookieDisclaimer.tsx","components/NavigateTo.tsx","constants/routes.ts","constants/quest.ts","constants/kennisid.ts","constants/misc.ts","utils/kennisid.ts","components/kennisid/KennisIDStatus.tsx","components/Navigation.tsx","components/Layout.tsx","components/search/Query.tsx","components/search/FacetHit.tsx","components/search/Facet.tsx","components/search/FacetList.tsx","components/search/DocumentFilter.tsx","components/search/ResetQuery.tsx","components/search/Filters.tsx","utils/formatters.ts","components/CoverImage.tsx","components/search/Result.tsx","components/search/ResultList.tsx","components/recent/Recent.tsx","components/recent/RecentList.tsx","components/Search.tsx","components/document/DocumentCover.tsx","utils/quest.ts","components/document/DocumentHtml.tsx","components/document/DocumentPdf.tsx","components/document/DocumentNoLicense.tsx","components/document/Content.tsx","components/document/QueryDocument.tsx","components/document/QueryResult.tsx","components/document/QueryResultList.tsx","components/document/Toc.tsx","components/document/Navigation.tsx","components/kvlookup/KvLookupItem.tsx","components/kvlookup/KvLookupList.tsx","components/osflookup/OsfLookupItem.tsx","components/osflookup/OsfLookupList.tsx","components/downloadkomocatalogus/DownloadKomoCatalogus.tsx","components/document/OsfBrlLink.tsx","components/document/KvBrlLink.tsx","components/document/KvBrlLinkList.tsx","components/document/HistoryItem.tsx","components/document/HistoryList.tsx","components/document/History.tsx","components/document/Share.tsx","components/document/Print.tsx","components/document/ToggleNav.tsx","components/linkmanager/Target.tsx","components/linkmanager/TargetList.tsx","components/linkmanager/LinkManager.tsx","components/Document.tsx","App.tsx","serviceWorker.ts","stores/UserStore.ts","stores/ViewStore.ts","stores/SearchStore.ts","stores/DocumentStore.ts","stores/DocumentSearchStore.ts","stores/DocumentHistoryStore.ts","stores/DocumentLookupKvStore.ts","stores/DocumentLookupOsfStore.ts","stores/RecentStore.ts","utils/linkmanager.ts","stores/LinkManagerStore.ts","stores/AnalyticsStore.ts","index.tsx","stores/RootStore.ts","utils/router.ts","api/quest/types-versionmap.ts","api/quest/identification.ts","api/quest/types-document.ts","api/quest/types-facet.ts","api/quest/utils-facet.ts","api/quest/types-metadata.ts"],"names":["QuestQuery","query","page","pageSize","fields","returnFields","facetTerms","termFilters","systemQuery","sort","omitLicenseInvisible","licenseFilteredCount","Object","assign","this","queryResult","Array","isArray","join","list","map","definition","term","name","facet","definitionList","field","summary","returnFieldsDefinitionList","QuestQueryResult","total","hits","QuestFacetList","data","pickForTarget","_hitsFromServer","fromServer","Hit","forEach","hitData","hit","toCamelCase","license","LicenseType","mapTo","push","module","exports","QuestDocumentApi","_API","context","questId","options","o","QuestInfoOptions","axios","get","endpoint","toQueryString","getRequestOptions","then","response","d","QuestDocument","status","QuestDataOptions","html","compareVersion","comparequestid","parseQuestId","add","toString","questDocumentVersion","questNodeId","item","document","QuestId","version","nodeId","title","Title","childCount","ChildCount","composable","Composable","hasChilds","HasChilds","mimeType","MimeType","opened","QuestVersionMapOptions","vm","QuestVersionMap","QuestSearchApi","qr","flatten","post","values","entries","filter","key","value","encodeURIComponent","source","_","v","k","target","exclude","keys","contentType","headers","licenseToken","ToggleFullScreen","inject","observer","toggle","props","rootStore","viewStore","toggleFullScreen","Button","className","size","color","onClick","fullScreen","icon","faWindowRestore","faWindowMaximize","Component","Head","click","Row","Col","xs","sm","md","lg","xl","href","src","logo","alt","Foot","CookieDisclaimer","window","cookie","indexOf","AnalyticsStore","activate","isbot","navigator","userAgent","buttonText","cookieName","onAccept","buttonStyle","backgroundColor","NavigateTo","select","e","ctrlKey","setViewId","viewId","preventDefault","enabled","text","description","VIEW_SEARCH","VIEW_DOCUMENT","BRLPREFIX","URLPREFIX","PBLPREFIX","OSFPREFIX","KVPREFIX","DUBLINCORETYPE_BEOORDELINGSRICHTLIJN","DUBLINCORETYPE_UITVOERINGSRICHTLIJN","DUBLINCORETYPE_KWALITEITSVERKLARING","DUBLINCORETYPE_BESTEKSPECIFICATIE","KENNISIDURL","URLBRISWARENHUIS","URLBOUWBESLUITONLINE","KennisIDInfo","loggedIn","email","uniqueId","organisationName","getKennisIDCallbackUrl","location","protocol","host","KennisIDStatus","kennisIDInfo","profileurl","faUser","kennisidlogo","url","Navigation","path","hasQuestId","userStore","kennisID","Layout","Container","fluid","children","Query","handleChange","queryText","handleSubmit","searchStore","setQueryText","deleteSearchQuery","reaction","Form","inline","onSubmit","Input","type","onChange","placeholder","faTimes","disabled","faSearch","observable","FacetHit","change","toggleFacet","FormGroup","check","Label","CustomInput","id","checked","selected","label","Badge","count","Facet","FacetList","index","length","DocumentFilter","setQueryDocuments","queryDocuments","defaultChecked","ResetQuery","reset","resetFilter","queryFilterCustomized","Filters","formatDate","date","DateTime","fromISO","setLocale","toLocaleString","CoverImage","docType","coverbeoordelingsrichtlijn","coverkwaliteitsverklaring","coverbestekspecificatie","coverunknown","Result","setQuestId","result","questTitle","questDocumentTitle","dublinCoretype","subTitle","dangerouslySetInnerHTML","_createMarkup","contents","questDate","__html","ResultList","more","nextPage","moreHitsAvailable","Recent","recent","RecentList","recentStore","Search","DocumentCover","documentStore","metadata","getFirst","versionTitle","subtitle","desc","vervangt","publisher","publisherdisplay","subtype","subtypedisplay","getBrlLikePrefix","startsWith","hasInternalPrefix","questUrl","DocumentHtml","_observer","MutationObserver","_resolveAll","_contentRef","React","createRef","observe","current","childList","disconnect","ref","htmlData","_resolveImages","_resolveLinkManager","imglist","getElementsByTagName","img","getAttribute","setAttribute","questContext","rootQuestId","lmlist","a","countvalue","parseInt","directurl","directquest","addEventListener","code","linkManagerStore","setCode","DocumentPdf","style","width","height","minHeight","node","DocumentNoLicense","Content","isSet","QueryDocument","documentSearchStore","setShowQueryResult","QueryResult","QueryResultList","Toc","selectNode","toggleTocNode","nodes","tocNodes","toggleNode","bind","faCaretDown","faCaretRight","childs","closeQueryResults","showQueryResult","faChevronCircleLeft","KvLookupItem","kvlookupitem","KvLookupList","documentLookupKvStore","OsfLookupItem","osflookupitem","OsfLookupList","documentLookupOsfStore","DownloadKomoCatalogus","faFileDownload","OsfBrlLink","reference","getFirstReference","KvBrlLinkList","brlDocument","referencelist","getReference","questReference","HistoryItem","documentHistoryStore","setOpen","compare","setCompareVersion","cancelCompare","undefined","viewing","allowcompare","QuestVersionMapItemType","Revision","compareisactive","versionType","faEye","HistoryList","scounter","rcounter","pcounter","versionMap","Successor","Predecessor","reverse","History","open","faClock","Modal","isOpen","ModalHeader","ModalBody","Share","setShareOpen","shareOpen","faShare","Print","print","element","getElementById","iframedom","contentWindow","close","write","outerHTML","focus","setTimeout","faPrint","ToggleNav","toggleTocVisible","isVisible","tocVisible","faOutdent","faIndent","Target","quest","TargetList","targetList","LinkManager","Document","doctype","_renderDocument","App","isReady","_renderCurrentPage","Boolean","hostname","match","UserStore","_rootStore","_updateContext","timeout","_updateKennisIDInfo","kennisIDToken","questEndpoint","expires","minus","minutes","diff","diffNow","toObject","milliseconds","token","i","info","PassportEmail","PassportDisplayFullName","OrganisationName","PassportUniqueId","kennisIDInitialized","action","computed","ViewStore","decodeURIComponent","SearchStore","_questSearchApi","_runQuery","_getFacetDefinitions","queryFacetFilters","_getReturnsFields","queryPage","queryresult","concat","autorun","getHit","sortOrder","QuestFacetSortOrder","Ascending","sortField","QuestFacetSortField","Name","show","flist","hitSelected","DocumentStore","_questDocumentApi","_loadInfo","getInfo","includeLicenseItem","rootquestid","_loadRootToc","_loadHtmlData","getLevel","questid","getCompareDataHtml","_getDataOptions","getDataHtml","doc","transform","importerId","linkManager","DocumentSearchStore","resetQuery","DocumentHistoryStore","_loadHistory","getVersionMap","includeMetadata","DocumentLookupKvStore","_loadKvList","DocumentLookupOsfStore","_loadOsfList","brl","RecentStore","initialQueryExecuted","LinkManagerTarget","default","sequence","LinkManagerQuestTarget","Default","Sequence","Type","Quest","Url","Id","Text","LinkManagerStore","_loadAnchor","tl","targetData","t","_updateQuestId","activated","pathname","search","ReactGA","pageview","q","nq","initialize","routes","params","router","UniversalRouter","_updateState","resolve","currentPath","history","pushState","currentTitle","startRouter","ReactDOM","render","serviceWorker","ready","registration","unregister","allowOffline","includeCollections","includeCollectionMetadata","includePredecessors","includeSuccessors","includePredSuccVersions","maxLevel","itemData","QuestVersionMapItem","online","QuestMetadata","QuestIdentification","_questId","parse","part","p","_trim","includeVersion","start","lastIndexOf","end","substr","substring","includeParents","includeAlternatives","includeAlternativesMetaData","includeImportLog","claimLicenseItem","allowCachedData","allowInvalid","compose","QuestDocumentVersion","LicenseItem","AccessStatus","valid","hasNodes","QuestDocumentNode","Version","CurrentNode","find","f","getFacet","h","filterFacets","some","sf","facetData","facetdefinition","facetDefinition","Term","QuestFacet","showCount","showAllAvailable","showAll","Hits","facetNameForValue","Value","Count","Selected","filterFacetHits","sortFacetHits","rename","facetList","includelist","includes","include","b","toLowerCase","Descending","referenceData","family","defaultValue","_addList","MetadataList","metadataList","Family","DataTypeHint","QuestReference"],"mappings":"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","file":"static/js/main.5a2de414.chunk.js","sourcesContent":["import { pickForTarget, toCamelCase } from './utils';\r\nimport { QuestFacetList, QuestFacetDefinition } from './types-facet';\r\n\r\nexport interface IQuestQuery {\r\n query?: string;\r\n\r\n page?: number;\r\n\r\n pageSize?: number;\r\n\r\n fields?: string | Array;\r\n\r\n returnFields?: string | Array;\r\n\r\n facetTerms?: string | Array;\r\n\r\n termFilters?: string;\r\n\r\n systemQuery?: string;\r\n\r\n sort?: string;\r\n\r\n omitLicenseInvisible?: boolean;\r\n\r\n licenseFilteredCount?: number;\r\n}\r\n\r\nexport class QuestQuery implements IQuestQuery {\r\n constructor(query?: IQuestQuery) {\r\n Object.assign(this, query);\r\n }\r\n\r\n query?: string;\r\n\r\n page?: number = 1;\r\n\r\n pageSize?: number = 25;\r\n\r\n fields?: string | Array = \"QuestId,QuestTitle\";\r\n\r\n returnFields?: string | Array = \"QuestId,QuestTitle\";\r\n\r\n facetTerms?: string | Array;\r\n\r\n termFilters?: string;\r\n\r\n systemQuery?: string;\r\n\r\n sort?: string;\r\n\r\n omitLicenseInvisible?= false;\r\n\r\n licenseFilteredCount?: number;\r\n\r\n flatten(queryResult: QuestQueryResult): void {\r\n if (Array.isArray(this.fields)) {\r\n this.fields = this.fields.join(\",\");\r\n }\r\n\r\n if (Array.isArray(this.facetTerms)) {\r\n const list = this.facetTerms.map((definition) => {\r\n return `${definition.term}=${definition.name}`;\r\n });\r\n\r\n queryResult.facet.definitionList = this.facetTerms;\r\n this.facetTerms = list.join(\",\");\r\n }\r\n\r\n if (Array.isArray(this.returnFields)) {\r\n const list = this.returnFields.map((definition) => {\r\n if (typeof definition == \"string\") {\r\n return definition;\r\n } else {\r\n return `${definition.field}${definition.summary ? \"*\" : \"\"}`;\r\n }\r\n });\r\n\r\n queryResult.returnFieldsDefinitionList = this.returnFields;\r\n this.returnFields = list.join(\",\");\r\n }\r\n }\r\n}\r\n\r\nexport class QuestQueryResult {\r\n fromServer(data: any) {\r\n pickForTarget(data, this, \"hit\", \"facet\");\r\n this._hitsFromServer(data);\r\n this.facet.fromServer(data);\r\n }\r\n\r\n total = 0;\r\n\r\n page = 1;\r\n\r\n pageSize = 0;\r\n\r\n hits = new Array();\r\n\r\n facet = new QuestFacetList();\r\n\r\n returnFieldsDefinitionList?: Array;\r\n\r\n private _hitsFromServer(data: any) {\r\n data.Hit.forEach((hitData: any) => {\r\n let hit = {} as T;\r\n\r\n Object.assign(hit, toCamelCase(hitData));\r\n hit.license = hitData.LicenseType !== \"Hidden\";\r\n\r\n if (this.returnFieldsDefinitionList) {\r\n this.returnFieldsDefinitionList.forEach((definition) => {\r\n if (typeof definition != \"string\" && definition.mapTo) {\r\n ((hit as any)[definition.mapTo!]) = hitData[definition.field];\r\n }\r\n });\r\n }\r\n\r\n this.hits.push(hit);\r\n });\r\n }\r\n}\r\n\r\nexport interface IQuestQueryHit {\r\n license: boolean;\r\n}\r\n\r\nexport interface QuestReturnFieldDefinition {\r\n field: string\r\n\r\n summary?: boolean;\r\n\r\n mapTo?: string;\r\n}","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABpCAYAAADMfIaKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBN0E2MTNGQUQ4NzYxMUUzOTVFOENGOTFBODM3RjkxNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBN0E2MTNGQkQ4NzYxMUUzOTVFOENGOTFBODM3RjkxNCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QTYxM0Y4RDg3NjExRTM5NUU4Q0Y5MUE4MzdGOTE0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE3QTYxM0Y5RDg3NjExRTM5NUU4Q0Y5MUE4MzdGOTE0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Xp0O1QAAH9hJREFUeNrsXQmYVMW1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\"","export * from './document';\r\nexport * from './identification';\r\nexport * from './search';\r\nexport * from './types';\r\nexport * from './types-document';\r\nexport * from './types-metadata';\r\nexport * from './types-search';\r\nexport * from './types-facet';\r\nexport * from './types-versionmap';\r\nexport * from './utils';\r\nexport * from './utils-facet';","import axios from 'axios';\r\nimport { QuestContext } from './types';\r\nimport { QuestDocument, QuestInfoOptions, QuestTocNode, QuestDataOptions, QuestDocumentVersion } from './types-document';\r\nimport { QuestVersionMapOptions, QuestVersionMap } from './types-versionmap';\r\nimport { toQueryString, getRequestOptions } from './utils';\r\nimport { parseQuestId } from './identification';\r\n\r\nexport class QuestDocumentApi {\r\n private _API: string = \"/api/document/\";\r\n\r\n async getInfo(context: QuestContext, questId: string, options?: QuestInfoOptions): Promise {\r\n const o = new QuestInfoOptions();\r\n if (options) {\r\n Object.assign(o, options);\r\n }\r\n\r\n return await axios.get(`${context.endpoint}${this._API}info/${questId}?${toQueryString(o)}`, getRequestOptions(context)).then((response) => {\r\n const d = new QuestDocument();\r\n\r\n if (response.status === 200) {\r\n d.fromServer(response.data);\r\n }\r\n\r\n return d;\r\n });\r\n }\r\n\r\n async getDataHtml(context: QuestContext, questId: string, options?: QuestDataOptions): Promise {\r\n const o = new QuestDataOptions();\r\n if (options) {\r\n Object.assign(o, options);\r\n }\r\n\r\n return await axios.get(`${context.endpoint}${this._API}data/${questId}?${toQueryString(o)}`,\r\n getRequestOptions(context, \"text/html\")).then((response) => {\r\n let html = \"\";\r\n\r\n if (response.status === 200) {\r\n html = response.data;\r\n }\r\n\r\n return html;\r\n });\r\n }\r\n\r\n async getCompareDataHtml(context: QuestContext, questId: string, compareVersion: number, options?: QuestDataOptions): Promise {\r\n const o = new QuestDataOptions();\r\n if (options) {\r\n Object.assign(o, options);\r\n }\r\n\r\n const comparequestid = parseQuestId(questId).add(compareVersion).toString(true);\r\n\r\n return await axios.get(`${context.endpoint}${this._API}compare/${questId}?${toQueryString(o)}&id2=${comparequestid}`,\r\n getRequestOptions(context, \"text/html\")).then((response) => {\r\n let html = \"\";\r\n\r\n if (response.status === 200) {\r\n html = response.data;\r\n }\r\n\r\n return html;\r\n });\r\n }\r\n\r\n async getLevel(context: QuestContext, questDocumentVersion: QuestDocumentVersion, questNodeId?: string): Promise> {\r\n const o = {\r\n questId: questDocumentVersion.questId\r\n };\r\n\r\n return await axios.get(`${context.endpoint}${this._API}toclevel/${questNodeId ? questNodeId : \"\"}?${toQueryString(o)}`, getRequestOptions(context)).then((response) => {\r\n const list = new Array();\r\n\r\n if (response.status === 200) {\r\n response.data.forEach((item: any) => {\r\n list.push({\r\n questId: parseQuestId(questDocumentVersion.document.questId).add(item.QuestId).add(questDocumentVersion.version).toString(true),\r\n nodeId: item.QuestId,\r\n title: item.Title,\r\n childCount: item.ChildCount,\r\n composable: item.Composable,\r\n hasChilds: item.HasChilds,\r\n mimeType: item.MimeType,\r\n opened: false\r\n });\r\n });\r\n }\r\n\r\n return list;\r\n });\r\n }\r\n\r\n async getVersionMap(context: QuestContext, questId: string, options?: QuestVersionMapOptions): Promise {\r\n const o = new QuestVersionMapOptions();\r\n if (options) {\r\n Object.assign(o, options);\r\n }\r\n\r\n return await axios.get(`${context.endpoint}${this._API}versionmap/${questId}?${toQueryString(o)}`,\r\n getRequestOptions(context)).then((response) => {\r\n const vm = new QuestVersionMap();\r\n vm.questId = questId;\r\n\r\n if (response.status === 200) {\r\n vm.fromServer(response.data);\r\n }\r\n\r\n return vm;\r\n });\r\n }\r\n}","import axios from 'axios';\r\nimport { QuestContext } from './types';\r\nimport { QuestQuery, QuestQueryResult, IQuestQueryHit } from './types-search';\r\nimport { toQueryString, getRequestOptions } from './utils';\r\n\r\nexport class QuestSearchApi {\r\n async query(context: QuestContext, query: QuestQuery): Promise> {\r\n const qr = new QuestQueryResult();\r\n\r\n query.flatten(qr);\r\n\r\n return await axios.post(`${context.endpoint}/api/search/query`, toQueryString(query),\r\n getRequestOptions(context, \"application/x-www-form-urlencoded\")).then((response) => {\r\n if (response.status === 200) {\r\n qr.fromServer(response.data);\r\n }\r\n\r\n return qr;\r\n });\r\n }\r\n}","module.exports = __webpack_public_path__ + \"static/media/logo-komo-online.585be669.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-komo.0ca221a7.svg\";","module.exports = __webpack_public_path__ + \"static/media/beoordelingsrichtlijn.494f53d6.svg\";","module.exports = __webpack_public_path__ + \"static/media/kwaliteitsverklaring.dee4dbc7.svg\";","module.exports = __webpack_public_path__ + \"static/media/bestekspecificatie.02f02ce2.svg\";","module.exports = __webpack_public_path__ + \"static/media/unknown.fb7e4119.svg\";","import * as _ from 'lodash';\r\nimport { QuestContext } from './types';\r\n\r\nexport function toQueryString(values: object): string {\r\n return Object.entries(values)\r\n .filter(([key, value]) => { return (key && (value || value === false)) })\r\n .map(([key, value]) => encodeURIComponent(key) + \"=\" + encodeURIComponent(value.toString())).join(\"&\");\r\n}\r\n\r\nexport function toCamelCase(source: any): any {\r\n return _.mapKeys(source, (v, k) => _.camelCase(k));\r\n}\r\n\r\n// Set values from source to target but only if they already exist as property on target\r\nexport function pickForTarget(source: object, target: object, ...exclude: string[]) {\r\n const keys = _.difference(_.keys(target), exclude); \r\n const data = _.pick(toCamelCase(source), keys);\r\n Object.assign(target, data);\r\n}\r\n\r\nexport function pickForTargetTyped(source: object, target: T, ...exclude: string[]) {\r\n const keys = _.difference(_.keys(target), exclude);\r\n const data = _.pick(toCamelCase(source), keys);\r\n Object.assign(target, data);\r\n}\r\n\r\nexport function getRequestOptions(context: QuestContext, contentType?: string) {\r\n return {\r\n headers: {\r\n \"Content-Type\": contentType ? contentType : \"application/json\",\r\n \"MagmaLicenseToken\": context.licenseToken\r\n }\r\n };\r\n}","import React, { Component } from 'react';\r\nimport { Button } from 'reactstrap';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faWindowMaximize } from '@fortawesome/free-solid-svg-icons';\r\nimport { faWindowRestore } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n\r\n@observer\r\nexport default class ToggleFullScreen extends Component {\r\n\ttoggle = () => {\r\n\t\tthis.props.rootStore!.viewStore.toggleFullScreen();\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport RootStore from './../stores/RootStore';\r\nimport ToggleFullScreen from './ToggleFullScreen';\r\nimport logo from '../images/logo-komo-online.svg';\r\nimport './Head.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Head extends Component {\r\n\tclick = () => {\r\n\t\t//this.props.rootStore!.viewStore.setQuestId(\"\");\r\n\t}\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\"KOMO-online\"\r\n\t\t\t\t\r\n\t\t\t\t\r\n
\r\n

\r\n\t\t\t\t\tT: 085 - 486 24 20
\r\n E: info@komo.nl
\r\n W: www.komo.nl\r\n

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport logo from '../images/logo-komo.svg';\r\nimport './Foot.css';\r\n\r\nexport default class Foot extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n \r\n

Adresgegevens

\r\n \"KOMO-logo\"\r\n

\r\n Burgemeester van Reenensingel 101
\r\n Postbus 420
\r\n 2800 AK Gouda\r\n\t\t\t\t\t\t

\r\n \r\n \r\n

Social media

\r\n

\r\n KOMO op LinkedIn
\r\n KOMO op YouTube\r\n

\r\n \r\n \r\n

Overig

\r\n

\r\n Disclaimer
\r\n Privacy en Cookieverklaring\r\n

\r\n \r\n
\r\n \r\n \r\n

2020 © KOMO

\r\n \r\n
\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport CookieConsent from 'react-cookie-consent';\r\nimport RootStore from '../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class CookieDisclaimer extends Component {\r\n componentDidMount() {\r\n if (window.document.cookie.indexOf(\"CookieConsent=true\") !== -1) {\r\n this.props.rootStore!.AnalyticsStore.activate();\r\n }\r\n }\r\n\r\n render() {\r\n const isbot = window.navigator.userAgent.indexOf('Googlebot') > 0;\r\n\r\n // zie: https://www.npmjs.com/package/react-cookie-consent\r\n return (\r\n <>\r\n {!isbot &&\r\n \r\n KOMO-online maakt gebruik van cookies om ervoor te zorgen dat onze website optimaal functioneert.\r\n Tevens worden cookies gebruikt om informatie over het gebruik van de website te verzamelen en te analyseren ter verbetering van de website.\r\n\r\n Door op akkoord te klikken, of door gebruik te maken van deze website, gaat u hiermee akkoord.\r\n \r\n }\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport RootStore from '../stores/RootStore';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore,\r\n\ttext: string;\r\n\tdescription: string;\r\n\tpath: string;\r\n\tviewId: string;\r\n\tenabled: boolean;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class NavigateTo extends Component {\r\n\tselect = (e: React.MouseEvent) => {\r\n\t\tif (!e.ctrlKey) {\r\n\t\t\tthis.props.rootStore!.viewStore.setViewId(this.props.viewId);\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.props.enabled) {\r\n\t\t\treturn \r\n\t\t\t\t{this.props.text}\r\n\t\t\t\t{this.props.description}\r\n\t\t\t\r\n\t\t} else {\r\n\t\t\treturn \r\n\t\t\t\t{this.props.text}\r\n\t\t\t\t{this.props.description}\r\n\t\t\t\r\n\t\t}\r\n\t}\r\n}","export const PATH_SEARCH = \"/\";\r\nexport const PATH_DOCUMENT = \"/\"; // prefix\r\n\r\nexport const VIEW_SEARCH = \"search\";\r\nexport const VIEW_DOCUMENT = \"document\";\r\n\r\nexport const TITLE_SEARCH = \"KOMO-online\";\r\nexport const TITLE_DOCUMENT = \"KOMO-online - document\";","export const BRLPREFIX = \"brl/brl\";\r\nexport const URLPREFIX = \"url/url\";\r\nexport const PBLPREFIX = \"pbl/pbl\";\r\n\r\nexport const OSFPREFIX = \"osf/\";\r\nexport const KVPREFIX = \"kv/\";\r\n\r\nexport const DUBLINCORETYPE_BEOORDELINGSRICHTLIJN = \"Beoordelingsrichtlijn\";\r\nexport const DUBLINCORETYPE_UITVOERINGSRICHTLIJN = \"Uitvoeringsrichtlijn\";\r\nexport const DUBLINCORETYPE_KWALITEITSVERKLARING = \"Kwaliteitsverklaring\";\r\nexport const DUBLINCORETYPE_BESTEKSPECIFICATIE = \"Bestekspecificatie\";","export const KENNISIDURL = \"https://www.kennisid.nl\";","export const URLBRISWARENHUIS = \"https://www.briswarenhuis.nl\";\r\nexport const URLBOUWBESLUITONLINE = \"https://www.bouwbesluitonline.nl\";\r\nexport const GOOGLEANALYTICS = \"UA-18321768-12\";","import { KENNISIDURL } from './../constants';\r\n\r\nexport class KennisIDInfo {\r\n loggedIn: boolean = false;\r\n\r\n email: string = \"\";\r\n\r\n name: string = \"\";\r\n\r\n uniqueId: string = \"\";\r\n\r\n organisationName: string = \"\";\r\n}\r\n\r\nexport function getKennisIDRedirectUrl() { \r\n return `${KENNISIDURL}/retrievetoken?returnurl=${encodeURIComponent(getKennisIDCallbackUrl())}`;\r\n}\r\n\r\nexport function getKennisIDLoginUrl() { \r\n return `${KENNISIDURL}/authenticate?returnurl=${encodeURIComponent(getKennisIDCallbackUrl())}`;\r\n}\r\n\r\nexport function getKennisIDActiveProfile() {\r\n\treturn `${KENNISIDURL}/profiel`;\r\n}\r\n\r\nfunction getKennisIDCallbackUrl() {\r\n\r\n return window.location.protocol + \"//\" + window.location.host + \"/kennisid/callback?token={0}&returnurl=\" + encodeURIComponent(window.location.href);\r\n}","import React, { Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { getKennisIDLoginUrl, getKennisIDActiveProfile, KennisIDInfo } from './../../utils/kennisid';\r\nimport kennisidlogo from '../../images/KennisID-logo.png';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUser } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props { \r\n kennisIDInfo: KennisIDInfo;\r\n}\r\n\r\n@observer\r\nexport default class KennisIDStatus extends Component {\r\n render() {\r\n\t\tif (!this.props.kennisIDInfo.loggedIn) {\t\t\r\n const url = getKennisIDLoginUrl();\t\t\r\n return (\r\n
\r\n\t\t\t\t\tInloggen met KennisID \"KennisID\"\r\n
\r\n )\r\n\t\t} else {\r\n\t\t\tconst profileurl = getKennisIDActiveProfile();\r\n return (\r\n\t\t\t\t
\r\n\t\t\t\t\t {this.props.kennisIDInfo.name} \"KennisID\"\r\n\t\t\t\t
\r\n )\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport NavigateTo from './NavigateTo';\r\nimport RootStore from './../stores/RootStore';\r\nimport { Row, Col } from 'reactstrap';\r\nimport { PATH_SEARCH, PATH_DOCUMENT, VIEW_SEARCH, VIEW_DOCUMENT } from './../constants';\r\nimport './Navigation.css';\r\nimport KennisIDStatus from './kennisid/KennisIDStatus';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Navigation extends Component {\r\n render() {\r\n return (\r\n \r\n\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Container } from 'reactstrap';\r\nimport Head from './Head';\r\nimport Foot from './Foot';\r\nimport CookieDisclaimer from './CookieDisclaimer';\r\nimport Navigation from './Navigation';\r\nimport RootStore from '../stores/RootStore';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Layout extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n \r\n\t\t\t\t\r\n\t\t\t\t{this.props.children} \r\n \r\n \r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Form, Button, Input } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Query extends Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n reaction(() => this.props.rootStore!.searchStore.queryText, (text, reaction) => {\r\n if (this.queryText !== text) {\r\n this.queryText = text;\r\n }\r\n });\r\n }\r\n\r\n @observable\r\n queryText: string = this.props.rootStore!.searchStore!.queryText;\r\n\r\n handleChange = (e: any) => {\r\n this.queryText = e.target.value;\r\n };\r\n\r\n handleSubmit = (e: any) => {\r\n this.props.rootStore!.searchStore.setQueryText(this.queryText);\r\n\r\n e.preventDefault();\r\n };\r\n\r\n deleteSearchQuery = (e: any) => {\r\n this.queryText = \"\";\r\n this.props.rootStore!.searchStore.setQueryText(\"\");\r\n };\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n \r\n \r\n \r\n\t\t\t\t
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { CustomInput, FormGroup, Label, Badge } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { QuestFacetHit } from './../../api/quest';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n hit: QuestFacetHit;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class FacetHit extends Component {\r\n change = () => {\r\n this.props.rootStore!.searchStore.toggleFacet(this.props.hit.facet.term, this.props.hit.value);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { FormGroup, Label } from 'reactstrap';\r\nimport { QuestFacet } from './../../api/quest';\r\nimport FacetHit from './FacetHit';\r\n\r\ninterface Props {\r\n facet: QuestFacet;\r\n index: number;\r\n}\r\n\r\n@observer\r\nexport default class Facet extends Component {\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n {this.props.facet.hits.map((hit) => )} \r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport Facet from './Facet';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class FacetList extends Component {\r\n render() {\r\n return (\r\n
\r\n {this.props.rootStore!.searchStore.queryResult!.facet.list.map((facet, index) => facet.hits.length > 0 &&\r\n \r\n )}\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { CustomInput } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class DocumentFilter extends Component {\r\n select = (e: React.MouseEvent) => {\r\n this.props.rootStore!.searchStore.setQueryDocuments(!this.props.rootStore!.searchStore.queryDocuments); \r\n }\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n \r\n\t\t\t\t

\r\n\t\t\t
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport './ResultList.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class ResetQuery extends Component {\r\n\treset = (e: React.MouseEvent) => {\r\n\t\tthis.props.rootStore!.searchStore.resetFilter();\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\trender() {\r\n if (this.props.rootStore!.searchStore.queryFilterCustomized) {\r\n\t\t\treturn

Herstel filter

\r\n\t\t} else {\r\n\t\t\treturn

 

\r\n\t\t}\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport FacetList from './FacetList';\r\nimport DocumentFilter from './DocumentFilter';\r\nimport ResetQuery from './ResetQuery';\r\nimport './Filters.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Filters extends Component {\r\n resetFilter = (e: React.MouseEvent) => {\r\n this.props.rootStore!.searchStore.resetFilter();\r\n e.preventDefault();\r\n }\r\n\r\n\trender() {\r\n\r\n return (\r\n
\r\n

Filteren

\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}","import { DateTime } from 'luxon';\r\n\r\nexport function formatDate(date: string) {\r\n const d = DateTime.fromISO(date);\r\n\r\n return d.setLocale(\"nl\").toLocaleString();\r\n}","import React, { Component } from 'react';\r\nimport './CoverImage.css';\r\nimport coverbeoordelingsrichtlijn from '../images/cover/beoordelingsrichtlijn.svg';\r\nimport coverkwaliteitsverklaring from '../images/cover/kwaliteitsverklaring.svg';\r\nimport coverbestekspecificatie from '../images/cover/bestekspecificatie.svg';\r\nimport coverunknown from '../images/cover/unknown.svg';\r\nimport { DUBLINCORETYPE_BESTEKSPECIFICATIE, DUBLINCORETYPE_BEOORDELINGSRICHTLIJN, DUBLINCORETYPE_UITVOERINGSRICHTLIJN, DUBLINCORETYPE_KWALITEITSVERKLARING } from './../constants';\r\n\r\ninterface Props {\r\n\tdocType?: string;\r\n}\r\n\r\nexport default class CoverImage extends Component {\r\n\trender() {\r\n if ((this.props.docType === DUBLINCORETYPE_BEOORDELINGSRICHTLIJN) || (this.props.docType === DUBLINCORETYPE_UITVOERINGSRICHTLIJN)) {\r\n\t\t\treturn \"beoordelingsrichtlijn\"\r\n } else if (this.props.docType === DUBLINCORETYPE_KWALITEITSVERKLARING) {\r\n\t\t\treturn \"kwaliteitsverklaring\"\r\n } else if (this.props.docType === DUBLINCORETYPE_BESTEKSPECIFICATIE) {\r\n\t\t\treturn \"bestekspecificatie\"\r\n\t\t} else {\r\n\t\t\treturn \"onbekend\"\r\n\t\t}\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { formatDate } from '../../utils/formatters';\r\nimport { KomoHit } from '../../stores/SearchStore';\r\nimport CoverImage from './../CoverImage';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n\tresult: KomoHit;\r\n\tindex: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Result extends Component {\r\n\tselect = (e: React.MouseEvent) => {\r\n\t\tif (!e.ctrlKey) {\r\n\t\t\tthis.props.rootStore!.viewStore.setQuestId(this.props.result.questId);\r\n\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n render() {\r\n let title = this.props.result.questTitle;\r\n if (this.props.result.questTitle !== this.props.result.questDocumentTitle) {\r\n title += \" - \" + this.props.result.questDocumentTitle;\r\n }\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n

{title}

\r\n\t\t\t\t\t\t\t\t

{this.props.result.subTitle}

\r\n\t\t\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t\t\t{this.props.result.license &&\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t\t{this.props.result.dublinCoretype}\r\n\t\t\t\t\t\t\t\t\t\tPublicatiedatum: {formatDate(this.props.result.questDate)}
\r\n\t\t\t\t\t\t\t\t\t\tBekijken\r\n\t\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{!this.props.result.license &&\r\n\t\t\t\t\t\t\t\t\t
geen licentie
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n\r\n\tprivate _createMarkup(html: string) {\r\n\t\treturn { __html: html };\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport Result from './Result';\r\nimport RootStore from '../../stores/RootStore';\r\nimport './ResultList.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class ResultList extends Component {\r\n\tmore = (e: React.MouseEvent) => {\r\n this.props.rootStore!.searchStore.nextPage();\r\n e.preventDefault();\r\n }\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n\t\t\t\t

Resultaten

\r\n
{this.props.rootStore!.searchStore.queryResult!.total} {this.props.rootStore!.searchStore.queryResult!.total === 1 ? \"resultaat\" : \"resultaten\"}
\r\n\r\n\t\t\t\t{this.props.rootStore!.searchStore.queryResult!.hits.map((result, index) => )}\r\n\r\n {this.props.rootStore!.searchStore.moreHitsAvailable &&\r\n\t\t\t\t\t



\r\n }\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { KomoRecentHit } from '../../stores/RecentStore';\r\nimport CoverImage from './../CoverImage';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n recent: KomoRecentHit;\r\n index: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Recent extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.recent.questId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n

{this.props.recent.questTitle}

\r\n\t\t\t\t\t\t\t\t
{this.props.recent.subTitle}
\r\n\t\t\t\t\t\t\t\t{this.props.recent.license &&\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tBekijken\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{!this.props.recent.license &&\r\n\t\t\t\t\t\t\t\t\t
geen licentie
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
\r\n
\r\n )\r\n }\r\n\r\n private _createMarkup(html: string) {\r\n return { __html: html };\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport Recent from './Recent';\r\nimport RootStore from '../../stores/RootStore';\r\nimport './RecentList.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class RecentList extends Component {\r\n render() {\r\n return (\r\n\t\t\t
\r\n

Recent gewijzigd

\r\n {this.props.rootStore!.recentStore.queryResult!.hits.map((recent, index) => )}\r\n
\r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport Query from './search/Query';\r\nimport Filters from './search/Filters';\r\nimport ResultList from './search/ResultList';\r\nimport RecentList from './recent/RecentList';\r\nimport RootStore from '../stores/RootStore';\r\nimport './Search.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Search extends Component {\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { formatDate } from '../../utils/formatters';\r\nimport CoverImage from './../CoverImage';\r\nimport './DocumentCover.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class DocumentCover extends Component {\r\n\trender() {\r\n\t\tconst d = this.props.rootStore!.documentStore.document;\r\n\t\tconst v = d.version;\r\n\r\n\t\tlet title = d.metadata.getFirst(\"DublinCore\", \"title.maintitle\");\r\n\t\tif (!title) {\r\n\t\t\ttitle = d.versionTitle;\r\n\t\t}\r\n\r\n\t\tlet subtitle = d.metadata.getFirst(\"DublinCore\", \"title.subtitle\");\r\n\t\tif (!subtitle) {\r\n\t\t\tsubtitle = d.metadata.getFirst(\"Custom\", \"tt_pubregel\");\r\n\t\t}\r\n\r\n\t\tconst desc = d.metadata.getFirst(\"Custom\", \"description\");\r\n\r\n\t\tconst vervangt = d.metadata.getFirst(\"Custom\", \"Vervangt\");\r\n\t\tconst type = d.metadata.getFirst(\"DublinCore\", \"type\");\r\n\r\n\t\tconst publisher = d.metadata.get(\"DublinCore\", \"publisher\");\r\n\t\tconst publisherdisplay = publisher.join(\" en \");\r\n\t\tconst subtype = d.metadata.get(\"Custom\", \"Subtype\");\r\n\t\tconst subtypedisplay = subtype.join(\", \");\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

{title}

\r\n\t\t\t\t\t\t\t

{subtitle}

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Publicatiedatum:
\r\n\t\t\t\t\t\t
{formatDate(v.date)}
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{type && type.length > 0 &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Keurmerk:
\r\n\t\t\t\t\t\t\t
{type}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{subtype && subtype.length > 0 &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Soort:
\r\n\t\t\t\t\t\t\t
{subtypedisplay}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{vervangt && vervangt.length > 0 &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Vervangt:
\r\n\t\t\t\t\t\t\t
{vervangt}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t{desc && desc.length > 0 &&\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Samenvatting:
\r\n\t\t\t\t\t\t\t
{desc}
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{publisher && publisher.length > 0 &&\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Copyrights
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t© Copyright {publisherdisplay}. Alle rechten voorbehouden. Tenzij anders vermeld berusten alle rechten op informatie (tekst, beeld, geluid, video, etc) die u op deze site aantreft bij {publisherdisplay}.

\r\n\t\t\t\t\t\t\tGehele of gedeeltelijke overname, plaatsing op andere sites, verveelvoudiging op welke andere wijze dan ook en/of commercieel gebruik van deze informatie is niet toegestaan, tenzij hiervoor\r\n\t\t\t\t\tuitdrukkelijk schriftelijke toestemming is verleend door Imeco of tenzij aan de onderstaande voorwaarden wordt voldaan.

\r\n\t\t\t\t\t\t\tDeze informatie mag worden bekeken op een scherm, gedownload worden op een hard-disk of geprint worden, mits dit geschied voor persoonlijk, informatief en niet-commercieel gebruik, mits de\r\n\t\t\t\t\tinformatie niet gewijzigd wordt, mits de volgende copyright-tekst in elke copy aanwezig is: “© Copyright {publisherdisplay}”, mits copyright, handelsmerk en andere van toepassing zijnde teksten niet worden\r\n\t\t\t\t\tverwijderd en mits de informatie niet wordt gebruikt in een ander werk of publicatie in welk medium dan ook.

\r\n\t\t\t\t\t\t{publisherdisplay} voert het beheer over de pagina’s op deze website. Het linken en verwijzen naar de pagina’s op deze website is toegestaan.\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t}\r\n\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}","import { BRLPREFIX, URLPREFIX, PBLPREFIX, OSFPREFIX, KVPREFIX, URLBRISWARENHUIS, URLBOUWBESLUITONLINE } from './../constants';\r\n\r\nexport function getBrlLikePrefix(id: string | null): string | undefined {\r\n if (id) {\r\n if (id.startsWith(BRLPREFIX)) {\r\n return BRLPREFIX;\r\n } else if (id.startsWith(URLPREFIX)) {\r\n return URLPREFIX;\r\n } else if (id.startsWith(PBLPREFIX)) {\r\n return PBLPREFIX;\r\n }\r\n }\r\n}\r\n\r\nexport function hasInternalPrefix(id: string): boolean {\r\n if (id && (id.startsWith(BRLPREFIX) || id.startsWith(URLPREFIX) || id.startsWith(PBLPREFIX) ||\r\n id.startsWith(OSFPREFIX) || id.startsWith(KVPREFIX))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function questUrl(id: string, loggedIn: boolean) {\r\n if (hasInternalPrefix(id)) {\r\n return id;\r\n } else {\r\n return (loggedIn ? URLBRISWARENHUIS : URLBOUWBESLUITONLINE) + \"/\" + id;\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { questUrl, hasInternalPrefix } from './../../utils/quest';\r\nimport './DocumentHtml.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n\r\n@observer\r\nexport default class DocumentHtml extends Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this._contentRef = React.createRef();\r\n }\r\n\r\n private _observer = new MutationObserver(() => { \r\n this._resolveAll();\r\n });\r\n private _contentRef: React.RefObject;\r\n\r\n componentDidMount() { \r\n this._resolveAll();\r\n\r\n this._observer.observe(this._contentRef.current as Node, {\r\n // Check config in https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\r\n childList: true\r\n }); \r\n }\r\n\r\n componentWillUnmount() { \r\n this._observer.disconnect();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n )\r\n }\r\n\r\n private _createMarkup(html: string) {\r\n return { __html: html };\r\n }\r\n\r\n private _resolveAll() {\r\n this._resolveImages();\r\n this._resolveLinkManager();\r\n }\r\n\r\n private _resolveImages() { \r\n if (this._contentRef.current) {\r\n const imglist = (this._contentRef.current as HTMLElement).getElementsByTagName(\"img\");\r\n\r\n for (let index = 0; index < imglist.length; index++) {\r\n const img: HTMLImageElement = imglist.item(index) as HTMLImageElement;\r\n const src = img.getAttribute(\"data-original\");\r\n if (src) {\r\n img.setAttribute(\"src\", `${this.props.rootStore!.userStore.questContext.endpoint}/api/document/data/${this.props.rootStore!.documentStore.rootQuestId}/${src}?MagmaLicenseToken=${this.props.rootStore!.userStore.questContext.licenseToken}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _resolveLinkManager() {\r\n if (this._contentRef.current) {\r\n const lmlist = (this._contentRef.current as HTMLElement).getElementsByTagName(\"a\");\r\n\r\n for (let index = 0; index < lmlist.length; index++) {\r\n const a: HTMLAnchorElement = lmlist.item(index) as HTMLAnchorElement;\r\n\r\n const countvalue = a.getAttribute(\"data-lmtargetcount\");\r\n if (countvalue) {\r\n const count = parseInt(countvalue);\r\n\r\n const directurl = a.getAttribute(\"data-lmdirecturl\");\r\n const directquest = a.getAttribute(\"data-lmdirectquest\");\r\n\r\n let url: string | null = null;\r\n let target: string | null = null;\r\n\r\n if (directurl) {\r\n url = directurl;\r\n } else if (directquest) {\r\n if (!hasInternalPrefix(directquest)) {\r\n target = \"komo\";\r\n }\r\n url = questUrl(directquest, this.props.rootStore!.userStore!.kennisID.loggedIn);\r\n }\r\n\r\n if (url) {\r\n a.setAttribute(\"href\", url);\r\n if (target) {\r\n a.setAttribute(\"target\", target);\r\n }\r\n }\r\n\r\n if (count > 1) {\r\n const code = a.getAttribute(\"data-lmcode\");\r\n if (code) {\r\n a.addEventListener(\"click\", (e: MouseEvent) => {\r\n const a: HTMLAnchorElement = (e.target as HTMLAnchorElement);\r\n const code = a.getAttribute(\"data-lmcode\");\r\n if (code) {\r\n this.props.rootStore!.linkManagerStore.setCode(code);\r\n }\r\n e.preventDefault();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class DocumentPdf extends Component {\r\n render() {\r\n return (\r\n\t\t\tPDF \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class DocumentNoLicense extends Component {\r\n render() {\r\n const d = this.props.rootStore!.documentStore.document;\r\n \r\n return (\r\n
\r\n

{d.versionTitle}

\r\n \r\n Helaas, u heeft geen toegang tot dit document.\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from './../../stores/RootStore';\r\nimport DocumentCover from './DocumentCover';\r\nimport DocumentHtml from './DocumentHtml';\r\nimport DocumentPdf from './DocumentPdf';\r\nimport DocumentNoLicense from './DocumentNoLicense';\r\nimport { DUBLINCORETYPE_KWALITEITSVERKLARING, DUBLINCORETYPE_BESTEKSPECIFICATIE } from './../../constants';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Content extends Component{\r\n render() {\r\n if (!this.props.rootStore!.documentStore.document.version.isSet) {\r\n return
Laden...
\r\n } else if (!this.props.rootStore!.documentStore.document.license) {\r\n return \r\n } else if (this.props.rootStore!.documentStore.document.metadata.getFirst(\"DublinCore\", \"type\") === DUBLINCORETYPE_KWALITEITSVERKLARING) {\r\n\t\t\treturn \r\n } else if (this.props.rootStore!.documentStore.document.metadata.getFirst(\"DublinCore\", \"type\") === DUBLINCORETYPE_BESTEKSPECIFICATIE) {\r\n\t\t\treturn \r\n } else if (!this.props.rootStore!.documentStore.document.version.node.isSet) {\r\n return \r\n } else if (this.props.rootStore!.documentStore.document.version.node.mimeType === \"application/pdf\") {\r\n return \r\n } else {\r\n return \r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Form, Button, Input } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class QueryDocument extends Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n reaction(() => this.props.rootStore!.documentSearchStore.queryText, (text, reaction) => {\r\n if (this.queryText !== text) {\r\n this.queryText = text;\r\n }\r\n });\r\n }\r\n\r\n @observable\r\n queryText: string = this.props.rootStore!.documentSearchStore.queryText;\r\n\r\n handleChange = (e: any) => {\r\n this.queryText = e.target.value;\r\n };\r\n\r\n handleSubmit = (e: any) => {\r\n this.props.rootStore!.documentSearchStore.setQueryText(this.queryText);\r\n this.props.rootStore!.documentSearchStore.setShowQueryResult(true);\r\n\r\n e.preventDefault();\r\n };\r\n\r\n deleteSearchQuery = (e: any) => {\r\n this.queryText = \"\";\r\n this.props.rootStore!.documentSearchStore.setShowQueryResult(false);\r\n };\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n\t\t\t\t\r\n \r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { KomoDocumentNodeHit } from '../../stores/DocumentSearchStore';\r\nimport './../search/ResultList.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n result: KomoDocumentNodeHit;\r\n index: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class QueryResult extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.result.questId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n\t\t\t\r\n )\r\n }\r\n\r\n private _createMarkup(html: string) {\r\n return { __html: html };\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport QueryResult from './QueryResult';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class QueryResultList extends Component {\r\n more = (e: React.MouseEvent) => {\r\n this.props.rootStore!.documentSearchStore.nextPage();\r\n e.preventDefault();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
{this.props.rootStore!.documentSearchStore.queryResult!.total} {this.props.rootStore!.documentSearchStore.queryResult!.total === 1 ? \"resultaat\" : \"resultaten\"}
\r\n {this.props.rootStore!.documentSearchStore.queryResult!.hits.map((result, index) => )}\r\n\r\n {this.props.rootStore!.documentSearchStore.moreHitsAvailable &&\r\n \r\n }\r\n
\r\n )\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport RootStore from './../../stores/RootStore';\r\nimport { QuestTocNode } from './../../api/quest';\r\nimport { PATH_DOCUMENT } from './../../constants';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCaretRight } from '@fortawesome/free-solid-svg-icons';\r\nimport { faCaretDown } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n\ttocNodes: Array,\r\n\trootStore: RootStore,\r\n}\r\n\r\n@observer\r\nexport default class Toc extends Component {\r\n\tselectNode = (node: QuestTocNode, e: React.MouseEvent) => {\r\n\t\tif (!e.ctrlKey) {\r\n\t\t\tif (this.props.rootStore!.documentStore.document.license) {\r\n\t\t\t\tthis.props.rootStore.viewStore.setQuestId(node.questId);\r\n\r\n\t\t\t\tif (!node.opened) {\r\n\t\t\t\t\tthis.props.rootStore.documentStore.toggleTocNode(node);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst nodes = this.props.tocNodes;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{nodes.map(node => {\r\n\t\t\t\t\tconst toggleNode = this.props.rootStore.documentStore.toggleTocNode.bind(this, node);\r\n\t\t\t\t\tconst selectNode = this.selectNode.bind(this, node);\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{node.hasChilds && }\r\n\t\t\t\t\t\t\t\t{node.title}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{node.hasChilds && node.opened && node.childs && }\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t})}\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport QueryDocument from './QueryDocument';\r\nimport QueryResultList from './QueryResultList';\r\nimport Toc from './Toc';\r\nimport { PATH_DOCUMENT } from './../../constants';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faChevronCircleLeft } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Navigation extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.rootStore!.documentStore.rootQuestId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n closeQueryResults = (e: React.MouseEvent) => { \r\n this.props.rootStore!.documentSearchStore.setShowQueryResult(false);\r\n }\r\n\r\n render() {\r\n return (\r\n\t\t\t
\r\n \r\n {this.props.rootStore!.documentSearchStore.showQueryResult &&\r\n\t\t\t\t\t\r\n\t\t\t\t\t

\r\n \r\n\t\t\t\t
\r\n }\r\n\r\n {!this.props.rootStore!.documentSearchStore.showQueryResult &&\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\tTitelpagina\r\n\t\t\t\t\t
\r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { KomoKvHit } from '../../stores/DocumentLookupKvStore';\r\nimport CoverImage from './../CoverImage';\r\nimport { DUBLINCORETYPE_KWALITEITSVERKLARING } from './../../constants';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n\tkvlookupitem: KomoKvHit;\r\n\tindex: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class KvLookupItem extends Component {\r\n\tselect = (e: React.MouseEvent) => {\r\n\t\tif (!e.ctrlKey) {\r\n\t\t\tthis.props.rootStore!.viewStore.setQuestId(this.props.kvlookupitem.questId);\r\n\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n \r\n\t\t\t\t\t\t\t\r\n

{this.props.kvlookupitem.questTitle}

\r\n\t\t\t\t\t\t\t\t
{this.props.kvlookupitem.subTitle}
\r\n\t\t\t\t\t\t\t\t{this.props.kvlookupitem.license &&\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\tBekijken\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t{!this.props.kvlookupitem.license &&\r\n\t\t\t\t\t\t\t\t\t
geen licentie
\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport KvLookupItem from './KvLookupItem';\r\nimport RootStore from '../../stores/RootStore';\r\nimport './KvLookupList.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class KvLookupList extends Component {\r\n\tmore = (e: React.MouseEvent) => {\r\n\t\tthis.props.rootStore!.documentLookupKvStore.nextPage();\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.props.rootStore!.documentLookupKvStore.queryResult!.hits.length > 0) {\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n

Kwaliteitsverklaringen

\r\n
{this.props.rootStore!.documentLookupKvStore.queryResult!.total} {this.props.rootStore!.documentLookupKvStore.queryResult!.total === 1 ? \"resultaat\" : \"resultaten\"}
\t\t\t\t\t\r\n\r\n\t\t\t\t\t{this.props.rootStore!.documentLookupKvStore.queryResult!.hits.map((kvlookupitem, index) => )}\r\n\r\n\t\t\t\t\t{this.props.rootStore!.documentLookupKvStore.moreHitsAvailable &&\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { KomoOsfHit } from '../../stores/DocumentLookupOsfStore';\r\nimport CoverImage from './../CoverImage';\r\nimport { DUBLINCORETYPE_BESTEKSPECIFICATIE } from './../../constants';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n osflookupitem: KomoOsfHit;\r\n index: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class OsfLookupItem extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.osflookupitem.questId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n

{this.props.osflookupitem.questTitle}

\r\n
{this.props.osflookupitem.subTitle}
\r\n {this.props.osflookupitem.license &&\r\n
\r\n Bekijken\r\n
\r\n }\r\n {!this.props.osflookupitem.license &&\r\n
geen licentie
\r\n }\r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport OsfLookupItem from './OsfLookupItem';\r\nimport RootStore from '../../stores/RootStore';\r\nimport './OsfLookupList.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class OsfLookupList extends Component {\r\n more = (e: React.MouseEvent) => {\r\n this.props.rootStore!.documentLookupOsfStore.nextPage();\r\n e.preventDefault();\r\n }\r\n\r\n render() {\r\n if (this.props.rootStore!.documentLookupOsfStore.queryResult!.hits.length > 0) {\r\n return (\r\n\t\t\t\t
\r\n

Bestekspecificaties

\r\n
{this.props.rootStore!.documentLookupOsfStore.queryResult!.total} {this.props.rootStore!.documentLookupOsfStore.queryResult!.total === 1 ? \"resultaat\" : \"resultaten\"}
\r\n\r\n {this.props.rootStore!.documentLookupOsfStore.queryResult!.hits.map((osflookupitem, index) => )}\r\n\r\n {this.props.rootStore!.documentLookupOsfStore.moreHitsAvailable &&\r\n

\r\n }\r\n
\r\n );\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFileDownload } from '@fortawesome/free-solid-svg-icons';\r\nimport { DUBLINCORETYPE_BESTEKSPECIFICATIE} from './../../constants';\r\nimport './DownloadKomoCatalogus.css';\r\n\r\ninterface Props {\r\n\tdocType: string;\r\n}\r\n\r\nexport default class DownloadKomoCatalogus extends Component {\r\n\trender() {\r\n if (this.props.docType === DUBLINCORETYPE_BESTEKSPECIFICATIE) {\r\n\t\t\treturn \r\n\t\t} else {\r\n\t\t\treturn \"\"\r\n\t\t}\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport CoverImage from './../CoverImage';\r\nimport { DUBLINCORETYPE_BEOORDELINGSRICHTLIJN } from './../../constants';\r\nimport './OsfBrlLink.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class OsfBrlLink extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n const reference = this.props.rootStore!.documentStore.document.metadata.getFirstReference(\"komo\", \"osfbrllink\");\r\n if (reference) {\r\n this.props.rootStore!.viewStore.setQuestId(reference.version.questId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const reference = this.props.rootStore!.documentStore.document.metadata.getFirstReference(\"komo\", \"osfbrllink\");\r\n\r\n if (reference) {\r\n const subtitle = reference.metadata.getFirst(\"DublinCore\", \"title.subtitle\");\r\n\r\n return (\r\n\t\t\t\t
\r\n\t\t\t\t\t

BRL verwijzing

\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t

{reference.versionTitle}

\r\n\t\t\t\t\t\t\t\t\t\t
{subtitle}
\r\n
\r\n Bekijken\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { QuestDocument } from './../../api/quest';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport CoverImage from './../CoverImage';\r\nimport RootStore from './../../stores/RootStore';\r\nimport { DUBLINCORETYPE_BEOORDELINGSRICHTLIJN } from './../../constants';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n brlDocument: QuestDocument; \r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class KvBrlLinkList extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.brlDocument.version.questId);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n\trender() {\r\n\t\tconst subtitle = this.props.brlDocument.metadata.getFirst(\"DublinCore\", \"title.subtitle\");\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n

{this.props.brlDocument.versionTitle}

\r\n\t\t\t\t\t\t\t\t
{subtitle}
\r\n
\r\n Bekijken\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport KvBrlLink from './KvBrlLink';\r\nimport './KvBrlLinkList.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class KvBrlLinkList extends Component {\r\n render() {\r\n const referencelist = this.props.rootStore!.documentStore.document.metadata.getReference(\"komo\", \"kvbrllink\");\r\n if (referencelist.length === 0) {\r\n return null;\r\n } else {\r\n return (\r\n\t\t\t\t
\r\n\t\t\t\t\t

Beoordelingsrichtlijnen

\r\n\t\t\t\t\t
{referencelist.length} {referencelist.length === 1 ? \"resultaat\" : \"resultaten\"}
\r\n {referencelist.map((questReference, index) => )}\r\n
\r\n )\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { PATH_DOCUMENT } from '../../constants';\r\nimport { formatDate } from '../../utils/formatters';\r\nimport { QuestVersionMapItem, QuestVersionMapItemType } from '../../api/quest';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n\titem: QuestVersionMapItem;\r\n\tversionType: QuestVersionMapItemType;\r\n index: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class HistoryItem extends Component {\r\n select = (e: React.MouseEvent) => {\r\n if (!e.ctrlKey) {\r\n this.props.rootStore!.viewStore.setQuestId(this.props.item.questId);\r\n this.props.rootStore!.documentHistoryStore.setOpen(false);\r\n\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n compare = (e: React.MouseEvent) => {\r\n this.props.rootStore!.documentStore.setCompareVersion(this.props.item.version);\r\n this.props.rootStore!.documentHistoryStore.setOpen(false);\r\n\r\n e.preventDefault();\r\n }\r\n\r\n cancelCompare = (e: React.MouseEvent) => {\r\n this.props.rootStore!.documentStore.setCompareVersion(undefined);\r\n this.props.rootStore!.documentHistoryStore.setOpen(false);\r\n\r\n e.preventDefault();\r\n }\r\n\r\n render() {\r\n const viewing = this.props.rootStore!.documentStore.document.version.questId === this.props.item.questId;\r\n const allowcompare = !viewing && this.props.item.type === QuestVersionMapItemType.Revision;\r\n const compareisactive = this.props.rootStore!.documentStore.compareVersion === this.props.item.version &&\r\n this.props.item.type === QuestVersionMapItemType.Revision;\r\n\r\n if (this.props.item.type === this.props.versionType) {\r\n if (viewing) {\r\n return (\r\n
\r\n \r\n {viewing &&\r\n \r\n }\r\n \r\n\r\n

{this.props.item.title}

\r\n\r\n
\r\n {this.props.item.metadata.getFirst(\"DublinCore\", \"title.subtitle\")}\r\n
\r\n
\r\n Datum: {formatDate(this.props.item.date)}\r\n
\r\n\r\n {!viewing &&\r\n
\r\n {allowcompare && !compareisactive &&\r\n Vergelijken | \r\n }\r\n {allowcompare && compareisactive &&\r\n Stop vergelijken | \r\n }\r\n Bekijken\r\n
\r\n }\r\n
\r\n )\r\n } else {\r\n return (\r\n
\r\n \r\n {viewing &&\r\n \r\n }\r\n \r\n\r\n

{this.props.item.title}

\r\n\r\n
\r\n {this.props.item.metadata.getFirst(\"DublinCore\", \"title.subtitle\")}\r\n
\r\n
\r\n Datum: {formatDate(this.props.item.date)}\r\n
\r\n\r\n {!viewing &&\r\n
\r\n {allowcompare && !compareisactive &&\r\n Vergelijken | \r\n }\r\n {allowcompare && compareisactive &&\r\n Stop vergelijken | \r\n }\r\n Bekijken\r\n
\r\n }\r\n
\r\n )\r\n }\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { QuestVersionMapItemType } from '../../api/quest/types-versionmap';\r\nimport HistoryItem from './HistoryItem';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class HistoryList extends Component {\r\n\trender() {\r\n\t\tvar scounter = 0; var rcounter = 0; var pcounter = 0;\r\n\t\tthis.props.rootStore!.documentHistoryStore.versionMap.list.forEach( (item, index)=> {\r\n\t\t\titem.type === QuestVersionMapItemType.Successor ? scounter++ : item.type === QuestVersionMapItemType.Predecessor ? pcounter++ : rcounter++;\t\t\t\r\n\t\t});\r\n\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t 0 ? \"historytyperow\" : \"historytyperow hidden\"}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t 0 ? \"historytyperow\" : \"historytyperow hidden\"}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t 0 ? \"historytyperow\" : \"historytyperow hidden\"}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{this.props.rootStore!.documentHistoryStore.versionMap.list.map((item, index) => ).reverse()}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Opvolgers
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{this.props.rootStore!.documentHistoryStore.versionMap.list.map((item, index) => ).reverse()}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Revisies
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{this.props.rootStore!.documentHistoryStore.versionMap.list.map((item, index) => ).reverse()}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
Voorgangers
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t);\r\n\t}\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button, Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport HistoryList from './HistoryList';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons';\r\nimport './History.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class History extends Component {\r\n\ttoggle = () => {\r\n\t\tthis.props.rootStore!.documentHistoryStore.setOpen(!this.props.rootStore!.documentHistoryStore.open);\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tVersiehistorie\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button, Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faShare } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Share extends Component {\r\n toggle = () => {\r\n this.props.rootStore!.documentStore.setShareOpen(!this.props.rootStore!.documentStore.shareOpen);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n\t\t\t\t\r\n \r\n Delen\r\n \r\n

Hier komt de delen functionaliteit!

\r\n
\r\n
\r\n\t\t\t
\r\n );\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faPrint } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Print extends Component {\r\n\t\r\n\tprint = () => {\r\n\t\tlet element: HTMLIFrameElement = document.getElementById(\"ifmcontentstoprint\") as HTMLIFrameElement;\r\n\t\tlet contents: HTMLElement = document.getElementById(\"divcontents\") as HTMLElement;\r\n\t\tlet iframedom = element.contentWindow;\t\r\n\t\tif (iframedom !== null) {\r\n\t\t\tiframedom.document.close();\r\n\t\t\tiframedom.document.open();\r\n\t\t\tiframedom.document.write(\"
\" + contents.outerHTML + \"
\");\r\n\t\t\tiframedom.focus();\r\n\t\t\twindow.setTimeout(function () { if (iframedom !== null) { iframedom.print(); } }, 2000);\t\t\t\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t)\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Button } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faOutdent } from '@fortawesome/free-solid-svg-icons';\r\nimport { faIndent } from '@fortawesome/free-solid-svg-icons';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore;\r\n\tisVisible: boolean;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class ToggleNav extends Component {\r\n\ttoggle = () => {\r\n\t\tthis.props.rootStore!.viewStore.toggleTocVisible();\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.props.isVisible) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport RootStore from '../../stores/RootStore';\r\nimport { LinkManagerTarget } from './../../utils/linkmanager';\r\nimport { questUrl } from './../../utils/quest';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n target: LinkManagerTarget;\r\n index: number;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Target extends Component {\r\n render() {\r\n return (\r\n\t\t\t\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport Target from './Target';\r\nimport RootStore from '../../stores/RootStore';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class TargetList extends Component {\r\n render() {\r\n return (\r\n\t\t\t
\r\n {this.props.rootStore!.linkManagerStore.targetList.filter((value) => value.type === \"Quest\").map((target, index) => )}\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Modal, ModalHeader, ModalBody } from 'reactstrap';\r\nimport RootStore from '../../stores/RootStore';\r\nimport TargetList from './TargetList';\r\nimport './LinkManager.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore;\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class LinkManager extends Component {\r\n toggle = () => {\r\n this.props.rootStore!.linkManagerStore.setOpen(!this.props.rootStore!.linkManagerStore.open);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n Verwijzingen\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
Targets
\r\n\t\t\t\t\t\t
\r\n
\r\n
\r\n );\r\n }\r\n}","import React, { Component, Fragment } from 'react';\r\nimport { observer, inject } from 'mobx-react';\r\nimport { Row, Col } from 'reactstrap';\r\nimport RootStore from './../stores/RootStore';\r\nimport Content from './document/Content';\r\nimport Navigation from './document/Navigation';\r\nimport Query from './search/Query';\r\nimport KvLookupList from './kvlookup/KvLookupList';\r\nimport OsfLookupList from './osflookup/OsfLookupList';\r\nimport DownloadKomoCatalogus from './downloadkomocatalogus/DownloadKomoCatalogus';\r\nimport OsfBrlLink from './document/OsfBrlLink';\r\nimport KvBrlLinkList from './document/KvBrlLinkList';\r\nimport History from './document/History';\r\nimport Share from './document/Share';\r\nimport Print from './document/Print';\r\nimport ToggleNav from './document/ToggleNav';\r\nimport LinkManager from './linkmanager/LinkManager';\r\nimport './Document.css';\r\n\r\ninterface Props {\r\n rootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class Document extends Component {\r\n\trender() {\r\n\t\tvar doctype = this.props.rootStore!.documentStore.document.metadata.getFirst(\"DublinCore\", \"type\");\r\n\t\tif (doctype == null) {\r\n\t\t\tdoctype = \"\";\r\n\t\t}\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\t\t\t\t\t\t\t\t

{this.props.rootStore!.documentStore.document.versionTitle}

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t 0}/>\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {this._renderDocument()}\r\n \r\n \r\n\t\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n\tprivate _renderDocument() {\r\n\t\tif ((this.props.rootStore!.documentStore.tocNodes.length > 0) && (this.props.rootStore!.viewStore.tocVisible)) {\r\n return (\r\n \r\n\t\t\t\t\t\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { inject, observer } from 'mobx-react';\r\nimport Layout from './components/Layout';\r\nimport Search from './components/Search';\r\nimport Document from './components/Document';\r\nimport RootStore from './stores/RootStore';\r\nimport { VIEW_DOCUMENT } from './constants';\r\nimport './App.css';\r\nimport './ModalDialog.css';\r\n\r\ninterface Props {\r\n\trootStore?: RootStore\r\n}\r\n\r\n@inject(\"rootStore\")\r\n@observer\r\nexport default class App extends Component {\r\n\trender() {\r\n\t\tif (this.props.rootStore!.userStore.isReady) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{this._renderCurrentPage()}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _renderCurrentPage() {\r\n\t\tconst pageid = this.props.rootStore!.viewStore.viewId;\r\n\t\tswitch (pageid) {\r\n\t\t\tcase VIEW_DOCUMENT:\r\n\t\t\t\treturn \r\n\t\t\tdefault:\r\n\t\t\t\treturn \r\n\t\t}\r\n\t}\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import { observable, action, computed } from 'mobx';\r\nimport { QuestContext } from './../api/quest';\r\nimport { DateTime } from 'luxon';\r\nimport axios from 'axios';\r\nimport RootStore from './RootStore';\r\nimport { KENNISIDURL } from './../constants';\r\nimport { getKennisIDRedirectUrl, KennisIDInfo } from './../utils/kennisid';\r\n\r\nexport default class UserStore {\r\n constructor(private _rootStore: RootStore) {\r\n this._updateContext();\r\n }\r\n\r\n @observable\r\n questContext: QuestContext = {\r\n endpoint: \"\",\r\n licenseToken: \"\"\r\n };\r\n\r\n @observable\r\n kennisIDInitialized = false;\r\n\r\n @observable\r\n kennisID: KennisIDInfo = new KennisIDInfo();\r\n\r\n @action\r\n private async _updateContext() { \r\n const context = await axios(\"/api/user/context\");\r\n const { data, status } = context;\r\n\r\n let timeout = 5000;\r\n\r\n if ((status === 200) && (this.questContext.licenseToken !== data.licenseToken)) {\r\n if (window.navigator.userAgent.indexOf('Googlebot') > 0) {\r\n await this._updateKennisIDInfo(\"?\");\r\n } else {\r\n if (!data.kennisIDToken) {\r\n window.location.href = getKennisIDRedirectUrl();\r\n return;\r\n } else {\r\n await this._updateKennisIDInfo(data.kennisIDToken);\r\n }\r\n }\r\n\r\n this.questContext = {\r\n endpoint: data.questEndpoint,\r\n licenseToken: data.licenseToken\r\n };\r\n\r\n const expires = DateTime.fromISO(data.expires).minus({ minutes: 5 });\r\n const diff = expires.diffNow(\"milliseconds\").toObject();\r\n\r\n timeout = diff.milliseconds ? diff.milliseconds : 5000;\r\n }\r\n\r\n window.setTimeout(() => {\r\n this._updateContext();\r\n }, timeout);\r\n }\r\n\r\n @computed get isReady() {\r\n return this.questContext.licenseToken !== \"\" && this.questContext.endpoint !== \"\" && this.kennisIDInitialized;\r\n }\r\n\r\n private async _updateKennisIDInfo(token: string) {\r\n const i = new KennisIDInfo();\r\n \r\n if (token !== \"?\") {\r\n const info = await axios(`${KENNISIDURL}/api/authentication/passportinfobytoken?token=${encodeURIComponent(token)}`);\r\n \r\n if (info.status === 200 && info.data != null) {\r\n i.email = info.data.PassportEmail;\r\n i.name = info.data.PassportDisplayFullName;\r\n i.organisationName = info.data.OrganisationName;\r\n i.uniqueId = info.data.PassportUniqueId;\r\n i.loggedIn = true;\r\n }\r\n }\r\n\r\n this.kennisID = i;\r\n this.kennisIDInitialized = true;\r\n }\r\n}","import { observable, action, computed } from 'mobx';\r\nimport RootStore from './RootStore';\r\nimport { VIEW_SEARCH, VIEW_DOCUMENT, PATH_SEARCH, PATH_DOCUMENT } from './../constants';\r\n\r\nexport default class ViewStore {\r\n constructor(private rootStore: RootStore) {\r\n\r\n }\r\n\r\n @observable\r\n viewId: string = VIEW_SEARCH;\r\n\r\n @observable\r\n questId: string = \"\";\r\n\r\n @observable\r\n tocVisible: boolean = true;\r\n\r\n @observable\r\n fullScreen: boolean = true;\r\n\r\n @action\r\n setViewId(viewId: string) {\r\n this.viewId = viewId;\r\n }\r\n\r\n @action\r\n setQuestId(questId: string) {\r\n this.questId = decodeURIComponent(questId);\r\n if (this.hasQuestId) {\r\n this.viewId = VIEW_DOCUMENT;\r\n }\r\n }\r\n\r\n @action\r\n toggleTocVisible() {\r\n this.tocVisible = !this.tocVisible;\r\n }\r\n\r\n @action\r\n toggleFullScreen() {\r\n this.fullScreen = !this.fullScreen;\r\n }\r\n\r\n @computed\r\n get hasQuestId() {\r\n return this.questId !== \"\";\r\n }\r\n\r\n @computed\r\n get currentPath() {\r\n switch (this.viewId) {\r\n case VIEW_SEARCH:\r\n return PATH_SEARCH;\r\n case VIEW_DOCUMENT:\r\n let path = PATH_DOCUMENT;\r\n\r\n if (this.questId) {\r\n path += `${this.questId}`;\r\n }\r\n\r\n return path;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n @computed\r\n get currentTitle() {\r\n return \"KOMO-online\";\r\n }\r\n}","import { observable, action, autorun, computed } from 'mobx';\r\nimport RootStore from './RootStore';\r\nimport { QuestSearchApi, QuestQuery, QuestQueryResult, IQuestQueryHit, QuestFacetSortOrder, QuestFacetSortField, QuestFacetDefinition, QuestReturnFieldDefinition } from '../api/quest';\r\nimport { DUBLINCORETYPE_BEOORDELINGSRICHTLIJN, DUBLINCORETYPE_UITVOERINGSRICHTLIJN } from './../constants';\r\n\r\nexport default class SearchStore {\r\n private _questSearchApi: QuestSearchApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questSearchApi = new QuestSearchApi();\r\n\r\n autorun(() => {\r\n this._runQuery();\r\n });\r\n }\r\n\r\n @observable\r\n queryText: string = \"\";\r\n\r\n @observable\r\n queryFacetFilters: string = \"\";\r\n\r\n @observable\r\n queryPage = 1;\r\n\r\n @observable\r\n queryDocuments = false;\r\n\r\n @observable\r\n queryResult = new QuestQueryResult();\r\n\r\n @observable\r\n initialQueryExecuted = false;\r\n\r\n @computed\r\n get moreHitsAvailable(): boolean {\r\n return this.queryResult.page * this.queryResult.pageSize < this.queryResult.total;\r\n }\r\n\r\n @computed\r\n get queryCustomized(): boolean {\r\n return this.queryText !== \"\" || this.queryFacetFilters !== \"\" || this.queryPage !== 1;\r\n }\r\n\r\n @computed\r\n get queryFilterCustomized(): boolean {\r\n return this.queryFacetFilters !== \"\" || this.queryPage !== 1;\r\n }\r\n\r\n @action\r\n setQueryText(value: string) {\r\n this.queryText = value;\r\n this._rootStore.viewStore.setViewId(\"search\");\r\n }\r\n\r\n @action\r\n setQueryDocuments(value: boolean) {\r\n this.queryDocuments = value;\r\n }\r\n\r\n @action\r\n toggleFacet(term: string, value: string) {\r\n const hit = this.queryResult.facet.getHit(term, value);\r\n\r\n if (hit) {\r\n hit.selected = !hit.selected;\r\n this.queryFacetFilters = this.queryResult.facet.termFilters();\r\n }\r\n }\r\n\r\n @action\r\n resetFilter() {\r\n this.queryFacetFilters = \"\";\r\n this.queryPage = 1;\r\n }\r\n\r\n @action\r\n nextPage() {\r\n if (this.moreHitsAvailable) {\r\n this.queryPage = this.queryPage + 1;\r\n }\r\n }\r\n\r\n private _runQuery = async () => {\r\n if (this._rootStore.userStore.isReady) {\r\n const query = new QuestQuery({\r\n query: this.queryText,\r\n\t\t\t\tfields: [\"QuestId\", \"QuestDocumentIdA\", \"QuestTitle\", \"QuestDocumentTitle\", \"DublinCoretitlesubtitle\"],\r\n facetTerms: this._getFacetDefinitions(),\r\n termFilters: this.queryFacetFilters,\r\n returnFields: this._getReturnsFields(),\r\n systemQuery: \"+QuestCurrent:1 +QuestOnline:1 +Customapplication:komo\",\r\n page: this.queryPage,\r\n pageSize: 25,\r\n sort: this.queryText === \"\" ? \"QuestDate:true\" : \"\"\r\n });\r\n\r\n if (this.queryDocuments) {\r\n query.systemQuery += \" +QuestIsDocument:1\";\r\n (query.fields as Array).push(\"RootContents\"); \r\n } else {\r\n (query.fields as Array).push(\"Contents\");\r\n }\r\n\r\n const queryresult = await this._questSearchApi.query(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n if (this.queryResult.page + 1 === this.queryPage) {\r\n queryresult.hits = this.queryResult.hits.concat(queryresult.hits);\r\n }\r\n\r\n this.queryResult = queryresult;\r\n }\r\n }\r\n\r\n private _getReturnsFields(): Array {\r\n let list: Array =\r\n [\"QuestId\", \"QuestDocumentId\", \"QuestTitle\", \"QuestDocumentTitle\", { field: \"DublinCoretitlesubtitleNA\", mapTo: \"subTitle\" }, \"QuestDate\", \"DublinCoretype\"];\r\n\r\n if (this.queryText && this.queryText !== \"\") {\r\n list.push({\r\n field: this.queryDocuments ? \"RootContents\" : \"Contents\",\r\n summary: true,\r\n mapTo: \"contents\"\r\n });\r\n }\r\n return list;\r\n }\r\n\r\n private _getFacetDefinitions(): QuestFacetDefinition[] {\r\n return [\r\n {\r\n name: \"Publicatie\",\r\n term: \"DublinCoretype\",\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name\r\n },\r\n {\r\n name: \"Status\",\r\n term: \"komostatus\",\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name\r\n },\r\n {\r\n name: \"Soort\",\r\n term: \"CustomSubtype\",\r\n show: (flist) => {\r\n return flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_BEOORDELINGSRICHTLIJN) || flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_UITVOERINGSRICHTLIJN);\r\n },\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name\r\n },\r\n {\r\n name: \"Regeling\",\r\n term: \"Customregeling\",\r\n show: (flist) => {\r\n return flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_BEOORDELINGSRICHTLIJN) || flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_UITVOERINGSRICHTLIJN);\r\n },\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name\r\n }, \r\n {\r\n name: \"Uitgever\",\r\n term: \"DublinCorepublisher\",\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name\r\n },\r\n {\r\n name: \"NEN 2699 Code\",\r\n term: \"Customnen2699code\", \r\n show: (flist) => {\r\n return flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_BEOORDELINGSRICHTLIJN) || flist.hitSelected(\"DublinCoretype\", DUBLINCORETYPE_UITVOERINGSRICHTLIJN);\r\n },\r\n sortOrder: QuestFacetSortOrder.Ascending,\r\n sortField: QuestFacetSortField.Name \r\n }\r\n ];\r\n }\r\n}\r\n\r\n// Typed version of our hits, should match returnFields (but camelCase)\r\nexport interface KomoHit extends IQuestQueryHit {\r\n questId: string;\r\n\r\n questDocumentId: string;\r\n\r\n questTitle: string;\r\n\r\n questDocumentTitle: string;\r\n\r\n subTitle: string;\r\n\r\n contents: string;\r\n\r\n questDate: string;\r\n\r\n dublinCoretype: string;\r\n}","import { observable, autorun, computed, action } from 'mobx';\r\nimport RootStore from './RootStore';\r\nimport { QuestDocumentApi, QuestDocument, QuestTocNode, parseQuestId, QuestDataOptions } from '../api/quest';\r\n\r\nexport default class DocumentStore {\r\n private _questDocumentApi: QuestDocumentApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questDocumentApi = new QuestDocumentApi();\r\n\r\n autorun(() => {\r\n this._loadInfo();\r\n });\r\n }\r\n\r\n @observable\r\n document = new QuestDocument();\r\n\r\n @observable\r\n compareVersion?= 0;\r\n\r\n @observable\r\n tocNodes = new Array();\r\n\r\n @observable\r\n htmlData = \"\";\r\n\r\n @observable\r\n rootQuestId = \"\";\r\n\r\n @observable\r\n shareOpen = false;\r\n\r\n @computed\r\n get isReady() {\r\n return this.document.questId !== \"\";\r\n }\r\n\r\n @action\r\n setShareOpen(value: boolean) {\r\n this.shareOpen = value;\r\n }\r\n\r\n @action\r\n setCompareVersion(value?: number) {\r\n this.compareVersion = value;\r\n this._loadHtmlData();\r\n }\r\n\r\n @action\r\n toggleTocNode = async (node: QuestTocNode) => {\r\n if (node.opened) {\r\n node.opened = false;\r\n } else {\r\n node.opened = true;\r\n\r\n if (node.childCount > 0 && !node.childs) {\r\n const list = await this._questDocumentApi.getLevel(this._rootStore.userStore.questContext, this.document.version, node.nodeId);\r\n\r\n node.childs = list;\r\n }\r\n }\r\n }\r\n\r\n private _loadInfo = async () => {\r\n if (this._rootStore.userStore.isReady && this._rootStore.viewStore.questId) {\r\n const info = await this._questDocumentApi.getInfo(\r\n this._rootStore.userStore.questContext,\r\n this._rootStore.viewStore.questId, {\r\n includeLicenseItem: true\r\n });\r\n\r\n this.document = info;\r\n\r\n const rootquestid = parseQuestId(this.document.questId).add(this.document.version.version).toString(true);\r\n\r\n if (this.rootQuestId !== rootquestid) {\r\n await this._loadRootToc();\r\n this.rootQuestId = rootquestid;\r\n this.compareVersion = undefined;\r\n }\r\n\r\n await this._loadHtmlData();\r\n }\r\n }\r\n\r\n private _loadRootToc = async () => {\r\n if (this._rootStore.userStore.isReady && this.document.questId) {\r\n const list = await this._questDocumentApi.getLevel(this._rootStore.userStore.questContext, this.document.version);\r\n\r\n this.tocNodes = list;\r\n }\r\n }\r\n\r\n private _loadHtmlData = async () => {\r\n if (this._rootStore.userStore.isReady && this._rootStore.viewStore.questId) {\r\n this.htmlData = \"\";\r\n\r\n if (this.document.license && this.document.version.node.mimeType === \"application/xml\") {\r\n const questid = this.tocNodes.length === 0 ?\r\n this.document.version.questId : this.document.version.node.questId;\r\n\r\n if (questid !== \"\") {\r\n if (this.compareVersion && this.compareVersion > 0) {\r\n this.htmlData = await this._questDocumentApi.getCompareDataHtml(this._rootStore.userStore.questContext,\r\n questid, this.compareVersion, this._getDataOptions(this.document));\r\n } else {\r\n this.htmlData = await this._questDocumentApi.getDataHtml(this._rootStore.userStore.questContext,\r\n questid, this._getDataOptions(this.document));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _getDataOptions(doc: QuestDocument): QuestDataOptions {\r\n let transform = \"\";\r\n\r\n if (doc.version.importerId === \"QuestIni\") {\r\n if (doc.metadata.getFirst(\"Custom\", \"QuestImporter\") === \"Osf\") {\r\n transform = \"komo-osf\";\r\n } else {\r\n transform = \"bw5-brispub\";\r\n }\r\n } else {\r\n transform = \"bw5-bouwbesluit\";\r\n }\r\n\r\n return {\r\n transform: transform,\r\n linkManager: true\r\n }\r\n }\r\n}","import { observable, computed, action, reaction } from 'mobx';\r\nimport RootStore from './RootStore';\r\nimport { QuestSearchApi, IQuestQueryHit, QuestQuery, QuestQueryResult } from '../api/quest';\r\n\r\nexport default class DocumentSearchStore {\r\n private _questSearchApi: QuestSearchApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questSearchApi = new QuestSearchApi();\r\n\r\n reaction(() => {\r\n return [this.queryText, this.queryPage]\r\n }, (text, reaction) => {\r\n this._runQuery();\r\n });\r\n\r\n reaction(() => this._rootStore.documentStore.rootQuestId, (text, reaction) => {\r\n this.resetQuery();\r\n });\r\n }\r\n\r\n @observable\r\n queryText: string = \"\";\r\n\r\n @observable\r\n queryPage = 1;\r\n\r\n @observable\r\n queryResult = new QuestQueryResult();\r\n\r\n @computed\r\n get moreHitsAvailable(): boolean {\r\n return this.queryResult.page * this.queryResult.pageSize < this.queryResult.total;\r\n }\r\n\r\n @observable\r\n showQueryResult = false;\r\n\r\n @action\r\n setQueryText(queryText: string) {\r\n this.queryText = queryText;\r\n }\r\n\r\n @action\r\n setShowQueryResult(value: boolean) {\r\n this.showQueryResult = value;\r\n }\r\n\r\n @action\r\n resetQuery() {\r\n this.queryText = \"\";\r\n this.queryPage = 1;\r\n this.queryResult = new QuestQueryResult();\r\n this.showQueryResult = false;\r\n }\r\n\r\n @action\r\n nextPage() {\r\n if (this.moreHitsAvailable) {\r\n this.queryPage = this.queryPage + 1;\r\n }\r\n }\r\n\r\n private _runQuery = async () => {\r\n if (this._rootStore.userStore.isReady && this._rootStore.documentStore.isReady && this.queryText !== \"\") {\r\n const query = new QuestQuery({\r\n query: this.queryText,\r\n fields: [\"QuestId\", \"QuestTitle\", \"Contents\"],\r\n returnFields: [\"QuestId\", \"QuestTitle\", \"Contents*\"],\r\n systemQuery: `+QuestCurrent:1 +QuestOnline:1 +Customapplication:komo +QuestDocumentId:\"${this._rootStore.documentStore.document.questId}\" +QuestVersion:${this._rootStore.documentStore.document.version.version}`,\r\n page: this.queryPage,\r\n pageSize: 10\r\n });\r\n\r\n const queryresult = await this._questSearchApi.query(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n if (this.queryResult.page + 1 === this.queryPage) {\r\n queryresult.hits = this.queryResult.hits.concat(queryresult.hits);\r\n }\r\n\r\n this.queryResult = queryresult;\r\n }\r\n }\r\n}\r\n\r\n// Typed version of our hits, should match returnFields (but camelCase)\r\nexport interface KomoDocumentNodeHit extends IQuestQueryHit {\r\n questId: string;\r\n\r\n questTitle: string;\r\n\r\n contents: string;\r\n}","import { observable, action, autorun } from 'mobx';\r\nimport { QuestDocumentApi, QuestVersionMap } from '../api/quest';\r\nimport RootStore from './RootStore';\r\n\r\nexport default class DocumentHistoryStore {\r\n private _questDocumentApi: QuestDocumentApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questDocumentApi = new QuestDocumentApi();\r\n\r\n autorun(() => {\r\n this._loadHistory();\r\n });\r\n }\r\n\r\n @observable\r\n versionMap = new QuestVersionMap();\r\n\r\n @observable\r\n open = false;\r\n\r\n @action\r\n setOpen(value: boolean) {\r\n this.open = value;\r\n }\r\n\r\n private _loadHistory = async () => {\r\n if (this._rootStore.documentStore.document.questId !== this.versionMap.questId && this.open) { \r\n this.versionMap = await this._questDocumentApi.getVersionMap(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint },\r\n this._rootStore.documentStore.document.questId, {\r\n includeMetadata: true\r\n }); \r\n }\r\n }\r\n}","import { observable, action, computed, autorun } from 'mobx';\r\nimport { QuestSearchApi, QuestQuery, QuestQueryResult, IQuestQueryHit } from './../api/quest';\r\nimport RootStore from './RootStore';\r\nimport { DUBLINCORETYPE_KWALITEITSVERKLARING } from './../constants';\r\nimport { getBrlLikePrefix } from './../utils/quest';\r\nimport * as _ from 'lodash';\r\n\r\nexport default class DocumentLookupKvStore {\r\n private _questSearchApi: QuestSearchApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questSearchApi = new QuestSearchApi();\r\n\r\n autorun(() => {\r\n this._loadKvList();\r\n });\r\n }\r\n\r\n @observable\r\n queryPage = 1;\r\n\r\n @observable\r\n queryResult = new QuestQueryResult();\r\n\r\n @observable\r\n questId = \"\";\r\n\r\n @computed\r\n get moreHitsAvailable(): boolean {\r\n return this.queryResult.page * this.queryResult.pageSize < this.queryResult.total;\r\n }\r\n\r\n @action\r\n nextPage() {\r\n if (this.moreHitsAvailable) {\r\n this.queryPage = this.queryPage + 1;\r\n }\r\n }\r\n \r\n private _loadKvList = async () => {\r\n if ((this._rootStore.documentStore.document.questId !== this.questId) || (this.queryPage !== this.queryResult.page)) {\r\n if (this._rootStore.documentStore.document.questId !== this.questId) {\r\n this.questId = this._rootStore.documentStore.document.questId;\r\n this.queryPage = 1;\r\n }\r\n\r\n const prefix = getBrlLikePrefix(this._rootStore.documentStore.document.questId);\r\n if (prefix) { \r\n const query = new QuestQuery({\r\n fields: \"QuestId\",\r\n returnFields: [\"QuestId\", \"QuestTitle\", \"QuestDate\", { field: \"DublinCoretitlesubtitleNA\", mapTo: \"subTitle\" }],\r\n systemQuery: `+QuestCurrent:1 +QuestOnline:1 +QuestIsDocument:1 -komostatus:Vervallen +Customapplication:komo +DublinCoretype:\"${DUBLINCORETYPE_KWALITEITSVERKLARING}\" +komokvbrllink:\"${this._rootStore.documentStore.document.questId}\"`,\r\n page: this.queryPage,\r\n pageSize: 25\r\n });\r\n\r\n const queryresult = await this._questSearchApi.query(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n queryresult.hits = _.shuffle(queryresult.hits);\r\n\r\n if (this.queryResult.page + 1 === this.queryPage) {\r\n queryresult.hits = this.queryResult.hits.concat(queryresult.hits);\r\n }\r\n\r\n this.queryResult = queryresult;\r\n } else {\r\n this.queryResult = new QuestQueryResult();\r\n }\r\n\r\n // Onderstaande code doet look up aan de hand van quest family ID, waar bovenstaande code kiest voor gebruik van een vooral voorspelde quest identificatie voor de brl. Waarschijnlijk werken beide oplossingen goed, \r\n // maar onderstaande houdt beter rekening met de versie datum, echter daardoor krijg je soms minder resultaten door interpretatieverschillen in juist die datums.\r\n\r\n //const questfamilyid = this._rootStore.documentStore.document.metadata.getFirst(\"BRIS\", \"QuestFamilyId\"); \r\n //const prefix = getBrlLikePrefix(questfamilyid);\r\n\r\n //if (questfamilyid && prefix) { \r\n // const brl = questfamilyid.substr(prefix.length); \r\n // const brldate = DateTime.fromISO(this._rootStore.documentStore.document.version.date).toSQLDate(); \r\n\r\n // const query = new QuestQuery({\r\n // fields: \"QuestId\",\r\n // returnFields: [\"QuestId\", \"QuestTitle\", \"QuestDate\", { field: \"DublinCoretitlesubtitleNA\", mapTo: \"subTitle\" }],\r\n // systemQuery: `+QuestCurrent:1 +QuestOnline:1 +QuestIsDocument:1 -komostatus:Vervallen +Customapplication:komo +DublinCoretype:\\\"${DUBLINCORETYPE_KWALITEITSVERKLARING}\\\" +komokvbrl:\"${encodeURIComponent(brl)}\" +komokvbrldate:\"${brl}:${brldate}\"`,\r\n // page: this.queryPage,\r\n // pageSize: 5\r\n // });\r\n\r\n // const queryresult = await this._questSearchApi.query(\r\n // { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n // if (this.queryResult.page + 1 == this.queryPage) {\r\n // queryresult.hits = this.queryResult.hits.concat(queryresult.hits);\r\n // }\r\n\r\n // this.queryResult = queryresult;\r\n //} else { \r\n // this.queryResult = new QuestQueryResult();\r\n //}\r\n }\r\n }\r\n}\r\n\r\n// Typed version of our hits, should match returnFields (but camelCase)\r\nexport interface KomoKvHit extends IQuestQueryHit {\r\n questId: string;\r\n\r\n questTitle: string;\r\n\r\n questDate: string;\r\n\r\n subTitle: string;\r\n}","import { observable, action, computed, autorun } from 'mobx';\r\nimport { QuestSearchApi, QuestQuery, QuestQueryResult, IQuestQueryHit } from './../api/quest';\r\nimport RootStore from './RootStore';\r\nimport { DUBLINCORETYPE_BESTEKSPECIFICATIE, DUBLINCORETYPE_UITVOERINGSRICHTLIJN, DUBLINCORETYPE_BEOORDELINGSRICHTLIJN } from './../constants';\r\n\r\nexport default class DocumentLookupOsfStore {\r\n private _questSearchApi: QuestSearchApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questSearchApi = new QuestSearchApi();\r\n\r\n autorun(() => {\r\n this._loadOsfList();\r\n });\r\n }\r\n\r\n @observable\r\n queryPage = 1;\r\n\r\n @observable\r\n queryResult = new QuestQueryResult();\r\n\r\n @observable\r\n questId = \"\";\r\n\r\n @computed\r\n get moreHitsAvailable(): boolean {\r\n return this.queryResult.page * this.queryResult.pageSize < this.queryResult.total;\r\n }\r\n\r\n @action\r\n nextPage() {\r\n if (this.moreHitsAvailable) {\r\n this.queryPage = this.queryPage + 1;\r\n }\r\n }\r\n \r\n private _loadOsfList = async () => {\r\n if ((this._rootStore.documentStore.document.questId !== this.questId) || (this.queryPage !== this.queryResult.page)) {\r\n if (this._rootStore.documentStore.document.questId !== this.questId) {\r\n this.questId = this._rootStore.documentStore.document.questId;\r\n this.queryPage = 1;\r\n }\r\n \r\n const type = this._rootStore.documentStore.document.metadata.getFirst(\"DublinCore\", \"type\"); \r\n\r\n if (type === DUBLINCORETYPE_UITVOERINGSRICHTLIJN || type === DUBLINCORETYPE_BEOORDELINGSRICHTLIJN) {\r\n const brl = this._rootStore.documentStore.document.version.title; \r\n\r\n const query = new QuestQuery({\r\n fields: \"QuestId\",\r\n returnFields: [\"QuestId\", \"QuestTitle\", { field: \"DublinCoretitlesubtitleNA\", mapTo: \"subTitle\" }], \r\n systemQuery: `+QuestCurrent:1 +QuestOnline:1 +QuestIsDocument:1 -komostatus:Vervallen +Customapplication:komo +DublinCoretype:\"${DUBLINCORETYPE_BESTEKSPECIFICATIE}\" +komoosfbrl:\"${brl}\"`,\r\n page: this.queryPage,\r\n pageSize: 5\r\n });\r\n\r\n\r\n const queryresult = await this._questSearchApi.query(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n if (this.queryResult.page + 1 === this.queryPage) {\r\n queryresult.hits = this.queryResult.hits.concat(queryresult.hits);\r\n }\r\n\r\n this.queryResult = queryresult;\r\n } else {\r\n this.queryResult = new QuestQueryResult();\r\n }\r\n }\r\n }\r\n}\r\n\r\n// Typed version of our hits, should match returnFields (but camelCase)\r\nexport interface KomoOsfHit extends IQuestQueryHit {\r\n questId: string;\r\n\r\n questTitle: string;\r\n\r\n subTitle: string;\r\n}","import { observable, autorun } from 'mobx';\r\nimport { QuestSearchApi, QuestQuery, QuestQueryResult, IQuestQueryHit } from './../api/quest';\r\nimport RootStore from './RootStore';\r\n\r\nexport default class RecentStore {\r\n private _questSearchApi: QuestSearchApi;\r\n\r\n constructor(private _rootStore: RootStore) {\r\n this._questSearchApi = new QuestSearchApi();\r\n\r\n autorun(() => {\r\n this._runQuery();\r\n });\r\n }\r\n\r\n @observable\r\n queryResult = new QuestQueryResult();\r\n\r\n @observable\r\n initialQueryExecuted = false;\r\n\r\n private _runQuery = async () => {\r\n if (this._rootStore.userStore.isReady && !this.initialQueryExecuted) {\r\n this.initialQueryExecuted = true;\r\n\r\n const query = new QuestQuery({\r\n fields: \"QuestId\",\r\n\t\t\t\treturnFields: [\"QuestId\", \"QuestTitle\", \"QuestDate\", \"DublinCoretype\", { field: \"DublinCoretitlesubtitleNA\", mapTo: \"subTitle\" }],\r\n systemQuery: \"+QuestCurrent:1 +QuestOnline:1 +QuestIsDocument:1 +Customapplication:komo\",\r\n page: 1,\r\n pageSize: 5,\r\n sort: \"QuestDate:true\"\r\n });\r\n\r\n const queryresult = await this._questSearchApi.query(\r\n { licenseToken: this._rootStore.userStore.questContext.licenseToken, endpoint: this._rootStore.userStore.questContext.endpoint }, query);\r\n\r\n this.queryResult = queryresult;\r\n }\r\n }\r\n}\r\n\r\n// Typed version of our hits, should match returnFields (but camelCase)\r\nexport interface KomoRecentHit extends IQuestQueryHit {\r\n questId: string;\r\n\r\n\tquestTitle: string;\r\n\r\n\tsubTitle: string;\r\n\r\n\tquestDate: string;\r\n\r\n\tdublinCoretype: string;\r\n}","export class LinkManagerTarget {\r\n default: boolean = false;\r\n\r\n sequence: number = 0;\r\n\r\n type: string = \"\";\r\n\r\n quest = new LinkManagerQuestTarget();\r\n\r\n fromServer(data: any) {\r\n this.default = data.Default;\r\n this.sequence = data.Sequence;\r\n this.type = data.Type;\r\n\r\n if (this.type === \"Quest\") {\r\n this.quest.fromServer(data.Quest);\r\n }\r\n }\r\n}\r\n\r\nexport class LinkManagerQuestTarget {\r\n label: string = \"\";\r\n\r\n url: string = \"\";\r\n\r\n id: string = \"\";\r\n\r\n text: string = \"\";\r\n\r\n title: string = \"\";\r\n\r\n fromServer(data: any) {\r\n this.label = data.Label;\r\n this.url = data.Url;\r\n this.id = data.Id;\r\n this.text = data.Text;\r\n this.title = data.Title;\r\n\r\n }\r\n}","import { observable, action, autorun } from 'mobx';\r\nimport axios from 'axios';\r\nimport { LinkManagerTarget } from './../utils/linkmanager';\r\nimport RootStore from './RootStore';\r\n\r\nexport default class LinkManagerStore {\r\n constructor(private rootStore: RootStore) {\r\n autorun(() => {\r\n this._loadAnchor();\r\n });\r\n }\r\n\r\n @observable\r\n open = false;\r\n\r\n @observable\r\n code = \"\";\r\n\r\n @observable\r\n targetList = new Array();\r\n\r\n @action\r\n setOpen(value: boolean) {\r\n this.open = value;\r\n }\r\n\r\n @action\r\n setCode(value: string) {\r\n this.code = value;\r\n this.open = true;\r\n }\r\n\r\n private _loadAnchor = async () => {\r\n if (this.code) {\r\n const response = await axios(`https://linkmanager.bris.nl/api/anchor/get?id=${encodeURIComponent(this.code)}`);\r\n\r\n if (response.status === 200) {\r\n const tl = new Array(); \r\n\r\n if (response.data.TargetList) {\r\n response.data.TargetList.forEach((targetData: any) => {\r\n const t = new LinkManagerTarget();\r\n t.fromServer(targetData);\r\n tl.push(t);\r\n });\r\n }\r\n\r\n this.targetList = tl;\r\n } \r\n }\r\n }\r\n}","import { observable, action, reaction } from 'mobx';\r\nimport { GOOGLEANALYTICS } from './../constants';\r\nimport ReactGA from 'react-ga';\r\nimport RootStore from './RootStore';\r\n\r\nexport default class AnalyticsStore {\r\n private page = \"\";\r\n\r\n constructor(private _rootStore: RootStore) {\r\n reaction(() => { return { q: this._rootStore.documentStore.document.version.questId, nq: this._rootStore.documentStore.document.version.node.questId } }, (data, reaction) => {\r\n this._updateQuestId();\r\n });\r\n }\r\n\r\n @observable\r\n activated = false;\r\n\r\n @action\r\n activate = () => {\r\n if (!this.activated) {\r\n this.activated = true;\r\n\r\n ReactGA.initialize(GOOGLEANALYTICS);\r\n this.page = window.location.pathname + window.location.search;\r\n ReactGA.pageview(this.page);\r\n }\r\n }\r\n\r\n private _updateQuestId = async () => { \r\n if (this.activated) {\r\n if (window.location.pathname + window.location.search !== this.page) {\r\n this.page = window.location.pathname + window.location.search;\r\n\r\n ReactGA.pageview(this.page);\r\n }\r\n }\r\n }\r\n}","import 'babel-polyfill'\r\nimport './bootstrap-custom.scss';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'mobx-react';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport RootStore from './stores/RootStore';\r\nimport { startRouter } from './utils/router';\r\n\r\nconst rootStore = new RootStore();\r\nstartRouter(rootStore);\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();","import UserStore from './UserStore';\r\nimport ViewStore from './ViewStore';\r\nimport SearchStore from './SearchStore';\r\nimport DocumentStore from './DocumentStore';\r\nimport DocumentSearchStore from './DocumentSearchStore';\r\nimport DocumentHistoryStore from './DocumentHistoryStore';\r\nimport DocumentLookupKvStore from './DocumentLookupKvStore';\r\nimport DocumentLookupOsfStore from './DocumentLookupOsfStore';\r\nimport RecentStore from './RecentStore';\r\nimport LinkManagerStore from './LinkManagerStore';\r\nimport AnalyticsStore from './AnalyticsStore';\r\n\r\nexport default class RootStore {\r\n userStore = new UserStore(this);\r\n\r\n viewStore = new ViewStore(this);\r\n\r\n searchStore = new SearchStore(this);\r\n\r\n documentStore = new DocumentStore(this);\r\n\r\n documentSearchStore = new DocumentSearchStore(this);\r\n\r\n documentHistoryStore = new DocumentHistoryStore(this);\r\n\r\n documentLookupKvStore = new DocumentLookupKvStore(this);\r\n\r\n documentLookupOsfStore = new DocumentLookupOsfStore(this);\r\n\r\n recentStore = new RecentStore(this);\r\n\r\n linkManagerStore = new LinkManagerStore(this);\r\n\r\n AnalyticsStore = new AnalyticsStore(this);\r\n}","import UniversalRouter, { Context } from 'universal-router';\r\nimport { autorun } from 'mobx';\r\nimport RootStore from './../stores/RootStore';\r\nimport { VIEW_SEARCH, VIEW_DOCUMENT } from './../constants';\r\n\r\nexport function startRouter(rootStore: RootStore) {\r\n const routes = [\r\n {\r\n path: \"/\",\r\n action: () => {\r\n return { viewId: VIEW_SEARCH, questId: null };\r\n }\r\n },\r\n {\r\n path: \"/:questId*\",\r\n action: (context: Context) => {\r\n return { viewId: VIEW_DOCUMENT, questId: context.params.questId.join(\"/\") };\r\n }\r\n }\r\n ];\r\n\r\n const router = new UniversalRouter(routes);\r\n\r\n router.resolve(window.location.pathname).then((info: any) => {\r\n _updateState(info);\r\n\r\n autorun(() => {\r\n const path = rootStore.viewStore.currentPath;\r\n \r\n if (path !== window.location.pathname) {\r\n window.history.pushState(null, rootStore.viewStore.currentTitle, path);\r\n }\r\n });\r\n\r\n window.addEventListener(\"popstate\", (e: PopStateEvent) => {\r\n router.resolve(window.location.pathname).then((info: any) => {\r\n _updateState(info);\r\n });\r\n });\r\n });\r\n\r\n function _updateState(info: any) {\r\n rootStore.viewStore.setViewId(info.viewId);\r\n if (info.questId) { \r\n rootStore.viewStore.setQuestId(info.questId);\r\n }\r\n }\r\n}","import { pickForTarget } from './utils';\r\nimport { parseQuestId } from './identification';\r\nimport { QuestMetadata } from './types-metadata';\r\n\r\nexport enum QuestVersionMapItemType { Predecessor, Revision, Successor };\r\n\r\nexport class QuestVersionMapOptions {\r\n allowOffline?= false;\r\n\r\n includeMetadata?= false;\r\n\r\n includeCollections?= false;\r\n\r\n includeCollectionMetadata?= false;\r\n\r\n includePredecessors?= true;\r\n\r\n includeSuccessors?= true;\r\n\r\n includePredSuccVersions?= false;\r\n\r\n maxLevel?= 10;\r\n}\r\n\r\nexport class QuestVersionMap {\r\n fromServer(data: any) {\r\n if (data) {\r\n data.forEach((itemData: any) => {\r\n const item = new QuestVersionMapItem();\r\n item.fromServer(itemData);\r\n\r\n this.list.push(item);\r\n });\r\n }\r\n }\r\n\r\n questId = \"\";\r\n\r\n list = new Array();\r\n}\r\n\r\nexport class QuestVersionMapItem {\r\n fromServer(data: any) {\r\n pickForTarget(data, this, \"type\");\r\n this.metadata.fromServer(data);\r\n\r\n this.type = data.Type === \"Predecessor\" ? QuestVersionMapItemType.Predecessor :\r\n data.Type === \"Successor\" ? QuestVersionMapItemType.Successor :\r\n QuestVersionMapItemType.Revision;\r\n this.questId = parseQuestId(this.questId).add(this.version).toString(true);\r\n }\r\n\r\n type: QuestVersionMapItemType = QuestVersionMapItemType.Revision;\r\n\r\n version = 1;\r\n\r\n questId = \"\";\r\n\r\n title = \"\";\r\n\r\n description = \"\";\r\n\r\n date = \"\";\r\n\r\n current = false;\r\n\r\n online = false;\r\n\r\n metadata = new QuestMetadata();\r\n}","import * as _ from 'lodash';\r\n\r\nexport class QuestIdentification {\r\n private _questId: string;\r\n version?: number;\r\n\r\n constructor(questId: string) {\r\n this._questId = \"\";\r\n this.parse(questId);\r\n }\r\n\r\n add(part: string | number): QuestIdentification {\r\n if (typeof part == \"string\") {\r\n const p = this._trim(part);\r\n if (p !== \"\") {\r\n this._questId += \"/\" + p;\r\n }\r\n } else if (typeof part == \"number\") {\r\n this.version = part;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n toString(includeVersion: boolean): string {\r\n if (includeVersion && typeof this.version == \"number\") {\r\n return this._questId + `[${this.version}]`;\r\n } else {\r\n return this._questId;\r\n }\r\n }\r\n\r\n parse(questId: string) {\r\n this.version = undefined;\r\n\r\n const start = questId.lastIndexOf(\"[\");\r\n if (start > 0) {\r\n const end = questId.indexOf(\"]\", start);\r\n if (end > start) {\r\n this.version = parseInt(questId.substr(0, start) + questId.substring(end + 1));\r\n questId = questId.substr(0, start) + questId.substr(end + 1);\r\n }\r\n }\r\n\r\n this._questId = this._trim(questId);\r\n }\r\n\r\n private _trim(part: string): string {\r\n return _.trimEnd(part, '/ ');\r\n }\r\n}\r\n\r\nexport function parseQuestId(questId: string) {\r\n return new QuestIdentification(questId);\r\n}","import { pickForTarget } from './utils';\r\nimport { parseQuestId } from './identification';\r\nimport { QuestMetadata } from './types-metadata';\r\n\r\nexport class QuestInfoOptions {\r\n includeMetadata?= true;\r\n\r\n includeCollections?= false;\r\n\r\n includeParents?= false;\r\n\r\n includeAlternatives?= false;\r\n\r\n includeAlternativesMetaData?= false;\r\n\r\n includeImportLog?= false;\r\n\r\n includeLicenseItem?= false;\r\n\r\n claimLicenseItem?= false;\r\n\r\n allowCachedData?= true;\r\n\r\n allowInvalid?= false;\r\n}\r\n\r\nexport class QuestDataOptions {\r\n compose?= true;\r\n\r\n transform?= \"\";\r\n\r\n linkManager?= false;\r\n\r\n allowOffline?= false;\r\n}\r\n\r\nexport class QuestDocument {\r\n fromServer(data: any) {\r\n pickForTarget(data.Document, this);\r\n this.version.fromServer(data);\r\n this.versionTitle = (this.version.isSet && this.version.title && this.version.title !== \"\") ? this.version.title : this.title;\r\n this.metadata.fromServer(data);\r\n this.license = (data.LicenseItem && data.LicenseItem.AccessStatus === \"Enabled\");\r\n }\r\n\r\n questId = \"\";\r\n\r\n title = \"\";\r\n\r\n version = new QuestDocumentVersion(this);\r\n\r\n // Consolidated title of version associated with this document or this document in case no version was associated.\r\n versionTitle = \"\";\r\n\r\n metadata = new QuestMetadata();\r\n\r\n license = false;\r\n}\r\n\r\nexport class QuestDocumentVersion {\r\n constructor(document: QuestDocument) {\r\n this.document = document;\r\n }\r\n\r\n fromServer(data: any) {\r\n pickForTarget(data.Version, this);\r\n this.node.fromServer(data);\r\n\r\n this.isSet = this.version > 0;\r\n if (this.isSet) {\r\n this.questId = parseQuestId(this.document.questId).add(this.version).toString(true);\r\n }\r\n }\r\n\r\n questId = \"\";\r\n\r\n isSet = false;\r\n\r\n version = 0;\r\n\r\n valid = false;\r\n\r\n date = \"\";\r\n\r\n current = false;\r\n\r\n description = \"\";\r\n\r\n importerId = \"\";\r\n\r\n hasNodes = false;\r\n\r\n title?: string;\r\n\r\n node = new QuestDocumentNode(this);\r\n\r\n document: QuestDocument;\r\n}\r\n\r\nexport class QuestDocumentNode {\r\n constructor(version: QuestDocumentVersion) {\r\n this.version = version;\r\n }\r\n\r\n fromServer(data: any) {\r\n pickForTarget(data.CurrentNode, this, \"questId\");\r\n\r\n this.nodeId = data.CurrentNode.QuestId;\r\n\r\n this.isSet = this.nodeId != null && this.nodeId !== \"\";\r\n if (this.isSet) {\r\n this.questId = parseQuestId(this.version.document.questId).add(this.nodeId).add(this.version.version).toString(true);\r\n this.url = data.Version.Url;\r\n }\r\n }\r\n\r\n questId = \"\";\r\n\r\n isSet = false;\r\n\r\n nodeId = \"\";\r\n\r\n composable = false;\r\n\r\n childCount = 0;\r\n\r\n hasChilds = false;\r\n\r\n mimeType = \"\";\r\n\r\n title = \"\";\r\n\r\n type = \"\";\r\n\r\n // Url to Quest data API for node contents\r\n url = \"\";\r\n\r\n version: QuestDocumentVersion;\r\n}\r\n\r\nexport class QuestTocNode {\r\n questId = \"\";\r\n\r\n nodeId = \"\";\r\n\r\n title = \"\";\r\n\r\n composable = false;\r\n\r\n childCount = 0;\r\n\r\n hasChilds = false;\r\n\r\n mimeType = \"\"\r\n\r\n opened = false;\r\n\r\n childs?: Array;\r\n}","import { pickForTarget } from './utils';\r\nimport { sortFacetHits, filterFacetHits, facetNameForValue, filterFacets } from './utils-facet';\r\n\r\nexport class QuestFacetList {\r\n list = new Array();\r\n\r\n definitionList?: Array;\r\n\r\n getFacet(term: string): QuestFacet | undefined {\r\n return this.list.find((f: QuestFacet) => {\r\n return f.term === term;\r\n });\r\n }\r\n\r\n getHit(term: string, value: string): QuestFacetHit | undefined {\r\n const facet = this.getFacet(term);\r\n\r\n if (facet) {\r\n return facet.hits.find((h: QuestFacetHit) => {\r\n return h.value === value;\r\n });\r\n }\r\n }\r\n\r\n hitSelected(term: string, value: string): boolean {\r\n const hit = this.getHit(term, value);\r\n\r\n if (hit) {\r\n return hit.selected;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n termFilters(): string {\r\n const f = filterFacets(this).filter((facet: QuestFacet) => {\r\n return facet.hits.some((hit: QuestFacetHit) => {\r\n return hit.selected;\r\n });\r\n }).map((facet: QuestFacet) => {\r\n return {\r\n term: facet.term,\r\n values: facet.hits.filter((hit: QuestFacetHit) => {\r\n return hit.selected;\r\n }).map((hit: QuestFacetHit) => {\r\n return hit.value;\r\n })\r\n }\r\n });\r\n\r\n const r = f.map((sf) => {\r\n const l = sf.values.map((v) => {\r\n return `+${sf.term}:\"${v}\"`;\r\n });\r\n\r\n return l.join(\" \");\r\n });\r\n\r\n return r.join(\" \");\r\n }\r\n\r\n fromServer(data: any) {\r\n data.Facet.forEach((facetData: any) => {\r\n let facetdefinition: QuestFacetDefinition | undefined;\r\n\r\n if (this.definitionList) {\r\n facetdefinition = this.definitionList.find((facetDefinition) => {\r\n return facetDefinition.term === facetData.Term;\r\n });\r\n }\r\n\r\n let facet = new QuestFacet();\r\n facet.fromServer(facetData, facetdefinition);\r\n this.list.push(facet);\r\n });\r\n\r\n this.list = filterFacets(this);\r\n }\r\n}\r\n\r\nexport class QuestFacet {\r\n fromServer(data: any, facetDefinition?: QuestFacetDefinition) {\r\n pickForTarget(data, this, \"hits\");\r\n\r\n data.Hits.forEach((hitData: any) => {\r\n this.hits.push({\r\n facet: this,\r\n name: facetNameForValue(hitData.Value, facetDefinition),\r\n value: hitData.Value,\r\n count: hitData.Count,\r\n selected: hitData.Selected\r\n });\r\n });\r\n\r\n this.hits = filterFacetHits(this.hits, facetDefinition);\r\n this.hits = sortFacetHits(this.hits, facetDefinition);\r\n }\r\n\r\n name = \"\";\r\n\r\n term = \"\";\r\n\r\n showCount = 25;\r\n\r\n showAllAvailable = false;\r\n\r\n showAll = false;\r\n\r\n hits = new Array();\r\n}\r\n\r\nexport interface QuestFacetHit {\r\n facet: QuestFacet;\r\n\r\n name: string;\r\n\r\n value: string;\r\n\r\n count: number;\r\n\r\n selected: boolean;\r\n}\r\n\r\nexport enum QuestFacetSortOrder { Ascending, Descending };\r\nexport enum QuestFacetSortField { Name, Value, Count };\r\n\r\nexport interface QuestFacetDefinition {\r\n name: string;\r\n\r\n term: string;\r\n\r\n // Returns if facet should be shown.\r\n show?: (facetList: QuestFacetList) => boolean;\r\n\r\n // Compare function. Return -1 if a < b, 1 if a > b or 0 when a == b\r\n sort?: (a: QuestFacetHit, b: QuestFacetHit) => number;\r\n\r\n sortOrder?: QuestFacetSortOrder;\r\n\r\n sortField?: QuestFacetSortField;\r\n\r\n // Associative object with mapping values or function to translate name.\r\n rename?: any | ((value: string) => string);\r\n\r\n // Include only values in array or approved by function.\r\n include?: Array | ((value: string) => boolean);\r\n}","import { QuestFacetDefinition, QuestFacetHit, QuestFacetSortOrder, QuestFacetSortField, QuestFacet, QuestFacetList } from './types-facet';\r\n\r\nexport function facetNameForValue(value: string, facetDefinition?: QuestFacetDefinition): string {\r\n if (value && facetDefinition && facetDefinition.rename) {\r\n if (typeof facetDefinition.rename == \"object\") {\r\n const n = facetDefinition.rename[value];\r\n return n || value;\r\n } else {\r\n return facetDefinition.rename(value);\r\n }\r\n } else {\r\n return value;\r\n }\r\n}\r\n\r\nexport function filterFacets(facetList: QuestFacetList): Array {\r\n if (facetList.definitionList) {\r\n const includelist = new Array();\r\n\r\n facetList.definitionList.forEach((definition) => {\r\n if (!definition.show || definition.show(facetList)) {\r\n includelist.push(definition.term);\r\n }\r\n });\r\n\r\n return facetList.list.filter((facet) => {\r\n return includelist.includes(facet.term);\r\n });\r\n } else {\r\n return facetList.list;\r\n }\r\n}\r\n\r\nexport function filterFacetHits(hits: Array, facetDefinition?: QuestFacetDefinition): Array {\r\n if (facetDefinition && facetDefinition.include) {\r\n return hits.filter((hit) => {\r\n if (typeof facetDefinition.include == \"function\") {\r\n return facetDefinition.include(hit.value);\r\n } else if (facetDefinition.include !== undefined) {\r\n return facetDefinition.include.includes(hit.value);\r\n } else {\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n return hits;\r\n}\r\n\r\nexport function sortFacetHits(hits: Array, facetDefinition?: QuestFacetDefinition): Array {\r\n if (facetDefinition) {\r\n if (facetDefinition.sort) {\r\n return hits.sort(facetDefinition.sort);\r\n } else if (facetDefinition.sortField !== undefined) {\r\n hits = hits.sort((a: QuestFacetHit, b: QuestFacetHit): number => {\r\n switch (facetDefinition.sortField) {\r\n case QuestFacetSortField.Count:\r\n if (a.count < b.count) {\r\n return -1;\r\n } else if (a.count > b.count) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n case QuestFacetSortField.Name:\r\n if (a.name.toLowerCase() < b.name.toLowerCase()) {\r\n return -1;\r\n } else if (a.name.toLowerCase() > b.name.toLowerCase()) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n case QuestFacetSortField.Value:\r\n if (a.value.toLowerCase() < b.value.toLowerCase()) {\r\n return -1;\r\n } else if (a.value.toLowerCase() > b.value.toLowerCase()) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (facetDefinition.sortOrder === QuestFacetSortOrder.Descending) {\r\n return hits.reverse();\r\n }\r\n }\r\n }\r\n\r\n return hits;\r\n}","import { QuestDocument } from './types-document';\r\n\r\nexport class QuestMetadata {\r\n data: any = {};\r\n referenceData: any = {};\r\n\r\n get(family: string, label: string): Array {\r\n const f = this.data[family];\r\n if (f) {\r\n const values = f[label];\r\n if (values) {\r\n return values;\r\n }\r\n }\r\n\r\n return new Array();\r\n }\r\n\r\n getReference(family: string, label: string): Array {\r\n const f = this.referenceData[family];\r\n if (f) {\r\n const values = f[label];\r\n if (values) {\r\n return values;\r\n }\r\n }\r\n\r\n return new Array();\r\n }\r\n\r\n getFirst(family: string, label: string, defaultValue: string | null = null): string | null {\r\n const values = this.get(family, label);\r\n\r\n if (values.length > 0) {\r\n return values[0];\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n getFirstReference(family: string, label: string): QuestDocument | null {\r\n const values = this.getReference(family, label);\r\n\r\n if (values.length > 0) {\r\n return values[0];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n fromServer(data: any) {\r\n this._addList(data.MetadataList);\r\n if (data.Document && data.Document.MetadataList) {\r\n this._addList(data.Document.MetadataList);\r\n }\r\n }\r\n\r\n private _addList(metadataList: any) {\r\n if (metadataList) {\r\n metadataList.forEach((item: any) => {\r\n this.data[item.Family] = this.data[item.Family] || {};\r\n\r\n if (this.data[item.Family][item.Label]) {\r\n this.data[item.Family][item.Label].push(item.Value);\r\n } else {\r\n this.data[item.Family][item.Label] = [item.Value]; \r\n }\r\n\r\n if (item.DataTypeHint === \"QuestId\" && item.QuestReference) {\r\n this.referenceData[item.Family] = this.referenceData[item.Family] || {};\r\n\r\n var d = new QuestDocument();\r\n d.fromServer(item.QuestReference);\r\n\r\n if (this.referenceData[item.Family][item.Label]) {\r\n this.referenceData[item.Family][item.Label].push(d);\r\n } else {\r\n this.referenceData[item.Family][item.Label] = [d];\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}