{"version":3,"file":"index.cjs","sources":["../src/helpers/config.ts","../src/helpers/history.ts","../src/ontology/browser.ts","../src/ontology/dbo.ts","../src/ontology/link.ts","../src/ontology/umbelRc.ts","../src/ontology/vcard.ts","../src/ontology/wde.ts","../src/ontology/wdp.ts","../src/ontology/wdt.ts","../src/ontology/wikibase.ts","../src/helpers/types.ts","../src/helpers/workarounds.ts","../src/ontology/dbp.ts","../src/ontology/dbpedia.ts","../src/ontology/dbpediaData.ts","../src/helpers/data.ts","../src/helpers/iris.ts","../src/ontology/ld.ts","../src/ontology/ll.ts","../src/middleware/browser/bookmarks.ts","../src/middleware/browser/extensions.ts","../src/middleware/browser.ts","../src/middleware/execFilter.ts","../src/middleware/loggingMiddleware.ts","../src/helpers/seq.ts","../src/helpers/delta.ts","../src/ontology/app.ts","../src/ontology/ontola.ts","../src/middleware/ontolaMiddleware.ts","../src/ontology/solidActions.ts","../src/middleware/solid.ts","../src/middleware/index.ts","../src/ontology/foaf.ts","../src/ontology/ldp.ts","../src/ontology/mash.ts","../src/ontology/minesweeper.ts","../src/ontology/todo.ts","../src/createLRS.ts","../src/helpers/propTypes.ts","../src/hooks/useStorage.ts","../src/hooks/useBookmarks.ts","../src/hooks/useFetch.ts","../node_modules/url-template/lib/url-template.js","../src/helpers/templateContext.ts","../src/App.tsx","../src/topologies/Pane/Pane.tsx","../src/panes/base.tsx"],"sourcesContent":["function tryEnv(varName: string, production: string, development: string): string | undefined {\n    if (typeof process !== \"undefined\" && typeof process.env !== \"undefined\") {\n        return process.env[varName.toUpperCase()] || process.env.NODE_ENV === \"production\" ? production : development;\n    }\n\n    return production;\n}\n\nexport const FRONTEND_HOSTNAME = tryEnv(\"FRONTEND_HOSTNAME\", \"ontola-mash.herokuapp.com\", \"localhost:8080\");\nexport const FRONTEND_PATH_PREFIX = tryEnv(\"FRONTEND_PATH_PREFIX\", \"\", \"\");\nexport const USE_HTTP = tryEnv(\"USE_HTTP\", \"true\", \"false\");\nconst feURL = `http${USE_HTTP === \"false\" ? \"\" : \"s\"}://${FRONTEND_HOSTNAME}${FRONTEND_PATH_PREFIX}/`;\nexport const FRONTEND_URL = tryEnv(\"FRONTEND_URL\", feURL, feURL);\nexport const PORT = process.env.PORT || 8080;\n","import { createBrowserHistory, createMemoryHistory, History } from \"history\";\n\nconst isBrowser = new Function(\"try {return this===window;}catch(e){ return false;}\");\n\nexport const history = isBrowser() ? createBrowserHistory() : createMemoryHistory();\n\nexport { History };\n","import { createNS } from \"@ontologies/core\";\n\nexport default {\n  ns: createNS(\"https://ontola-mash.herokuapp.com/\"),\n};\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport schema from \"@ontologies/schema\";\n\nconst dbo = createNS(\"http://dbpedia.org/ontology/\");\n\nexport const dbpediaOntology = [\n  rdfFactory.quad(dbo(\"wikiPageExternalLink\"), rdf.type, rdf.Property),\n  rdfFactory.quad(dbo(\"wikiPageExternalLink\"), schema.name, rdfFactory.literal(\"External links\")),\n];\n\nexport default {\n  ns: dbo,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst link = createNS(\"http://www.w3.org/2007/ont/link#\");\n\nexport default {\n  ns: link,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst umbelRc = createNS(\"http://umbel.org/umbel/rc/\");\n\nexport default {\n  ns: umbelRc,\n};\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\n\nconst vcardNS = createNS(\"http://www.w3.org/2006/vcard/ns#\");\n\nconst languages = {\n  en: \"en\",\n  nl: \"nl\",\n};\n\nconst properties = {\n  countryName: vcardNS(\"country-name\"),\n  hasAddress: vcardNS(\"hasAddress\"),\n  hasEmail: vcardNS(\"hasEmail\"),\n  hasTelephone: vcardNS(\"hasTelephone\"),\n  locality: vcardNS(\"locality\"),\n  postalCode: vcardNS(\"postal-code\"),\n  region: vcardNS(\"region\"),\n  streetAddress: vcardNS(\"street-address\"),\n  value: vcardNS(\"value\"),\n};\n\nconst classes = {\n  Address: vcardNS(\"Address\"),\n  Email: vcardNS(\"Email\"),\n  TelephoneType: vcardNS(\"TelephoneType\"),\n};\n\nconst vcard = {\n  ns: vcardNS,\n\n  ...properties,\n  ...classes,\n};\n\nconst classesTypes = Object\n  .values(classes)\n  .map((p) => rdfFactory.quad(p, rdf.type, rdfs.Class));\n\nconst propertyTypes = Object\n  .values(properties)\n  .map((p) => rdfFactory.quad(p, rdf.type, rdf.Property));\n\nexport const vcardOntology = [\n  ...classesTypes,\n  ...propertyTypes,\n\n  rdfFactory.quad(vcard.hasAddress, rdfs.range, vcard.Address),\n  rdfFactory.quad(vcard.hasAddress, rdfs.label, rdfFactory.literal(\"Address\", languages.en)),\n\n  rdfFactory.quad(vcard.streetAddress, rdfs.label, rdfFactory.literal(\"Street address\", languages.en)),\n  rdfFactory.quad(vcard.region, rdfs.label, rdfFactory.literal(\"Region\", languages.en)),\n  rdfFactory.quad(vcard.countryName, rdfs.label, rdfFactory.literal(\"Country\", languages.en)),\n\n  rdfFactory.quad(vcard.region, rdfs.domain, vcard.Address),\n  rdfFactory.quad(vcard.hasEmail, rdfs.range, vcard.Email),\n  rdfFactory.quad(vcard.hasTelephone, rdfs.range, vcard.TelephoneType),\n];\n\nexport default vcard;\n","import { createNS } from \"@ontologies/core\";\n\nconst wde = createNS(\"http://www.wikidata.org/entity/\");\n\nexport default {\n  ns: wde,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst wdp = createNS(\"http://www.wikidata.org/prop/\");\n\nexport default {\n  ns: wdp,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst wdt = createNS(\"http://www.wikidata.org/prop/direct/\");\n\nexport default {\n  ns: wdt,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst wikibase = createNS(\"http://wikiba.se/ontology-beta#\");\n\nexport default {\n  ns: wikibase,\n};\n","/**\n * Since a lot of concepts (whether actually the same or similar enough to be rendered the same way)\n * have different IRI's in multiple ontologies, it's useful to bundle them so they can be re-used\n * across files.\n */\n\nimport rdfFactory, { NamedNode } from \"@ontologies/core\";\nimport foaf from \"@ontologies/foaf\";\nimport owl from \"@ontologies/owl\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nimport browser from \"../ontology/browser\";\nimport dbo from \"../ontology/dbo\";\nimport link from \"../ontology/link\";\nimport umbelRc from \"../ontology/umbelRc\";\nimport vcard from \"../ontology/vcard\";\nimport wde from \"../ontology/wde\";\nimport wdp from \"../ontology/wdp\";\nimport wdt from \"../ontology/wdt\";\nimport wikibase from \"../ontology/wikibase\";\n\n/**\n * Types\n */\n/** Basic type for things/resources. */\nexport const ThingTypes = [schema.Thing, owl.Thing, wikibase.ns(\"Item\")];\n/** Basic type for people. */\nexport const PersonTypes = [schema.Person, foaf.Person, dbo.ns(\"Person\"), wde.ns(\"Q5\")];\n/** Basic type for places */\nexport const PlaceTypes = [schema.Place, dbo.ns(\"Place\")];\n/** Property types */\nexport const PropertyTypes = [rdf.Property, owl.DatatypeProperty, owl.ObjectProperty];\n/** Types for educational institutions (including their specializations) */\nexport const EducationalInstitutionTypes = [\n    schema.CollegeOrUniversity,\n    dbo.ns(\"University\"),\n    umbelRc.ns(\"University\"),\n    schema.EducationalOrganization,\n    dbo.ns(\"EducationalInstitution\"),\n    umbelRc.ns(\"EducationalOrganization\"),\n];\n/** Basic type for (commercial) companies */\nexport const CompanyTypes = [dbo.ns(\"Company\"), schema.Organization];\n\n/** Subclasses of things which are implemented */\nconst OtherImplementedTypes = [\n    dbo.ns(\"CareerStation\"),\n    schema.Dataset,\n    rdfs.Container,\n    rdf.Bag,\n    rdf.Seq,\n    browser.ns(\"BookmarksList\"),\n    rdfFactory.namedNode(\"http://wikiba.se/ontology-beta#Item\"),\n];\n\nexport const CatchAllTypes = [\n    rdfs.Resource,\n    link.ns(\"Document\"),\n    link.ns(\"RDFDocument\"),\n    ...ThingTypes,\n    ...PersonTypes,\n];\n\n/**\n * Properties\n */\n\nexport const NameProps = [\n  schema.name,\n  dbo.ns(\"name\"),\n  foaf.name,\n  rdfs.label,\n  vcard.ns(\"fn\"),\n];\nexport const DescriptionProps = [\n  schema.description,\n  vcard.ns(\"note\"),\n];\nexport const TextProps = [dbo.ns(\"abstract\"), schema.text, rdfs.comment];\nexport const ImageProps = [\n  foaf.depiction,\n  schema.image,\n  wdp.ns(\"P18\"),\n  vcard.ns(\"hasPhoto\"),\n];\n\nexport const BirthPlaceProps = [dbo.ns(\"birthPlace\"), wdt.ns(\"P19\")];\nexport const GenderProps = [foaf.gender, wdt.ns(\"P21\")];\nexport const HeightProps = [dbo.ns(\"Person/height\"), wdp.ns(\"P2048\")];\nexport const SpouseProps = [dbo.ns(\"spouse\"), wdt.ns(\"P26\")];\n\n/**\n * Ontological data\n *\n * In order to have our views render properly according to the inheritance tree, we need to add some\n * ontological information. It'd be better to get this from some proper data source, but ad-hoc is\n * easier and gives us more control.\n */\n\nfunction subClass(subTypes: NamedNode[], superTypes: NamedNode[]) {\n    return [].concat.apply([], subTypes.map(\n        (sub) => superTypes.map(\n            (sup) => rdfFactory.quad(sub, rdfs.subClassOf, sup),\n        ),\n    ));\n}\n\nfunction markAs(subjects: NamedNode[], type: NamedNode) {\n    return subjects.map(\n        (s) => rdfFactory.quad(s, rdf.type, type),\n    );\n}\n\nconst allThingsAreResources = subClass(ThingTypes, [rdfs.Resource]);\nconst everyThingIsAResource = markAs(ThingTypes, rdfs.Resource);\nconst thingsAreClasses = markAs(ThingTypes, rdfs.Class);\nconst personsAreClasses = markAs(PersonTypes, rdfs.Class);\nconst personIsThing = subClass(PersonTypes, ThingTypes);\nconst placeIsThing = subClass(PlaceTypes, ThingTypes);\nconst educationInstitutionsAreThings = subClass(EducationalInstitutionTypes, ThingTypes);\nconst mostThingsAreThings = subClass(OtherImplementedTypes, ThingTypes);\n\nexport default [\n    ...allThingsAreResources,\n    ...everyThingIsAResource,\n    ...thingsAreClasses,\n    ...personsAreClasses,\n    ...personIsThing,\n    ...placeIsThing,\n    ...educationInstitutionsAreThings,\n    ...mostThingsAreThings,\n];\n","import { BlankNode, NamedNode, Node, Term } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport { rdflib } from \"link-lib\";\n\nimport wdp from \"../ontology/wdp\";\n\nexport interface WorkaroundOpts {\n  proxy?: boolean;\n}\n\nexport const applyWorkarounds = (lrs, workarounds: WorkaroundOpts = {}) => {\n  // @ts-ignore\n  lrs.api.setAcceptForHost(\"http://dbpedia.org\", \"text/turtle\");\n  // @ts-ignore\n  lrs.api.setAcceptForHost(\"http://www.wikidata.org/\", \"text/turtle\");\n  // @ts-ignore\n  lrs.api.setAcceptForHost(\"https://www.wikidata.org/\", \"text/turtle\");\n  // @ts-ignore\n  lrs.api.setAcceptForHost(\"https://argu.co/\", \"application/n-quads\");\n\n  if (workarounds.proxy) {\n    /* Just run everything through the proxy, should drastically reduce the bug surface */\n    // @ts-ignore\n    lrs.api.fetcher.constructor.proxyIfNecessary = (uri) => {\n    // @ts-ignore\n        return lrs.api.fetcher\n            .constructor\n            .crossSiteProxyTemplate\n            .replace(\"{uri}\", encodeURIComponent(uri));\n    };\n  }\n\n  /**\n   * Normalize wikidata instanceof properties to generic rdf:type.\n   */\n  // @ts-ignore\n  lrs.store.store.newPropertyAction(\n      wdp.ns(\"P31\"),\n      (formula: rdflib.Store, subj: NamedNode | BlankNode, _pred: NamedNode, obj: Term) => {\n          const type = formula.match(obj as Node, wdp.ns(\"statement/P31\"));\n\n          if (type) {\n              type.map(({ object }) => formula.add(subj, rdf.type, object));\n          }\n\n          return true;\n      },\n  );\n};\n","import { createNS } from \"@ontologies/core\";\n\nexport default {\n  ns: createNS(\"http://dbpedia.org/property/\"),\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst dbpedia = createNS(\"http://dbpedia.org/resource/\");\n\nexport default {\n  ns: dbpedia,\n};\n","import rdfFactory, { createNS } from \"@ontologies/core\"\nimport rdf from \"@ontologies/rdf\";\nimport schema from \"@ontologies/schema\";\n\nimport dbo from \"./dbo\";\n\nconst dbpediaData = createNS(\"http://dbpedia.org/data/\");\n\nexport const dbpediaOntology = [\n  rdfFactory.quad(dbo.ns(\"wikiPageExternalLink\"), rdf.type, rdf.Property),\n  rdfFactory.quad(dbo.ns(\"wikiPageExternalLink\"), schema.name, rdfFactory.literal(\"External links\")),\n];\n\nexport default {\n  ns: dbpediaData,\n};\n","import rdfFactory, { SomeTerm } from \"@ontologies/core\";\n\nexport function groupBy(list: any[], keyGetter) {\n  const map = new Map();\n  for (const item of list) {\n    const key = keyGetter(item);\n    const collection = map.get(key);\n    if (!collection) {\n      map.set(key, [item]);\n    } else {\n      collection.push(item);\n    }\n  }\n  return map;\n}\n\nexport function termFromNQ(nq: string, factory = rdfFactory): SomeTerm | undefined {\n  if (nq.startsWith(\"<\")) {\n    return factory.namedNode(nq.slice(\"<\".length, -1));\n  } else if (nq.startsWith(\"_\")) {\n    return factory.blankNode(nq.slice(\"_:\".length, -1));\n  } else if (nq.startsWith('\"')) {\n    const [ valueOrLang, datatype ] = nq.split(\"^^\");\n    const [ value, lang ] = valueOrLang.split(\"@\");\n\n    return factory.literal(value, lang || factory.namedNode(datatype));\n  }\n}\n","import rdfFactory, {\n  isBlankNode,\n  isNamedNode,\n  isTerm,\n  NamedNode,\n  Namespace,\n  Node,\n  PlainFactory,\n  SomeTerm,\n} from \"@ontologies/core\";\nimport { Location } from \"history\";\nimport { DataObject, defaultNS as NS, SomeNode } from \"link-lib\";\nimport { LinkReduxLRSType } from \"link-redux\";\n\nimport dbp from \"../ontology/dbp\";\nimport dbpedia from \"../ontology/dbpedia\";\nimport dbpediaData from \"../ontology/dbpediaData\";\nimport { FRONTEND_URL } from \"./config\";\nimport { termFromNQ } from \"./data\";\n\nexport type IRIParams<T> = Record<keyof T, SomeTerm | string>;\n\nexport interface ParsedAction<ParamMap extends IRIParams<ParamMap> = {}> {\n  action: NamedNode;\n  base: NamedNode;\n  params: Partial<ParamMap>;\n}\n\nexport type BoundActionDispatcher<ParamMap extends IRIParams<ParamMap> = {}> =\n  (action: string, payload?: Partial<ParamMap>, args?: DataObject) => Promise<any>;\n\nconst factory = new PlainFactory();\n\n/**\n * Generate a path?query combination for the given {action} and {payload}.\n *\n * @see {createActionIRI}\n * @see {createActionPair}\n *\n * @param action The path of the action.\n * @param payload\n */\nexport function actionIRI<ParamMap extends IRIParams<ParamMap> = {}>(\n  action: string,\n  payload?: Partial<ParamMap>,\n): string {\n\n  const query = Object\n    .entries<string | SomeTerm>(payload)\n    .map<[string, string]>(([k, v]) => [\n      k,\n      encodeURIComponent(isTerm(v) ? factory.toNQ(v) : v),\n    ]);\n\n  return `${action}?${new URLSearchParams(query).toString()}`;\n}\n\n/**\n * Create an action generator to easy in IRI generation.\n *\n * @see {actionIRI}\n * @see {createActionPair}\n * @param base - The base Namespace to which the action/payload is added.\n */\nexport const createActionIRI = <ParamMap extends IRIParams<ParamMap> = {}>(base: Namespace) =>\n  (action: string, payload?: Partial<ParamMap>) =>\n    base(actionIRI<ParamMap>(action, payload));\n\n/**\n * Create a action creator with the store and namespace already bound.\n *\n * @param base - The namespace to which the action name should be appended.\n * @param store - The store where the action should be dispatched.\n *\n * @see {createActionPair}\n *\n * @example\n *   const dispatch = createActionIRI(store, myNamespace);\n *   store.actions.example = {\n *     initialize: (iri: NamedNode) => dispatch('initialize', { iri })\n *   };\n */\nexport const createActionNS = <ParamMap extends IRIParams<ParamMap> = {}>(base: Namespace, store: LinkReduxLRSType):\n  BoundActionDispatcher<ParamMap> => {\n  const actionNS = createActionIRI<ParamMap>(base);\n\n  return (action, payload?: Partial<ParamMap>, args?: DataObject) => store.exec(actionNS(action, payload), args);\n};\n\n/**\n * Create a dispatch-parse pair for use in middleware.\n *\n * @param base - The namespace to create actions on.\n * @param store - The store to dispatch actions on.\n */\nexport const createActionPair = <ParamMap extends IRIParams<ParamMap>>(base: Namespace, store: LinkReduxLRSType) => ({\n  dispatch: createActionNS<ParamMap>(base, store),\n  parse: (action: NamedNode) => parseAction<ParamMap>(action),\n});\n\n/**\n * Get the IRI which the browser will fetch (the document).\n *\n * Effectively the IRI without the fragment.\n */\nexport function doc(iri: NamedNode): NamedNode {\n  const url = new URL(iri.value);\n  url.hash = \"\";\n\n  return rdfFactory.namedNode(url.toString());\n}\n\n/**\n * Get the filename (with extension) from an IRI.\n *\n * @param iri - The IRI to get the filename from.\n * @param folder - The base folder to trim. Will be guessed if omitted.\n * @returns The filename with extension or an empty string if it has no filename.\n */\nexport function filename(iri: NamedNode, folder?: NamedNode): string {\n  if (typeof folder === \"undefined\") {\n    const url = new URL(iri.value);\n    folder = rdfFactory.namedNode(`${url.origin}${url.pathname.split(\"/\").slice(0, -1).join(\"/\")}`);\n  }\n  let file = iri.value.replace(folder.value, \"\");\n  // There is some issue in redirection or parsing where paths without trailing slash will cause\n  // the embedded files to be root-relative IRI's.\n  if (file.includes(\"://\")) {\n    file = iri.value.replace(site(folder).value, \"\");\n  }\n\n  return file;\n}\n\n/**\n * Get the origin of the {iri} without trailing slash\n */\nexport function origin(iri: NamedNode): NamedNode {\n  return rdfFactory.namedNode(new URL(iri.value).origin);\n}\n\n/**\n * Get the IRI of the directory containing {iri} or its parent if {iri} has a trailing slash.\n */\nexport function parentDir(iri: NamedNode): NamedNode {\n  const url = new URL(iri.value);\n  const endIndex = url.pathname.endsWith(\"/\") ? -2 : -1;\n  url.pathname = url.pathname.split(\"/\").slice(0, endIndex).join(\"/\");\n\n  return rdfFactory.namedNode(url.toString());\n}\n\n/**\n * Parse an action for its base IRI and parameters separated.\n *\n * Only the last value of each param is included, so duplicates are omitted.\n *\n * The param values are parsed and converted for n-quads syntax, otherwise their literal value is\n * used. The resulting {return.params} is not guaranteed to be correct with the given {ParamMap}, it\n * is for typing purposes only.\n */\nexport const parseAction = <ParamMap extends IRIParams<ParamMap> = {}>(action: NamedNode):\n  ParsedAction<ParamMap> => {\n\n  const url = new URL(action.value);\n  const params = {};\n  url.searchParams.forEach((value: string, key: string) => {\n    const parsedValue = termFromNQ(value);\n    params[key] = parsedValue || value;\n  });\n\n  url.search = \"\";\n\n  return {\n    action,\n    base: rdfFactory.namedNode(url.toString()),\n    params: params as Partial<ParamMap>,\n  };\n};\n\n/**\n * Get the origin of the {iri} with trailing slash\n */\nexport function site(iri: NamedNode): NamedNode {\n  return rdfFactory.namedNode(`${origin(iri).value}/`);\n}\n\n/**\n * Return the top label of the IRI.\n *\n * Is either the fragment or the {filename}.\n */\nexport function term(iri: NamedNode): string {\n  const hashIndex = iri.value.indexOf(\"#\");\n  if (hashIndex >= 0 && hashIndex < iri.value.length) {\n    return iri.value.split(\"#\").pop();\n  }\n\n  return filename(iri);\n}\n\n/* Mash specific functions */\n\nexport function dbpediaToWikiQuery(base, iri: NamedNode | string): string {\n  if (!iri || typeof iri !== \"string\" && !isNamedNode(iri)) {\n    return \"\";\n  }\n\n  return (typeof iri === \"string\" ? iri : iri.value)\n    .replace(base, \"\")\n    .replace(/_/g, \" \");\n}\n\nfunction resourceIRIToIRL(iri: string) {\n  const dataIRI = new URL(iri);\n  switch (dataIRI.host) {\n    case \"www.wikidata.org\":\n      const id = dataIRI.pathname.split(\"/\").pop();\n      return rdfFactory.namedNode(`https://www.wikidata.org/wiki/Special:EntityData/${id}.n3`);\n    default:\n      return rdfFactory.namedNode(`${iri}.n3`);\n  }\n}\n\n/**\n * Generate a path?query combination for the given {action} and {payload}. The subject will be\n *\n * @param subject\n * @param action\n * @param payload\n */\nexport function subjectActionIRI(subject: Node, action: string, payload: { [k: string]: string } = {}): string {\n  const query = [\n    subject && `iri=${subject.value}`,\n    ...Object.entries<string>(payload).map(([k, v]) => [k, encodeURIComponent(v)].join(\"=\")),\n  ].filter(Boolean).join(\"&\");\n\n  return `${action}?${query}`;\n}\n\nexport function articleToWikiIRISet(article: Location) {\n  if (article.pathname.startsWith(\"/resource\")) {\n    const iri = rdfFactory.namedNode(decodeURIComponent(new URLSearchParams(article.search).get(\"iri\")));\n    return {\n      data: resourceIRIToIRL(iri.value),\n      iri,\n      page: iri,\n    };\n  }\n\n  const dbpediaSafeArticle = article.pathname.split(\"/\").pop().trim().replace(/\\s/g, \"_\");\n  if (dbpediaSafeArticle) {\n    return {\n      data: dbpediaData.ns(`${dbpediaSafeArticle}.n3`),\n      iri: dbpedia.ns(dbpediaSafeArticle),\n      page: rdfFactory.namedNode(`http://dbpedia.org/page/${dbpediaSafeArticle}`),\n    };\n  }\n\n  return {\n    data: undefined,\n    iri: undefined,\n    page: undefined,\n  };\n}\n\nexport function resourceToWikiPath(iri: SomeNode | string, linkTemplate?: any): string {\n  if (!iri) {\n    return \"\";\n  }\n\n  const strIRI = typeof iri === \"string\" ? iri : iri.value;\n\n  let prefix = \"wiki\";\n  let base = dbpedia.ns(\"\").value;\n  if (isBlankNode(iri) || strIRI.startsWith(\"_:\")) {\n    throw Error(\"Blank node passed to resourceToWikiPath\");\n    // } else if (strIRI.startsWith(dbo.ns(\"\").value)) {\n    //     prefix = \"ontology\";\n    //     base = dbo.ns(\"\").value;\n  } else if (strIRI.startsWith(dbp.ns(\"\").value)) {\n    prefix = \"property\";\n    base = dbp.ns(\"\").value;\n  } else if (linkTemplate) {\n    const u = new URL(strIRI);\n    const feUrl = new URL(FRONTEND_URL);\n    const needsDoubleSlash = u.href.startsWith(`${u.protocol}//`);\n\n    return linkTemplate.expand({\n      browserOrigin: feUrl.origin,\n      browserPathname: feUrl.pathname,\n\n      iriHash: u.hash,\n      iriHost: u.host,\n      iriHref: u.href,\n      iriPathname: u.pathname,\n      iriProtocol: `${u.protocol}${needsDoubleSlash ? \"//\" : \"\"}`,\n      iriSearch: u.search,\n    });\n  } else {\n    return `/resource/page?iri=${encodeURIComponent(strIRI)}`;\n  }\n\n  const article = dbpediaToWikiQuery(base, iri as NamedNode);\n\n  return `/${prefix}/${article}`;\n}\n\nexport function tryShorten(iri: NamedNode): string {\n  if (iri.value.startsWith(\":\")) {\n    return factory.toNQ(iri);\n  }\n  const shortMap = Object\n    .keys(NS)\n    .map((ns) => ({ [NS[ns](\"\").value]: ns }))\n    .reduce((a, b) => Object.assign(a, b));\n\n  const entries = Object.entries(shortMap);\n\n  for (const [key, value] of entries) {\n    if (iri.value.includes(key)) {\n      return `${value}:${iri.value.split(key)[1]}`;\n    }\n  }\n\n  return (iri as any).term || factory.toNQ(iri);\n}\n","import { createNS } from \"@ontologies/core\";\n\nconst ld = createNS(\"http://purl.org/linked-delta/\");\n\nexport default {\n  ns: ld,\n\n  /**\n   * Adds the statement to the store, without duplication.\n   */\n  add: ld(\"add\"),\n  /**\n   * Removes the entire subject from the store.\n   */\n  purge: ld(\"purge\"),\n  /***\n   * Removes all (subject,predicate,) matches from the store.\n   *\n   * @see slice\n   */\n  remove: ld(\"remove\"),\n  /***\n   * Replaces the (subject, predicate,) with the one(s) in this delta.\n   */\n  replace: ld(\"replace\"),\n  /**\n   * Removes all (subject,predicate,object) matches from the store.\n   *\n   * @see remove\n   */\n  slice: ld(\"slice\"),\n  /**\n   * Removes all statements of (subject,,) from the store and replaces them with those in the delta.\n   */\n  supplant: ld(\"supplant\"),\n};\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nconst ll = createNS(\"http://purl.org/link-lib/\");\n\nexport const llOntology = [\n  rdfFactory.quad(ll(\"InstallableComponent\"), rdf.type, rdfs.Class),\n  rdfFactory.quad(ll(\"InstallableComponent\"), rdfs.subClassOf, rdfs.Class),\n  rdfFactory.quad(ll(\"InstallableComponent\"), schema.name, rdfFactory.literal(\"Extension\")),\n  rdfFactory.quad(ll(\"InstallableComponent\"), schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/extension\")),\n];\n\nexport default {\n  ns: ll,\n\n  ErrorResource: ll(\"ErrorResource\"),\n  LoadingResource: ll(\"LoadingResource\"),\n};\n","import rdfFactory, { createNS, Literal, NamedNode, Node } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nimport { subjectActionIRI } from \"../../helpers/iris\";\nimport browser from \"../../ontology/browser\";\nimport ld from \"../../ontology/ld\";\nimport ll from \"../../ontology/ll\";\n\nconst nfo = createNS(\"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#\");\n\nexport const bookmarks = (store) => {\n  const addGraph = (graph) => ld.ns(`add?graph=${encodeURIComponent(graph.value)}`);\n  const replaceGraph = (graph) => ld.ns(`replace?graph=${encodeURIComponent(graph.value)}`);\n  const sliceGraph = (graph) => ld.ns(`slice?graph=${encodeURIComponent(graph.value)}`);\n  const purgeGraph = (graph) => ld.ns(`purge?graph=${encodeURIComponent(graph.value)}`);\n\n  const bookmarksAction = (subject, action, payload = {}): NamedNode => {\n    return browser.ns(`bookmarks/${subjectActionIRI(subject, action, payload)}`);\n  };\n\n  const createBookmarksList = (listIRI) => ([\n    [listIRI, rdf.type, browser.ns(\"BookmarksList\"), addGraph(listIRI)],\n    [listIRI, rdf.type, rdf.Bag, addGraph(listIRI)],\n    [listIRI, schema.name, rdfFactory.literal(\"Public bookmarks\"), addGraph(listIRI)],\n  ]);\n\n  const createBookmark = (\n    listIRI: Node,\n    resource: NamedNode,\n    name: Literal,\n  ) => {\n    const newBookmark = rdfFactory.blankNode();\n\n    return {\n      bookmark: newBookmark,\n      delta: [\n        [newBookmark, rdf.type, nfo(\"Bookmark\"), addGraph(listIRI)],\n        [newBookmark, nfo(\"bookmarks\"), resource, addGraph(listIRI)],\n        [newBookmark, schema.name, name, addGraph(listIRI)],\n\n        [listIRI, rdfs.member, newBookmark, addGraph(listIRI)],\n      ],\n    };\n  };\n\n  const updateBookmark = (\n    listIRI: Node,\n    bookmark: Node,\n    name: Literal,\n  ) => ([\n    [bookmark, schema.name, name, replaceGraph(listIRI)],\n  ]);\n\n  const deleteBookmark = (\n    listIRI: Node,\n    bookmark: Node,\n  ) => ([\n    [listIRI, rdfs.member, bookmark, sliceGraph(listIRI)],\n    [bookmark, ll.ns(\"nop\"), ll.ns(\"nop\"), purgeGraph(listIRI)],\n  ]);\n\n  return {\n    // TODO: Migrate to symbols to avoid collisions entirely?\n    actions: {\n      // TODO: rename to addBookmarkToFolder etc\n      createBookmark: (list, resource, title): Promise<void> =>\n        store.exec(bookmarksAction(list, \"create\", { resource: resource.value, title })),\n      deleteBookmark: (list, bookmark): Promise<void> =>\n        store.exec(bookmarksAction(list, \"delete\", { bookmark: bookmark.value })),\n      initBookmarksManager: (subject): Promise<void> => store.exec(bookmarksAction(subject, \"initialize\")),\n      updateBookmark: (list, bookmark, title): Promise<void> =>\n        store.exec(bookmarksAction(list, \"update\", { bookmark: bookmark.value, title })),\n    },\n    handle: (iri, _) => {\n      if (!iri.value.startsWith(browser.ns(\"bookmarks/\").value)) {\n        return undefined;\n      }\n\n      if (iri.value.startsWith(browser.ns(\"bookmarks/initialize\").value)) {\n        const todoList = rdfFactory.namedNode(new URL(iri.value).searchParams.get(\"iri\"));\n\n        return store.processDelta(createBookmarksList(todoList))\n          .then(() => store.api.fetcher.putBack(todoList));\n      }\n\n      if (iri.value.startsWith(browser.ns(\"bookmarks/create\").value)) {\n        const search = new URL(iri.value).searchParams;\n        const todoList = rdfFactory.namedNode(search.get(\"iri\"));\n        const resource = rdfFactory.namedNode(search.get(\"resource\"));\n        const title = rdfFactory.literal(search.get(\"title\"));\n\n        const { bookmark, delta } = createBookmark(todoList, resource, title);\n\n        return store.processDelta(delta)\n          .then(() => store.api.fetcher.putBack(todoList))\n          .then(() => bookmark);\n      }\n\n      if (iri.value.startsWith(browser.ns(\"bookmarks/update\").value)) {\n        const search = new URL(iri.value).searchParams;\n        const todoList = rdfFactory.namedNode(search.get(\"iri\"));\n        const bookmarkVal = search.get(\"bookmark\");\n        const bookmark = bookmarkVal.includes(\":\")\n          ? rdfFactory.namedNode(bookmarkVal)\n          : rdfFactory.blankNode(bookmarkVal);\n        const title = rdfFactory.literal(search.get(\"title\"));\n\n        const delta = updateBookmark(todoList, bookmark, title);\n\n        return store.processDelta(delta, true)\n          .then(() => store.api.fetcher.putBack(todoList));\n      }\n\n      if (iri.value.startsWith(browser.ns(\"bookmarks/delete\").value)) {\n        const search = new URL(iri.value).searchParams;\n        const todoList = rdfFactory.namedNode(search.get(\"iri\"));\n        const bookmarkVal = search.get(\"bookmark\");\n        const bookmark = bookmarkVal.includes(\":\")\n          ? rdfFactory.namedNode(bookmarkVal)\n          : rdfFactory.blankNode(bookmarkVal);\n\n        return store.processDelta(deleteBookmark(todoList, bookmark))\n          .then(() => store.api.fetcher.putBack(todoList));\n      }\n\n      return undefined;\n    },\n    initialData: () => [\n      [\n        rdfFactory.namedNode(\"about:bookmarks\"),\n        rdf.type,\n        browser.ns(\"BookmarksManager\"),\n        ld.replace,\n      ],\n    ],\n  };\n};\n","import rdfFactory from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport schema from \"@ontologies/schema\";\n\nimport browser from \"../../ontology/browser\";\nimport ll from \"../../ontology/ll\";\n\nexport const extensions = (_) => {\n  // const extensionAction = (subject, action, payload = {}): NamedNode => {\n  //   return browser.ns(`extensions/${actionIRI(subject, action, payload)}`);\n  // };\n\n  return {\n    actions: {},\n    handle: (iri, _) => {\n      if (!iri.value.startsWith(browser.ns(\"bookmarks/\").value)) {\n        return undefined;\n      }\n\n      return undefined;\n    },\n    initialData: () => [\n      [\n        rdfFactory.namedNode(\"about:extensions\"),\n        rdf.type,\n        browser.ns(\"ExtensionsManager\"),\n        ll.ns(\"replace\"),\n      ],\n      [\n        rdfFactory.namedNode(\"about:extensions\"),\n        schema.name,\n        rdfFactory.literal(\"Extensions\"),\n        ll.ns(\"replace\"),\n      ],\n      [\n        rdfFactory.namedNode(\"about:extensions\"),\n        schema.description,\n        rdfFactory.literal(`\n          Below is a list of known installable extensions. After installing an extension, its functionality will be\n          available in the browser as long as you don't refresh the page. Data should be stored in your pod, so don't\n          worry about losing it when refreshing. Which extensions you've installed isn't stored in your pod yet, so\n          refreshing the page will effectively disable all extensions.\n        `),\n        ll.ns(\"replace\"),\n      ],\n    ],\n  };\n};\n","import { createNS } from \"@ontologies/core\";\n\nimport { subjectActionIRI } from \"../helpers/iris\";\nimport browser from \"../ontology/browser\";\n\nimport { bookmarks } from \"./browser/bookmarks\";\nimport { extensions } from \"./browser/extensions\";\n\nexport const browserMiddleware = (store) => {\n  // TODO: proper IRI\n  store.namespaces.browser = createNS(\"https://ontola-mash.herokuapp.com/\");\n\n  function browserAction(subject, action, payload: { [k: string]: string } = {}) {\n    return browser.ns(subjectActionIRI(subject, action, payload));\n  }\n\n  store.actions.browser = {};\n  store.actions.browser.navigate = (iri) => store.exec(browserAction(iri, browser.ns(\"navigate\")));\n\n  const components = [\n    bookmarks(store),\n    extensions(store),\n  ];\n\n  components.forEach((component) => {\n    store.actions.browser = {\n      ...store.actions.browser,\n      ...component.actions,\n    };\n  });\n\n  const initialData = components\n    .reduce((acc, cur) => [...acc, ...cur.initialData()], []);\n  store.processDelta(initialData, true);\n\n  /**\n   * Middleware handler\n   */\n  return (next) => (iri, opts) => {\n    if (!iri.value.startsWith(browser.ns(\"\").value)) {\n      return next(iri, opts);\n    }\n\n    for (const component of components) {\n      const ret = component.handle(iri, opts);\n      if (ret !== undefined) {\n        return ret;\n      }\n    }\n\n    return next(iri, opts);\n  };\n};\n","import rdfFactory, { NamedNode } from \"@ontologies/core\";\n\nimport { MiddlewareActionHandler, MiddlewareWithBoundLRS } from \"link-lib\";\n\nexport const website = (typeof window !== \"undefined\" ? window.origin : \"\") || \"https://example.com\";\nexport const frontendIRI = rdfFactory.namedNode(website!);\n\n/**\n * Filter to prevent superfluous unhandled middleware action from going to execActionByIRI\n *\n * Acts as a security filter as well, to prevent cross-site action injections.\n */\nexport const execFilter = () => (): MiddlewareWithBoundLRS => {\n  const executableSites = [\n    rdfFactory.namedNode(new URL(frontendIRI.value).origin),\n  ];\n\n  return (next: MiddlewareActionHandler) => (iri: NamedNode, opts: any): Promise<any> => {\n    if (executableSites.includes(rdfFactory.namedNode(new URL(iri.value).origin))) {\n      return next(iri, opts);\n    }\n\n    return Promise.resolve();\n  };\n};\n\nexport default execFilter;\n","\nexport const loggingMiddleware = () => (next) => (a, o) => {\n  // tslint:disable-next-line no-console\n  console.log(`action: ${a.value}`, o);\n\n  return next(a, o);\n};\n","import { NamedNode, Node, Quad, SomeTerm, Term } from \"@ontologies/core\";\nimport rdfs from \"@ontologies/rdfs\";\nimport { LinkedRenderStore } from \"link-lib\";\n\n/**\n * Parses the numerical value of a rdfs:ContainerMembershipProperty predicate.\n *\n * @see https://www.w3.org/TR/rdf-schema/#ch_containermembershipproperty\n * @return The value of the predicate or -1.\n */\nexport function seqMemberToNumber(member: NamedNode | undefined): number {\n  return Number(member?.value?.split(\"_\")?.pop() || -1);\n}\n\nexport function orderedElementsOfSeq(store: LinkedRenderStore<any>, seqIRI: Node): Quad[] {\n  return store\n    .getResourcePropertyRaw(seqIRI, rdfs.member)\n    .sort((a, b) => seqMemberToNumber(a.predicate) - seqMemberToNumber(b.predicate));\n}\n\nexport function seqToArr(store: LinkedRenderStore<any>, seqIRI: Node): Term[] {\n  return orderedElementsOfSeq(store, seqIRI).map((s) => s.object);\n}\n\nexport function firstQuadOfSeq(store: LinkedRenderStore<any>, seqIRI: Node): Quad | undefined {\n  return orderedElementsOfSeq(store, seqIRI).shift();\n}\n\nexport function firstTermOfSeq(store: LinkedRenderStore<any>, seqIRI: Node): SomeTerm | undefined {\n  return firstQuadOfSeq(store, seqIRI)?.object;\n}\n\nexport function lastQuadOfSeq(store: LinkedRenderStore<any>, seqIRI: Node): Quad | undefined {\n  return orderedElementsOfSeq(store, seqIRI).pop();\n}\n\nexport function lastTermOfSeq(store: LinkedRenderStore<any>, seqIRI: Node): SomeTerm | undefined {\n  return lastQuadOfSeq(store, seqIRI)?.object;\n}\n","import rdfFactory, { NamedNode, Node, Quad, Term } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport { LinkedRenderStore } from \"link-lib\";\n\nimport ld from \"../ontology/ld\";\nimport { firstQuadOfSeq, lastQuadOfSeq, seqMemberToNumber } from \"./seq\";\n\nexport const addGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"add\" : `add?graph=${encodeURIComponent(graph.value)}`);\nexport const replaceGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"replace\" : `replace?graph=${encodeURIComponent(graph.value)}`);\nexport const sliceGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"slice\" : `slice?graph=${encodeURIComponent(graph.value)}`);\nexport const purgeGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"purge\" : `purge?graph=${encodeURIComponent(graph.value)}`);\nexport const removeGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"remove\" : `remove?graph=${encodeURIComponent(graph.value)}`);\nexport const supplantGraph = (graph) => ld.ns(graph === rdfFactory.defaultGraph() ? \"supplant\" : `supplant?graph=${encodeURIComponent(graph.value)}`);\n\n/**\n * Create a delta statement adding ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const add = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, addGraph(g));\n/**\n * Create a delta statement replaceing ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const replace = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, replaceGraph(g));\n/**\n * Create a delta statement sliceing ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const slice = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, sliceGraph(g));\n/**\n * Create a delta statement purgeing ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const purge = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, purgeGraph(g));\n/**\n * Create a delta statement removeing ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const remove = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, removeGraph(g));\n/**\n * Create a delta statement supplanting ({s}, {p}, {o}) to {g} or the default graph\n */\nexport const supplant = (s, p, o, g = rdfFactory.defaultGraph()) => rdfFactory.quad(s, p, o, supplantGraph(g));\n\nexport function seqShift(\n  store: LinkedRenderStore<any>,\n  seqIRI: Node,\n  method: NamedNode = ld.slice,\n): Quad[] {\n  const firstMember = firstQuadOfSeq(store, seqIRI);\n\n  return [\n    rdfFactory.quad(\n      firstMember.subject,\n      firstMember.predicate,\n      firstMember.object,\n      method,\n    ),\n  ];\n}\n\nexport function seqPush(\n  store: LinkedRenderStore<any>,\n  seqIRI: Node,\n  value: Term,\n  method: NamedNode = ld.replace,\n) {\n  const upperBound = Number(seqMemberToNumber(lastQuadOfSeq(store, seqIRI)?.predicate));\n\n  return [\n    rdfFactory.quad(\n      seqIRI,\n      rdf.ns(`_${upperBound + 1}`),\n      value,\n      method,\n    ),\n  ];\n}\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\n\nimport { FRONTEND_URL } from \"../helpers/config\";\n\nconst languages = {\n  en: \"en\",\n  nl: \"nl\",\n};\n\nconst app = createNS(FRONTEND_URL);\n\nexport const appOntology = [\n  rdfFactory.quad(app(\"bornInfo\"), rdf.type, rdf.Property),\n  rdfFactory.quad(app(\"bornInfo\"), rdfs.label, rdfFactory.literal(\"Birth\", languages.en)),\n  rdfFactory.quad(app(\"bornInfo\"), rdfs.label, rdfFactory.literal(\"Geboorte\", languages.nl)),\n];\n\nexport default {\n  ns: app,\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst ontola = createNS(\"https://ns.ontola.io/\");\n\nexport default {\n  ns: ontola,\n};\n","/**\n * Copyright 2019\n * Argu B.V.\n */\n\nimport rdfFactory, { Literal, NamedNode, Node } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport schema from \"@ontologies/schema\";\nimport {\n  MiddlewareActionHandler,\n  MiddlewareFn,\n  MiddlewareWithBoundLRS,\n} from \"link-lib\";\nimport { LinkReduxLRSType } from \"link-redux\";\nimport { ElementType } from \"react\";\nimport { add, remove, replace, seqPush, seqShift } from \"../helpers/delta\";\n\nimport { History } from \"../helpers/history\";\nimport { createActionPair } from \"../helpers/iris\";\nimport app from \"../ontology/app\";\nimport ontola from \"../ontology/ontola\";\n\ninterface OntolaParams {\n  location: NamedNode;\n  resource: Node;\n  text: Literal;\n}\n\nexport const ontolaMiddleware = (history: History): MiddlewareFn<ElementType> =>\n  (store: LinkReduxLRSType): MiddlewareWithBoundLRS => {\n\n  (store as any).actions.ontola = {};\n\n  const ontolaActionPrefix = ontola.ns(\"actions/\").value;\n  const { dispatch, parse } = createActionPair<OntolaParams>(ontola.ns, store);\n\n  const currentPath = (): string => {\n    const l = history.location;\n    return [\n      [l.pathname, l.search].filter(Boolean).join(\"\"),\n      l.hash,\n    ].filter(Boolean).join(\"#\");\n  };\n\n  /**\n   * Ontola snackbar setup\n   */\n\n  const snackbarManager = ontola.ns(\"snackbar/manager\");\n  const snackbarQueue = rdfFactory.blankNode();\n\n  store.processDelta([\n    add(snackbarManager, rdf.type, ontola.ns(\"snackbar/Manager\")),\n    add(snackbarManager, ontola.ns(\"snackbar/queue\"), snackbarQueue),\n    add(snackbarQueue, rdf.type, rdf.Seq),\n  ], true);\n\n  const queueSnackbar = (text: Literal) => {\n    const s = rdfFactory.blankNode();\n\n    const queue = store.getResourceProperty<Node>(\n      snackbarManager,\n      ontola.ns(\"snackbar/queue\"),\n    );\n\n    return [\n      add(s, rdf.type, ontola.ns(\"snackbar/Snackbar\")),\n      add(s, schema.text, text),\n      ...seqPush(store, queue, s),\n    ];\n  };\n\n  const shiftSnackbar = () => {\n    const queue = store.getResourceProperty<NamedNode>(\n      snackbarManager,\n      ontola.ns(\"snackbar/queue\"),\n    );\n\n    return seqShift(store, queue);\n  };\n\n  (store as any).actions.ontola.showSnackbar = (text: Literal | string) =>\n    dispatch(\"actions/snackbar\", { text: rdfFactory.literal(text) });\n\n  /**\n   * Ontola dialog setup\n   */\n\n  const dialogManager = ontola.ns(\"dialog/manager\");\n\n  store.processDelta([\n    add(dialogManager, rdf.type, ontola.ns(\"dialog/Manager\")),\n  ], true);\n\n  const hideDialog = () => [\n    remove(dialogManager, ontola.ns(\"dialog/resource\"), ontola.ns(\"dialog/rm\")),\n  ];\n\n  const showDialog = (resource: Node) => [\n    replace(dialogManager, ontola.ns(\"dialog/resource\"), resource),\n    replace(dialogManager, ontola.ns(\"dialog/opener\"), app.ns(currentPath().slice(1))),\n  ];\n\n  (store as any).actions.ontola.showDialog = (resource: Node) =>\n    dispatch(\"actions/dialog/alert\", { resource });\n\n  (store as any).actions.ontola.navigate = (location: NamedNode) =>\n    dispatch(\"actions/dialog/redirect\", { location });\n\n  /**\n   * Miscellaneous\n   */\n\n  history.listen((_, action) => {\n    if ([\"POP\", \"PUSH\"].includes(action)) {\n      dispatch(`actions/navigation/${action.toLowerCase()}`);\n    }\n  });\n\n  return (next: MiddlewareActionHandler) => (iri: NamedNode, opts: any): Promise<any> => {\n    if (!iri.value.startsWith(ontolaActionPrefix)) {\n      return next(iri, opts);\n    }\n    const { base, params } = parse(iri);\n\n    switch (base.value) {\n      case ontola.ns(\"actions/navigation/push\").value:\n      case ontola.ns(\"actions/navigation/pop\").value:\n        const dialog = store.getResourceProperty(dialogManager, ontola.ns(\"dialog/resource\"));\n        if (dialog) {\n          dispatch(\"actions/dialog/close\");\n        }\n\n        return next(iri, opts);\n\n      case ontola.ns(\"actions/dialog/close\").value: {\n        store.processDelta(hideDialog(), true);\n        return Promise.resolve();\n      }\n\n      case ontola.ns(\"actions/dialog/alert\").value: {\n        history.push(currentPath());\n        store.processDelta(showDialog(params.resource), true);\n\n        return Promise.resolve();\n      }\n\n      case ontola.ns(\"actions/snackbar/finished\").value: {\n        store.processDelta(shiftSnackbar(), true);\n        return Promise.resolve();\n      }\n\n      case ontola.ns(\"actions/snackbar\").value: {\n        store.processDelta(queueSnackbar(params.text), true);\n\n        return Promise.resolve();\n      }\n\n      default: {\n        return next(iri, opts);\n      }\n    }\n  };\n};\n","import { createNS } from \"@ontologies/core\";\n\nconst solidActions = createNS(\"http://www.w3.org/ns/solid/actions/\");\n\nexport default {\n  ns: solidActions,\n};\n","import rdfFactory, { createNS, NamedNode, Node } from \"@ontologies/core\";\nimport rdfx from \"@ontologies/rdf\";\nimport schema from \"@ontologies/schema\";\nimport { SomeNode } from \"link-lib\";\nimport { IndexedFormula, Serializer } from \"rdflib\";\nimport SolidAuthClient from \"solid-auth-client\";\nimport { replace } from \"../helpers/delta\";\n\nimport { createActionPair } from \"../helpers/iris\";\nimport solidActions from \"../ontology/solidActions\";\n\ninterface SolidParams {\n  fileName: string;\n  folderName: string;\n  subject: NamedNode;\n  session: NamedNode;\n  template: Node;\n  graph: Node;\n}\n\nexport const solidMiddleware = (store) => {\n  // TODO: proper IRI\n  store.namespaces.solid = createNS(`http://www.w3.org/ns/solid/actions/`);\n\n  const { dispatch, parse } = createActionPair<SolidParams>(solidActions.ns, store);\n  store.actions.solid = {\n    createFile: (folder: NamedNode, fileName: string, template?: SomeNode) =>\n      dispatch(\n        \"create/file\",\n        {\n          fileName,\n          subject: folder,\n          template,\n        },\n      ),\n    createFolder: (folder: NamedNode, folderName: string) =>\n      dispatch(\"create/folder\", { subject: folder, folderName }),\n    deleteFile: (file: NamedNode) => dispatch(\"delete/file\", { subject: file }),\n    login: () => dispatch(\"login\"),\n    logout: () => dispatch(\"logout\"),\n    save: (graph: NamedNode) => dispatch(\"save\", { graph }),\n  };\n\n  const guestSessionIRI = solidActions.ns(\"session/guest\");\n  store.processDelta([\n    replace(guestSessionIRI, rdfx.type, schema.Person),\n    replace(guestSessionIRI, rdfx.type, solidActions.ns(\"Session\")),\n    replace(guestSessionIRI, schema.name, rdfFactory.literal(\"Guest\")),\n  ], true);\n\n  const updateSession = (session) => {\n    const iri = session\n      ? solidActions.ns(`session/logged_in?session=${encodeURIComponent(session.webId)}`)\n      : solidActions.ns(\"session/logged_out\");\n\n    store.exec(iri);\n  };\n\n  SolidAuthClient.trackSession(updateSession);\n\n  const currentUserIRI = solidActions.ns(\"session/user\");\n  const setCurrentUser = (session: NamedNode) => ([\n    replace(currentUserIRI, rdfx.type, solidActions.ns(\"Session\")),\n    replace(currentUserIRI, solidActions.ns(\"iri\"), session),\n  ]);\n\n  store.processDelta(setCurrentUser((solidActions.ns(\"session/guest\"))), true);\n\n  /**\n   * Middleware handler\n   */\n  return (next) => (iri, opts) => {\n    if (!iri.value.startsWith(solidActions.ns(\"\").value)) {\n      return next(iri, opts);\n    }\n\n    const { base, params } = parse(iri);\n\n    switch (base.value) {\n      case solidActions.ns(\"session/logged_out\").value: {\n        store.processDelta(setCurrentUser(solidActions.ns(\"session/guest\")), true);\n        store.actions.ontola.showSnackbar(\"Logged out\");\n\n        return Promise.resolve();\n      }\n\n      case solidActions.ns(\"session/logged_in\").value: {\n        store.processDelta(setCurrentUser(params.session), true);\n        store.actions.ontola.showSnackbar(`Logged in as '${params.session}'`);\n\n        return Promise.resolve();\n      }\n\n      case solidActions.ns(\"login\").value: {\n        return SolidAuthClient.popupLogin({\n          popupUri: \"https://solid.community/common/popup.html\",\n        });\n      }\n\n      case solidActions.ns(\"logout\").value: {\n        return SolidAuthClient.logout();\n      }\n\n      case solidActions.ns(\"create/file\").value: {\n        const resource = rdfFactory.namedNode(`${params.subject.value}${params.fileName}`);\n\n        const options: RequestInit = {\n          body: undefined,\n          headers: {\n            [\"Content-Type\"]: undefined,\n          },\n          method: \"PUT\",\n        };\n\n        const template = params.template;\n        if (template) {\n          const serializer = new Serializer(new IndexedFormula());\n          const input = store.store\n            .match(template, null, null, null)\n            .map((s) => s.subject === template\n              ? rdfFactory.quad(resource, s.predicate, s.object, s.why)\n              : s);\n          const rdfSerialization = serializer.statementsToN3(input);\n          options.headers[\"Content-Type\"] = \"text/n3\";\n          options.body = rdfSerialization;\n        }\n\n        return store.api.fetcher._fetch(\n          resource.value,\n          options,\n        ).then(() => store.getEntity(params.subject, { reload: true }));\n      }\n\n      case solidActions.ns(\"create/folder\").value: {\n        const resource = rdfFactory.namedNode(`${params.subject.value}${params.folderName}/.dummy`);\n\n        return store.api.fetcher._fetch(resource.value, { method: \"PUT\" })\n          .then(store.api.fetcher._fetch(resource.value, { method: \"DELETE\" }))\n          .then(() => store.getEntity(params.subject, { reload: true }));\n      }\n\n      case solidActions.ns(\"delete/file\").value: {\n        return store.api.fetcher._fetch(\n          params.subject.value,\n          { method: \"DELETE\" },\n        ).then(() => store.removeResource(params.subject));\n      }\n\n      case solidActions.ns(\"save\").value: {\n        return store.api.fetcher.putBack(params.graph);\n      }\n\n      default: {\n        return next(iri, opts);\n      }\n    }\n  };\n};\n","import { MiddlewareFn } from \"link-lib\";\nimport { ElementType } from \"react\";\n\nimport { History } from \"../helpers/history\";\n\nimport { browserMiddleware } from \"./browser\";\nimport execFilter from \"./execFilter\";\nimport { loggingMiddleware } from \"./loggingMiddleware\";\nimport { ontolaMiddleware } from \"./ontolaMiddleware\";\nimport { solidMiddleware } from \"./solid\";\n\nexport const createMiddleware = (history: History, externals = []): Array<MiddlewareFn<ElementType>> => [\n    loggingMiddleware,\n    ontolaMiddleware(history),\n    solidMiddleware,\n    browserMiddleware,\n    ...externals,\n    execFilter(),\n];\n","import rdfFactory from \"@ontologies/core\";\nimport foaf from \"@ontologies/foaf\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nexport const foafOntology = [\n  rdfFactory.quad(foaf.gender, rdf.type, rdf.Property),\n  rdfFactory.quad(foaf.gender, rdfs.label, rdfFactory.literal(\"Gender\")),\n  rdfFactory.quad(foaf.gender, schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/wc\")),\n\n  rdfFactory.quad(foaf.homepage, rdf.type, rdf.Property),\n  rdfFactory.quad(foaf.homepage, rdfs.label, rdfFactory.literal(\"Homepage\")),\n  rdfFactory.quad(foaf.homepage, schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/wc\")),\n];\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nconst ldp = createNS(\"http://www.w3.org/ns/ldp#\");\n\nexport const ldpOntology = [\n  rdfFactory.quad(ldp(\"Container\"), rdf.type, rdfs.Class),\n  rdfFactory.quad(ldp(\"Container\"), schema.name, rdfFactory.literal(\"Folder\")),\n  rdfFactory.quad(ldp(\"Container\"), schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/folder\")),\n];\n\nexport default {\n  ns: ldp,\n};\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nconst mash = createNS(\"https://ontola-mash.herokuapp.com/\");\n\nexport const mashOntology = [\n  rdfFactory.quad(mash(\"BookmarksList\"), rdf.type, rdfs.Class),\n  rdfFactory.quad(mash(\"BookmarksList\"), schema.name, rdfFactory.literal(\"Bookmarks folder\")),\n  rdfFactory.quad(mash(\"BookmarksList\"), schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/folder_special\")),\n];\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nimport ll from \"./ll\";\n\nconst minesweeper = createNS(\"https://fletcher91.github.io/link-minesweeper/\");\n\nconst template = rdfFactory.blankNode();\n\nexport const minesweeperOntology = [\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), rdf.type, rdfs.Class, minesweeper(\"MinesweeperGame\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), rdf.type, ll.ns(\"InstallableComponent\"), minesweeper(\"MinesweeperGame\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/bug_report\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), schema.logo, rdfFactory.namedNode(\"https://i.imgur.com/zWhWOZh.png\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), schema.name, rdfFactory.literal(\"Bugsweeper\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), ll.ns(\"npmLabel\"), rdfFactory.literal(\"link-minesweeper\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), ll.ns(\"npmVersion\"), rdfFactory.literal(\"1.0.6\")),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), ll.ns(\"fileTemplate\"), template),\n  rdfFactory.quad(minesweeper(\"MinesweeperGame\"), ll.ns(\"newLabel\"), rdfFactory.literal(\"Create minesweeper game\")),\n\n  rdfFactory.quad(template, rdf.type, minesweeper(\"MinesweeperInit\")),\n];\n","import rdfFactory, { createNS } from \"@ontologies/core\";\nimport rdf from \"@ontologies/rdf\";\nimport rdfs from \"@ontologies/rdfs\";\nimport schema from \"@ontologies/schema\";\n\nimport ll from \"./ll\";\n\nconst todo = createNS(\"https://fletcher91.github.io/link-redux-todo/\");\n\nconst template = rdfFactory.blankNode();\n\nexport const todoOntology = [\n  rdfFactory.quad(todo(\"TodoList\"), rdf.type, rdfs.Class, todo(\"TodoList\")),\n  rdfFactory.quad(todo(\"TodoList\"), rdf.type, ll.ns(\"InstallableComponent\"), todo(\"TodoList\")),\n  rdfFactory.quad(todo(\"TodoList\"), schema.image, rdfFactory.namedNode(\"https://material.io/resources/icons/list\")),\n  rdfFactory.quad(todo(\"TodoList\"), schema.logo, rdfFactory.namedNode(\"http://todomvc.com/site-assets/logo.svg\")),\n  rdfFactory.quad(todo(\"TodoList\"), schema.name, rdfFactory.literal(\"TODO List\")),\n  rdfFactory.quad(todo(\"TodoList\"), ll.ns(\"npmLabel\"), rdfFactory.literal(\"link-redux-todomvc\")),\n  rdfFactory.quad(todo(\"TodoList\"), ll.ns(\"npmVersion\"), rdfFactory.literal(\"2.12.5\")),\n  rdfFactory.quad(todo(\"TodoList\"), ll.ns(\"fileTemplate\"), template),\n  rdfFactory.quad(todo(\"TodoList\"), ll.ns(\"newLabel\"), rdfFactory.literal(\"Create TODO List\")),\n\n  rdfFactory.quad(template, rdf.type, todo(\"TodoList\")),\n  // The view will not render without either one of name, completedCount, or member, since it's wrapped in\n  // mapDataToProps without forceRender, or, in other words, it doesn't support empty files yet.\n  rdfFactory.quad(template, todo(\"completedCount\"), rdfFactory.literal(0)),\n  rdfFactory.quad(template, schema.name, rdfFactory.literal(\"\")),\n];\n","import LinkDevTools from \"@ontola/link-devtools\";\nimport { Quad } from \"@ontologies/core\";\nimport importToArray from \"import-to-array\";\nimport {\n  DataProcessorOpts,\n  MiddlewareFn,\n  RDFStoreOpts,\n  RequestInitGenerator,\n  transformers,\n} from \"link-lib\";\nimport * as LinkLib from \"link-lib\";\nimport { register } from \"link-redux\";\nimport * as LinkRedux from \"link-redux\";\nimport * as Rdflib from \"rdflib\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport { FRONTEND_URL } from \"./helpers/config\";\nimport { history } from \"./helpers/history\";\nimport types from \"./helpers/types\";\nimport { applyWorkarounds, WorkaroundOpts } from \"./helpers/workarounds\";\nimport { createMiddleware } from \"./middleware\";\nimport * as ontology from \"./ontology\";\nimport ll from \"./ontology/ll\";\n\ninterface CreateLRSOpts {\n  applyWorkarounds?: boolean;\n  apiOpts?: Partial<DataProcessorOpts>;\n  middleware?: Array<MiddlewareFn<any>>;\n  workaroundOpts?: WorkaroundOpts;\n  rdfStoreOpts?: RDFStoreOpts;\n  makeGlobal?: boolean;\n  views?: Array<React.ElementType<any> | LinkLib.ComponentRegistration<React.ElementType<any>>>;\n}\n\ninterface ModuleDescription {\n  iri: string;\n  middlewares: any[];\n  ontologyStatements: Quad[];\n  version: number;\n  views: Array<LinkLib.ComponentRegistration<React.ElementType<any>>>;\n}\n\nexport function createLRS(opts: CreateLRSOpts = {}) {\n  (Rdflib.Fetcher as any).crossSiteProxyTemplate = `${FRONTEND_URL}proxy?iri={uri}`;\n\n  const reporter = ((e): void => { throw e; });\n  const store = new LinkLib.RDFStore(opts.rdfStoreOpts);\n  const fetcher = new Rdflib.Fetcher((store as any).store);\n\n  const PRIO_MAX = 1.0;\n\n  const lrs = LinkLib.createStore<React.ElementType>({\n    apiOpts: {\n      fetcher,\n      report: reporter,\n      requestInitGenerator: new RequestInitGenerator({\n        credentials: \"include\",\n        csrfFieldName: \"csrf-token\",\n        mode: \"cors\",\n        xRequestedWith: \"XMLHTTPRequest\",\n      }),\n      transformers: [\n        {\n          acceptValue: PRIO_MAX,\n          mediaType: \"text/n3\",\n          transformer: transformers.processRDF,\n        },\n        {\n          acceptValue: PRIO_MAX,\n          mediaType: \"text/turtle\",\n          transformer: transformers.processRDF,\n        },\n        {\n          acceptValue: PRIO_MAX,\n          mediaType: \"application/n-triples\",\n          transformer: transformers.processRDF,\n        },\n        ...(opts.apiOpts?.transformers || []),\n      ],\n      ...opts.apiOpts,\n    },\n    store,\n  }, createMiddleware(history, opts.middleware));\n\n  lrs.api.setAcceptForHost(\"https://ontola-mash.herokuapp.com/\", \"text/turtle\");\n\n  (lrs as any).installedModules = [];\n  (lrs as any).registerModule = (registration: ModuleDescription) => {\n    if ((lrs as any).installedModules.includes(registration.iri)) {\n      console.log(\"Bailing out of registration, module already present\");\n      return;\n    }\n\n    console.log(\"Module registration requested\", registration);\n\n    // (LRS as any).externalMiddlewares.push(...registration.middlewares);\n    registration.middlewares.forEach((mw) => {\n      const storeBound = mw(lrs);\n      lrs.dispatch = storeBound(lrs.dispatch);\n    });\n    console.log(\"Added middleware\");\n\n    lrs.addOntologySchematics(registration.ontologyStatements || []);\n\n    lrs.registerAll(...registration.views);\n    (lrs as any).store.touch(ll.ns(\"viewRegistrations\"));\n    (lrs as any).touch();\n    console.log(\"Added views\");\n\n    (lrs as any).installedModules += registration.iri;\n    console.log(\"Marked as registered\");\n  };\n\n  importToArray(ontology).forEach((o) => {\n    lrs.addOntologySchematics(o);\n  });\n\n  lrs.addOntologySchematics(types);\n\n  if (opts.views) {\n    lrs.registerAll(\n      ...opts.views.map((imp: any) => {\n        if (imp) {\n          return register(imp);\n        }\n\n        return undefined;\n      }),\n    );\n  }\n\n  if (opts.applyWorkarounds) {\n    applyWorkarounds(lrs, opts.workaroundOpts);\n  }\n\n  if (opts.makeGlobal) {\n    (window as any).Rdflib = Rdflib;\n    (window as any).React = React;\n    (window as any).ReactDOM = ReactDOM;\n    (window as any).LinkLib = LinkLib;\n    (window as any).LinkRedux = LinkRedux;\n\n    if (typeof window.LRS === \"undefined\") {\n      Object.defineProperty(window, \"LRS\", {\n        value: lrs,\n        writable: false,\n      });\n    }\n    if (typeof window.__REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\") {\n      window.dev = new LinkDevTools();\n    }\n  }\n\n  return {\n    lrs,\n  };\n}\n","/**\n * Helpers for working with linked data prop-types.\n *\n * These validate props for conforming to the rdfjs task force representation in plain object form.\n */\n\nimport { TermType } from \"@ontologies/core\";\nimport * as PropTypes from \"prop-types\";\n\n/** Validate if the prop is a valid BlankNode. */\nexport const blankNodeShape = PropTypes.shape({\n  termType: PropTypes.oneOf([TermType.BlankNode]).isRequired,\n  value: PropTypes.string.isRequired,\n});\n\n/** Validate if the prop is a valid NamedNode. */\nexport const namedNodeShape = PropTypes.shape({\n  termType: PropTypes.oneOf([TermType.NamedNode]).isRequired,\n  value: PropTypes.string.isRequired,\n});\n\n/** Validate if the prop is a valid Literal. */\nexport const literalShape = PropTypes.shape({\n  termType: PropTypes.oneOf([TermType.Literal]).isRequired,\n  value: PropTypes.string.isRequired,\n\n  datatype: namedNodeShape,\n  language: PropTypes.string.isRequired,\n});\n\n/** Validate if the prop is a valid node (blank or named). */\nexport const nodeType = PropTypes.oneOfType([blankNodeShape, namedNodeShape]);\n\n/** Validate if the prop is a valid term (blank node, named node, or literal). */\nexport const termType = PropTypes.oneOfType([blankNodeShape, namedNodeShape, literalShape]);\n\n/** Validate if the prop is a valid Quad. */\nexport const quadShape = PropTypes.shape({\n  subject: PropTypes.oneOfType([ blankNodeShape, namedNodeShape ]).isRequired,\n\n  predicate: namedNodeShape.isRequired,\n\n  object: PropTypes.oneOfType([ blankNodeShape, namedNodeShape, literalShape ]).isRequired,\n\n  graph: PropTypes.oneOfType([ blankNodeShape, namedNodeShape ]),\n});\n","import rdfFactory, { NamedNode } from \"@ontologies/core\";\nimport { useDataInvalidation, useLRS } from \"link-redux\";\n\nimport solidActions from \"../ontology/solidActions\";\n\n/** Returns the storage IRI from the currently signed in user, as declared in their webid/pod. */\nexport const useStorage = () => {\n  const lrs = useLRS();\n  const pod = lrs.getResourceProperty(\n    solidActions.ns(\"session/user\"),\n    solidActions.ns(\"iri\"),\n  );\n  const storage = !pod ? undefined : lrs.getResourceProperty(\n    pod as NamedNode,\n    rdfFactory.namedNode(\"http://www.w3.org/ns/pim/space#storage\"),\n  );\n\n  // We don't have a way to map random resources to a view (yet), so we need to put some extra logic in to update our\n  // view when resources apart from our own subject change.\n  useDataInvalidation({\n    dataSubjects: [\n      pod as NamedNode,\n      storage as NamedNode,\n    ].filter(Boolean),\n    subject: solidActions.ns(\"session/user\"),\n  });\n\n  return storage;\n};\n","import rdfFactory from \"@ontologies/core\";\nimport { useLRS } from \"link-redux\";\nimport * as React from \"react\";\n\nimport { useStorage } from \"./useStorage\";\n\nexport const useBookmarks = () => {\n  const lrs = useLRS();\n  const storage = useStorage();\n\n  const bookmarks = storage && rdfFactory.namedNode(`${storage.value}public/bookmarks`);\n  const status = storage ? lrs.getStatus(bookmarks) : { requested: null };\n  React.useEffect(() => {\n    if (status.requested === null) {\n      return;\n    }\n    if (!status.requested) {\n      lrs.getEntity(bookmarks);\n    }\n  }, [status.requested]);\n\n  return bookmarks;\n};\n","import * as React from \"react\";\n\nexport const useFetch = (url?: string) => {\n  const [data, setData] = React.useState(null);\n  const [loading, setLoading] = React.useState(true);\n\n  async function fetchData(fetchUrl) {\n    const response = await fetch(fetchUrl);\n    const json = await response.json();\n    setData(json);\n    setLoading(false);\n  }\n\n  React.useEffect(() => {\n    if (url) {\n      fetchData(url);\n    }\n  }, [url]);\n\n  return [ data, loading ];\n};\n","(function (root, factory) {\n    if (typeof exports === 'object') {\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        define([], factory);\n    } else {\n        root.urltemplate = factory();\n    }\n}(this, function () {\n  /**\n   * @constructor\n   */\n  function UrlTemplate() {\n  }\n\n  /**\n   * @private\n   * @param {string} str\n   * @return {string}\n   */\n  UrlTemplate.prototype.encodeReserved = function (str) {\n    return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n      if (!/%[0-9A-Fa-f]/.test(part)) {\n        part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']');\n      }\n      return part;\n    }).join('');\n  };\n\n  /**\n   * @private\n   * @param {string} str\n   * @return {string}\n   */\n  UrlTemplate.prototype.encodeUnreserved = function (str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n      return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n    });\n  }\n\n  /**\n   * @private\n   * @param {string} operator\n   * @param {string} value\n   * @param {string} key\n   * @return {string}\n   */\n  UrlTemplate.prototype.encodeValue = function (operator, value, key) {\n    value = (operator === '+' || operator === '#') ? this.encodeReserved(value) : this.encodeUnreserved(value);\n\n    if (key) {\n      return this.encodeUnreserved(key) + '=' + value;\n    } else {\n      return value;\n    }\n  };\n\n  /**\n   * @private\n   * @param {*} value\n   * @return {boolean}\n   */\n  UrlTemplate.prototype.isDefined = function (value) {\n    return value !== undefined && value !== null;\n  };\n\n  /**\n   * @private\n   * @param {string}\n   * @return {boolean}\n   */\n  UrlTemplate.prototype.isKeyOperator = function (operator) {\n    return operator === ';' || operator === '&' || operator === '?';\n  };\n\n  /**\n   * @private\n   * @param {Object} context\n   * @param {string} operator\n   * @param {string} key\n   * @param {string} modifier\n   */\n  UrlTemplate.prototype.getValues = function (context, operator, key, modifier) {\n    var value = context[key],\n        result = [];\n\n    if (this.isDefined(value) && value !== '') {\n      if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        value = value.toString();\n\n        if (modifier && modifier !== '*') {\n          value = value.substring(0, parseInt(modifier, 10));\n        }\n\n        result.push(this.encodeValue(operator, value, this.isKeyOperator(operator) ? key : null));\n      } else {\n        if (modifier === '*') {\n          if (Array.isArray(value)) {\n            value.filter(this.isDefined).forEach(function (value) {\n              result.push(this.encodeValue(operator, value, this.isKeyOperator(operator) ? key : null));\n            }, this);\n          } else {\n            Object.keys(value).forEach(function (k) {\n              if (this.isDefined(value[k])) {\n                result.push(this.encodeValue(operator, value[k], k));\n              }\n            }, this);\n          }\n        } else {\n          var tmp = [];\n\n          if (Array.isArray(value)) {\n            value.filter(this.isDefined).forEach(function (value) {\n              tmp.push(this.encodeValue(operator, value));\n            }, this);\n          } else {\n            Object.keys(value).forEach(function (k) {\n              if (this.isDefined(value[k])) {\n                tmp.push(this.encodeUnreserved(k));\n                tmp.push(this.encodeValue(operator, value[k].toString()));\n              }\n            }, this);\n          }\n\n          if (this.isKeyOperator(operator)) {\n            result.push(this.encodeUnreserved(key) + '=' + tmp.join(','));\n          } else if (tmp.length !== 0) {\n            result.push(tmp.join(','));\n          }\n        }\n      }\n    } else {\n      if (operator === ';') {\n        if (this.isDefined(value)) {\n          result.push(this.encodeUnreserved(key));\n        }\n      } else if (value === '' && (operator === '&' || operator === '?')) {\n        result.push(this.encodeUnreserved(key) + '=');\n      } else if (value === '') {\n        result.push('');\n      }\n    }\n    return result;\n  };\n\n  /**\n   * @param {string} template\n   * @return {function(Object):string}\n   */\n  UrlTemplate.prototype.parse = function (template) {\n    var that = this;\n    var operators = ['+', '#', '.', '/', ';', '?', '&'];\n\n    return {\n      expand: function (context) {\n        return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n          if (expression) {\n            var operator = null,\n                values = [];\n\n            if (operators.indexOf(expression.charAt(0)) !== -1) {\n              operator = expression.charAt(0);\n              expression = expression.substr(1);\n            }\n\n            expression.split(/,/g).forEach(function (variable) {\n              var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n              values.push.apply(values, that.getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n            });\n\n            if (operator && operator !== '+') {\n              var separator = ',';\n\n              if (operator === '?') {\n                separator = '&';\n              } else if (operator !== '#') {\n                separator = operator;\n              }\n              return (values.length !== 0 ? operator : '') + values.join(separator);\n            } else {\n              return values.join(',');\n            }\n          } else {\n            return that.encodeReserved(literal);\n          }\n        });\n      }\n    };\n  };\n\n  return new UrlTemplate();\n}));\n","import * as React from \"react\";\n\nexport const TemplateContext = React.createContext<any>(undefined);\n","import { createMuiTheme } from \"@material-ui/core\";\nimport { deepPurple } from \"@material-ui/core/colors\";\nimport { ThemeProvider } from \"@material-ui/styles\";\nimport { LinkedResourceContainer, RenderStoreProvider } from \"link-redux\";\nimport * as React from \"react\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nimport { TemplateContext } from \"./helpers/templateContext\";\nimport ontola from \"./ontology/ontola\";\n\nexport const Browser = ({\n  children,\n  template,\n  lrs,\n}) => {\n    const pathname = new URL(window.origin).pathname;\n\n    console.log(\"BROWSER BOOT\", lrs, template);\n\n    return (\n        <RenderStoreProvider value={lrs} >\n          <TemplateContext.Provider value={template}>\n            <ThemeProvider theme={createMuiTheme({ palette: { primary: deepPurple } })}>\n              <BrowserRouter basename={pathname.endsWith(\"/\") ? pathname.slice(0, -1) : pathname}>\n                {children}\n              </BrowserRouter>\n\n              <LinkedResourceContainer subject={ontola.ns(\"snackbar/manager\")} />\n              <LinkedResourceContainer subject={ontola.ns(\"dialog/manager\")} />\n            </ThemeProvider>\n          </TemplateContext.Provider>\n        </RenderStoreProvider>\n    );\n};\n","import { StyledComponentProps, withStyles } from \"@material-ui/core\";\nimport { TopologyProvider, TopologyProviderProps } from \"link-redux\";\nimport * as React from \"react\";\n\nimport browser from \"../../ontology/browser\";\n\nexport const PaneTopology = browser.ns(\"pane\");\n\nconst paneSyles = (theme) => ({\n  root: {\n    backgroundColor: theme.palette.background.default,\n    paddingTop: theme.spacing(1),\n  },\n});\n\nclass PaneProvider extends TopologyProvider<TopologyProviderProps & StyledComponentProps> {\n  public static displayName = \"Pane\";\n\n  constructor(props) {\n    super(props);\n\n    this.topology = PaneTopology;\n  }\n\n  public render() {\n    const { classes } = this.props;\n\n    return this.wrap((\n      <div className={classes.root}>\n        {this.props.children}\n      </div>\n    ));\n  }\n}\n\nexport const Pane = withStyles(paneSyles)(PaneProvider);\n","import rdfFactory, { NamedNode } from \"@ontologies/core\";\nimport { type } from \"@ontologies/rdf\";\nimport { LinkedResourceContainer } from \"link-redux\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Route } from \"react-router\";\nimport urlTemplate from \"url-template\";\n\nimport { Browser } from \"../App\";\nimport { createLRS } from \"../createLRS\";\nimport { Pane } from \"../topologies/Pane/Pane\";\n\nconst template = \"{+iriPathname}{+iriSearch}{+iriHash}\";\nconst pathMashlib = {\n  expand: urlTemplate.parse(template).expand,\n  template,\n};\n\nexport default {\n  name: \"mash\",\n\n  icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAA2FJREFUSMftlV1oXFUQx39z712ye9doUPxCkcZvrZqCJVZNUBR8kSqtFYugDxYpFrdCuLuhYLIsoln2ZrMRH9RorVWJgRCVSsFCQRDcVF98q9qGZsGE+IEmLu4lyeac8WVT0kZTGn0RHDgvM/+ZHzNnDgf+6ybnIw6CoNVxnEtd153s6+v75V8DZDKZzar6OrC54bLAoXq9vmdwcHDmHwG6u7vbrLVl4A8R6bfWTojIFmAvML20tNReKpV++7t851wAa20RWBSRO62134nIJlV9H3gI2OB53r618tcEZLPZC4D7gf3GmNtF5BDQKyLlWCx2QkRGge3rBlSr1YsAV1WnXNfdtCLUXK/Xb1bVb4Er1w2Ympr6EZgVkS3GmGFguhGq+b7/lYjcAlTWDRgdHTUicgB43HXdNt/3rwd2AclarbbDGJMDetYNALDW9gInVXVsYWHh6jAM3xGRL0TkpcXFxckwDMfWyvf+yplKpS70PK+5VCpNi8gVwDWq+mE+n59oSLqBclNT03PpdHpEVRPJZPKHXC63tGYHmUymOZ1OvxGPx3+OxWJZABF5DZgHgmVdoVA4BnwkIkVgRkRORVH0axAEr6RSqaaVNU8/tGw260VRdBS4GxgQkfeAjao6CuwOw3BoZWJXV9eNrusOicgIsKCq24CtInI4kUg8ksvl7BkdRFH0DHCfqu5S1SHgCVV9FTjm+/7bZ7c+MDBwwvf9B1T1d6DJ9/0nVfVFVX24VqvtXHUHqrodmDDGjHmed1JVr2qM6OVqtdqSTqd3nA2Jouhe4GlVJYqirclk8tEoivYAjwHDZwBE5HJgMhaLXbJcvGE3eJ63AXjzHAt3Ty6XWwqCoNKoteqSK0Db3NzcT8CnDV/NGDMsIg82Vnaj67oXLx/geUAb2gNBECSBO1R1YhVARA4Cl7W0tPRXKpVt1tp2Vb0WSKhqj6oeKRaLx/P5/KwxZqcx5jMR+dhae5u1tn1+fn6fiOwXkaSIvLUKUCgUPgGGVHVva2vrcdd1nxWRDxzH+RyYVdXdy1pr7dfAddba7x3H6XUc54V4PH6qsRg9YRh+uax1Vw6xXC4f7ujomFTVW4FOICEiB621TxWLxdMfy/j4+ExnZ+eIqjaLyF3ATcA3QKq/v/9d/rfzsT8BLSh3EEuAcGsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMTEtMDRUMDc6MzA6MTgrMDA6MDCpcsQ2AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTExLTA0VDA3OjMwOjE4KzAwOjAw2C98igAAACh0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vdG1wL21hZ2ljay1aQXl1eG83SBfQyAIAAAAASUVORK5CYII=\",\n\n  types: [],\n\n  views: [],\n\n  lrs() {\n    const UI = (window as any).UI;\n    if (UI?.lrs) {\n      return UI.lrs;\n    }\n\n    const { lrs } = createLRS({\n      applyWorkarounds: true,\n      makeGlobal: true,\n      rdfStoreOpts: {\n        innerStore: UI?.store,\n      },\n      views: this.views,\n      workaroundOpts: {\n        proxy: false,\n      },\n    });\n\n    if (UI?.store) {\n      // TODO: Add hook which touches the store on update without infinite loop\n      // Let link-lib know which resources were already fetched by {UI.store}.\n      UI.store\n        .statements\n        .reduce((acc, curr) => acc.includes(curr.subject) ? acc : acc.concat(curr.subject), [])\n        .map((s) => lrs.store.touch(s));\n    }\n\n    if (UI) {\n      UI.lrs = lrs;\n    }\n\n    return lrs;\n  },\n\n  label(subject) {\n    if (Array.isArray(this.types) && this.types.length > 0) {\n      const subjectTypes = this.lrs().getResourceProperties(subject, type);\n      if (!subjectTypes.some((tSubject) => this.types.some((tPanel) => rdfFactory.equals(tSubject, tPanel)))) {\n        return null;\n      }\n    }\n\n    return this.name;\n  },\n\n  children(subject: NamedNode) {\n    return (\n      <LinkedResourceContainer subject={subject} />\n    );\n  },\n\n  render(subject: NamedNode, dom: Document) {\n    const origin = new URL(subject.value).origin;\n    const mountPoint = dom.createElement(\"div\");\n\n    ReactDOM.unmountComponentAtNode(mountPoint);\n\n    ReactDOM.render(\n      <Browser lrs={this.lrs()} template={pathMashlib}>\n        <Route\n          path=\"*\"\n          component={({ location }) => {\n            const iri = rdfFactory.namedNode(`${origin}${location.pathname}${location.search}${location.hash}`);\n\n            return (\n              <Pane>\n                {this.children(iri)}\n              </Pane>\n            );\n          }}\n        />\n      </Browser>,\n      mountPoint,\n    );\n\n    return mountPoint;\n  },\n};\n"],"names":["createBrowserHistory","createMemoryHistory","createNS","rdfFactory","rdf","wikibase","dbo","wde","umbelRc","link","wdp","wdt","dbpediaOntology","PlainFactory","isTerm","ld","ll","languages","ontola","app","solidActions","rdfx","Serializer","IndexedFormula","template","Rdflib.Fetcher","LinkLib.RDFStore","LinkLib.createStore","RequestInitGenerator","transformers","register","PropTypes.shape","PropTypes.oneOf","PropTypes.string","PropTypes.oneOfType","useLRS","useDataInvalidation","React.useEffect","React.useState","this","React.createContext","React.createElement","RenderStoreProvider","ThemeProvider","createMuiTheme","deepPurple","BrowserRouter","LinkedResourceContainer","TopologyProvider","withStyles","type","ReactDOM.unmountComponentAtNode","ReactDOM.render","Route"],"mappings":"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"}