{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/app.component.html","./src/app/content-view-tab-component/content-view-tab-component.component.html","./src/app/home.component.html","./src/app/impressum.component.html","./src/app/main-menu-component/main-menu-component.component.html","./src/app/manuscript-view-component/manuscript-view-component.component.html","./src/app/navigation-list-component/navigation-list-component.component.html","./src/app/navigation-list-component/navigationlist-list-component/navigationlist-list-component.component.html","./src/app/ontology-viewer/content.component.html","./src/app/ontology-viewer/ontology-definition.component.html","./src/app/ontology-viewer/ontology-display.component.html","./src/app/ontology-viewer/ontology-table.component.html","./src/app/ontology-viewer/ontology-viewer.component.html","./src/app/page-view-wrapper-component/page-view-wrapper.component.html","./src/app/page-view/copyright/copyright-sheet/copyright-sheet.component.html","./src/app/page-view/copyright/copyright.component.html","./src/app/page-view/margin-field/line-reference/line-reference.component.html","./src/app/page-view/margin-field/margin-field.component.html","./src/app/page-view/page-view.component.html","./src/app/page-view/textfield-component/textfield.component.html","./src/app/project.component.html","./src/app/quant/quant.component.html","./src/app/rhizome-view-component/rhizome-view-component.component.html","./src/app/tln-edition/tln-crossref/navigation/navigation.component.html","./src/app/tln-edition/tln-crossref/page-version-view/page-version-view.component.html","./src/app/tln-edition/tln-crossref/page-version-view/tln-page-version-view.component.html","./src/app/tln-edition/tln-crossref/tln-crossref.component.html","./src/app/tln-edition/tln-crossref/version-view/version-view.component.html","./src/app/tln-edition/tln-fulltext/navigation/navigation.component.html","./src/app/tln-edition/tln-fulltext/tln-fulltext.component.html","./src/app/tln-edition/tln-information/footnote.component.html","./src/app/tln-edition/tln-information/imprint.component.html","./src/app/tln-edition/tln-information/tln-information.component.html","./src/app/tln-edition/tln-manuscript-view/tln-manuscript-view.component.html","./src/app/tln-edition/tln-navigation-elements/open-in-viewer.component.html","./src/app/tln-edition/tln-navigation-elements/search.component.html","./src/app/tln-edition/tln-navigation-elements/toggle-navigation.component.html","./src/app/tln-edition/tln-navigation-elements/zoom.component.html","./src/app/tln-edition/tln-page-view.component.html","./src/app/tln-edition/tln-quant/export.component.html","./src/app/tln-edition/tln-quant/fuseki-table.component.html","./src/app/tln-edition/tln-quant/query-error.component.html","./src/app/tln-edition/tln-quant/tln-ontology-viewer.component.html","./src/app/tln-edition/tln-quant/tln-quant.component.html","./src/app/tln-edition/tln-quant/tln-table.component.html","./src/app/tln-edition/tln-quant/word-presentation.component.html","./src/app/tln-edition/tln-viewer-navigation/tln-viewer-navigation.component.html","./src/app/tln-edition/tooltip/editor-comment.component.html","./src/app/tln-edition/tooltip/overwritten.component.html","./src/app/tln-edition/tooltip/tool-tip.component.html","./node_modules/tslib/tslib.es6.js","./src/app/app.component.css","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routing.ts","./src/app/constants.ts","./src/app/content-view-tab-component/content-view-routes.ts","./src/app/content-view-tab-component/content-view-tab-component.component.scss","./src/app/content-view-tab-component/content-view-tab-component.component.ts","./src/app/content-view-tab-component/lazy-image-load-directive.directive.ts","./src/app/home.component.css","./src/app/home.component.ts","./src/app/impressum.component.css","./src/app/impressum.component.ts","./src/app/main-menu-component/main-menu-component.component.scss","./src/app/main-menu-component/main-menu-component.component.ts","./src/app/manuscript-view-component/manuscript-view-component.component.scss","./src/app/manuscript-view-component/manuscript-view-component.component.ts","./src/app/models/models.ts","./src/app/navigation-list-component/navigation-list-component.component.scss","./src/app/navigation-list-component/navigation-list-component.component.ts","./src/app/navigation-list-component/navigationlist-list-component/navigationlist-list-component.component.scss","./src/app/navigation-list-component/navigationlist-list-component/navigationlist-list-component.component.ts","./src/app/navigation-list-component/navtree-directive.directive.ts","./src/app/ontology-viewer/content.component.css","./src/app/ontology-viewer/content.component.ts","./src/app/ontology-viewer/ontologies2namespaces.pipe.ts","./src/app/ontology-viewer/ontology-classes.component.ts","./src/app/ontology-viewer/ontology-definition.component.css","./src/app/ontology-viewer/ontology-definition.component.ts","./src/app/ontology-viewer/ontology-display.component.css","./src/app/ontology-viewer/ontology-display.component.ts","./src/app/ontology-viewer/ontology-properties.component.ts","./src/app/ontology-viewer/ontology-query.service.ts","./src/app/ontology-viewer/ontology-retriever.ts","./src/app/ontology-viewer/ontology-table.component.css","./src/app/ontology-viewer/ontology-table.component.ts","./src/app/ontology-viewer/ontology-viewer.component.css","./src/app/ontology-viewer/ontology-viewer.component.ts","./src/app/ontology-viewer/ontology-viewer.module.ts","./src/app/ontology-viewer/sort-subjects-alpha.pipe.ts","./src/app/ontology-viewer/sparqljs.ts","./src/app/ontology-viewer/unique-entry.pipe.ts","./src/app/page-view-wrapper-component/page-view-wrapper.component.scss","./src/app/page-view-wrapper-component/page-view-wrapper.component.ts","./src/app/page-view/common/matrix.ts","./src/app/page-view/common/shared_functions.ts","./src/app/page-view/configurable-component.ts","./src/app/page-view/copyright/copyright-sheet/copyright-sheet.component.css","./src/app/page-view/copyright/copyright-sheet/copyright-sheet.component.ts","./src/app/page-view/copyright/copyright.component.css","./src/app/page-view/copyright/copyright.component.ts","./src/app/page-view/highlight_status.ts","./src/app/page-view/interacted.directive.ts","./src/app/page-view/margin-field/line-reference/line-reference.component.css","./src/app/page-view/margin-field/line-reference/line-reference.component.ts","./src/app/page-view/margin-field/margin-field.component.css","./src/app/page-view/margin-field/margin-field.component.ts","./src/app/page-view/page-view.component.css","./src/app/page-view/page-view.component.ts","./src/app/page-view/page-view.module.ts","./src/app/page-view/page-view.service.ts","./src/app/page-view/textfield-component/textfield.component.css","./src/app/page-view/textfield-component/textfield.component.ts","./src/app/project.component.css","./src/app/project.component.ts","./src/app/quant/quant.component.scss","./src/app/quant/quant.component.ts","./src/app/rhizome-view-component/rhizome-view-component.component.css","./src/app/rhizome-view-component/rhizome-view-component.component.ts","./src/app/services/navigation-service.service.ts","./src/app/services/query.service.ts","./src/app/tln-edition/common/cache.service.ts","./src/app/tln-edition/common/page-result-filter.pipe.ts","./src/app/tln-edition/common/paginator-result-status.ts","./src/app/tln-edition/common/select-array.ts","./src/app/tln-edition/constants.ts","./src/app/tln-edition/data_handler.ts","./src/app/tln-edition/datatypes/basic_datatype.ts","./src/app/tln-edition/datatypes/earlier_version.ts","./src/app/tln-edition/datatypes/editor_comment.ts","./src/app/tln-edition/datatypes/faksimile_image.ts","./src/app/tln-edition/datatypes/foreign_text.ts","./src/app/tln-edition/datatypes/image.ts","./src/app/tln-edition/datatypes/imprint.ts","./src/app/tln-edition/datatypes/line.ts","./src/app/tln-edition/datatypes/line_reference.ts","./src/app/tln-edition/datatypes/manuscript.ts","./src/app/tln-edition/datatypes/navigation.ts","./src/app/tln-edition/datatypes/page.ts","./src/app/tln-edition/datatypes/positional-markup.ts","./src/app/tln-edition/datatypes/positional_object.ts","./src/app/tln-edition/datatypes/preview_data.ts","./src/app/tln-edition/datatypes/quant.ts","./src/app/tln-edition/datatypes/query_json.ts","./src/app/tln-edition/datatypes/search.ts","./src/app/tln-edition/datatypes/svg_image.ts","./src/app/tln-edition/datatypes/text_version.ts","./src/app/tln-edition/datatypes/word.ts","./src/app/tln-edition/datatypes/word_presentation.ts","./src/app/tln-edition/debug.pipe.ts","./src/app/tln-edition/quant_data_handler.ts","./src/app/tln-edition/route-reader.ts","./src/app/tln-edition/route-updater.ts","./src/app/tln-edition/services.ts","./src/app/tln-edition/tln-crossref/navigation/navigation.component.css","./src/app/tln-edition/tln-crossref/navigation/navigation.component.ts","./src/app/tln-edition/tln-crossref/page-version-view/filter.pipe.ts","./src/app/tln-edition/tln-crossref/page-version-view/page-version-view.component.css","./src/app/tln-edition/tln-crossref/page-version-view/page-version-view.component.ts","./src/app/tln-edition/tln-crossref/page-version-view/tln-page-version-view.component.css","./src/app/tln-edition/tln-crossref/page-version-view/tln-page-version-view.component.ts","./src/app/tln-edition/tln-crossref/tln-crossref.component.css","./src/app/tln-edition/tln-crossref/tln-crossref.component.ts","./src/app/tln-edition/tln-crossref/version-view/version-view.component.css","./src/app/tln-edition/tln-crossref/version-view/version-view.component.ts","./src/app/tln-edition/tln-edition.module.ts","./src/app/tln-edition/tln-fulltext/navigation/navigation.component.css","./src/app/tln-edition/tln-fulltext/navigation/navigation.component.ts","./src/app/tln-edition/tln-fulltext/result-pipe.pipe.ts","./src/app/tln-edition/tln-fulltext/tln-fulltext.component.css","./src/app/tln-edition/tln-fulltext/tln-fulltext.component.ts","./src/app/tln-edition/tln-height.directive.ts","./src/app/tln-edition/tln-information/footnote.component.css","./src/app/tln-edition/tln-information/footnote.component.ts","./src/app/tln-edition/tln-information/imprint.component.css","./src/app/tln-edition/tln-information/imprint.component.ts","./src/app/tln-edition/tln-information/tln-information.component.css","./src/app/tln-edition/tln-information/tln-information.component.ts","./src/app/tln-edition/tln-manuscript-view/tln-manuscript-view.component.css","./src/app/tln-edition/tln-manuscript-view/tln-manuscript-view.component.ts","./src/app/tln-edition/tln-navigation-elements/open-in-viewer.component.scss","./src/app/tln-edition/tln-navigation-elements/open-in-viewer.component.ts","./src/app/tln-edition/tln-navigation-elements/search.component.css","./src/app/tln-edition/tln-navigation-elements/search.component.ts","./src/app/tln-edition/tln-navigation-elements/toggle-navigation.component.css","./src/app/tln-edition/tln-navigation-elements/toggle-navigation.component.ts","./src/app/tln-edition/tln-navigation-elements/zoom.component.css","./src/app/tln-edition/tln-navigation-elements/zoom.component.ts","./src/app/tln-edition/tln-navigation-elements/zoom.pipe.ts","./src/app/tln-edition/tln-page-view.component.css","./src/app/tln-edition/tln-page-view.component.ts","./src/app/tln-edition/tln-quant/2-ids.pipe.ts","./src/app/tln-edition/tln-quant/export.component.css","./src/app/tln-edition/tln-quant/export.component.ts","./src/app/tln-edition/tln-quant/fuseki-table.component.css","./src/app/tln-edition/tln-quant/fuseki-table.component.ts","./src/app/tln-edition/tln-quant/query-error.component.css","./src/app/tln-edition/tln-quant/query-error.component.ts","./src/app/tln-edition/tln-quant/result.pipe.ts","./src/app/tln-edition/tln-quant/sort-by-line.pipe.ts","./src/app/tln-edition/tln-quant/sort.ts","./src/app/tln-edition/tln-quant/tln-ontology-viewer.component.css","./src/app/tln-edition/tln-quant/tln-ontology-viewer.component.ts","./src/app/tln-edition/tln-quant/tln-quant.component.css","./src/app/tln-edition/tln-quant/tln-quant.component.ts","./src/app/tln-edition/tln-quant/tln-table.component.css","./src/app/tln-edition/tln-quant/tln-table.component.ts","./src/app/tln-edition/tln-quant/word-presentation.component.css","./src/app/tln-edition/tln-quant/word-presentation.component.ts","./src/app/tln-edition/tln-query.service.ts","./src/app/tln-edition/tln-viewer-navigation/tln-viewer-navigation.component.css","./src/app/tln-edition/tln-viewer-navigation/tln-viewer-navigation.component.ts","./src/app/tln-edition/tooltip/editor-comment.component.css","./src/app/tln-edition/tooltip/editor-comment.component.ts","./src/app/tln-edition/tooltip/merge-editor-comment.pipe.ts","./src/app/tln-edition/tooltip/overwritten.component.css","./src/app/tln-edition/tooltip/overwritten.component.ts","./src/app/tln-edition/tooltip/tool-tip.component.css","./src/app/tln-edition/tooltip/tool-tip.component.ts","./src/environments/environment.ts","./src/main.ts","fs (ignored)","path (ignored)"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","export default \"
\\n \\n \\n Beta-Version {{version}}\\n Green\\n \\n \\n \\n

Der späte Nietzsche

\\n
\\n \\n \\n \\n
\\n\"","export default \"\\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n\"","export default \"\\n Der späte Nietzsche. Digitale Manuskriptedition\\n \\n
Herausgegeben von Beat Röllin, Dominique Steinbach, Christian Steiner, René Stockmar und Hubert Thüring
\\n
Transkription und philologischer Kommentar: Thomas Riebe, Beat Röllin und René Stockmar unter Mitarbeit von Marie-Luise Haase und Michael Kohlenbach
\\n
Digitale Edition: Dominique Steinbach und Christian Steiner unter Mitarbeit von Eric Erhardt und Myriam Schmidt
\\n
Projektleitung: Hubert Thüring
\\n
\\n \\n
Gefördert durch den Schweizerischen Nationalfonds (SNF)
\\n
Unterstützt durch das Projekt \\\"Nationale Infrastruktur für Editionen - Infrastructure nationale pour les éditions\\\" (NIE - INE)
\\n\\n \\n
\\n \\n

Hinweis zur Beta-Version

\\n
Bitte nehmen Sie zur Kenntnis, dass die digitale Edition sowie die darin präsentierten Inhalte noch in Entwicklung stehen und dass\\n
    \\n
  • die Texte und Bilder noch nicht persistent zitierbar sind
  • \\n
  • die Menüführung oder Features/Funktionalitäten im Verlauf der weiteren Entwicklung ändern können
  • \\n
  • Browserkompatibilität noch nicht übergreifend gegeben ist; wir empfehlen die Verwendung von Mozilla Firefox oder Chromium in einer aktuellen Version
  • \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n\\n
\\n\"","export default \"\\n Kontakt\\n \\n
Prof. Dr. Hubert Thüring
\\n
Nietzsche-Edition
\\n
Deutsches Seminar
\\n
Universität Basel
\\n
Nadelberg 4
\\n
4051 Basel
\\n
Tel.: +41 (0)61 207 34 29
\\n
\\n
\\n\\n Rechtliche Hinweise\\n \\n Haftungsbeschränkung\\n
Die Nutzung der Inhalte der Website erfolgt auf eigene Gefahr der Nutzer*in. Mit der reinen Nutzung der Website der Anbieter*in kommt keinerlei Vertragsverhältnis zwischen der Nutzer*in und der Anbieter*in zustande.
\\n
\\n \\n

Urheberrecht und Lizenz

\\n
\\n Transkription und Daten der digitalen Edition\\n \\n
Die Transkriptionen und Daten der digitalen Edition sind in ihrem ganzen Umfang frei zugänglich und dürfen zu den Bedingungen der Creative Commons Public Licence „Namensnennung“, Version 4.0 (CC BY 4.0) weitergegeben werden. Das Copyright darauf hat die Universität Basel.
\\n
\\n
\\n Faksimiles\\n \\n
Die Faksimiles werden von nietzschesource.org gehostet und werden hier unverändert dargestellt. Sie sind veröffentlicht unter der Creative Commons Public License „Namensnennung, Nicht kommerziell, Keine Bearbeitungen”, Version 4.0 (CC BY-NC-ND 4.0).
\\n
\\n
\\n
\\n\"","export default \"\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n\\n\"","export default \"\\n\\n\"","export default \"
\\n Navigation\\n
\\n \\n \\n \\n \\n
\\n
\\n\\n\\n\"","export default \"
\\n \\n \\n \\n \\n \\n {{item.tlnEntity.label}}\\n \\n GSA-Signatur {{item.tlnEntity.description}}\\n {{navTree.parentLabel}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\"","export default \"{{text}}\\n\\n {{link.value}}\\n {{link.value}}\\n\\n\"","export default \" 0\\\" [dataMapping]=\\\"dataMapping\\\">\\n\"","export default \"\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{dataMapping.subject}}a
\\n\"","export default \"\\n \\n {{ontology.name}}\\n {{ontology.prefix}}: <{{ontology.iri}}>\\n \\n \\n \\n

Classes

\\n \\n

Properties

\\n \\n \\n
\\n
\\n\"","export default \"
\\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n\"","export default \"
\\n

Copyright Information:

\\n
\\n
URL: {{copyright.originalUrl}}
\\n
Lizenz: \\n {{copyright.license}} \\n {{copyright.license}}\\n
\\n
\\n\\n\"","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\"","export default \"\\n \\n \\n \\n \\n \\n 9 ? line_length + line_length/2 : line_length\\\"\\n [ngStyle]=\\\"assignStyle(line, hoveredWord, hoveredLine, getHoverStatus(line))\\\"\\n [ngClass]=\\\"{ \\n 'marginfield unhighlighted': getHoverStatus(line) != HOVERED_STATUS,\\n 'marginfield highlight': getHoverStatus(line) == HOVERED_STATUS }\\\" > \\n {{line.number}}\\n \\n \\n \\n \\n \\n\\n\"","export default \"
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"\\n \\n \\n \\n 1) ? 32 : 32/(local_zoom*zoomFactor))\\\" \\n [attr.height]=\\\"(local_zoom*zoomFactor > 1) ? 32 : 32/(local_zoom*zoomFactor)\\\" \\n [attr.width]=\\\"(local_zoom*zoomFactor > 1) ? 32 : 32/(local_zoom*zoomFactor)\\\">\\n \\n \\n \\n \\n \\n {{ word.edited_text != null ? '> ' + word.edited_text : word.text }}\\n \\n \\n \\n \\n \\n \\n \\n {{foreignText.text}}, {{ foreignText.pen }}\\n \\n \\n\\n\"","export default \"\\n Das Editionsprojekt „Der späte Nietzsche“\\n \\n
Das deutsch-schweizerische Editionsprojekt „Der späte\\n Nietzsche“ veröffentlicht Friedrich Nietzsches späten Nachlass erstmals\\n vollständig und manuskriptgetreu. Die Manuskriptedition erscheint seit 2001\\n in der von Giorgio Colli und Mazzino Montinari begründeten Kritischen\\n Gesamtausgabe der Werke als neunte Abteilung (KGW IX). Die Publikation der\\n noch ausstehenden späten Manuskripte aus den Archivmappen (Mp\\n XIV-XVIII) erfolgt zusätzlich in dieser an der Universität Basel\\n entwickelten und betreuten und durch den SNF geförderten digitalen\\n Edition.
Mit der differenzierten Transkription und\\n digitalen Faksimilierung der Handschriften sowie einem editorischen\\n Nachbericht schließt KGW IX die Edition und Kommentierung des späten\\n Nachlasses in KGW ab. Vorrangige Absicht ist es, die Manuskripte in ihrer\\n Gesamtheit zu dokumentieren und den typischen Notatcharakter der\\n Aufzeichnungen aufzuzeigen. Statt in Form geglätteter, linearer Lesetexte\\n einen falsch-eindeutigen Text zu bieten, werden in einer diplomatischen\\n Umschrift alle Korrekturvorgänge, Streichungen, späteren\\n Überarbeitungen etc. wiedergegeben. Und statt die Aufzeichnungen in\\n eine chronologische Ordnung zu zwängen, die sich in vielen Fällen gar nicht\\n ermitteln lässt und darum immer auch editorisch willkürlich bleibt, wird die\\n ursprüngliche topologische Anordnung beibehalten. Die Manuskriptedition\\n ermöglicht dadurch neue Einsichten in den Schreibprozess und die Textgenese\\nbeim späten Nietzsche.
\\n
In der Onlineausgabe werden die Manuskripte mit sämtlichen\\n editorischen Informationen sowohl als Faksimile wie auch in der\\n differenzierten Transkription je einzeln und in synoptischer Darstellung\\n offen zugänglich sowie zitier-, durchsuch- und auswertbar sein.
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n
\\n\"","export default \"
\\n \\n \\n \\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n 0\\\">\\n
\\n\\n\"","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n\\n\"","export default \"
\\n \\n
\\n

Querverweise: {{current_manuscript.title}}

\\n
\\n

{{current_manuscript.title}} {{page.number}}

\\n \\n \\n
\\n
\\n
0\\\">\\n

Querverweise: {{current_page.title}} {{current_page.number}}

\\n \\n
\\n
0 && contextView == PAGE_CONTEXT_VIEW\\\" [style.width.px]=\\\"previewWidth\\\">\\n

1\\\">Ausgewählte Querverweise

\\n
\\n \\n
\\n south\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{version.title}}, {{textUnity.number}}, {{textUnity.startLine}}-{{textUnity.endLine}}\\n \\n \\n \\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\"","export default \"\\n {{version.title}} 0\\\">,\\n \\n {{textUnity.number}}, {{textUnity.startLine}}-{{textUnity.endLine}}\\n ;\\n ,\\n \\n\\n\"","export default \"
\\n \\n \\n
\\n\"","export default \"
\\n \\n
\\n \\n \\n Suche: {{searchTerm}}\\n \\n \\n \\n Text\\n \\n \\n \\n \\n \\n \\n Optionen\\n \\n
\\n \\n Groß- und Kleinschreibung ignorieren\\n \\n

Korpus

\\n \\n \\n {{manuscript.title}}\\n \\n \\n
\\n
\\n
\\n \\n
\\n {{ pages | resultPipe }}\\n
\\n
\\n paginatorResultStatus.resultLength\\\" \\n [length]=\\\"pages.length\\\"\\n [pageSize]=\\\"paginatorResultStatus.resultLength\\\"\\n [pageIndex]=\\\"queryProps.resultIndex\\\"\\n (page)=\\\"updateResultIndex($event)\\\">\\n \\n
\\n
\\n
\\n
0\\\" class=\\\"text\\\" [style.left.px]=\\\"previewWidth+20\\\" [style.width.px]=\\\"max_width+margin_width-25\\\">\\n
\\n \\n {{page.title}}, {{page.number}}\\n \\n \\n \\n \\n
\\n paginatorResultStatus.resultLength\\\" \\n [length]=\\\"pages.length\\\"\\n [pageSize]=\\\"paginatorResultStatus.resultLength\\\"\\n [pageIndex]=\\\"queryProps.resultIndex\\\"\\n (page)=\\\"updateResultIndex($event)\\\">\\n \\n
\\n \\n
\\n\"","export default \"
\\n {{editor_comment.tLine.number}}\\n \\n {{editor_comment.overwritten_text}} (unter \\n \\n {{editor_comment.text}}\\n 0\\\" \\n [text]=\\\"editor_comment.text\\\" [standOffMarkup]=\\\"editor_comment.markups\\\" [settings]=\\\"mySettings\\\">\\n )]\\n \\n \\n Vk\\n ¿\\n ?\\n \\n >\\n ? \\n {{editor_comment.correction}}\\n \\n \\n , \\n {{editor_comment.comment}}{{editor_comment.isUncertain ? '?' : ''}}\\n \\n Zeile {{ editor_comment.lineContinuationReference.isToRef ? 'wird fortgesetzt nach ' : 'ist eine Fortsetzung von ' }}\\n {{editor_comment.lineContinuationReference.refTitle}} {{editor_comment.lineContinuationReference.refPageNumber}}, \\n {{editor_comment.lineContinuationReference.refLine}}{{editor_comment.isUncertain ? '?' : ''}}\\n \\n
\\n\"","export default \"
\\n {{imprintReference}}\\n
\\n\"","export default \"
\\n

{{data.page.title}} {{data.page.number}}:

\\n

0\\\">Druckort{{ data.imprints.length == 1 ? '' : 'e' }}:

\\n \\n

0 || data.page_editor_comments.length > 0\\\">\\n Kritische Anmerkung{{ data.editor_comments.length + data.page_editor_comments.length > 1 ? 'en' : '' }}:\\n

\\n \\n \\n

0\\\">Querverweise:

\\n \\n
\\n\"","export default \"\\n\\n \\n {{current_manuscript.archivalicSignature}}\\n {{current_manuscript.title}}\\n GSA-Signatur {{current_manuscript.gsaSignature}}\\n \\n \\n \\n 0\\\">\\n

Frühere Manuskriptbeschreibungen

\\n \\n \\n \\n \\n \\n
{{earlierDescription.author}}:\\n {{earlierDescription.text}}\\n 0\\\"\\n [settings]=\\\"mySettings\\\" \\n [text]=\\\"earlierDescription.text\\\" \\n [standOffMarkup]=\\\"earlierDescription.markups\\\">\\n {{earlierDescription.citation}}\\n
\\n
\\n \\n

Beschreibung der Archivmappe

\\n

Heftbeschreibung

\\n

\\n {{manuscriptDescription.text}}\\n 0\\\"\\n [settings]=\\\"mySettings\\\" \\n [text]=\\\"manuscriptDescription.text\\\" \\n [standOffMarkup]=\\\"manuscriptDescription.markups\\\">\\n

\\n
\\n \\n

In {{current_manuscript.title}} wiedergegebene Manuskriptseiten

\\n {{page.number}}\\n \\n \\n , \\n
\\n \\n

Konvolute, Rekonstruktionen

\\n

{{reconstructedKonvolut.description}}

\\n \\n
\\n
\\n\"","export default \"\\n\"","export default \"\\n Suche\\n \\n \\n \\n\\n\\n\"","export default \"\\n\\n\\n\"","export default \"\\n\\n\\n\\n\\n\"","export default \"
\\n \\n
\\n\"","export default \"\\n Resultate als \\n \\n \\n {{exportFormat}}\\n \\n \\n \\n\\n\"","export default \"\\n \\n Fuseki Resultate\\n \\n 0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n
{{column}} {{element[column] != null ? element[column].value : ''}}
\\n paginatorResultStatus.resultLength\\\" \\n [length]=\\\"fusekiResults.results.bindings.length\\\"\\n [pageSize]=\\\"paginatorResultStatus.resultLength\\\"\\n [pageSizeOptions]=\\\"paginatorResultStatus.pageSizeOptions\\\"\\n [pageIndex]=\\\"paginatorResultStatus.resultIndex\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n (page)=\\\"paginatorResultStatus.showResults($event)\\\">\\n \\n\\n
\\n
\\n\"","export default \"\\n\"","export default \"
\\n \\n
\\n\"","export default \"\\n \\n Quantitative Abfrage\\n \\n \\n \\n \\n \\n Worteigenschaften\\n \\n Eigenschaften für Anfrage auswählen\\n \\n \\n \\n \\n {{wordProperty.label}}\\n \\n \\n \\n Wort hat Text (regex)\\n \\n \\n \\n \\n Groß- und Kleinschreibung ignorieren\\n \\n
\\n \\n Text ohne Satzzeichen\\n\\n \\n \\n Text mit Satzzeichen\\n \\n Edierter Text bevorzugen\\n \\n
\\n \\n
\\n \\n \\n Korpus\\n \\n Anfrage {{ quantQuery.selectedManuscripts.length == 1 ? \\n 'ist auf ' + quantQuery.selectedManuscripts[0].title + ' beschränkt' \\n : 'auf ausgewählte Manuskripte beschränken' }}\\n \\n \\n \\n \\n {{manuscript.title}}\\n \\n \\n \\n \\n \\n \\n SPARQL-Query\\n Query bearbeiten\\n \\n \\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n \\n 0\\\" \\n (change)=\\\"updatePageIndex($event)\\\" (quantQueryChanged)=\\\"updateQuantQuery($event)\\\"\\n [resultIndicesIndex]=\\\"0\\\" [quantQuery]=\\\"quantQuery\\\" \\n [results]=\\\"numResultRows\\\" [displayedColumns]=\\\"displayedColumns\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\"","export default \"\\n \\n {{results.length}} Resultate ({{results | quantResultPipe:resultQuery}})\\n \\n \\n \\n Filter\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Anzahl mit Eigenschaften (einfach) {{element.numProperties}} % Wortanteil {{element.numPropertyTextPercent + ' %'}} % aller Wörter {{element.numPropertiesPercent + ' %'}} Anzahl mit Eigenschaften (mehrfach) {{element.numPropertiesIncludeMulti}} Anzahl Total {{element.numText}} % aller Wörter {{element.numTextPercent + ' %'}} Wort {{element.id}} \\n
\\n \\n
\\n
\\n paginatorResultStatus.resultLength\\\" \\n [length]=\\\"results.length\\\"\\n [pageSize]=\\\"paginatorResultStatus.resultLength\\\"\\n [pageSizeOptions]=\\\"paginatorResultStatus.pageSizeOptions\\\"\\n [pageIndex]=\\\"paginatorResultStatus.resultIndex\\\"\\n [showFirstLastButtons]=\\\"true\\\"\\n (page)=\\\"paginatorResultStatus.showResults($event)\\\">\\n \\n\\n
\\n
\\n\"","export default \"\\n\\n \\n \\n
{{manuscript.title}}
\\n \\n
\\n {{page.number}}\\n \\n \\n \\n :\\n \\n Z {{word.line_number}} \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n {{viewOption}}\\n \\n \\n \\n Loading ...\\n 0 || editor_comments.length > 0 || imprints.length > 0)\\\">\\n {{current_page.title}} {{current_page.number}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n\"","export default \"
\\n {{word.lineNumber}}: \\n \\n 0\\\">\\n \\n ]\\n \\n \\n Vk\\n ¿\\n ?\\n >? {{editor_comment.correction}}\\n \\n , \\n {{editor_comment.comment}}{{editor_comment.isUncertain ? '?' : ''}}\\n
\\n\"","export default \" 0\\\">\\n \\n ] \\n\"","export default \"
\\n
\\n
\\n {{tooltipPosition.clientY+yOffset}}, {{topOffset}}\\n \\n
\\n
\\n {{i}}: \\n {{earlier_version.text}}\\n 0\\\"\\n [text]=\\\"earlier_version.text\\\" [standOffMarkup]=\\\"earlier_version.markups\\\" [settings]=\\\"mySettings\\\">\\n
\\n
\\n {{earlier_version_list.length}}: \\n {{word.text}}\\n 0\\\"\\n [text]=\\\"word.text\\\" [standOffMarkup]=\\\"positionalStyleMarkups\\\" [settings]=\\\"mySettings\\\">\\n
\\n >{{word.edited_text}}\\n
\\n überschreibt: \\n {{overwrittenWord.text}}\\n ] ?\\n
\\n \\n
\\n
\\n {{foreignHand.text}}\\n 0\\\"\\n [text]=\\\"foreignHand.text\\\" [standOffMarkup]=\\\"foreignHand.markups\\\" [settings]=\\\"mySettings\\\">\\n \\n (={{foreignHand.resolution}})\\n {{foreignHand.comment}}, {{foreignHand.pen}}\\n \\n
überschreibt: \\n {{foreignHand.overwrittenTextByForeignHand.text}}\\n \\n 0\\\"\\n [text]=\\\"foreignHand.overwrittenTextByForeignHand.text\\\" [standOffMarkup]=\\\"foreignHand.overwrittenTextByForeignHand.markups\\\" [settings]=\\\"mySettings\\\">\\n \\n , {{foreignHand.overwrittenTextByForeignHand.pen}}\\n
\\n
\\n
\\n {{continuation.source.line.number}} nach \\n \\n {{continuation.reference.manuscript.title}} \\n {{continuation.reference.page.number}}, \\n {{continuation.reference.line.number}}\\n \\n  nach {{continuation.source.line.number}}\\n
\\n
0\\\">\\n \\n \\n {{ (word.earlier_version) ? '[0:' + word.earlier_version + '|1:' : ''}}\\n \\n {{ (word.earlier_version) ? ']' : ''}}\\n \\n
\\n
\\n\"","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export default \"\\nbody {\\n padding-right: 50px;\\n}\\n\\n.rect, .rect.unhovered {\\n opacity:0.0;\\n}\\n\\n.rect:hover, .rect.hovered {\\n opacity:0.34000017;\\n fill:#e2fa00;\\n fill-opacity:0.98431373\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQTtHQUNHLG1CQUFtQjtBQUN0Qjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUFDQTtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1o7QUFDRiIsImZpbGUiOiJhcHAuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIlxuYm9keSB7XG4gICBwYWRkaW5nLXJpZ2h0OiA1MHB4O1xufVxuXG4ucmVjdCwgLnJlY3QudW5ob3ZlcmVkIHtcbiAgb3BhY2l0eTowLjA7XG59XG4ucmVjdDpob3ZlciwgLnJlY3QuaG92ZXJlZCB7XG4gIG9wYWNpdHk6MC4zNDAwMDAxNztcbiAgZmlsbDojZTJmYTAwO1xuICBmaWxsLW9wYWNpdHk6MC45ODQzMTM3M1xufVxuIl19 */\"","import {Component, OnInit} from '@angular/core';\nimport { OverlayContainer} from '@angular/cdk/overlay';\nimport {Subscription} from 'rxjs';\nimport {ActivatedRoute, Params} from '@angular/router';\ndeclare var require: any;\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit {\n title = 'Digitale Manuskriptedition: Der späte Nietzsche';\n theme = 'standard-theme';\n version: string;\n\n fullScreen: string;\n queryParamSub: Subscription;\n\n constructor(private overlayContainer: OverlayContainer, private activatedRoute: ActivatedRoute) {\n this.version = require( '../../package.json').version;\n }\n\n ngOnInit() {\n this.overlayContainer.getContainerElement().classList.add(this.theme);\n this.queryParamSub = this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.fullScreen = queryParams.fullscreen;\n });\n\n }\n\n onThemeChange() {\n this.overlayContainer.getContainerElement().classList.add(this.theme);\n }\n}\n","import { AppComponent } from './app.component';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport {MatCardModule} from '@angular/material/card';\nimport { MatToolbarModule, MatButtonModule} from '@angular/material';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatTreeModule} from '@angular/material/tree';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport {MatIconModule} from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule} from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material';\nimport { MatSelectModule } from '@angular/material/select';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatTooltipModule} from '@angular/material';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { QueryService } from './services/query.service';\nimport {routing} from './app.routing';\nimport {HomeComponent} from './home.component';\nimport { ManuscriptViewComponentComponent } from './manuscript-view-component/manuscript-view-component.component';\nimport { ContentViewTabComponentComponent } from './content-view-tab-component/content-view-tab-component.component';\nimport { RhizomeViewComponentComponent } from './rhizome-view-component/rhizome-view-component.component';\nimport { MainMenuComponentComponent } from './main-menu-component/main-menu-component.component';\nimport { PageViewWrapperComponent } from './page-view-wrapper-component/page-view-wrapper.component';\nimport { NavigationListComponentComponent } from './navigation-list-component/navigation-list-component.component';\nimport {NavigationServiceService} from './services/navigation-service.service';\nimport { TlnEditionModule} from './tln-edition/tln-edition.module';\nimport { NavTree } from './navigation-list-component/navtree-directive.directive';\nimport { LazyImageLoadDirectiveDirective } from './content-view-tab-component/lazy-image-load-directive.directive';\nimport { ImpressumComponent } from './impressum.component';\nimport { ProjectComponent } from './project.component';\nimport { NavigationlistListComponentComponent } from './navigation-list-component/navigationlist-list-component/navigationlist-list-component.component';\nimport { QuantComponent } from './quant/quant.component';\n\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n ManuscriptViewComponentComponent,\n ContentViewTabComponentComponent,\n RhizomeViewComponentComponent,\n MainMenuComponentComponent,\n PageViewWrapperComponent,\n NavigationListComponentComponent,\n NavTree,\n LazyImageLoadDirectiveDirective,\n ImpressumComponent,\n ProjectComponent,\n NavigationlistListComponentComponent,\n QuantComponent\n ],\n imports: [\n routing,\n BrowserModule,\n BrowserAnimationsModule,\n CommonModule,\n HttpClientModule,\n MatButtonModule,\n MatCardModule,\n MatExpansionModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n MatProgressBarModule,\n MatSelectModule, // for themes selection\n MatSidenavModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n FormsModule,\n TlnEditionModule,\n ReactiveFormsModule\n ],\n providers: [ NavigationServiceService, QueryService ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import {ExtraOptions,RouterModule, Routes} from '@angular/router';\nimport {HomeComponent} from './home.component';\nimport {ImpressumComponent} from './impressum.component';\nimport {ProjectComponent} from './project.component';\nimport {ContentViewTabComponentComponent} from './content-view-tab-component/content-view-tab-component.component';\nimport {CONTENT_ROUTES} from './content-view-tab-component/content-view-routes';\nimport { CONTENT_VIEW_ROUTE, DOCUMENTATION_ROUTE, HOME_ROUTE, IMPRESSUM_ROUTE, PROJECT_ROUTE } from './constants';\n\nconst APP_ROUTES: Routes = [\n {path: '', redirectTo: HOME_ROUTE, pathMatch: 'prefix'},\n {path: HOME_ROUTE, component: HomeComponent},\n {path: CONTENT_VIEW_ROUTE, component: ContentViewTabComponentComponent, children: CONTENT_ROUTES},\n {path: PROJECT_ROUTE, component: ProjectComponent},\n {path: IMPRESSUM_ROUTE, component: ImpressumComponent},\n {path: '**', redirectTo: HOME_ROUTE, pathMatch: 'prefix'} // any other unknown url will be forwarded to home\n];\nconst routerOptions: ExtraOptions = {\n useHash: false,\n anchorScrolling: 'enabled'\n};\n\nexport const routing = RouterModule.forRoot(APP_ROUTES, routerOptions);\n","import {NavTreeDef} from './models/models';\n\nexport const CONTENT_VIEW_ROUTE: string = 'contentView';\nexport const DOCUMENTATION_ROUTE: string = 'doku';\nexport const HOME_ROUTE: string = 'home';\nexport const IMPRESSUM_ROUTE: string = 'impressum';\nexport const PROJECT_ROUTE: string = 'project';\nexport const BASE_URL: string = 'https://nietzsche.fuseki.services.dasch.swiss/nietzsche';\n\nexport const NAVTREE_DEFS: NavTreeDef[] = [\n { id: 'manuscript',\n idx: 0,\n isActive: true,\n label: 'Manuskripte',\n itemQParam: 'manuscript',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: 'manuscripts.rq',\n mapping: { // maps the properties of the reponse to tha NavTabDef properties, which are displayed\n id: 'manuscript.value', // Short id, iri in most cases\n iri: 'manuscript.value', // iri\n type: 'type.value',\n label: 'title.value',\n description: 'gsaSignature.value',\n avatar: 'thumbImage.value'\n }\n }\n }, {\n id: 'page',\n idx: 1,\n isActive: false,\n label: 'Seiten',\n itemQParam: 'page',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: 'getPageData.rq',\n mapping: {\n id: 'page.value', // Short id, iri in most cases\n iri: 'page.value', // iri\n label: 'pageNumber.value',\n thumb: 'thumb.value',\n idx: 'pageNumber.value',\n svg: 'svgUrl.value',\n }\n }\n }\n];\n\n\n// Queries\nexport const RQ_CROSSREF_TREE_MANUSCRIPTS: string = `\nPREFIX data: \nPREFIX tln: \nPREFIX rdf: \nSELECT ?manuscript ?title ?thumbImage ?gsaSignature WHERE {\n ?manuscript a tln:ManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasManuscriptType \"Mappe\";\n tln:hasPages/rdf:first/tln:hasFaksimileImage/tln:hasThumburl ?thumbImage ;\n tln:hasGsaSignature ?gsaSignature .\n \n}`;\n\nexport const RQ_CROSSREF_TREE_PAGES: string = `\nPREFIX tln: \nPREFIX rdf: \nPREFIX xsd: \nSELECT DISTINCT ?page ?pageNumber ?type WHERE {\n ?s (tln:hasPages/(rdf:rest*)/rdf:first) ?page.\n ?page tln:hasNumber ?pageNumber.\n ?page a tln:Page.\n BIND (tln:page AS ?type)\n BIND (xsd:integer(REPLACE(?pageNumber, \"\\\\\\\\D+\", \"\")) AS ?sorting)\n }\n ORDER BY (?sorting)\n`;\n\nexport const RQ_CROSSREF_TREE_LINES: string = `\nPREFIX tln: \nPREFIX rdf: \nPREFIX xsd: \nSELECT DISTINCT ?line ?lNumber ?type WHERE {\n ?s (tln:hasLines/(rdf:rest*)/rdf:first) ?line.\n ?line a tln:Line.\n BIND (tln:line AS ?type)\n OPTIONAL {\n ?line tln:lineHasNumber ?lNumber.\n }\n }\n ORDER BY (?lNumber)\n`;\n\nexport const RQ_CROSSREF_TREE_WORDS: string = `\nPREFIX tln: \nPREFIX rdf: \nPREFIX xsd: \nPREFIX homotypic: \nSELECT DISTINCT ?word ?line ?text ?type WHERE {\n ?word tln:wordBelongsToLine ?line.\n ?word a tln:SimpleWord.\n BIND(tln:SimpleWord AS ?type)\n OPTIONAL {\n ?word homotypic:hasText ?text.\n }\n }\n ORDER BY (?word)\n`;\n\n\nexport const CROSSREF_TREE_DEFS: NavTreeDef[] = [\n { id: 'manuscript',\n idx: 0,\n isActive: true,\n label: 'Manuskript ',\n itemQParam: 'manuscript',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_CROSSREF_TREE_MANUSCRIPTS,\n mapping: { // maps the properties of the reponse to tha NavTabDef properties, which are displayed\n id: 'manuscript.value', // Short id, iri in most cases\n iri: 'manuscript.value', // iri\n type: 'type.value',\n label: 'title.value',\n description: 'gsaSignature.value',\n avatar: 'thumbImage.value'\n }\n }\n }, {\n id: 'page',\n idx: 1,\n isActive: false,\n label: 'S. ',\n itemQParam: 'page',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_CROSSREF_TREE_PAGES,\n mapping: {\n id: 'page.value', // Short id, iri in most cases\n iri: 'page.value', // iri\n label: 'pageNumber.value',\n type: 'type.value'\n }\n }\n }, {\n id: 'line',\n idx: 2,\n isActive: false,\n label: 'Zeile ',\n itemQParam: '',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_CROSSREF_TREE_LINES,\n mapping: {\n id: 'line.value', // Short id, iri in most cases\n iri: 'line.value', // iri\n label: 'lNumber.value',\n type: 'type.value'\n }\n }\n }, {\n id: 'word',\n idx: 3,\n isActive: false,\n label: '',\n itemQParam: '',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_CROSSREF_TREE_WORDS,\n mapping: {\n id: 'word.value', // Short id, iri in most cases\n iri: 'word.value', // iri\n label: 'text.value',\n type: 'type.value'\n },\n paramTriple: 2\n }\n }\n];\n\n// GENERIC TREES\n\n// Queries\nexport const RQ_GENERIC_TREE_ROOT: string = `\nPREFIX data: \nPREFIX tln: \nPREFIX rdf: \nSELECT DISTINCT ?manuscript ?title ?type ?gsaSignature WHERE {\n ?manuscript a tln:ManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasManuscriptType \"Mappe\";\n tln:hasGsaSignature ?gsaSignature .\n OPTIONAL {\n tln:ManuscriptUnity a ?type\n }\n}`;\n\nexport const RQ_GENERIC_RDF_PROPERTY_TREE: string = `\nPREFIX rdfs: \nSELECT DISTINCT ?p ?type ?label ?comment WHERE {\n ?s ?p ?o.\n OPTIONAL {\n ?p rdfs:label ?label.\n ?p rdfs:comment ?comment.\n ?p a ?sth.\n }\n }\n ORDER BY (?label)\n LIMIT 10\n `;\n\nexport const RQ_GENERIC_OBJECT_TREE: string = `\nPREFIX rdfs: \nSELECT DISTINCT ?o ?type ?label ?comment WHERE {\n ?s ?p ?o.\n OPTIONAL {\n ?o rdfs:label ?label.\n ?o rdfs:comment ?comment.\n ?o a ?sth.\n }\n }\n ORDER BY (?label)\n LIMIT 10\n `;\n\nexport const GENERIC_ROOT_TREE_DEF: NavTreeDef[] = [\n { id: 'root',\n idx: 0,\n isActive: true,\n label: 'Manuskript ',\n itemQParam: 'manuscript',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_GENERIC_TREE_ROOT,\n mapping: { // maps the properties of the reponse to tha NavTabDef properties, which are displayed\n id: 'manuscript.value', // Short id, iri in most cases\n iri: 'manuscript.value', // iri\n type: 'type.value',\n label: 'title.value',\n description: 'gsaSignature.value'\n }\n }\n },\n { id: 'property',\n idx: 1,\n isActive: true,\n label: 'Property ',\n itemQParam: '',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_GENERIC_RDF_PROPERTY_TREE,\n mapping: { // maps the properties of the reponse to tha NavTabDef properties, which are displayed\n id: 'p.value', // Short id, iri in most cases\n iri: 'p.value', // iri\n type: 'type.value',\n label: 'label.value',\n description: 'comment.value'\n }\n }\n },\n { id: 'object',\n idx: 1,\n isActive: true,\n label: 'Object ',\n itemQParam: '',\n entries: [],\n apiDef: {\n type: 0, // rdf\n baseUrl: BASE_URL,\n dataArray: 'results.bindings',\n query: RQ_GENERIC_OBJECT_TREE,\n mapping: { // maps the properties of the reponse to tha NavTabDef properties, which are displayed\n id: 'o.value', // Short id, iri in most cases\n iri: 'o.value', // iri\n type: 'type.value',\n label: 'label.value',\n description: 'comment.value'\n }\n }\n }\n];\n","import { Routes } from '@angular/router';\nimport {ManuscriptViewComponentComponent} from \"../manuscript-view-component/manuscript-view-component.component\";\nimport {RhizomeViewComponentComponent} from \"../rhizome-view-component/rhizome-view-component.component\";\nimport {PageViewWrapperComponent} from \"../page-view-wrapper-component/page-view-wrapper.component\";\nimport { TLN_QUANT_ROUTE, TLN_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_SEARCH_ROUTE, TLN_VIEWER_ROUTE, TLN_CROSSREF_EDITOR_ROUTE } from '../tln-edition/constants';\nimport { TlnFulltextComponent } from '../tln-edition/tln-fulltext/tln-fulltext.component';\nimport { QuantComponent } from '../quant/quant.component';\n\nexport const CONTENT_ROUTES: Routes = [\n { path: TLN_MANUSCRIPT_ROUTE, component: ManuscriptViewComponentComponent },\n { path: TLN_VIEWER_ROUTE, component: PageViewWrapperComponent },\n { path: TLN_CROSSREF_ROUTE, component: RhizomeViewComponentComponent },\n { path: TLN_SEARCH_ROUTE, component: TlnFulltextComponent},\n { path: TLN_QUANT_ROUTE, component: QuantComponent},\n { path: '', redirectTo: TLN_MANUSCRIPT_ROUTE, pathMatch: 'prefix' }\n];\n","export default \".mat-drawer-container {\\n width: 100%;\\n}\\n\\n.mat-drawer {\\n overflow: hidden;\\n padding: 10px;\\n margin-right: 10px;\\n max-height: 100%;\\n min-height: 90%;\\n}\\n\\n.mat-card {\\n width: 100%;\\n}\\n\\n.mat-drawer-content {\\n min-height: 100vh;\\n width: 100%;\\n height: 100%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50L2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIiwiY29udGVudC12aWV3LXRhYi1jb21wb25lbnQvY29udGVudC12aWV3LXRhYi1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7RUFDRSxXQUFBO0FDQUY7O0FER0E7RUFDRSxnQkFBQTtFQUNBLGFBQUE7RUFDQSxrQkFBQTtFQUVBLGdCQUFBO0VBQ0EsZUFBQTtBQ0RGOztBRElBO0VBQ0UsV0FBQTtBQ0RGOztBRElBO0VBQ0UsaUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtBQ0RGIiwiZmlsZSI6ImNvbnRlbnQtdmlldy10YWItY29tcG9uZW50L2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdGhlIG5hdmlnYXRpb24gZHJhd2VyIG9uIHRoZSB2ZXJ5IGxlZnQgY29udGFpbmluZyB0aGUgaXRlbXMgdG8gY2hvb3NlIGZyb21cbi5tYXQtZHJhd2VyLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubWF0LWRyYXdlciB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcblxuICBtYXgtaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiA5MCU7XG59XG5cbi5tYXQtY2FyZCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubWF0LWRyYXdlci1jb250ZW50IHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4iLCIubWF0LWRyYXdlci1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm1hdC1kcmF3ZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAxMHB4O1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDkwJTtcbn1cblxuLm1hdC1jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5tYXQtZHJhd2VyLWNvbnRlbnQge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn0iXX0= */\"","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute, NavigationEnd, Params, Router} from '@angular/router';\nimport {Subscription} from \"rxjs/index\";\nimport {NavigationServiceService} from \"../services/navigation-service.service\";\nimport {\n TLN_CROSSREF_EDITOR_ROUTE, TLN_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_SEARCH_ROUTE,\n TLN_VIEWER_ROUTE, TLN_QUANT_ROUTE\n} from '../tln-edition/constants';\n\n@Component({\n selector: 'app-content-view-tab-component',\n templateUrl: './content-view-tab-component.component.html',\n styleUrls: ['./content-view-tab-component.component.scss'],\n providers: [ NavigationServiceService ]\n})\nexport class ContentViewTabComponentComponent implements OnInit {\n // navigation tabs for the content view (manuscript view, page view, rhizome view)\n navTabLinks: any[];\n // navbar on th left for navigating\n navBarOpenState = false;\n fullscreen = false;\n\n navBarOpenMode: string;\n queryParams: Params = {};\n queryParamSubscription: Subscription;\n routeSubscription: Subscription;\n\n constructor(private router: Router,\n private activatedRoute: ActivatedRoute,\n private naviService: NavigationServiceService) {\n\n // The links/tabs for routing the correct view-component\n this.navTabLinks = [\n {\n label: 'Manuskriptansicht',\n link: TLN_MANUSCRIPT_ROUTE,\n index: 0,\n isActive: true,\n context: 'manuscript', // in which context the viewers are opened\n disabled: false\n }, {\n label: 'Seitenansicht',\n link: TLN_VIEWER_ROUTE,\n index: 1,\n isActive: false,\n context: 'page', // in which context the viewers are opened\n disabled: false\n }, {\n label: 'Querverweise',\n link: TLN_CROSSREF_ROUTE,\n index: 2,\n isActive: false,\n disabled: false\n }, {\n label: 'Suche',\n link: TLN_SEARCH_ROUTE,\n index: 3,\n isActive: false,\n disabled: false\n },\n {\n label: 'Datenabfrage',\n link: TLN_QUANT_ROUTE,\n index: 4,\n isActive: false,\n disabled: false \n },\n ];\n\n // subscribe to route event and for marking the active navTab as active\n this.routeSubscription = this.router.events.subscribe((event) => {\n if ( event instanceof NavigationEnd) {\n // if the navigated link is not active, we set it acive\n if ( !this.navTabLinks.find(nl => nl.link === this.activatedRoute.snapshot.children.pop().routeConfig.path).isActive ) {\n this.setActiveLink(this.activatedRoute.snapshot.children.pop().routeConfig.path);\n }\n }\n });\n\n this.queryParamSubscription = this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.queryParams = queryParams;\n if (queryParams.navBarOpenState) {\n this.navBarOpenState = JSON.parse(queryParams.navBarOpenState.toLowerCase());\n }\n if (queryParams.fullscreen) {\n this.fullscreen = JSON.parse(queryParams.fullscreen.toLowerCase());\n }\n });\n }\n\n ngOnInit() {\n this.navBarOpenMode = 'side'; // side || over || push\n this.setParamsOnInit();\n // If url pasted or page refreshed --> resetting this.queryparams to the query params of the url;\n // needed for active routing in the nav tabs & for general use in the template\n }\n\n // Sets the isActive prop of a navTabLink to true and all others to false .\n setActiveLink(link: string) {\n this.navTabLinks.forEach((navTabLink, index ) => {\n if (navTabLink.link === link) {\n this.navTabLinks[index].isActive = true;\n if (navTabLink.context) {\n window.setTimeout(() => this.naviService.updateRoute({contextView : navTabLink.context}), 300);\n }\n } else {\n this.navTabLinks[index].isActive = false;\n }\n });\n }\n\n /**\n * setParamsOnInit checks if the page is loaded with query params. If a certain query param is missing, it will be set to a default value\n *\n */\n setParamsOnInit() {\n const qParams: Params = {};\n // Set the NavBarOpenstate to true if it is not defined explicitely as false in the url query param onInit.\n if (this.activatedRoute.snapshot.queryParamMap.get('navBarOpenState') !== 'false') {\n qParams.navBarOpenState = 'true'; }\n // viewMode\n if (!this.activatedRoute.snapshot.queryParamMap.get('viewMode')) {\n qParams.viewMode = 'Transkription/Faksimile';\n }\n // contextView\n if (!this.activatedRoute.snapshot.queryParamMap.get('contextView')) {\n qParams.contextView = 'manuscript';\n }\n // navTabIdx: if none default is null\n if (!this.activatedRoute.snapshot.queryParamMap.get('navTabIdx')) {\n if (this.activatedRoute.snapshot.queryParamMap.get('contextView') === 'manuscript' || qParams.contextView === 'manuscript') {\n qParams.navTabIdx = '0'; } else {\n qParams.navTabIdx = '1'; }\n }\n this.naviService.updateRoute(qParams);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: 'img'\n})\n\nexport class LazyImageLoadDirectiveDirective {\n\n constructor({ nativeElement }: ElementRef) {\n const supports = 'loading' in HTMLImageElement.prototype;\n if (supports) {\n nativeElement.setAttribute('loading', 'lazy');\n }\n }\n}\n\n// IF NOT SUPPORTED IN CHROME: Open chrome://flags in Chromium or Chrome Canary.\n// Search for lazy.\n// Enable both the “Enable lazy image loading” and the “Enable lazy frame loading” flag.\n// Restart the browser with the button in the lower right corner of the screen.\n","export default \".skip {\\n margin-top: 20px;\\n}\\n.second{\\n margin-left: 10px;\\n}\\n.hint {\\n width: 700px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhvbWUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csaUJBQWlCO0FBQ3BCO0FBQ0E7R0FDRyxZQUFZO0FBQ2YiLCJmaWxlIjoiaG9tZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNraXAge1xuICAgbWFyZ2luLXRvcDogMjBweDtcbn1cbi5zZWNvbmR7XG4gICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5oaW50IHtcbiAgIHdpZHRoOiA3MDBweDtcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { CONTENT_VIEW_ROUTE } from './constants';\nimport { TLN_MANUSCRIPT_ROUTE, TLN_MANUSCRIPT_PARAM } from './tln-edition/constants';\n\n\n@Component({\n selector: 'app-home-component',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css']\n})\nexport class HomeComponent implements OnInit {\n manuscriptLink: string[] = [ '/' + CONTENT_VIEW_ROUTE, TLN_MANUSCRIPT_ROUTE ];\n mpXIVParam: Params = {}\n mpXVParam: Params = {}\n ngOnInit(){\n this.mpXIVParam[TLN_MANUSCRIPT_PARAM] = 'http://rdfh.ch/projects/0068#_Mp_XIV';\n this.mpXVParam[TLN_MANUSCRIPT_PARAM] = 'http://rdfh.ch/projects/0068#_Mp_XV';\n }\n}\n\n\n","export default \".text {\\n text-align: justify;\\n width: 800px;\\n}\\n.subcontent {\\n margin-bottom: 20px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImltcHJlc3N1bS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csbUJBQW1CO0dBQ25CLFlBQVk7QUFDZjtBQUNBO0dBQ0csbUJBQW1CO0FBQ3RCIiwiZmlsZSI6ImltcHJlc3N1bS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRleHQge1xuICAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgIHdpZHRoOiA4MDBweDtcbn1cbi5zdWJjb250ZW50IHtcbiAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG4iXX0= */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-impressum',\n templateUrl: './impressum.component.html',\n styleUrls: ['./impressum.component.css']\n})\nexport class ImpressumComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJtYWluLW1lbnUtY29tcG9uZW50L21haW4tbWVudS1jb21wb25lbnQuY29tcG9uZW50LnNjc3MifQ== */\"","import { Component, OnInit } from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {ActivatedRoute, Params} from '@angular/router';\nimport { CONTENT_VIEW_ROUTE, DOCUMENTATION_ROUTE, HOME_ROUTE, IMPRESSUM_ROUTE, PROJECT_ROUTE } from '../constants';\n\n@Component({\n selector: 'app-main-menu-component',\n templateUrl: './main-menu-component.component.html',\n styleUrls: ['./main-menu-component.component.scss']\n})\nexport class MainMenuComponentComponent implements OnInit {\n contentViewLink: string[] = [ CONTENT_VIEW_ROUTE ];\n fullScreen: string;\n impressumLink: string[] = [ IMPRESSUM_ROUTE ];\n homeLink: string[] = [ HOME_ROUTE ];\n projectLink: string[] = [ PROJECT_ROUTE];\n queryParamSub: Subscription;\n queryParams: Params;\n\n constructor(private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n this.queryParamSub = this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.fullScreen = queryParams.fullscreen;\n this.queryParams = queryParams;\n\n });\n }\n\n}\n","export default \".content-area {\\n height: 100%;\\n display: table;\\n}\\n\\n.nav-container {\\n height: 100%;\\n width: 50%;\\n display: table-cell;\\n}\\n\\n.content-container {\\n height: 100%;\\n display: table-cell;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL21hbnVzY3JpcHQtdmlldy1jb21wb25lbnQvbWFudXNjcmlwdC12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsIm1hbnVzY3JpcHQtdmlldy1jb21wb25lbnQvbWFudXNjcmlwdC12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFlBQUE7RUFDQSxjQUFBO0FDQ0Y7O0FERUE7RUFDRSxZQUFBO0VBRUEsVUFBQTtFQUNBLG1CQUFBO0FDQUY7O0FER0E7RUFDRSxZQUFBO0VBR0EsbUJBQUE7QUNGRiIsImZpbGUiOiJtYW51c2NyaXB0LXZpZXctY29tcG9uZW50L21hbnVzY3JpcHQtdmlldy1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGVudC1hcmVhIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OnRhYmxlO1xufVxuXG4ubmF2LWNvbnRhaW5lciB7XG4gIGhlaWdodDoxMDAlO1xuICAvL21pbi13aWR0aDogdW5zZXQ7IC8vIG5lZWRlZCBiZWNhdXNlIGFuZ3VsYXIgc2V0cyBhbiBvd24gbWluIHdpZHRoIT9cbiAgd2lkdGg6NTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuXG4uY29udGVudC1jb250YWluZXIge1xuICBoZWlnaHQ6MTAwJTtcbiAgLy8gbWluLXdpZHRoOiB1bnNldDsgLy8gbmVlZGVkIGJlY2F1c2UgYW5ndWxhciBzZXRzIGFuIG93biBtaW4gd2lkdGghP1xuICAvLyB3aWR0aDoyMHB4O1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuIiwiLmNvbnRlbnQtYXJlYSB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogdGFibGU7XG59XG5cbi5uYXYtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogNTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuXG4uY29udGVudC1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59Il19 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-manuscript-view-component',\n templateUrl: './manuscript-view-component.component.html',\n styleUrls: ['./manuscript-view-component.component.scss']\n})\nexport class ManuscriptViewComponentComponent implements OnInit {\n constructor() { }\n\n ngOnInit() {\n }\n}\n","import {SafeUrl} from '@angular/platform-browser';\n\nexport class TlnEntity {\n id: string; // Short id, iri in most cases\n iri: string; // iri\n type: string; // rdfs:type\n contextView: string;\n label?: string;\n description?: string;\n\n constructor(id: string, iri: string, type: string, contextView: string, label?: string, description?: string) {\n this.id = id;\n this.iri = iri;\n this.type = type;\n this.contextView = contextView;\n this.label = label;\n this.description = description;\n }\n}\n\n// The navigation entries in each tree for each viewtab (TlnManuscript, TlnPage, PositionalEntity) used by navigation\n//\nexport class NavigationEntity {\n idx: number;\n tlnEntity: TlnEntity;\n thumb?: SafeUrl; // url of image (Thumbnail)\n img?: SafeUrl; // full image url\n svg?: SafeUrl; // svg url\n avatar?: SafeUrl; // img for avatar\n\n constructor(idx: number, tlnEntity: TlnEntity, thumb?: string, img?, svg?: SafeUrl, avatar?: SafeUrl) {\n this.idx = idx;\n this.tlnEntity = tlnEntity;\n this.thumb = thumb;\n this.img = img;\n this.svg = svg;\n this.avatar = avatar;\n }\n}\n\nexport interface NavTreeDef {\n id: string; // name of the tree\n idx: number; // order\n label: string;\n itemQParam: string;\n entries: NavigationEntity[];\n description?: string;\n apiDef?: ApiDef;\n isActive?: boolean;\n}\n\nexport class ApiDef {\n type: number; // 0 === sparql 1.1., 1 === nietzscheSource API, 2 === existDB\n baseUrl: string;\n dataArray: string;\n query?: string;\n mapping?: TlnEntityMapping; // positive Filter ids: only these id's should be loaded into manuscript nav tree\n paramTriple?: number; // Select which triple of the where clause will be parametrized: 1 === property, 2 === object; default === subject\n\n constructor( type: number, baseUrl: string, dataArray: string, query?: string, mapping?: TlnEntityMapping, paramTriple?) {\n this.type = type;\n this.baseUrl = baseUrl;\n this.dataArray = dataArray;\n this.query = query;\n this.mapping = mapping;\n this.paramTriple = paramTriple;\n\n }\n}\n\nexport class TlnEntityMapping { // Is used for mapping the response from any given apiDef/response to a TlnEntity Instance\n id: string; // Short id, iri in most cases\n iri?: string; // iri\n idx?: string;\n type?: string; // rdfs:type\n label?: string;\n description?: string;\n avatar?: string;\n svg?: string;\n thumb?: string;\n\n constructor(id: string, iri?: string, idx?: string, type?: string, label?: string, description?: string, avatar?: string, svg?: string, thumb?: string) {\n this.id = id;\n this.iri = iri;\n this.idx = idx;\n this.type = type;\n this.label = label;\n this.description = description;\n this.avatar = avatar;\n this.svg = svg;\n this.thumb = thumb;\n }\n}\n","export default \".fixed-nav-container {\\n position: -webkit-sticky;\\n position: sticky;\\n max-height: 15vh;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbi1saXN0LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsIm5hdmlnYXRpb24tbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbi1saXN0LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHdCQUFBO0VBQUEsZ0JBQUE7RUFDQSxnQkFBQTtBQ0NGIiwiZmlsZSI6Im5hdmlnYXRpb24tbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbi1saXN0LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5maXhlZC1uYXYtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogMTV2aDtcbn1cblxuIiwiLmZpeGVkLW5hdi1jb250YWluZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBtYXgtaGVpZ2h0OiAxNXZoO1xufSJdfQ== */\"","import {NAVTREE_DEFS} from '../constants';\nimport {Component, EventEmitter, OnInit} from '@angular/core';\nimport {NavigationServiceService} from '../services/navigation-service.service';\nimport {NavigationEntity, NavTreeDef, TlnEntity} from '../models/models';\nimport {Subscription} from 'rxjs/index';\nimport {ActivatedRoute, ParamMap} from '@angular/router';\nimport {QueryService} from '../services/query.service';\nimport {NavTree} from './navtree-directive.directive';\nimport * as _ from 'lodash';\n\n@Component({\n selector: 'app-navigation-list-component',\n templateUrl: './navigation-list-component.component.html',\n styleUrls: ['./navigation-list-component.component.scss']\n})\n\n/**\n * NavigationListComponent\n * Builds/rebuilds the navigation trees for populating the navigationlist-list-component and reacts on changes in the url\n */\nexport class NavigationListComponentComponent implements OnInit {\n\n navigationTreeDefs: NavTreeDef[]; // The definitions for buildling the navTrees\n navTrees: NavTree[]; // The actual Navtrees which are displayed\n activeTree: NavTree; // the tree which is displayed in the list component\n navTabIndex: number; // the index of the active tree in navTrees\n navTabIndexChange: EventEmitter;\n\n oldQueryParams: ParamMap;\n queryParamSubscription: Subscription;\n\n constructor(public naviService: NavigationServiceService,\n private activatedRoute: ActivatedRoute,\n private queryService: QueryService) {\n\n this.navigationTreeDefs = NAVTREE_DEFS;\n\n this.navTabIndexChange = new EventEmitter();\n }\n\n ngOnInit() {\n this.oldQueryParams = this.activatedRoute.snapshot.queryParamMap;\n this.queryParamSubscription = this.activatedRoute.queryParamMap.subscribe((queryParams: ParamMap) => {\n this.reactOnNewQParams(queryParams);\n });\n\n // The navTabIndex and the activeTree are set accordingly on the emitted tabIndex\n this.navTabIndexChange.subscribe(tabIdx => {\n if (tabIdx !== this.navTabIndex && tabIdx < this.navTrees.length && tabIdx >= 0) {\n this.navTabIndex = tabIdx;\n this.activeTree = this.navTrees[tabIdx];\n }\n });\n this.initNavTrees();\n }\n\n //\n // INITIAL METHODS, CORE METHODS\n //\n\n async initNavTrees() {\n await this.createTreesOnInit();\n await this.populateNavTrees();\n await this.setActiveTreeOnInit();\n this.subscribeToSetSelectedItems();\n }\n\n\n createTreesOnInit() {\n this.navTrees = [];\n this.navigationTreeDefs.forEach(def =>\n this.navTrees.push(new NavTree(def.id, def.idx, def.label, [], def.itemQParam, def.description, def.apiDef)));\n }\n\n /**\n * populateNavTrees creates the first trees if no query params are available in the url:\n * It ceates the manuscripNavTree and the activePageNavTreeData of the first manuscript per default.\n *\n */\n async populateNavTrees(tabIdx?: number, item?: TlnEntity) {\n const tabStartIndex = tabIdx || 0; // where to start refreshing navtrees downward\n for (const treeDef of this.navigationTreeDefs.sort(def => (def.idx))) {\n if (treeDef.idx >= tabStartIndex) { // only create trees if needed\n this.queryService.getQueryfromFilename(treeDef.apiDef.query).then(async query => {\n let queryToRun: string;\n // If there is a selectedItem we have to parametrize the query\n if (treeDef.idx > 0) { // so we have to parametrize the query\n if (item) {\n queryToRun = this.queryService.parametrizeQueryWithItem(query, item.id);\n this.populateNavTree(treeDef, queryToRun);\n } else {\n // wait for selected item of the previous tab and parametrize then the query\n this.navTrees[treeDef.idx - 1].selectedItemSet.subscribe(selItem => {\n if (selItem.tabId === treeDef.idx - 1) {\n queryToRun = this.queryService.parametrizeQueryWithItem(query, selItem.itemId);\n this.populateNavTree(treeDef, queryToRun);\n }\n });\n }\n } else {\n this.populateNavTree(treeDef, query);\n }\n });\n }\n }\n }\n\n\n populateNavTree(def: NavTreeDef, query) {\n const idx = this.navTrees.findIndex(navTreeId => navTreeId.id === def.id);\n let parentLabel;\n if (idx > 0) {\n parentLabel = this.navTrees[idx - 1].selectedItemLabel;\n }\n if (idx !== -1) {\n this.queryService.getData(def.apiDef.baseUrl, query, 'SELECT').then(data => {\n this.navTrees[idx].setNavTreeData(_.get(data, def.apiDef.dataArray),\n this.activatedRoute.snapshot.queryParams, parentLabel);\n });\n }\n }\n\n\n /**\n * setActiveTreeOnInit listens to the initial queryParam and sets the navTabIdx accordingly.\n * gets the active navTabIndex either from a passed contextView, from active qParam or sets it to 0\n */\n private setActiveTreeOnInit() {\n const activeTab = parseInt(this.activatedRoute.snapshot.queryParamMap.get('navTabIdx'), 10);\n this.navTrees.forEach(tree => {\n // If the tree is the active one according to qParam 'navTabIdx, we change to that tree\n if (activeTab === tree.idx) {\n this.navTabIndexChange.emit(activeTab);\n }\n });\n }\n\n /**\n * subscribeToSetSelectedItems\n * Subscribe to each tree's selectedItemSet and route/set the selectedItem in the qParams if the item is not yet set\n * This applies when the trees are built initially or rebuilt, i.e. in two cases:\n * 1) when no qParam for the trees is set in the route\n * 2) a selected item is changed in a parent tree and the childs qParams are nulled\n */\n private subscribeToSetSelectedItems() {\n this.navTrees.forEach(tree => {\n if (!this.activatedRoute.snapshot.queryParamMap.get(tree.qParam)) {\n tree.selectedItemSet.subscribe(item => {\n // set qParam\n this.naviService.updateRoute({[tree.qParam]: item.itemId});\n });\n }\n });\n }\n\n\n //\n // REACTING ON CHANGES MADE OUTSIDE OF THE COMPONENT\n //\n async reactOnNewQParams(qParams: ParamMap) {\n // iterating through all queryParams and react if one param has changed\n await qParams.keys.forEach(key => {\n if (qParams.get(key) !== this.oldQueryParams.get(key)) {\n this.reactOnParamChange(key, qParams.get(key));\n }\n }\n );\n this.oldQueryParams = this.activatedRoute.snapshot.queryParamMap;\n }\n\n reactOnParamChange(qParam: string, newValue: string) {\n // qParams of the navTrees, e.g. 'page' and 'manuscript'\n if (this.navTrees && this.navTrees.map(tree => tree.qParam).findIndex(param => param === qParam) !== -1) {\n // if a qParam is one of the params defined in navTrees\n this.reactOnItemChange(qParam, newValue);\n }\n if (qParam === 'contextView') {\n this.reactOnContextChange(newValue);\n }\n if (qParam === 'navTabIdx') {\n this.navTabIndexChange.emit(parseInt(newValue, 10));\n }\n }\n\n reactOnItemChange(param: string, itemId: string) {\n // because it might be changed from outside via url update, we have to find the tree according to the changed param\n const parentIdx = this.navTrees.findIndex(tree => tree.qParam === param);\n if (itemId !== this.navTrees[parentIdx].selectedItem) { // only rebuild if it is not yet set.\n this.rebuildTrees(parentIdx, itemId);\n }\n }\n\n // gets the\n reactOnContextChange(context: string) {\n const newTabIndex = this.getActiveNavTabIdxFromContext(context);\n this.changeNavTreeViaRoute(newTabIndex);\n // must time out here hence document is not ready to scroll\n // window.setTimeout(() => this.scrollOnToSelectedItem(this.oldQueryParams[context]), 100);\n }\n\n async rebuildTrees(parentIdx, itemId) {\n const itemToSelect = await this.navTrees[parentIdx].getSelectedById(itemId);\n await this.navTrees[parentIdx].setSelectedItem(itemToSelect.tlnEntity.id, itemToSelect.tlnEntity.label);\n await this.rebuildChildNavTrees(itemToSelect, parentIdx);\n }\n\n async rebuildChildNavTrees(item: NavigationEntity, parentIdx) {\n // get new data for subTrees and set new params accordingly\n await this.emptyChildTrees(parentIdx);\n await this.removeAllChildTreeQParams(parentIdx);\n await this.populateChildren(parentIdx, item.tlnEntity);\n }\n\n removeAllChildTreeQParams(tabId) {\n this.navTrees.forEach((tree, index) => {\n if (tree.idx > tabId) {\n this.navTrees[index].selectedItem = null;\n this.naviService.updateRoute({[tree.qParam]: null});\n }\n });\n }\n\n emptyChildTrees(parentIdx) {\n this.navTrees.forEach((tree, index) => {\n if (tree.idx > parentIdx) {\n this.navTrees[index].entries = [];\n }\n });\n }\n\n populateChildren(parentTab, item: TlnEntity) {\n if (parentTab + 1 < this.navigationTreeDefs.length) {\n // if an item in a tab with sub tabs is selected, the subtree should be loaded according to that selection and the tab should change\n this.populateNavTrees(parentTab + 1, item);\n }\n }\n\n /**\n * getActiveNavTabIndexOnInit\n * gets the active navTabIndex either from a passed contextView, from active qParam or sets it to 0\n */\n getActiveNavTabIdxFromContext(con: string) {\n let navTreeIndex; // the index of the navTree with the qParam corresponding to con\n let navTabIndex;\n if (con) {\n navTreeIndex = this.navigationTreeDefs.findIndex(tree => tree.itemQParam === con);\n }\n if (navTreeIndex >= 0) { // no -1/not found\n navTabIndex = this.navigationTreeDefs[navTreeIndex].idx;\n }\n return navTabIndex;\n }\n\n /**\n * changeNavTreeViaRoute\n * changes to a new tree/tab in the navtab of the navList. In case of displayed tln-search and tln-crossRef\n * within content-view-component, the contextView is set also corresponding to the trees qParam.\n */\n changeNavTreeViaRoute(idx: number) {\n if (idx < this.navTrees.length && idx >= 0) {\n const qParams = {};\n qParams['navTabIdx'] = idx;\n const activeView = this.activatedRoute.snapshot.children.pop().routeConfig.path;\n // If the tln-search or the tln-crossRef are active, then change the contextView, hence the app reacts\n // on context change and will set the navTabIdx accordingly\n if ( activeView === 'tln-search' || activeView === 'tln-crossref' ) {\n const newContext = this.navTrees[this.navTrees.findIndex(tree => tree.idx === idx)].qParam;\n if (newContext !== this.activatedRoute.snapshot.queryParamMap.get('contextView')) {\n qParams['contextView'] = newContext;\n }\n }\n this.naviService.updateRoute(qParams);\n }\n }\n}\n","export default \".navlist-container {\\n position: -webkit-sticky;\\n position: sticky;\\n max-height: 85vh;\\n overflow-x: hidden;\\n overflow-y: auto;\\n scroll-behavior: smooth;\\n}\\n\\n.mat-nav-list {\\n scroll-behavior: smooth;\\n}\\n\\n.mat-nav-list .mat-list-item {\\n width: 100%;\\n min-height: 72px;\\n height: 100%;\\n /* default is 72px */\\n padding: 0 !important;\\n margin: 0 !important;\\n}\\n\\n.thumbnail {\\n max-width: 80px;\\n max-height: 80px;\\n}\\n\\n.card-item {\\n width: 100%;\\n min-width: 100%;\\n margin-top: 5px;\\n background-color: rgba(255, 255, 255, 0) !important;\\n}\\n\\n.active-item {\\n background: linear-gradient(to right, rgba(255, 255, 255, 0), #dadada);\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbmxpc3QtbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbmxpc3QtbGlzdC1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiLCJuYXZpZ2F0aW9uLWxpc3QtY29tcG9uZW50L25hdmlnYXRpb25saXN0LWxpc3QtY29tcG9uZW50L25hdmlnYXRpb25saXN0LWxpc3QtY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0Usd0JBQUE7RUFBQSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FDQ0Y7O0FERUE7RUFDRSx1QkFBQTtBQ0NGOztBREVBO0VBQ0UsV0FBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUFjLG9CQUFBO0VBQ2QscUJBQUE7RUFDQSxvQkFBQTtBQ0VGOztBRENBO0VBQ0UsZUFBQTtFQUNBLGdCQUFBO0FDRUY7O0FEQ0E7RUFDRSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxtREFBQTtBQ0VGOztBRENBO0VBQ0Usc0VBQUE7QUNFRiIsImZpbGUiOiJuYXZpZ2F0aW9uLWxpc3QtY29tcG9uZW50L25hdmlnYXRpb25saXN0LWxpc3QtY29tcG9uZW50L25hdmlnYXRpb25saXN0LWxpc3QtY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm5hdmxpc3QtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogODV2aDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuLm1hdC1uYXYtbGlzdCB7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4ubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDcycHg7XG4gIGhlaWdodDogMTAwJTsgLyogZGVmYXVsdCBpcyA3MnB4ICovXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDs7XG4gIG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuXG4udGh1bWJuYWlsIHtcbiAgbWF4LXdpZHRoOiA4MHB4O1xuICBtYXgtaGVpZ2h0OiA4MHB4O1xufVxuXG4uY2FyZC1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApICFpbXBvcnRhbnQ7XG59XG5cbi5hY3RpdmUtaXRlbSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAsICNkYWRhZGEpO1xufVxuIiwiLm5hdmxpc3QtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbWF4LWhlaWdodDogODV2aDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuLm1hdC1uYXYtbGlzdCB7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4ubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDcycHg7XG4gIGhlaWdodDogMTAwJTtcbiAgLyogZGVmYXVsdCBpcyA3MnB4ICovXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG59XG5cbi50aHVtYm5haWwge1xuICBtYXgtd2lkdGg6IDgwcHg7XG4gIG1heC1oZWlnaHQ6IDgwcHg7XG59XG5cbi5jYXJkLWl0ZW0ge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgIWltcG9ydGFudDtcbn1cblxuLmFjdGl2ZS1pdGVtIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApLCAjZGFkYWRhKTtcbn0iXX0= */\"","import {Component, Input, OnChanges} from '@angular/core';\nimport {NavTree} from '../navtree-directive.directive';\nimport {NavigationEntity} from '../../models/models';\nimport {NavigationServiceService} from '../../services/navigation-service.service';\nimport {ActivatedRoute} from '@angular/router';\nimport {NAVTREE_DEFS} from '../../constants';\n\n@Component({\n selector: 'app-navigationlist-list-component',\n templateUrl: './navigationlist-list-component.component.html',\n styleUrls: ['./navigationlist-list-component.component.scss']\n})\nexport class NavigationlistListComponentComponent implements OnChanges {\n\n @Input() navTree: NavTree;\n\n constructor(private naviService: NavigationServiceService, private route: ActivatedRoute) {\n }\n\n ngOnChanges() {\n if (this.navTree && document) {\n this.scrollOnToSelectedItem(this.route.snapshot.queryParamMap.get(this.navTree.qParam));\n }\n }\n\n onSelectNavItem(item: NavigationEntity) {\n if (this.navTree.selectedItem !== item.tlnEntity.id) {\n this.naviService.updateRoute({[this.navTree.qParam] : item.tlnEntity.id});\n this.scrollOnToSelectedItem(item.tlnEntity.id);\n } else { // If clicked the already selected item ...\n const qParams = {};\n let relPath;\n if (this.navTree.idx < NAVTREE_DEFS.length - 1) { // if it is not the last tab/tree we switch one tab deeper\n qParams['navTabIdx'] = this.navTree.idx + 1;\n this.naviService.updateRoute(qParams);\n }\n if (this.navTree.idx === NAVTREE_DEFS.length - 1 && this.route.children[0].snapshot.routeConfig.path === 'tln-manuscript') { // if it is the last available tab/tree we change the context\n qParams['contextView'] = NAVTREE_DEFS[NAVTREE_DEFS.findIndex(tree => tree.id === this.navTree.id)].itemQParam;\n relPath = 'tln-viewer';\n this.naviService.updateRoute(qParams, relPath);\n }\n }\n }\n\n scrollOnToSelectedItem(itemId: string ) {\n window.setTimeout(() => {\n if (document.getElementById(itemId)) {\n const offSetTop = document.getElementById(itemId).offsetTop;\n document.getElementById('navlist').scrollTop = offSetTop - 100;\n }\n }, 100);\n }\n}\n","import {Directive, EventEmitter} from '@angular/core';\nimport {Params} from '@angular/router';\nimport {ApiDef, NavigationEntity, TlnEntity} from '../models/models';\nimport * as _ from 'lodash';\n\n@Directive({\n selector: '[appNavtreeDirective]'\n})\n\nexport class NavTree {\n id: string;\n idx: number;\n label: string;\n entries: NavigationEntity[];\n qParam: string;\n description?: string;\n apiDef?: ApiDef;\n selectedItem?: string;\n selectedItemLabel?: string;\n parentLabel?: string;\n\n selectedItemSet: EventEmitter\n\n constructor(id: string,\n idx: number,\n label: string,\n entries: NavigationEntity[],\n qParam: string,\n description?: string,\n apiDef?: ApiDef,\n selectedItem?: string,\n selectedItemLabel?: string,\n parentLabel?: string) {\n this.id = id;\n this.idx = idx;\n this.label = label;\n this.qParam = qParam;\n this.entries = entries || [];\n this.description = description;\n this.apiDef = apiDef;\n this.selectedItem = selectedItem;\n this.selectedItemLabel = selectedItemLabel;\n this.selectedItemSet = new EventEmitter();\n this.parentLabel = parentLabel;\n }\n\n async setNavTreeData(data: any, queryParams?: Params, parentLabel?: string) {\n this.parentLabel = parentLabel;\n const selectedId = queryParams[this.qParam];\n if (selectedId && selectedId !== '' ) {\n const selectedLabel = await _.get(data[data.findIndex(item => item[this.apiDef.mapping.id] === selectedId)], this.apiDef.mapping.label);\n this.setSelectedItem(selectedId, selectedLabel); } else {\n const firstEntry = await _.get(data[0], this.apiDef.mapping.id);\n await this.setSelectedItem(firstEntry, await _.get(data[0], this.apiDef.mapping.label));\n }\n\n this.entries = []; // resetting tree data of the given tab\n data.forEach((entry, index) => {\n // (id: string, iri: string, type: string, navIndex: number, label?: string)\n const entity = new TlnEntity(_.get(entry, this.apiDef.mapping.id),\n _.get(entry, this.apiDef.mapping.iri), _.get(entry, this.apiDef.mapping.type) ||\n null, index , _.get(entry, this.apiDef.mapping.label) || '', _.get(entry, this.apiDef.mapping.description || ''));\n const thumb = _.get(entry, this.apiDef.mapping.thumb);\n let svg;\n if (_.get(entry, this.apiDef.mapping.svg)) {\n svg = _.get(entry, this.apiDef.mapping.svg);\n }\n const avatar = _.get(entry, this.apiDef.mapping.avatar);\n const navEntity = new NavigationEntity(index, entity, thumb, '', svg, avatar);\n this.entries.push(navEntity);\n });\n }\n\n public setSelectedItem(itemId: string, itemLabel?: string) {\n this.selectedItem = itemId;\n this.selectedItemLabel = itemLabel;\n //\n this.selectedItemSet.emit({tabId: this.idx, itemId});\n //\n }\n\n public getSelectedById(itemId: string) {\n const idx = this.entries.findIndex(item => item.tlnEntity.id === itemId);\n if (idx !== -1) {\n return this.entries[idx];\n } else { console.log('no item with id', itemId, 'found'); }\n }\n}\n\nexport interface SelectedItem {\n tabId: number;\n itemId: string;\n}\n","export default \"a {\\n font-weight: normal;\\n margin-right: 5px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9udG9sb2d5LXZpZXdlci9jb250ZW50LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxtQkFBbUI7R0FDbkIsaUJBQWlCO0FBQ3BCIiwiZmlsZSI6Im9udG9sb2d5LXZpZXdlci9jb250ZW50LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJhIHtcbiAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiJdfQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { Link } from './models';\n\n@Component({\n selector: 'content',\n templateUrl: './content.component.html',\n styleUrls: ['./content.component.css']\n})\nexport class ContentComponent implements OnInit {\n @Input() content: string|Link;\n text: string;\n @Input() links: Link[] = [];\n queryParams: Params;\n\n constructor(private activatedRoute: ActivatedRoute ) { }\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.queryParams = queryParams;\n });\n if (this.links.length == 0){\n if(typeof this.content == 'string'){\n this.text = this.content;\n } else {\n this.links = [ this.content ] ;\n }\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Namespace, Ontology } from './models';\n\n@Pipe({\n name: 'ontologies2namespaces'\n})\nexport class Ontologies2namespacesPipe implements PipeTransform {\n\n transform(ontologies: Ontology[], optional_namespaces?: Namespace[]): Namespace[] {\n let namespaces: Namespace[] = [];\n ontologies.forEach(ontology =>{\n namespaces.push({\n prefix: ontology.prefix,\n isExternal: false,\n iri: ontology.iri + '#' });\n });\n if (optional_namespaces != undefined && optional_namespaces != null){\n return namespaces.concat(optional_namespaces);\n }\n return namespaces;\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { DataMapping, QueryDataMapping, Ontology, OntologyBearer } from './models';\nimport { SparqlParser } from './sparqljs';\nimport { OntologyRetriever } from './ontology-retriever';\n\n@Component({\n selector: 'ontology-classes',\n template: ` 0\" [dataMappings]=\"dataMappings | sortSubjectsAlpha\">`,\n styleUrls: []\n})\nexport class OntologyClassesComponent extends OntologyRetriever {\n query: string = `\n PREFIX rdfs: \n PREFIX owl: \n\n SELECT ?class ?label ?comment ?superClass WHERE {\n ?class a owl:Class;\n rdfs:isDefinedBy ?ontology.\n OPTIONAL { ?class rdfs:label ?label }\n OPTIONAL { ?class rdfs:comment ?comment }\n OPTIONAL { ?class rdfs:subClassOf ?superClass.\n FILTER(!isBlank(?superClass))\n FILTER (?class != ?superClass)\n }\n }`\n\n constructor(protected queryService: OntologyQueryService) { \n super(queryService);\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJvbnRvbG9neS12aWV3ZXIvb250b2xvZ3ktZGVmaW5pdGlvbi5jb21wb25lbnQuY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { DataMapping, QueryDataMapping, Namespace, Ontology, OntologyBearer } from './models';\nimport { SparqlParser } from './sparqljs';\n\n\n@Component({\n selector: 'ontology-definition',\n templateUrl: './ontology-definition.component.html',\n styleUrls: ['./ontology-definition.component.css']\n})\nexport class OntologyDefinitionComponent implements OnInit, OntologyBearer {\n @Input() ontology: Ontology;\n @Input() namespaces: Namespace[];\n dataMapping: DataMapping = { subject: null, subjectType: null, queryDataMappings: [] };\n query: string = `\n PREFIX rdf: \n PREFIX rdfs: \n PREFIX owl: \n PREFIX dct: \n\n SELECT ?title ?description ?creator ?contributor ?license ?publisher ?version WHERE {\n ?ontology a owl:Ontology.\n OPTIONAL { ?ontology dct:license ?license }\n OPTIONAL { ?ontology dct:title ?title }\n OPTIONAL { ?ontology dct:description ?description }\n \tOPTIONAL { ?ontology dct:creator ?creator }\n OPTIONAL { ?ontology dct:publisher ?publisher}\n OPTIONAL { ?ontology dct:contributor ?contributor } \n OPTIONAL { ?ontology owl:versionInfo ?version } \n }`\n\n constructor(private queryService: OntologyQueryService) { }\n\n ngOnInit() {\n if (this.ontology != undefined && this.ontology != null){\n let parser = new SparqlParser(this.queryService);\n parser.fetchData(this, 'dataMapping', this.query, 'ontology', this.ontology.iri, this.namespaces);\n }\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJvbnRvbG9neS12aWV3ZXIvb250b2xvZ3ktZGlzcGxheS5jb21wb25lbnQuY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { DataMapping } from './models';\n\n@Component({\n selector: 'ontology-display',\n templateUrl: './ontology-display.component.html',\n styleUrls: ['./ontology-display.component.css']\n})\nexport class OntologyDisplayComponent implements OnInit {\n @Input() dataMappings: DataMapping[];\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { OntologyRetriever } from './ontology-retriever';\n\n@Component({\n selector: 'ontology-properties',\n template: ` 0\" [dataMappings]=\"dataMappings | sortSubjectsAlpha\">`,\n styleUrls: []\n})\nexport class OntologyPropertiesComponent extends OntologyRetriever {\n @Input() query: string;\n\n constructor(protected queryService: OntologyQueryService) { \n super(queryService);\n }\n\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError, shareReplay } from 'rxjs/operators';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OntologyQueryService {\n baseUrl: string;\n cache = {};\n\n constructor(private http: HttpClient) { }\n /**\n * Gets the data from an endpoint via http post\n *\n * @param query: The query to run.\n * @param this.baseUrl: The URL of the endpoint\n * @returns response\n */\n public getData(query: string): Observable {\n let httpOptions = { \n headers: new HttpHeaders(\n { 'Content-Type': 'application/sparql-query',\n 'Accept': 'application/sparql-results+json; charset=UTF-8'}\n )\n };\n return this.http.post(this.baseUrl, query, httpOptions);\n }\n public getOldData(query: string): Observable {\n let httpOptions = { \n headers: new HttpHeaders(\n { 'Content-Type': 'application/sparql-query',\n 'Accept': 'application/sparql-results+json; charset=UTF-8'}\n )\n };\n if (this.cache[query]){\n console.log('Returning cached value!')\n return this.cache[this.baseUrl + query];\n } \n this.cache[query] = this.http.post(this.baseUrl, query, httpOptions).pipe(\n shareReplay(1),\n catchError(error =>{\n delete this.cache[this.baseUrl + query];\n this.handleError(error);\n return EMPTY\n })\n ); \n return this.cache[this.baseUrl + query]\n }\n private handleError(error: HttpErrorResponse) {\n switch (error.status){\n case 0:\n // A client-side or network error occurred. Handle it accordingly.\n console.error('The backend data server is offline:', error.error);\n break;\n default:\n console.error( `Backend returned code ${error.status}, ` + `body was: ${error.error}`);\n }\n return throwError( 'Something bad happened; please try again later.');\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { DataMapping, QueryDataMapping, Namespace, Ontology, OntologyBearer } from './models';\nimport { SparqlParser } from './sparqljs';\n\nexport class OntologyRetriever implements OnInit, OntologyBearer {\n @Input() ontology: Ontology;\n @Input() namespaces: Namespace[];\n dataMappings: DataMapping[] = [];\n query: string;\n\n constructor(protected queryService: OntologyQueryService) { }\n\n ngOnInit() {\n if (this.ontology != undefined && this.ontology != null && this.query != undefined && this.query != null){\n let parser = new SparqlParser(this.queryService);\n parser.fetchArrayData(this, 'dataMappings', this.query, 'ontology', this.ontology.iri, this.namespaces);\n //console.log(SparqlParser.getQuery(this.query, 'ontology', this.ontology.iri));\n }\n }\n\n}\n","export default \"table {\\n margin-top: 20px;\\n width: 100%;\\n border-collapse: collapse;\\n border-spacing: 5% 2em;\\n}\\ntr:nth-child(even){background-color: #f2f2f2;}\\nth {\\n border: 1px solid #ddd;\\n background-color: #f2f2f2;\\n padding-left: 10px !important;\\n}\\ntd {\\n border: 1px solid #ddd;\\n padding-left: 10px !important;\\n}\\n.predicate {\\n width: 20%;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9udG9sb2d5LXZpZXdlci9vbnRvbG9neS10YWJsZS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csZ0JBQWdCO0dBQ2hCLFdBQVc7R0FDWCx5QkFBeUI7R0FDekIsc0JBQXNCO0FBQ3pCO0FBQ0EsbUJBQW1CLHlCQUF5QixDQUFDO0FBQzdDO0dBQ0csc0JBQXNCO0dBQ3RCLHlCQUF5QjtHQUN6Qiw2QkFBNkI7QUFDaEM7QUFDQTtDQUNDLHNCQUFzQjtDQUN0Qiw2QkFBNkI7QUFDOUI7QUFDQTtHQUNHLFVBQVU7QUFDYiIsImZpbGUiOiJvbnRvbG9neS12aWV3ZXIvb250b2xvZ3ktdGFibGUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbInRhYmxlIHtcbiAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICB3aWR0aDogMTAwJTtcbiAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICBib3JkZXItc3BhY2luZzogNSUgMmVtO1xufVxudHI6bnRoLWNoaWxkKGV2ZW4pe2JhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7fVxudGgge1xuICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjI7XG4gICBwYWRkaW5nLWxlZnQ6IDEwcHggIWltcG9ydGFudDtcbn1cbnRkIHtcbiBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuIHBhZGRpbmctbGVmdDogMTBweCAhaW1wb3J0YW50O1xufVxuLnByZWRpY2F0ZSB7XG4gICB3aWR0aDogMjAlO1xufVxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { DataMapping, QueryDataMapping, Ontology } from './models';\nimport { SparqlParser } from './sparqljs';\n\n\n@Component({\n selector: 'ontology-table',\n templateUrl: './ontology-table.component.html',\n styleUrls: ['./ontology-table.component.css']\n})\nexport class OntologyTableComponent implements OnInit {\n @Input() dataMapping: DataMapping;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJvbnRvbG9neS12aWV3ZXIvb250b2xvZ3ktdmlld2VyLmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { Namespace, Ontology } from './models';\nimport { SparqlParser } from './sparqljs';\n\n@Component({\n selector: 'ontology-viewer',\n templateUrl: './ontology-viewer.component.html',\n styleUrls: ['./ontology-viewer.component.css']\n})\nexport class OntologyViewerComponent implements OnInit {\n @Input() baseUrl: string;\n @Input() ontology: Ontology;\n @Input() namespaces: Namespace[];\n query: string = `\n PREFIX rdfs: \n PREFIX rdf: \n PREFIX owl: \n PREFIX xsd: \n\n SELECT ?property ?label ?comment ?domain ?range ?superProp WHERE {\n ?property a ?propertyType;\n rdfs:isDefinedBy ?ontology.\n OPTIONAL { ?property rdfs:label ?label }\n OPTIONAL { ?property rdfs:domain ?domain.\n ?domain rdfs:isDefinedBy ?ontology}\n OPTIONAL { ?property rdfs:range ?range }\n OPTIONAL { ?property rdfs:comment ?comment }\n OPTIONAL { ?property rdfs:subPropertyOf ?superProp.\n ?superProp rdfs:isDefinedBy ?ontology.\n FILTER(?property != ?superProp)\n }\n FILTER(!isBlank(?range))\n }`\n objectPropertyQuery: string;\n datatypePropertyQuery: string;\n\n constructor(private queryService: OntologyQueryService) { }\n\n ngOnInit() {\n this.objectPropertyQuery = SparqlParser.getQuery(this.query, 'propertyType', 'http://www.w3.org/2002/07/owl#ObjectProperty');\n this.datatypePropertyQuery = SparqlParser.getQuery(this.query, 'propertyType', 'http://www.w3.org/2002/07/owl#DatatypeProperty');\n this.queryService.baseUrl = this.baseUrl;\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { MatBadgeModule, MatSnackBarModule, MatSlideToggleModule, MatTreeModule, MatSliderModule,MatProgressSpinnerModule,MatBottomSheetModule,MatButtonModule,MatCheckboxModule,MatDialogModule,MatExpansionModule,MatFormFieldModule,MatInputModule,MatListModule,MatPaginatorModule,MatRadioModule,MatSelectModule,MatSidenavModule,MatSortModule,MatTableModule,MatToolbarModule,MatButtonToggleModule,MatCardModule,MatIconModule,MatMenuModule,MatTabsModule,MatTooltipModule\n} from '@angular/material';\nimport { OntologyViewerComponent } from './ontology-viewer.component';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { OntologyDefinitionComponent } from './ontology-definition.component';\nimport { OntologyTableComponent } from './ontology-table.component';\nimport { OntologyClassesComponent } from './ontology-classes.component';\nimport { ContentComponent } from './content.component';\nimport { OntologyPropertiesComponent } from './ontology-properties.component';\nimport { UniqueEntryPipe } from './unique-entry.pipe';\nimport { Ontologies2namespacesPipe } from './ontologies2namespaces.pipe';\nimport { SortSubjectsAlphaPipe } from './sort-subjects-alpha.pipe';\nimport { OntologyDisplayComponent } from './ontology-display.component';\n\n\n\n@NgModule({\n declarations: [OntologyViewerComponent, OntologyDefinitionComponent, OntologyTableComponent, OntologyClassesComponent, ContentComponent, OntologyPropertiesComponent, UniqueEntryPipe, Ontologies2namespacesPipe, SortSubjectsAlphaPipe, OntologyDisplayComponent],\n imports: [\n RouterModule,\n HttpClientModule,\n FormsModule,\n BrowserModule,\n CommonModule,\n MatBadgeModule,\n MatSnackBarModule,\n MatSlideToggleModule,\n MatSliderModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatPaginatorModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatTreeModule,\n MatToolbarModule,\n MatTooltipModule\n ],\n exports: [\n OntologyViewerComponent,\n Ontologies2namespacesPipe\n ],\n providers: [\n OntologyQueryService \n ]\n})\nexport class OntologyViewerModule { }\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DataMapping } from './models';\n\n@Pipe({\n name: 'sortSubjectsAlpha'\n})\nexport class SortSubjectsAlphaPipe implements PipeTransform {\n\n transform(dataMappings: DataMapping[]): DataMapping[] {\n if (dataMappings.length > 0){\n dataMappings.sort((a, b) =>{\n return (a.subject < b.subject) ? -1 : 1;\n });\n }\n return dataMappings;\n }\n\n}\n","import { Parser, Generator } from 'sparqljs';\nimport { first } from 'rxjs/operators';\nimport { OntologyQueryService } from './ontology-query.service';\nimport { Link, ParsedQuery, DataMapping, Namespace, QueryDataMapping, Triple, Ontology, OntologyBearer } from './models';\n\nexport class SparqlParser {\n namespaces: Namespace[] = [ { prefix: 'rdf', iri: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', isExternal: true },\n { prefix: 'rdfs', iri: 'http://www.w3.org/2000/01/rdf-schema#', isExternal: true },\n { prefix: 'owl', iri: 'http://www.w3.org/2002/07/owl#', isExternal: true },\n { prefix: 'xsd', iri: 'http://www.w3.org/2001/XMLSchema#', isExternal: true } ]\n\n constructor(private queryService: OntologyQueryService){}\n\n public fetchArrayData(component: OntologyBearer, target_key: string, query: string, key: string, iri: string, namespaces?: Namespace[]){\n if (namespaces != undefined && namespaces != null){\n this.namespaces = Array.from(new Set(this.namespaces.concat(namespaces)));\n }\n const paramQuery = SparqlParser.getQuery(query, key, iri);\n let parsedQuery = this.createParsedQuery(paramQuery);\n this.queryService.getData(paramQuery).subscribe( fusekiResults => {\n fusekiResults.results.bindings.forEach(fusekiResult =>{\n let dataMapping = this.mapQuery2Data(fusekiResult, parsedQuery, component.ontology); \n let oldItem = component[target_key].filter(item =>item.subject == dataMapping.subject)\n if (oldItem.length > 0){\n oldItem[0].queryDataMappings = oldItem[0].queryDataMappings.concat(dataMapping.queryDataMappings)\n } else {\n component[target_key].push(dataMapping);\n }\n });\n });\n }\n public fetchData(component: OntologyBearer, target_key: string, query: string, key: string, iri: string, namespaces?: Namespace[]){\n if (namespaces != undefined && namespaces != null){\n this.namespaces = Array.from(new Set(this.namespaces.concat(namespaces)));\n }\n const paramQuery = SparqlParser.getQuery(query, key, iri);\n let parsedQuery = this.createParsedQuery(paramQuery);\n this.queryService.getData(paramQuery).pipe(first()).subscribe( fusekiResults => {\n let fusekiResult = fusekiResults.results.bindings[0];\n component[target_key] = this.mapQuery2Data(fusekiResult, parsedQuery, component.ontology); \n })\n }\n private createParsedQuery(paramQuery: string) : ParsedQuery {\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(paramQuery)\n let prefixes = parsedQuery.prefixes;\n Object.keys(prefixes).forEach(key =>{\n if(this.namespaces.filter(namespace =>namespace.prefix == key).length == 0){\n this.namespaces.push({ prefix: key, iri: prefixes[key], isExternal: true });\n }\n })\n return parsedQuery;\n }\n private mapQuery2Data(result: Object, parsedQuery: ParsedQuery, ontology: Ontology): DataMapping {\n let queryDataMappings: QueryDataMapping[] = [];\n let dataMapping: DataMapping = { subject: null, subjectType: null, queryDataMappings: queryDataMappings };\n this.mapData2Query(dataMapping, parsedQuery, result, ontology);\n return dataMapping;\n }\n private mapData2Query(dataMapping: DataMapping, parsedQuery: ParsedQuery, result: Object, ontology: Ontology){\n let variables = parsedQuery.variables.map(variable =>variable['value']);\n parsedQuery.where.forEach(where =>{\n if(where['type'] == 'bgp'){\n where['triples'].forEach( (triple: Triple) =>{\n this.addContent(dataMapping, triple, variables, result, false, ontology);\n });\n } else if(where['type'] == 'optional' || where['type'] == 'union'){\n where['patterns'].forEach(pattern =>{\n if (pattern['triples'] != undefined){\n pattern['triples'].forEach( (triple: Triple) =>{\n this.addContent(dataMapping, triple, variables, result, true, ontology);\n });\n } \n });\n } \n });\n }\n private addContent(dataMapping: DataMapping, triple: Triple, variables: string[], result: Object, isOptional: boolean, ontology: Ontology){\n if (variables.includes(triple.subject.value) && !variables.includes(triple.object.value) && triple.object.value != ontology.iri){\n dataMapping.subject = this.replacePrefix(result[triple.subject.value]['value']);\n dataMapping.subjectType = this.createLink(triple.object.value);\n } else if (variables.includes(triple.object.value) && (!isOptional || result.hasOwnProperty(triple.object.value))){\n let link = this.createLink(result[triple.object.value]['value']);\n let queryDataMapping: QueryDataMapping = { \n variable: triple.object.value, \n predicate: this.createLink(triple.predicate.value),\n value: result[triple.object.value]['value'], \n links: (link != null) ? [ link ] : [],\n isOptional: isOptional\n }\n dataMapping.queryDataMappings.push(queryDataMapping);\n } else if (!variables.includes(triple.object.value) && !isOptional && triple.subject.value == ontology.iri) {\n dataMapping.subject = ontology.prefix;\n dataMapping.subjectType = this.createLink(triple.object.value);\n }\n }\n\n private createLink(namedNode: string): Link {\n let link: Link = null;\n this.namespaces.forEach(namespace =>{\n if (namedNode.startsWith(namespace.iri)){\n let newValue = namedNode.replace(namespace.iri, namespace.prefix + ':');\n link = { target: (namespace.isExternal) ? namedNode : newValue, value: newValue, external: namespace.isExternal };\n }\n });\n if (link == null && namedNode.startsWith('http')){\n link = { target: namedNode, value: namedNode, external: true };\n }\n //console.log(namedNode, link);\n return link;\n }\n private replacePrefix(namedNode: string): string {\n this.namespaces.forEach(namespace =>{\n namedNode = namedNode.replace(namespace.iri, namespace.prefix + ':');\n })\n return namedNode;\n }\n public static getQuery(query: string, key: string, iri: string): string {\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(query)\n for (var k = 0; k < parsedQuery.where.length; k++){\n if (parsedQuery.where[k].patterns != undefined){\n for (var j = 0; j < parsedQuery.where[k].patterns.length; j++){\n if (parsedQuery.where[k].patterns[j].triples != undefined) {\n for (var i = 0; i < parsedQuery.where[k].patterns[j].triples.length; i++){\n if(parsedQuery.where[k].patterns[j].triples[i]['subject']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['subject'] = { termType: \"NamedNode\", value: iri };\n } else if(parsedQuery.where[k].patterns[j].triples[i]['object']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['object'] = { termType: \"NamedNode\", value: iri };\n } else if(parsedQuery.where[k].patterns[j].triples[i]['predicate']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['predicate'] = { termType: \"NamedNode\", value: iri };\n }\n }\n }\n }\n } else if (parsedQuery.where[k].triples != undefined){\n for (var i = 0; i < parsedQuery.where[k].triples.length; i++){\n if(parsedQuery.where[k].triples[i]['subject']['value'] == key){\n parsedQuery.where[k].triples[i]['subject'] = { termType: \"NamedNode\", value: iri };\n } else if (parsedQuery.where[k].triples[i]['object']['value'] == key){\n parsedQuery.where[k].triples[i]['object'] = { termType: \"NamedNode\", value: iri };\n } else if (parsedQuery.where[k].triples[i]['predicate']['value'] == key){\n parsedQuery.where[k].triples[i]['predicate'] = { termType: \"NamedNode\", value: iri };\n }\n }\n }\n }\n return sparqlGenerator.stringify(parsedQuery);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DataMapping, Link, QueryDataMapping } from './models';\n\n@Pipe({\n name: 'uniqueEntry'\n})\nexport class UniqueEntryPipe implements PipeTransform {\n transform(dataMapping: DataMapping): DataMapping {\n let queryDataMappings: QueryDataMapping[] = [];\n let keys = new Set(dataMapping.queryDataMappings.map(queryDataMapping =>queryDataMapping.variable))\n keys.forEach(key =>{\n let items = dataMapping.queryDataMappings.filter(queryDataMapping =>queryDataMapping.variable == key)\n if (items.length == 1 || items[0].links.length == 0){\n queryDataMappings.push(items[0])\n } else {\n let newItem = items[0];\n for (var i = 1; i < items.length; i++){\n if (newItem.links.filter(link =>link.value == items[i].links[0].value).length == 0){\n newItem.links.push(items[i].links[0])\n }\n }\n queryDataMappings.push(newItem);\n }\n })\n dataMapping.queryDataMappings = queryDataMappings;\n return dataMapping;\n }\n\n}\n","export default \"#content {\\n overflow: hidden;\\n}\\n\\n#wrapper {\\n overflow: hidden;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL3BhZ2Utdmlldy13cmFwcGVyLWNvbXBvbmVudC9wYWdlLXZpZXctd3JhcHBlci5jb21wb25lbnQuc2NzcyIsInBhZ2Utdmlldy13cmFwcGVyLWNvbXBvbmVudC9wYWdlLXZpZXctd3JhcHBlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGdCQUFBO0FDQ0Y7O0FERUE7RUFDRSxnQkFBQTtBQ0NGIiwiZmlsZSI6InBhZ2Utdmlldy13cmFwcGVyLWNvbXBvbmVudC9wYWdlLXZpZXctd3JhcHBlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIiNjb250ZW50IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuI3dyYXBwZXIge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiI2NvbnRlbnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4jd3JhcHBlciB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59Il19 */\"","import {AfterViewInit, Component, HostListener, Input, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\n\n@Component({\n selector: 'app-page-view-wrapper-component',\n templateUrl: './page-view-wrapper.component.html',\n styleUrls: ['./page-view-wrapper.component.scss']\n})\nexport class PageViewWrapperComponent implements OnInit, AfterViewInit {\n @Input() showAllLines: boolean = false;\n fullscreen: boolean;\n innerHeight: number;\n\n constructor(private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n this.innerHeight = window.innerHeight;\n this.activatedRoute.queryParams.subscribe( (queryParams: Params) => this.fullscreen = (queryParams.fullscreen === 'true') );\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event) {\n this.ngOnInit();\n }\n\n ngAfterViewInit() {\n window.setTimeout(() => this.logHeights(), 500);\n }\n\n logHeights() {\n console.log('Window inner height', window.innerHeight);\n console.log('Window outer height', window.outerHeight);\n const elemIds = ['wrapper', 'navigator', 'content', 'tooltip-container', 'page'];\n elemIds.forEach(id => {\n const el = document.getElementById(id);\n if (el) {\n console.log('--------------------');\n console.log(id);\n console.log(el);\n // including the element's border\n const height = el.offsetHeight;\n // not including the element's border\n const cHeight = el.clientHeight;\n console.log('height with border: ', height);\n console.log('height without border: ', cHeight);\n }\n });\n }\n}\n","export class Matrix {\n private readonly A: number = 0\n private readonly B: number = 1\n private readonly C: number = 2\n private readonly D: number = 3\n private readonly E: number = 4\n private readonly F: number = 5\n matrix: number[] = [ 1, 0, 0, 1, 0, 0 ]\n private readonly degree_matrix_mapping = {\n 0: [ 1, 0, 0, 1, 0, 0 ],\n 90: [ 0, 1, -1, 0, 0, 0 ],\n 180: [ -1, 0, 0, -1, 0, 0 ],\n 270: [ 0, -1, 1, 0, 0, 0 ]\n }\n\n constructor(matrix_string?: string, zoomFactor?: number, height?: number, width?: number, rotation?: number){\n if (matrix_string != null){\n this.parseMatrixString(matrix_string);\n }\n if (rotation != undefined && rotation != null){\n this.updateRotation(rotation);\n }\n if (zoomFactor != null && height != null && width != null){\n this.updateOffset(zoomFactor, height, width);\n }\n }\n public get90DegreeRotation(): number {\n let filtered = Object.entries(this.degree_matrix_mapping).filter(key_value =>JSON.stringify(key_value[1].slice(0, -2)) == JSON.stringify(this.matrix.slice(0, -2)))\n return (filtered.length > 0) ? Number(filtered[0][0]) : -1;\n }\n private parseMatrixString(matrix_string: string){\n if (matrix_string.startsWith('matrix')){\n this.matrix = matrix_string.replace('matrix(','').replace(')','').split(' ').map(n =>Number(n))\n } else if (matrix_string.startsWith('rotation')){\n let angle = Number(matrix_string.replace('rotation(','').replace(')',''))\n let radians = Math.PI/180*angle\n this.matrix[this.A] = Math.round(Math.cos(radians))\n this.matrix[this.B] = Math.sin(radians)\n this.matrix[this.C] = Math.sin(radians)*-1\n this.matrix[this.D] = Math.round(Math.cos(radians))\n }\n }\n private updateOffset(zoomFactor: number, height: number, width: number){\n if (this.matrix[this.B] == 0 && this.matrix[this.C] == 0){\n this.matrix[this.E] = 0 \n this.matrix[this.F] = 0 \n } else {\n this.matrix[this.E] = zoomFactor*(height-width)/2\n this.matrix[this.F] = -1*zoomFactor*(height-width)/2 \n }\n }\n private updateRotation(addRotation: number){\n let rotation = (this.get90DegreeRotation() + addRotation) % 360; \n this.matrix = (this.degree_matrix_mapping[rotation] != undefined) ? this.degree_matrix_mapping[rotation] : this.degree_matrix_mapping[0];\n }\n /**\n * Return transform matrix as a string in the format 'matrix(1.0 0.0 0.0 1.0 0.0 0.0)'\n * */\n public toString(): string {\n return 'matrix(' + this.matrix.map(n =>String(n)).join(' ') + ')'\n }\n}\n","import { TextField } from '../models';\n\n/**\n * Create the local zoom factor for a textfield according to the maximum height or width.\n **/\nexport function createLocalZoomFactor(text_field: TextField, max_height, max_width): number {\n if (text_field != null && text_field != undefined){\n let t_height = Number(text_field.height)\n let t_width = Number(text_field.width)\n let local_zoom = max_height/t_height\n if(max_height == -1 && max_width != -1){\n local_zoom = max_width/t_width;\n } else if (max_width == -1 && t_height < t_width){\n local_zoom = (window.innerWidth/2-100)/t_width;\n }\n return local_zoom\n }\n return 1\n} \n","import { Input, OnChanges } from '@angular/core';\nimport { Configuration } from './models';\n/**\n * This is a super class of components that can be configured by passing\n * a configuration to their inputs and running 'processConfiguration' in \n * 'ngOnChanges'.\n *\n * E.g. given a configuration '{\"ComponentName\": { \"ComponentProperty\": value }}' \n * if \"ComponentName\" is the name of the subclass component then\n * 'processConfiguration' will update its property with name\n * \"ComponentProperty\" to this value. If configuration uses wildcard \"*\" then\n * all components that have a property with name \"ComponentProperty\" will\n * update to this value.\n **/\nexport class ConfigurableComponent implements OnChanges {\n /**\n * the configuration\n **/\n @Input() configuration: Configuration;\n /**\n * index of configuration_listeners pointing to primary name of component\n **/\n private readonly primary_name_index: number = 1;\n /**\n * list of configuration keys \n **/\n protected configuration_listeners: string[] = [ '*', this.constructor.name ];\n\n /**\n * Process configuration by updating properties to given values if the keys\n * in configuration_listeners are part of the configuration.\n **/\n protected processConfiguration(){\n this.configuration_listeners.forEach(key =>{\n if (key in this.configuration){\n Object.getOwnPropertyNames(this.configuration[key]).forEach(conf_key =>{\n if (conf_key in this){\n this[conf_key] = this.configuration[key][conf_key]\n }\n });\n }\n });\n }\n /**\n * Add a further configuration key\n **/\n public addConfigurationName(configuration_listener: string){\n if (this.configuration_listeners.indexOf(configuration_listener) == -1){\n this.configuration_listeners.push(configuration_listener);\n }\n }\n /**\n * Get the primary name of the component.\n **/\n public getConfigurationName(): string {\n return this.configuration_listeners[this.primary_name_index];\n }\n /**\n * update configuration\n **/\n ngOnChanges (){\n if (this.configuration != null){\n this.processConfiguration();\n }\n }\n public static updateConfiguration(oldConfiguration: Configuration, newConfiguration: Configuration): Configuration {\n if (oldConfiguration != null){\n Object.getOwnPropertyNames(newConfiguration).forEach(key =>{\n if (key in oldConfiguration && typeof oldConfiguration[key] == 'object' && typeof newConfiguration[key] == 'object') {\n oldConfiguration[key] = this.updateConfiguration(oldConfiguration[key], newConfiguration[key]);\n } else {\n oldConfiguration[key] = newConfiguration[key]\n }\n }); return oldConfiguration;\n } else {\n return newConfiguration;\n }\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJwYWdlLXZpZXcvY29weXJpZ2h0L2NvcHlyaWdodC1zaGVldC9jb3B5cmlnaHQtc2hlZXQuY29tcG9uZW50LmNzcyJ9 */\"","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_BOTTOM_SHEET_DATA} from '@angular/material/bottom-sheet';\nimport { Copyright } from '../../models';\n\n@Component({\n selector: 'copyright-sheet',\n templateUrl: './copyright-sheet.component.html',\n styleUrls: ['./copyright-sheet.component.css']\n})\nexport class CopyrightSheetComponent implements OnInit {\n\n constructor(@Inject(MAT_BOTTOM_SHEET_DATA) private copyright: Copyright) { }\n\n ngOnInit() {\n }\n\n}\n","export default \"#circle {\\n fill: none;\\n}\\n#cc {\\n fill: grey;\\n opacity: 0.2;\\n cursor: pointer;\\n}\\n\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2Utdmlldy9jb3B5cmlnaHQvY29weXJpZ2h0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxVQUFVO0FBQ2I7QUFDQTtHQUNHLFVBQVU7R0FDVixZQUFZO0dBQ1osZUFBZTtBQUNsQiIsImZpbGUiOiJwYWdlLXZpZXcvY29weXJpZ2h0L2NvcHlyaWdodC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI2NpcmNsZSB7XG4gICBmaWxsOiBub25lO1xufVxuI2NjIHtcbiAgIGZpbGw6IGdyZXk7XG4gICBvcGFjaXR5OiAwLjI7XG4gICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbiJdfQ== */\"","import { Component, OnInit, Input, ElementRef } from '@angular/core';\nimport {MatBottomSheet, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { PageViewService } from '../page-view.service';\nimport { CopyrightSheetComponent } from './copyright-sheet/copyright-sheet.component';\nimport { Copyright, Point } from '../models';\n\n\n@Component({\n selector: 'copyright',\n templateUrl: './copyright.component.html',\n styleUrls: ['./copyright.component.css']\n})\nexport class CopyrightComponent implements OnInit {\n @Input() dimension: number;\n highlight: boolean = false;\n @Input() copyright: Copyright;\n\n constructor(private bottomSheet: MatBottomSheet, private pageViewService: PageViewService) { }\n\n ngOnInit() {\n }\n private setHighlight(highlight: boolean){\n this.highlight = highlight;\n }\n private showCopyrightInformation(e: MouseEvent){\n /*let point: Point = { visible: true, clientX: e.clientX, clientY: e.clientY, layerX: e.layerX, layerY: e.layerY }\n this.pageViewService.copyrightService(this.copyright, point);*/\n this.bottomSheet.open(CopyrightSheetComponent, {\n data: this.copyright \n });\n\n }\n}\n","export enum HIGHTLIGHT_CASES {\n DEFAULT = 'default',\n LINE_HOVERED = 'hovered line',\n SEARCHED_WORD = 'text of word == findText',\n SELECTED_LINE = 'selected line',\n SELECTED_WORD = 'selected word',\n WORD_HOVERED = 'hovered word' \n}\n\n","import { Directive, HostListener, Input, ElementRef, OnInit} from '@angular/core';\nimport { PageViewService } from './page-view.service';\nimport { Interactable, Word, Line } from './models';\n\nexport interface XYOffset {\n x: number;\n y: number;\n}\n/**\n * This directive informs the {@link /injectables/PageViewService.html|PageViewService} about\n * mouse events on interactable objects and scrolls interactable objects in view if they are \n * invisible.\n **/\n@Directive({\n selector: '[interactedObject]'\n})\nexport class InteractedDirective implements OnInit {\n /**\n * the object of this rect\n **/\n @Input('interactedObject') interactedObject: Interactable;\n /**\n * the identification string of this Interactable's textfield (e.g. 'first textfield' or 'second textfield')\n **/\n @Input() identity: string = 'first textfield';\n /**\n * the scrollable HTML-container of this Interactable's textfield.\n **/\n @Input() container: HTMLElement;\n /**\n * The time (in milliseconds) the timer should wait before\n * the element is scrolled in view.\n **/\n delay: number = 500;\n /**\n * The ID of the timeout set by {@link /directives/InteractedDirective.html#timeoutScroll|timeoutScroll}.\n **/\n timeoutID: number = -1;\n /**\n * Whether or not the element should scroll into view when the timer expires.\n **/\n doScroll: boolean = false;\n xyOffset: XYOffset = { x: 0, y: 0 };\n\n constructor(private pageViewService: PageViewService, private el: ElementRef) {}\n\n /**\n * Subscribe to on/offHovered and onClicked methods of the {@link /injectables/PageViewService.html|PageViewService}\n * and scroll hovered object in view if it is invisible.\n **/\n ngOnInit(){\n if (this.container != null && this.container != undefined){\n let containerRect: DOMRect = this.container.getBoundingClientRect();\n this.xyOffset = { x: containerRect.left, y: containerRect.top };\n }\n this.interactedObject.textfield_identity = this.identity;\n this.pageViewService.onClickedWord.subscribe(\n (clickedWord: Word) => { this.scrollIntoViewIfNeeded(clickedWord, 'Word', 0)\n });\n this.pageViewService.onHoveredWord.subscribe(\n (hoveredWord: Word) => { this.scrollIntoViewIfNeeded(hoveredWord, 'Word')\n });\n this.pageViewService.offHoveredWord.subscribe(\n (hoveredWord: Word) => { \n this.clearTimeout()\n });\n this.pageViewService.offHoveredLine.subscribe(\n (hoveredLine: Line) => { this.clearTimeout()\n });\n this.pageViewService.onHoveredLine.subscribe(\n (hoveredLine: Line) => { this.scrollIntoViewIfNeeded(hoveredLine, 'Line')\n });\n this.pageViewService.onClickedLine.subscribe(\n (clickedLine: Line) => { this.scrollIntoViewIfNeeded(clickedLine, 'Line', 0)\n });\n }\n /**\n * Clear timeout and prevent element from scrolling into view.\n **/\n private clearTimeout(){\n if(this.timeoutID != -1){\n this.doScroll = false;\n clearTimeout(this.timeoutID);\n this.timeoutID = -1;\n }\n }\n /**\n * Scroll interactable object in view if it is invisible.\n * @param hoveredItem interactable object that is hovered \n * @param hoveredType string representation of object's type (i.e. 'Word' | 'Line')\n **/\n private scrollIntoViewIfNeeded(hoveredItem: Interactable, hoveredType: String, delay: number= this.delay){\n if (hoveredType == 'Word' && this.interactedObject.datatype == 'Word' && this.identity != hoveredItem.textfield_identity){\n let hoveredWord = hoveredItem\n let currentWord = this.interactedObject\n if (currentWord.id == hoveredWord.id && currentWord.is_top_object && this.isElementInvisible()){\n this.timeoutScroll(delay);\n }\n } else if (hoveredType =='Line' && this.interactedObject.datatype == 'Line'){\n let hoveredLine = hoveredItem\n let currentLine = this.interactedObject\n if (currentLine !== hoveredLine && currentLine.id == hoveredLine.id && this.isElementInvisible()){\n this.timeoutScroll(delay)\n }\n }\n }\n /**\n * Scroll element in view if timeout has not been canceled during its countdown.\n **/\n private timeoutScroll(delay: number) {\n let behavior = (delay == 0) ? \"instant\" : \"smooth\";\n this.doScroll = true;\n this.timeoutID = window.setTimeout(()=>{\n if (this.doScroll){\n this.el.nativeElement.scrollIntoView({ 'behavior': behavior}); \n }\n }, delay);\n }\n /**\n * Return whether interactable object is invisible, i.e. whether it is outside of\n * its scrollable container's viewport.\n **/\n private isElementInvisible(): boolean {\n if (this.container == null || this.container == undefined || this.container.getAttribute('class') == 'inline'){\n return false;\n }\n let myRect: DOMRect = this.el.nativeElement.getBoundingClientRect(); \n let containerRect: DOMRect = this.container.getBoundingClientRect();\n return myRect.top < containerRect.top \n || myRect.bottom > containerRect.bottom\n || myRect.left < containerRect.left\n || myRect.right > containerRect.right;\n }\n /**\n * informs the {@link /injectables/PageViewService.html|PageViewService} about\n * click events on {@link #interactedObject|interactedObject}.\n **/\n @HostListener('click', ['$event']) onMouseClick( e: MouseEvent) {\n this.pageViewService.onClickService(this.interactedObject, { visible: true, layerX: e.layerX, layerY: e.layerY, clientX: e.clientX, clientY: e.clientY });\n }\n /**\n * informs the {@link /injectables/PageViewService.html|PageViewService} about\n * mouse enter events on {@link #interactedObject|interactedObject}.\n **/\n @HostListener('mouseenter', ['$event']) onMouseEnter( e: MouseEvent) {\n this.pageViewService.onHoverService(this.interactedObject, { visible: true, layerX: e.layerX, layerY: e.layerY, clientX: e.clientX, clientY: e.clientY });\n }\n /**\n * informs the {@link /injectables/PageViewService.html|PageViewService} about\n * mouse leave events on {@link #interactedObject|interactedObject}.\n **/\n @HostListener('mouseleave') onMouseLeave() {\n this.pageViewService.offHoverService(this.interactedObject);\n }\n}\n","export default \".unhighlighted {\\n fill: white;\\n opacity: 0.0;\\n}\\n.highlighted {\\n fill: lightgrey;\\n opacity: 0.3;\\n}\\n.mouse-pointer {\\n cursor: pointer;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2Utdmlldy9tYXJnaW4tZmllbGQvbGluZS1yZWZlcmVuY2UvbGluZS1yZWZlcmVuY2UuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxZQUFZO0FBQ2Y7QUFDQTtHQUNHLGVBQWU7R0FDZixZQUFZO0FBQ2Y7QUFDQTtHQUNHLGVBQWU7QUFDbEIiLCJmaWxlIjoicGFnZS12aWV3L21hcmdpbi1maWVsZC9saW5lLXJlZmVyZW5jZS9saW5lLXJlZmVyZW5jZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnVuaGlnaGxpZ2h0ZWQge1xuICAgZmlsbDogd2hpdGU7XG4gICBvcGFjaXR5OiAwLjA7XG59XG4uaGlnaGxpZ2h0ZWQge1xuICAgZmlsbDogbGlnaHRncmV5O1xuICAgb3BhY2l0eTogMC4zO1xufVxuLm1vdXNlLXBvaW50ZXIge1xuICAgY3Vyc29yOiBwb2ludGVyO1xufVxuIl19 */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { Line, Continuation, Point, Reference } from '../../models';\nimport { PageViewService } from '../../page-view.service';\n\n@Component({\n selector: 'line-reference',\n templateUrl: './line-reference.component.html',\n styleUrls: ['./line-reference.component.css']\n})\nexport class LineReferenceComponent implements OnInit {\n @Input() line: Line;\n @Input('showReference') referenceName: string;\n highlighted: boolean = false;\n continuation: Continuation;\n reference: Reference;\n\n constructor(private pageViewService: PageViewService) { }\n\n ngOnInit() { \n if (this.line != null && this.referenceName != '' && ((this.referenceName == 'to' && this.line.continuesTo != null)\n || (this.referenceName == 'from' && this.line.continuesFrom != null))){\n this.reference = (this.referenceName == 'to') ? this.line.continuesTo : this.line.continuesFrom;\n this.continuation = { source: this.line.source, reference: this.reference, datatype: 'Continuation', show: this.referenceName }\n }\n }\n\n private showReference(show: boolean, e: MouseEvent){\n this.highlighted = show;\n let point: Point = { visible: show, clientX: e.clientX-10, clientY: e.clientY-80, layerX: e.layerX, layerY: e.layerY }\n if (show){\n this.pageViewService.onHoverService(this.continuation, point);\n this.pageViewService.onHoverService(this.line)\n } else {\n this.pageViewService.offHoverService(this.continuation);\n this.pageViewService.offHoverService(this.line)\n }\n }\n private changeLocation(){\n this.pageViewService.referenceService(this.reference);\n }\n}\n","export default \".marginfield {\\n background-color: white;\\n cursor: default;\\n}\\n\\n.marginfield .text {\\n font-size: 8px;\\n}\\n\\n.marginfield .unhighlighted {\\n fill: white;\\n opacity: 0.0;\\n}\\n\\n.marginfield .highlight {\\n fill: yellow;\\n opacity: 0.3;\\n}\\n\\n.marginfield .border {\\n stroke: #e2fa00;\\n stroke-width:5;\\n opacity: 0.3;\\n}\\n\\n.marginfield .howered_line {\\n fill: #fa301c;\\n opacity: 0.3;\\n}\\n\\n.marginfield .same_word {\\n fill: #c9fac5;\\n opacity: 0.3;\\n}\\n\\n.text_fadeout {\\n fill: #a4a4a4;\\n}\\n\\n.hover {\\n transform: scale(1.5);\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2Utdmlldy9tYXJnaW4tZmllbGQvbWFyZ2luLWZpZWxkLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSx1QkFBdUI7RUFDdkIsZUFBZTtBQUNqQjs7QUFFQTtHQUNHLGNBQWM7QUFDakI7O0FBRUE7R0FDRyxXQUFXO0dBQ1gsWUFBWTtBQUNmOztBQUNBO0dBQ0csWUFBWTtHQUNaLFlBQVk7QUFDZjs7QUFDQTtFQUNFLGVBQWU7RUFDZixjQUFjO0VBQ2QsWUFBWTtBQUNkOztBQUNBO0VBQ0UsYUFBYTtFQUNiLFlBQVk7QUFDZDs7QUFFQTtFQUNFLGFBQWE7RUFDYixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxhQUFhO0FBQ2Y7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkIiLCJmaWxlIjoicGFnZS12aWV3L21hcmdpbi1maWVsZC9tYXJnaW4tZmllbGQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5tYXJnaW5maWVsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5tYXJnaW5maWVsZCAudGV4dCB7XG4gICBmb250LXNpemU6IDhweDtcbn1cblxuLm1hcmdpbmZpZWxkIC51bmhpZ2hsaWdodGVkIHtcbiAgIGZpbGw6IHdoaXRlO1xuICAgb3BhY2l0eTogMC4wO1xufVxuLm1hcmdpbmZpZWxkIC5oaWdobGlnaHQge1xuICAgZmlsbDogeWVsbG93O1xuICAgb3BhY2l0eTogMC4zO1xufVxuLm1hcmdpbmZpZWxkIC5ib3JkZXIge1xuICBzdHJva2U6ICNlMmZhMDA7XG4gIHN0cm9rZS13aWR0aDo1O1xuICBvcGFjaXR5OiAwLjM7XG59XG4ubWFyZ2luZmllbGQgLmhvd2VyZWRfbGluZSB7XG4gIGZpbGw6ICNmYTMwMWM7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLm1hcmdpbmZpZWxkIC5zYW1lX3dvcmQge1xuICBmaWxsOiAjYzlmYWM1O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi50ZXh0X2ZhZGVvdXQge1xuICBmaWxsOiAjYTRhNGE0O1xufVxuXG4uaG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG59XG4iXX0= */\"","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { externalAssignStyle, Continuation, Identifier, Line, LineStub, TextField, Word} from '../models';\nimport { PageViewService } from '../page-view.service';\nimport { HIGHTLIGHT_CASES } from '../highlight_status';\nimport { createLocalZoomFactor } from '../common/shared_functions';\nimport { Matrix } from '../common/matrix';\n/**\n * This component displays an Array of lines.\n **/\n@Component({\n selector: 'margin-field',\n templateUrl: './margin-field.component.html',\n styleUrls: ['./margin-field.component.css']\n})\nexport class MarginFieldComponent implements OnInit, OnChanges {\n /**\n * scrollable HTML-container of this textfield\n **/\n @Input() container: HTMLElement;\n /**\n * the hovered status for a line\n **/\n HOVERED_STATUS: string = HIGHTLIGHT_CASES.LINE_HOVERED\n SELECTED_STATUS: string = HIGHTLIGHT_CASES.SELECTED_LINE\n /**\n * the currently hovered line\n * */\n hoveredLine?: Line;\n /**\n * the currently hovered reference line\n * */\n hoveredReferenceLine?: LineStub;\n /**\n * the currently hovered word\n * */\n hoveredWord?: Word;\n /**\n * an Array of lines that will be displayed.\n **/\n @Input() lines: Line[];\n /**\n * the height of a line rect.\n **/\n line_height: number = 8;\n /**\n * the length of the line rect.\n **/\n line_length: number = 10;\n /**\n * x coordinate of the line rect.\n **/\n line_x: number = 5;\n /**\n * the height of the margin field.\n **/\n margin_height: number = 973.91998;\n /**\n * geometrical top position of the margin field.\n **/\n margin_top: number = 0;\n /**\n * the width of the margin field.\n **/\n margin_width: number = 30;\n /**\n * specifies reference type that should be displayed\n **/\n @Input() showReference: string = \"to\"\n /**\n * show all lines or even lines only (default)\n **/\n @Input() linesWithWords: Line[] = []; \n /**\n * The area of the image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n * The height of the text_field determines {@link #margin_height|margin_height}, while its top position\n * determines {@link #margin_top|margin_top}.\n **/\n @Input() text_field: TextField;\n /**\n * TODO.\n **/\n @Input() transform: string;\n @Input() rotation: number = 0;\n matrix: string = 'matrix(1 0 0 1 0 0)';\n /**\n * The viewbox of this svg component.\n **/\n viewBox: string = '';\n /**\n * initial maximum height of margin field.\n **/\n @Input() max_height: number = -1;\n /**\n * initial maximum width of margin field.\n **/\n @Input() max_width: number = -1;\n /**\n * identifiers of selected lines that should be highlighted.\n **/\n @Input() selectedLines: Identifier[] = [];\n /**\n * global zoom factor\n **/\n @Input() zoomFactor: number = 1;\n /**\n * An optional function that can be passed to this component in order to return a (svg-)style object \n * to the line rects. This function allows the user to extend the style of this component.\n * E.g. by returning { fill: blue } the function overwrites the default behaviour and sets\n * the default highlight color to blue.\n **/\n @Input('assignStyle') extAssignStyle?: externalAssignStyle;\n /**\n * local zoom factor\n **/\n @Input() local_zoom: number = -1;\n updateLines: boolean = false;\n\n /**\n * @param lineservice an information source about (un-)hovered and clicked Lines/Words.\n **/\n constructor( private lineservice: PageViewService) { }\n\n /**\n * Initialize geometrical information and subscribe to {@link /injectables/PageViewService.html|PageViewService}.\n **/\n ngOnInit() {\n if (this.max_height == -1 && this.max_width == -1){\n this.max_height = screen.availHeight;\n }\n this.viewBox = 0 + ' ' + this.margin_top + ' ' + this.margin_width + ' ' + this.margin_height;\n if (this.text_field != null) {\n this.updateViewBox()\n } \n this.lineservice.onHoveredLine.subscribe(\n (changedLine: Line) => { this.hoveredLine = changedLine;}\n );\n this.lineservice.onHoveredContinuation.subscribe(\n (changedContinuation: Continuation) => { this.hoveredReferenceLine = changedContinuation.reference.line;}\n );\n this.lineservice.offHoveredContinuation.subscribe(\n (changedContinuation: Continuation) => { this.hoveredReferenceLine = null}\n );\n this.lineservice.offHoveredLine.subscribe(\n (changedLine: Line) => { this.hoveredLine = null; }\n );\n this.lineservice.onHoveredWord.subscribe(\n (changedWord: Word) => { this.hoveredWord = changedWord;}\n );\n this.lineservice.offHoveredWord.subscribe(\n (changedWord: Word) => { this.hoveredWord = null; }\n );\n }\n /**\n * Update viewBox if there is a change.\n **/\n ngOnChanges(changes: SimpleChanges) {\n if (this.text_field != null) {\n this.updateViewBox()\n } \n }\n /**\n * Update viewBox: set \n * {@link #margin_height|margin_height}, \n * {@link #margin_top|margin_top},\n * {@link #viewBox|viewBox}\n * and {@link #local_zoom|local_zoom} according to \n * {@link #text_field|text_field}.\n **/\n private updateViewBox(){\n this.lines.forEach(line =>line.datatype = \"Line\");\n if (this.showReference == 'to'){\n this.margin_width = (this.lines.some(line =>line.continuesTo != null || line.continuesTo != undefined)) ? this.line_length*2+30 : 30;\n } else {\n let hasReference = this.lines.some(line =>line.continuesFrom != null || line.continuesFrom != undefined)\n this.margin_width = (this.showReference == 'from' && hasReference) ? this.line_length*2+30 : 30;\n this.line_x = (this.showReference == 'from' && hasReference) ? 2*this.line_length : 5;\n }\n this.margin_height = this.text_field.height;\n this.margin_top = this.text_field.top;\n this.viewBox = 0 + ' ' + this.margin_top + ' ' + this.margin_width + ' ' + this.margin_height;\n if (this.local_zoom == -1 && this.text_field != undefined && this.text_field != null){\n this.local_zoom = createLocalZoomFactor(this.text_field, this.max_height, this.max_width);\n }\n if (this.rotation == 180){\n this.matrix = (this.transform == null) \n ? 'matrix(-1 0 0 -1 0 0)' \n : 'matrix(-1 0 0 -1 0 ' + -1*(Number(this.text_field.height)-Number(this.text_field.width))*this.local_zoom*this.zoomFactor + ')';\n } else {\n this.matrix = 'matrix(1 0 0 1 0 0)'\n }\n }\n /**\n * Get the hover status of a line, i.e. whether it is hovered \n * ({@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.LINE_HOVERED})\n * or not ({@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.DEFAULT}).\n **/\n private getHoverStatus(line: Line): string {\n if ( (this.hoveredLine != undefined && this.hoveredLine != null && line.id == this.hoveredLine.id) \n || (this.hoveredReferenceLine != undefined && this.hoveredReferenceLine != null && line.id == this.hoveredReferenceLine.id)\n || (this.hoveredWord != undefined && this.hoveredWord != null && line.id == this.hoveredWord.line)) {\n return HIGHTLIGHT_CASES.LINE_HOVERED; \n } else if (this.selectedLines.length > 0 && this.selectedLines.indexOf(line.id) > -1) {\n return HIGHTLIGHT_CASES.SELECTED_LINE\n } else {\n return HIGHTLIGHT_CASES.DEFAULT; \n }\n }\n /**\n * Assign a style to the rects of a line.\n **/\n private assignStyle(line: Line, hoveredWord: Word, hoveredLine: Line, hoverStatus: string): Object {\n return (this.extAssignStyle != null) ? this.extAssignStyle(line, hoveredWord, hoveredLine, hoverStatus) : {};\n }\n\n private hasWordsOnLine(line: Line) : boolean {\n return this.linesWithWords.length > 0 && this.linesWithWords.indexOf(line) > -1;\n }\n}\n","export default \"#page {\\n width: 100%;\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n.inline {\\n display: inline-block;\\n}\\n.breakline {\\n display: block;\\n height: 50%;\\n overflow: scroll;\\n}\\n.gap {\\n display: inline-block;\\n width: 1px;\\n height: 100%;\\n margin: 0;\\n}\\n#margin {\\n vertical-align:top;\\n display: inline-block;\\n height: 100%;\\n margin: 0;\\n}\\n#textfield {\\n vertical-align:top;\\n display: inline-block;\\n /*width: 95%;*/\\n height: 100%;\\n margin: 0;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2Utdmlldy9wYWdlLXZpZXcuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxTQUFTO0dBQ1QsVUFBVTtHQUNWLG1CQUFtQjtBQUN0QjtBQUNBO0dBQ0cscUJBQXFCO0FBQ3hCO0FBQ0E7R0FDRyxjQUFjO0dBQ2QsV0FBVztHQUNYLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0cscUJBQXFCO0dBQ3JCLFVBQVU7R0FDVixZQUFZO0dBQ1osU0FBUztBQUNaO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIscUJBQXFCO0dBQ3JCLFlBQVk7R0FDWixTQUFTO0FBQ1o7QUFDQTtHQUNHLGtCQUFrQjtHQUNsQixxQkFBcUI7R0FDckIsY0FBYztHQUNkLFlBQVk7R0FDWixTQUFTO0FBQ1oiLCJmaWxlIjoicGFnZS12aWV3L3BhZ2Utdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3BhZ2Uge1xuICAgd2lkdGg6IDEwMCU7XG4gICBtYXJnaW46IDA7XG4gICBwYWRkaW5nOiAwO1xuICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5pbmxpbmUge1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmJyZWFrbGluZSB7XG4gICBkaXNwbGF5OiBibG9jaztcbiAgIGhlaWdodDogNTAlO1xuICAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5nYXAge1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgd2lkdGg6IDFweDtcbiAgIGhlaWdodDogMTAwJTtcbiAgIG1hcmdpbjogMDtcbn1cbiNtYXJnaW4ge1xuICAgdmVydGljYWwtYWxpZ246dG9wO1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgaGVpZ2h0OiAxMDAlO1xuICAgbWFyZ2luOiAwO1xufVxuI3RleHRmaWVsZCB7XG4gICB2ZXJ0aWNhbC1hbGlnbjp0b3A7XG4gICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAvKndpZHRoOiA5NSU7Ki9cbiAgIGhlaWdodDogMTAwJTtcbiAgIG1hcmdpbjogMDtcbn1cbiJdfQ== */\"","import { Component, Input, OnInit, OnChanges, SimpleChanges} from '@angular/core';\nimport { externalAssignClass, externalAssignStyle, Configuration, Identifier, Image, Line, TextField, TextByForeignHand, Word} from './models';\nimport { Matrix} from './common/matrix';\nimport { createLocalZoomFactor } from './common/shared_functions';\n/**\n * This component displays one or two {@link /components/TextFieldComponent.html|TextFieldComponent(s)} \n * and its or their {@link /components/MarginFieldComponent.html|MarginFieldComponent(s)}.\n **/\n@Component({\n selector: 'page-view',\n templateUrl: './page-view.component.html',\n styleUrls: ['./page-view.component.css']\n})\nexport class PageViewComponent implements OnInit, OnChanges {\n @Input() configuration: Configuration;\n /**\n * the search text of words that should be highlighted as {@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.SEARCHED_WORD}.\n **/\n @Input() findText: string;\n /**\n * first texts written by foreign hand \n **/\n @Input() first_foreign_texts: TextByForeignHand[] = [];\n /**\n * the first image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n @Input() first_image: Image;\n /**\n * the Array of lines of the first image that will be displayed by {@link /components/MarginFieldComponent.html|MarginFieldComponent}.\n **/\n @Input() first_lines: Line[];\n first_unevenlines: Line[] = [];\n /**\n * Identification of first textfield.\n **/\n first_textfield_id: string = 'first textfield'\n /**\n * the Array of words of the first image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n @Input() first_words: Word[];\n /**\n * the zoom factor for the first image that will be used by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n first_local_zoom_factor: number = -1;\n /**\n * the (initial) maximum height of the image(s).\n **/\n @Input() max_height: number = -1;\n /**\n * the (initial) maximum width of the image(s).\n **/\n @Input() max_width: number = -1;\n /**\n * should primary url be used for image. use secondary url if false.\n **/\n @Input() preferPrimaryUrl: boolean = true;\n /**\n * Rotation value, i.e. one of [ 0, 90, 180, 270 ].\n **/\n @Input() rotation: number = 0;\n /**\n * second texts written by foreign hand \n **/\n @Input() second_foreign_texts: TextByForeignHand[] = [];\n /**\n * the second image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n @Input() second_image: Image;\n /**\n * the Array of lines of the second image that will be displayed by {@link /components/MarginFieldComponent.html|MarginFieldComponent}.\n **/\n @Input() second_lines: Line[];\n second_unevenlines: Line[] = [];\n /**\n * Identification of second textfield.\n **/\n second_textfield_id: string = 'second textfield'\n /**\n * the Array of words of the second image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n @Input() second_words: Word[];\n /**\n * the zoom factor for the second image that will be used by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n second_local_zoom_factor: number = -1;\n /**\n * An optional function that will be passed to {@link /components/TextFieldComponent.html|TextFieldComponent} \n * in order to return a further highlight class\n * to the word rects when the internal function would return 'textfield unhighlighted'. \n **/\n @Input('assignClass') assignClass?: externalAssignClass;\n /**\n * An optional function that will be passed to {@link /components/TextFieldComponent.html|TextFieldComponent}\n * and {@link /components/MarginFieldComponent.html|MarginFieldComponent}\n * in order to return a (svg-)style object \n * to the word and line rects. This function allows the user to extend the style of this component.\n * E.g. by returning { fill: blue } the function overwrites the default behaviour and sets\n * the default highlight color to blue.\n **/\n @Input('assignStyle') assignStyle?: externalAssignStyle;\n /**\n * global zoom factor.\n **/\n @Input() zoomFactor: number = 1;\n /**\n * identifiers of selected words that should be highlighted.\n **/\n @Input() selectedWords: Identifier[] = [];\n /**\n * identifiers of selected lines that should be highlighted.\n **/\n @Input() selectedLines: Identifier[] = [];\n @Input('startLine') startLineId: Identifier;\n @Input('endLine') endLineId: Identifier;\n @Input() showAllLines: boolean = false;\n @Input() dontShowReference: boolean;\n showReferenceLeft: string = 'from';\n showReferenceRight: string = 'to';\n\n constructor() {}\n \n /**\n * sets {@link /components/PageViewComponent.html#max_height|max_height} if it is unset.\n **/\n ngOnInit() {\n if (this.max_height == -1 && this.max_width == -1){\n this.max_height = screen.availHeight;\n }\n this.checkImages();\n }\n ngOnChanges(){\n if (this.showAllLines){\n this.dontShowReference = true;\n let allLinesFirst = new Set(this.first_words.map(word =>word.line));\n let allLinesSecond = new Set(this.second_words.map(word =>word.line));\n this.first_unevenlines = this.first_lines.filter(line => (line.number % 2 == 1 && allLinesFirst.has(line.id)));\n this.second_unevenlines = this.second_lines.filter(line => (line.number % 2 == 1 && allLinesSecond.has(line.id)));\n } \n if (this.dontShowReference != undefined && this.dontShowReference != null && this.dontShowReference){\n this.showReferenceLeft = ''; \n this.showReferenceRight = '';\n } else {\n this.showReferenceLeft = 'from'; \n this.showReferenceRight = 'to';\n }\n this.checkImages();\n if (this.first_image != null && this.first_image != undefined){\n this.first_local_zoom_factor = createLocalZoomFactor(this.first_image.text_field, this.max_height, this.max_width);\n }\n if (this.second_image != null && this.second_image != undefined){\n this.second_local_zoom_factor = createLocalZoomFactor(this.second_image.text_field, this.max_height, this.max_width);\n }\n }\n /**\n * Check whether only part of image should be displayed and update TextField\n **/\n private checkImages(){\n if (this.first_image != null && this.first_image != undefined && this.startLineId != null && this.startLineId != undefined){\n if(this.first_lines != null && this.first_lines != undefined && this.first_lines.length > 0){\n this.first_image = this.updateTextField(this.first_image, this.first_lines);\n }\n if(this.second_lines != null && this.second_lines != undefined && this.second_lines.length > 0){\n this.second_image = this.updateTextField(this.second_image, this.second_lines);\n }\n }\n }\n /**\n * Return whether transfomation of image resulting from the transform matrix and the \n * current rotation angle (i.e. one of [ 0, 90, 180, 270 ]) requires\n * a dimension switch, i.e. replacement of width and height value.\n * */\n private switchDimensions(transform?: string): boolean {\n return (new Matrix(transform, 1, 0, 0, this.rotation)).get90DegreeRotation() % 180 == 90\n }\n private updateTextField(image: Image, lines: Line[]): Image {\n let endLineId = (this.endLineId != null && this.endLineId != undefined) ? this.endLineId : this.startLineId;\n let startLines = lines.filter(line =>line.id == this.startLineId)\n let endLines = lines.filter(line =>line.id == endLineId)\n if (startLines.length > 0 && endLines.length > 0){\n let top = (startLines[0].top > 10) ? startLines[0].top-10 : startLines[0].top;\n let height = (endLines[0].bottom-top)+10;\n let text_field: TextField = { top: top, left: image.text_field.left, width: image.text_field.width, height: height }\n return { x: image.x, y: image.y, width: image.width, height: image.height, filename: image.filename,\n URL: image.URL, secondaryURL: image.secondaryURL, text_field: text_field, transform: image.transform, \n copyright: image.copyright }\n }\n return image;\n }\n /**\n * Returns whether the two images can be displayed as columns.\n **/\n private hasColumnStyle(): boolean {\n if (this.zoomFactor <= 1 || this.first_image == null || this.second_image == null){\n return true \n }\n let newLeftWidth = this.max_height/this.first_image.text_field.height*this.zoomFactor*this.first_image.text_field.width;\n let newRightWidth = this.max_height/this.second_image.text_field.height*this.zoomFactor*this.second_image.text_field.width;\n return newLeftWidth + newRightWidth < screen.availWidth;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatBottomSheetModule,MatButtonModule,MatCheckboxModule,MatDialogModule,MatExpansionModule,MatFormFieldModule,MatInputModule,MatListModule,MatPaginatorModule,MatRadioModule,MatSelectModule,MatSidenavModule,MatSortModule,MatTableModule,MatToolbarModule,MatButtonToggleModule,MatCardModule,MatIconModule,MatMenuModule,MatTabsModule,MatTooltipModule\n} from '@angular/material';\nimport { MarginFieldComponent } from './margin-field/margin-field.component';\nimport { TextFieldComponent} from './textfield-component/textfield.component';\nimport { InteractedDirective } from './interacted.directive';\nimport { PageViewComponent } from './page-view.component';\nimport { PageViewService } from './page-view.service';\nimport { CopyrightComponent } from './copyright/copyright.component';\nimport { LineReferenceComponent } from './margin-field/line-reference/line-reference.component';\nimport { CopyrightSheetComponent } from './copyright/copyright-sheet/copyright-sheet.component';\n\n@NgModule({\n declarations: [\n InteractedDirective,\n MarginFieldComponent,\n TextFieldComponent,\n PageViewComponent,\n CopyrightComponent,\n LineReferenceComponent,\n CopyrightSheetComponent\n ],\n imports: [\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatPaginatorModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n CommonModule\n ],\n providers: [\n PageViewService\n ],\n exports: [\n MarginFieldComponent,\n TextFieldComponent,\n PageViewComponent,\n CopyrightComponent\n ],\n entryComponents: [CopyrightSheetComponent]\n})\nexport class PageViewModule { }\n","import {EventEmitter, Injectable} from '@angular/core';\nimport { Configuration, Continuation, Copyright, Interactable, Line, Point, Reference, TextByForeignHand, Word } from './models';\n/**\n * This is an information service about clicked and (un-)hovered\n * {@link /interfaces/Line.html|Lines}, \n * {@link /miscellaneous/typealiases.html#Word|Words}.\n * and {@link /interfaces/TextByForeignHand.html|TextByForeignHands}.\n * */\n@Injectable()\nexport class PageViewService {\n /**\n * hovered line emitter\n **/\n onHoveredLine = new EventEmitter();\n /**\n * off hovered line emitter\n **/\n offHoveredLine = new EventEmitter();\n /**\n * clicked line emitter\n **/\n onClickedLine = new EventEmitter();\n /**\n * hovered word emitter\n **/\n onHoveredWord = new EventEmitter();\n /**\n * off hovered word emitter\n **/\n offHoveredWord = new EventEmitter();\n /**\n * clicked word emitter\n **/\n onClickedWord = new EventEmitter();\n /**\n * clicked text by foreign hand emitter\n **/\n onClickedTextByForeignHand = new EventEmitter();\n /**\n * hovered text by foreign hand emitter\n **/\n onHoveredTextByForeignHand = new EventEmitter();\n /**\n * off hovered text by foreign hand emitter\n **/\n offHoveredTextByForeignHand = new EventEmitter();\n /**\n * hovered line continuation \n **/\n onHoveredContinuation = new EventEmitter();\n /**\n * off hovered line continuation \n **/\n offHoveredContinuation = new EventEmitter();\n /**\n * point where mouse hovered/clicked\n **/\n mousePosition = new EventEmitter();\n /**\n * Reference change emitter, subscribe in order to navigate to reference.\n **/\n reference = new EventEmitter();\n /**\n * copyright change emitter\n * */\n copyright = new EventEmitter();\n\n public referenceService(reference: Reference){\n this.reference.emit(reference);\n }\n public copyrightService(copyright: Copyright, point?: Point){\n this.copyright.emit(copyright);\n if (point != null && point != undefined){\n this.mousePosition.emit(point);\n }\n }\n /**\n * emit an event on 'onClicked' + interactable.datatype\n **/\n public onClickService(interactable: Interactable, point?: Point){\n this['onClicked' + interactable.datatype].emit(interactable);\n if (interactable.datatype != 'Line' && point != null && point != undefined){\n this.mousePosition.emit(point);\n }\n }\n /**\n * emit an event on 'onHover' + interactable.datatype\n **/\n public onHoverService(interactable: Interactable, point?: Point){\n this['onHovered' + interactable.datatype].emit(interactable);\n if (interactable.datatype != 'Line' && point != null && point != undefined){\n this.mousePosition.emit(point);\n }\n }\n /**\n * emit an event on 'offHover' + interactable.datatype\n **/\n public offHoverService(interactable: Interactable){\n this['offHovered' + interactable.datatype].emit(interactable);\n this.mousePosition.emit({visible: false, clientX: -1, clientY: -1, layerX: -1, layerY: -1 });\n }\n}\n","export default \".textfield {\\n /*background-color: #DADADA;*/\\n}\\n.textfield .deleted {\\n fill: grey;\\n opacity: 0.3;\\n}\\n.textfield .highlight_red {\\n fill: #e20000;\\n opacity: 0.3;\\n}\\n.textfield .highlight_yellow {\\n fill: #e2fa00;\\n opacity: 0.3;\\n}\\n.textfield .highlight_magenta {\\n fill: #FF00FF;\\n opacity: 0.3;\\n}\\n.textfield .highlight_foreign_text {\\n fill: blue;\\n opacity: 0.5;\\n}\\n.textfield .unhighlighted {\\n opacity: 0.0;\\n}\\n.textfield .highlight_path {\\n stroke: red;\\n fill: none;\\n stroke-width: 0.2;\\n}\\n.textfield .unhighlighted_path {\\n stroke: none;\\n fill: none;\\n opacity: 0.0;\\n}\\n.textfield .border {\\n stroke: #e2fa00;\\n stroke-width:5;\\n opacity: 0.3;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2Utdmlldy90ZXh0ZmllbGQtY29tcG9uZW50L3RleHRmaWVsZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSxVQUFVO0VBQ1YsWUFBWTtBQUNkO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsWUFBWTtBQUNkO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsWUFBWTtBQUNkO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsWUFBWTtBQUNkO0FBQ0E7RUFDRSxVQUFVO0VBQ1YsWUFBWTtBQUNkO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFDQTtHQUNHLFdBQVc7R0FDWCxVQUFVO0dBQ1YsaUJBQWlCO0FBQ3BCO0FBQ0E7R0FDRyxZQUFZO0dBQ1osVUFBVTtHQUNWLFlBQVk7QUFDZjtBQUNBO0VBQ0UsZUFBZTtFQUNmLGNBQWM7RUFDZCxZQUFZO0FBQ2QiLCJmaWxlIjoicGFnZS12aWV3L3RleHRmaWVsZC1jb21wb25lbnQvdGV4dGZpZWxkLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dGZpZWxkIHtcbiAgLypiYWNrZ3JvdW5kLWNvbG9yOiAjREFEQURBOyovXG59XG4udGV4dGZpZWxkIC5kZWxldGVkIHtcbiAgZmlsbDogZ3JleTtcbiAgb3BhY2l0eTogMC4zO1xufVxuLnRleHRmaWVsZCAuaGlnaGxpZ2h0X3JlZCB7XG4gIGZpbGw6ICNlMjAwMDA7XG4gIG9wYWNpdHk6IDAuMztcbn1cbi50ZXh0ZmllbGQgLmhpZ2hsaWdodF95ZWxsb3cge1xuICBmaWxsOiAjZTJmYTAwO1xuICBvcGFjaXR5OiAwLjM7XG59XG4udGV4dGZpZWxkIC5oaWdobGlnaHRfbWFnZW50YSB7XG4gIGZpbGw6ICNGRjAwRkY7XG4gIG9wYWNpdHk6IDAuMztcbn1cbi50ZXh0ZmllbGQgLmhpZ2hsaWdodF9mb3JlaWduX3RleHQge1xuICBmaWxsOiBibHVlO1xuICBvcGFjaXR5OiAwLjU7XG59XG4udGV4dGZpZWxkIC51bmhpZ2hsaWdodGVkIHtcbiAgb3BhY2l0eTogMC4wO1xufVxuLnRleHRmaWVsZCAuaGlnaGxpZ2h0X3BhdGgge1xuICAgc3Ryb2tlOiByZWQ7XG4gICBmaWxsOiBub25lO1xuICAgc3Ryb2tlLXdpZHRoOiAwLjI7XG59XG4udGV4dGZpZWxkIC51bmhpZ2hsaWdodGVkX3BhdGgge1xuICAgc3Ryb2tlOiBub25lO1xuICAgZmlsbDogbm9uZTtcbiAgIG9wYWNpdHk6IDAuMDtcbn1cbi50ZXh0ZmllbGQgLmJvcmRlciB7XG4gIHN0cm9rZTogI2UyZmEwMDtcbiAgc3Ryb2tlLXdpZHRoOjU7XG4gIG9wYWNpdHk6IDAuMztcbn1cbiJdfQ== */\"","import { Component, ElementRef, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { externalAssignClass, externalAssignStyle, Configuration, Continuation, Identifier, Image, Line, Position, PositionalObject, TextByForeignHand, Word, USE_EXTERNAL_TOOLTIP} from '../models';\nimport { PageViewService } from '../page-view.service';\nimport { HIGHTLIGHT_CASES } from '../highlight_status';\nimport { ConfigurableComponent } from '../configurable-component';\nimport { Matrix } from '../common/matrix';\nimport { createLocalZoomFactor } from '../common/shared_functions';\n/**\n * This component displays an image with word hovers.\n **/\n@Component({\n selector: 'text-field',\n templateUrl: './textfield.component.html',\n styleUrls: ['./textfield.component.css']\n})\nexport class TextFieldComponent extends ConfigurableComponent implements OnInit, OnChanges {\n /**\n * scrollable HTML-container of this textfield\n **/\n @Input() container: HTMLElement;\n /**\n * the currently clicked word\n * */\n clickedWord?: Word;\n /**\n * Debug mode.\n **/\n debug: boolean = false;\n /**\n * the search text of words that should be highlighted as {@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.SEARCHED_WORD}.\n **/\n @Input() findText: string;\n /**\n * texts written by foreign hand\n **/\n @Input() foreign_texts: TextByForeignHand[] = [];\n /**\n * the currently hovered line\n * */\n hoveredLine?: Line;\n /**\n * the currently hovered text by foreign hand\n * */\n hoveredTextByForeignHand?: TextByForeignHand;\n /**\n * the currently hovered word\n * */\n hoveredWord?: Word;\n /**\n * the image that will be displayed.\n **/\n @Input() image: Image;\n /**\n * textfield's identity.\n **/\n @Input() identity: string = 'first textfield';\n /**\n * The (unzoomed) height of the root svg.\n *\n * (The actual height is 'image_height*local_zoom*zoomFactor'\n * */\n image_height: number = 400;\n /**\n * image properties for the svg-image.\n * */\n imageSpec = { x: 0, y: 0, height: 973.91998, width: 2038.5601, URL: null, secondaryURL: null, transform: 'matrix(1 0 0 1 0 0)' };\n /**\n * The (unzoomed) width of the root svg.\n *\n * (The actual width is 'image_width*local_zoom*zoomFactor'\n * */\n image_width: number = 300;\n /**\n * the viewBox of the root svg specifying the area of the svg that will be shown.\n * */\n viewBox: string = '';\n /**\n * the (initial) maximum height of the image.\n **/\n @Input() max_height: number = -1;\n /**\n * the (initial) maximum width of the image.\n **/\n @Input() max_width: number = -1;\n /**\n * should primary Url be used for image. Use secondary Url if false.\n **/\n @Input() preferPrimaryUrl: boolean = true;\n /**\n * Rotation value, i.e. one of [ 0, 90, 180, 270 ].\n **/\n @Input() rotation: number = 0;\n /**\n * Use extended tooltip.\n **/\n @Input() useExtendedTooltip: boolean = false;\n /**\n * the words that will be displayed as rects on the image.\n **/\n @Input() words: Word[];\n /**\n * global zoom factor.\n **/\n @Input() zoomFactor: number = 1;\n /**\n * local zoom factor that sets the height and width of the image according to {@link #max_height|max_height}.\n * */\n @Input() local_zoom: number = -1;\n /**\n * An optional function that can be passed to this component in order to return a further highlight class\n * to the word rects when the internal function would return 'textfield unhighlighted'.\n **/\n @Input('assignClass') externalAssignClassAfter?: externalAssignClass;\n /**\n * An optional function that can be passed to this component in order to return a (svg-)style object\n * to the word rects. This function allows the user to extend the style of this component.\n * E.g. by returning { fill: blue } the function overwrites the default behavior and sets\n * the default highlight color to blue.\n **/\n @Input('assignStyle') extAssignStyle?: externalAssignStyle;\n /**\n * identifiers of selected words that should be highlighted.\n **/\n @Input() selectedWords: Identifier[] = [];\n /**\n * identifiers of selected lines that should be highlighted.\n **/\n @Input() selectedLines: Identifier[] = [];\n /**\n * @param pageViewService an information source about (un-)hovered and clicked Lines/Words.\n * */\n constructor( protected pageViewService: PageViewService) {\n super()\n }\n ngOnInit() {\n if (this.max_height == -1 && this.max_width == -1){\n this.max_height = screen.availHeight;\n }\n if (this.image.text_field != null) {\n this.updateImageProperties();\n } else if (this.imageSpec != null) {\n this.image_width = this.imageSpec.width;\n this.image_height = this.imageSpec.height;\n this.viewBox = '0 0 ' + this.image_width + ' ' + this.image_height;\n }\n this.pageViewService.onClickedWord.subscribe(\n (changedWord: Word ) => this.clickedWord = changedWord\n );\n this.pageViewService.onHoveredWord.subscribe(\n (changedWord: Word) => this.hoveredWord = changedWord\n );\n this.pageViewService.offHoveredWord.subscribe(\n (changedWord: Word) => { this.hoveredWord = null; }\n );\n this.pageViewService.onHoveredLine.subscribe(\n (changedLine: Line) => { this.hoveredLine = changedLine}\n );\n this.pageViewService.offHoveredLine.subscribe(\n (changedLine: Line) => { this.hoveredLine = null; }\n );\n this.pageViewService.onHoveredTextByForeignHand.subscribe(\n (changedForeignText: TextByForeignHand) => { this.hoveredTextByForeignHand = changedForeignText;}\n );\n this.pageViewService.offHoveredTextByForeignHand.subscribe(\n (changedForeignText: TextByForeignHand) => { this.hoveredTextByForeignHand = null; }\n );\n\n }\n ngOnChanges() {\n super.ngOnChanges()\n if (this.image.text_field != null) {\n this.updateImageProperties();\n }\n if(this.debug && this.findText != null && this.findText != ''){\n let words = this.words.filter(word =>word.text == this.findText)\n if (words.length > 0){\n this.pageViewService.onHoverService(words[0], {visible: true, clientX: 100, clientY: 100, layerX: -1, layerY: -1 })\n }\n }\n }\n /**\n * Update image properties: use textfield in order to specify the area of the image that will be shown.\n *\n * @param URL set alternative image url. This will be used on image load error (see Template)\n **/\n private updateImageProperties(URL?: string){\n let previous_word: Word = null;\n for (var i = 0; i < this.words.length; i++){\n this.words[i].datatype = \"Word\";\n if (previous_word == null || previous_word.id != this.words[i].id){\n previous_word = this.words[i]\n previous_word.is_top_object = true;\n } else if (previous_word.top > this.words[i].top){\n previous_word.is_top_object = false;\n previous_word = this.words[i]\n previous_word.is_top_object = true;\n } else {\n this.words[i].is_top_object = false;\n }\n }\n this.foreign_texts.forEach(foreignText =>foreignText.datatype = \"TextByForeignHand\");\n let image_left = this.image.text_field.left;\n let image_top = this.image.text_field.top;\n this.image_width = this.image.text_field.width;\n this.image_height = this.image.text_field.height;\n if (this.local_zoom == -1 && this.image != undefined && this.image != null){\n this.local_zoom = createLocalZoomFactor(this.image.text_field, this.max_height, this.max_width);\n }\n this.imageSpec.x = this.image.x;\n this.imageSpec.y = this.image.y;\n this.imageSpec.height = this.image.height;\n this.imageSpec.width = this.image.width;\n this.imageSpec.URL = (this.preferPrimaryUrl) ? this.image.URL : this.image.secondaryURL;\n this.imageSpec.secondaryURL = (this.preferPrimaryUrl) ? this.image.URL : this.image.URL;\n if (URL != null){\n this.imageSpec.secondaryURL = this.imageSpec.URL\n this.imageSpec.URL = URL;\n }\n this.viewBox = image_left + ' ' + image_top + ' ' + this.image_width + ' ' + this.image_height;\n let matrix = new Matrix(this.image.transform, this.local_zoom*this.zoomFactor, this.image_height, this.image_width, this.rotation);\n this.imageSpec.transform = matrix.toString()\n }\n /**\n * Return the position (i.e. '{ x: x, y: y }') for the copyright symbol.\n * @param dimension dimension of the copyright symbol.\n **/\n private getCopyrightPosition(dimension: number): Object {\n if (this.image.text_field != null && this.image.text_field != undefined){\n let positions: Position[] = [\n { x: Number(this.image.text_field.left) +10/this.zoomFactor,\n y: Number(this.image.text_field.top) +10/this.zoomFactor },\n { x: Number(this.image.text_field.left),\n y: Number(this.image.text_field.top)},\n { x: Number(this.image.text_field.width) + Number(this.image.text_field.left) -15/this.zoomFactor - dimension,\n y: Number(this.image.text_field.height) + Number(this.image.text_field.top) -15/this.zoomFactor - dimension },\n { x: Number(this.image.text_field.width) + Number(this.image.text_field.left) - dimension,\n y: Number(this.image.text_field.height) + Number(this.image.text_field.top) - dimension },\n { x: Number(this.image.text_field.left) +10/this.zoomFactor,\n y: Number(this.image.text_field.height) + Number(this.image.text_field.top) -10/this.zoomFactor - dimension },\n { x: Number(this.image.text_field.width) + Number(this.image.text_field.left) -10/this.zoomFactor - dimension,\n y: Number(this.image.text_field.top) +10/this.zoomFactor},\n { x: Number(this.image.text_field.width) + Number(this.image.text_field.left) - dimension,\n y: Number(this.image.text_field.top)}\n ]\n let default_index = 1\n let index = 0;\n let position_found = false;\n while (!position_found && index < positions.length){\n let left = positions[index].x\n let top = positions[index].y\n if(!this.doesPositionConflict(left, top, dimension, this.words)\n && !this.doesPositionConflict(left, top, dimension, this.foreign_texts)){\n position_found = true;\n } else {\n index++\n }\n }\n let left = (index < positions.length) ? positions[index].x : positions[default_index].x;\n let top = (index < positions.length) ? positions[index].y : positions[default_index].y;\n return { x: `${left}px`, y: `${top}px` }\n } else {\n return { x: '0px', y: '0px' }\n }\n }\n /**\n * Return whether position specified by left, top and dimension does conflict with one of the positional objects' position.\n *\n * @param left left of position\n * @param top top of position\n * @param dimension dimension of position\n * @param positionalObjects Array of positions\n **/\n private doesPositionConflict(left: number, top: number, dimension: number, positionalObjects: PositionalObject[]): boolean {\n let conflicts = positionalObjects.filter(positionalObject =>\n !(Number(positionalObject.left) + Number(positionalObject.width) < left || Number(positionalObject.left) > left + dimension\n || Number(positionalObject.top) > top + dimension || Number(positionalObject.top) + Number(positionalObject.height) < top)\n )\n return conflicts.length > 0\n }\n /**\n * Get the hover status of the word as one of the {@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES}.\n **/\n private getHoverStatus(word: Word, skipFindText: boolean = false): string {\n if (this.selectedWords.indexOf(word.id) > -1\n || this.selectedLines.indexOf(word.line) > -1){\n return HIGHTLIGHT_CASES.SELECTED_WORD;\n }\n if (!skipFindText && this.findText != null && this.findText != ''){\n let findRegex = '^[^\\\\w]*(' + this.findText.split(' ').join('|') + ')'\n return (word.text.match(findRegex)\n || (word.edited_text != null && word.edited_text.match(findRegex))\n ) ? HIGHTLIGHT_CASES.SEARCHED_WORD : this.getHoverStatus(word, true);\n }\n if (typeof this.hoveredLine !== 'undefined' && this.hoveredLine !== null) {\n return (this.hoveredLine.id == word.line\n || (this.hoveredLine.continuesTo != undefined && this.hoveredLine.continuesTo != null && this.hoveredLine.continuesTo.line.id == word.line)\n || (this.hoveredLine.continuesFrom != undefined && this.hoveredLine.continuesFrom != null && this.hoveredLine.continuesFrom.line.id == word.line))\n ? HIGHTLIGHT_CASES.LINE_HOVERED : HIGHTLIGHT_CASES.DEFAULT;\n } else if (typeof this.hoveredWord !== 'undefined' && this.hoveredWord !== null){\n return (this.hoveredWord.id == word.id) ? HIGHTLIGHT_CASES.WORD_HOVERED : HIGHTLIGHT_CASES.DEFAULT;\n }\n return HIGHTLIGHT_CASES.DEFAULT;\n }\n /**\n * Return a css class for word that will be used with [ngClass] in order to (un-)highlight the word's rect.\n *\n * If a function has been passed to Input {@link #assignClass|assignClass},\n * this function will call it if {@link #getHoverStatus|getHoverStatus(word)} == {@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.DEFAULT}.\n **/\n private assignClass(positionalObject: PositionalObject, elementName?: string): string {\n if (positionalObject.datatype == 'TextByForeignHand'){\n return (this.hoveredTextByForeignHand != null && this.hoveredTextByForeignHand.id == positionalObject.id) ?\n 'text_field highlight_foreign_text' : 'text_field unhighlighted'\n }\n let word = positionalObject;\n if (elementName != null) {\n return (this.getHoverStatus(word) == HIGHTLIGHT_CASES.DEFAULT) ? `text_field unhighlighted_${elementName}` : `text_field highlight_${elementName}`;\n }\n switch(this.getHoverStatus(word)) {\n case HIGHTLIGHT_CASES.SELECTED_WORD: {\n return 'textfield highlight_magenta';\n }\n case HIGHTLIGHT_CASES.SEARCHED_WORD: {\n return 'textfield highlight_red';\n }\n case HIGHTLIGHT_CASES.LINE_HOVERED: {\n return (word.deleted) ? 'textfield deleted' : 'textfield highlight_yellow';\n }\n case HIGHTLIGHT_CASES.WORD_HOVERED: {\n return (word.deleted) ? 'textfield deleted' : 'textfield highlight_yellow';\n }\n case HIGHTLIGHT_CASES.DEFAULT: {\n return (this.externalAssignClassAfter != null) ? this.externalAssignClassAfter(word, this.hoveredWord, this.hoveredLine) : 'textfield unhighlighted';\n }\n }\n }\n /**\n * Assign a style to the rects of a line.\n **/\n private assignStyle(word: Word, hoveredWord: Word, hoveredLine: Line, hoverStatus: string): Object {\n return (this.extAssignStyle != null) ? this.extAssignStyle(word, hoveredWord, hoveredLine, hoverStatus) : {};\n }\n private msg(URL: string){\n if(this.preferPrimaryUrl){\n // console.log(URL + ' TODO: show smaller image during loading');\n }\n }\n}\n","export default \".text {\\n text-align: justify;\\n width: 600px;\\n}\\n.img {\\n margin-top: 20px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3QuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLG1CQUFtQjtHQUNuQixZQUFZO0FBQ2Y7QUFDQTtHQUNHLGdCQUFnQjtBQUNuQiIsImZpbGUiOiJwcm9qZWN0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dCB7XG4gICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICAgd2lkdGg6IDYwMHB4O1xufVxuLmltZyB7XG4gICBtYXJnaW4tdG9wOiAyMHB4O1xufVxuIl19 */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-project',\n templateUrl: './project.component.html',\n styleUrls: ['./project.component.css']\n})\nexport class ProjectComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \".content-area {\\n height: 100%;\\n width: 80%;\\n}\\n\\n.nav-container {\\n height: 100%;\\n width: 50%;\\n display: table-cell;\\n}\\n\\n.content-container {\\n height: 100%;\\n display: table-cell;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL3F1YW50L3F1YW50LmNvbXBvbmVudC5zY3NzIiwicXVhbnQvcXVhbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxZQUFBO0VBQ0EsVUFBQTtBQ0NGOztBREVBO0VBQ0UsWUFBQTtFQUVBLFVBQUE7RUFDQSxtQkFBQTtBQ0FGOztBREdBO0VBQ0UsWUFBQTtFQUdBLG1CQUFBO0FDRkYiLCJmaWxlIjoicXVhbnQvcXVhbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGVudC1hcmVhIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogODAlO1xufVxuXG4ubmF2LWNvbnRhaW5lciB7XG4gIGhlaWdodDoxMDAlO1xuICAvL21pbi13aWR0aDogdW5zZXQ7IC8vIG5lZWRlZCBiZWNhdXNlIGFuZ3VsYXIgc2V0cyBhbiBvd24gbWluIHdpZHRoIT9cbiAgd2lkdGg6NTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuXG4uY29udGVudC1jb250YWluZXIge1xuICBoZWlnaHQ6MTAwJTtcbiAgLy8gbWluLXdpZHRoOiB1bnNldDsgLy8gbmVlZGVkIGJlY2F1c2UgYW5ndWxhciBzZXRzIGFuIG93biBtaW4gd2lkdGghP1xuICAvLyB3aWR0aDoyMHB4O1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuIiwiLmNvbnRlbnQtYXJlYSB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDgwJTtcbn1cblxuLm5hdi1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiA1MCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn0iXX0= */\"","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport {ActivatedRoute, Params} from '@angular/router';\n\n@Component({\n selector: 'app-quant',\n templateUrl: './quant.component.html',\n styleUrls: ['./quant.component.scss']\n})\nexport class QuantComponent implements OnInit {\n private readonly leftOffset = 361;\n width: number = 1000;\n\n constructor(private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe( (queryParams: Params) =>{\n this.width = (queryParams.navBarOpenState === 'true') ? window.innerWidth - this.leftOffset : window.innerWidth - 20;\n });\n }\n\n}\n","export default \"#page {\\n margin-top: 10px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJoaXpvbWUtdmlldy1jb21wb25lbnQvcmhpem9tZS12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csZ0JBQWdCO0FBQ25CIiwiZmlsZSI6InJoaXpvbWUtdmlldy1jb21wb25lbnQvcmhpem9tZS12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3BhZ2Uge1xuICAgbWFyZ2luLXRvcDogMTBweDtcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport {ActivatedRoute, Params } from '@angular/router';\n\n@Component({\n selector: 'app-rhizome-view-component',\n templateUrl: './rhizome-view-component.component.html',\n styleUrls: ['./rhizome-view-component.component.css']\n})\nexport class RhizomeViewComponentComponent implements OnInit {\n fullscreen: boolean;\n\n constructor(private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe( (queryParams: Params) => this.fullscreen = (queryParams.fullscreen === 'true') );\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\n\n@Injectable()\nexport class NavigationServiceService {\n\n constructor( private router: Router,\n private activatedRoute: ActivatedRoute ) {\n }\n\n /**\n * updateRoute\n * routes to the active url with the actual or passed query params of this class.\n */\n updateRoute(qParams?: Params, relPath?: string) {\n if ( relPath ) {\n this.router.navigate([relPath], { relativeTo: this.activatedRoute, queryParams: qParams, queryParamsHandling: 'merge' });\n } else {\n this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: qParams, queryParamsHandling: 'merge' });\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Parser, Generator, Wildcard } from 'sparqljs';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\n\n\n@Injectable()\nexport class QueryService {\n constructor(private http: HttpClient) {\n }\n\n parser = new Parser();\n sparqlGenerator = new Generator({});\n\n /**\n * Gets the data from an endpoint via http post\n *\n * @param baseUrl: The url of the endpoint.\n * @param query: The query to run.\n * @param queryType: \"CONSTRUCT\" or \"QUERY\"\n * @returns the response.\n */\n public getData(baseUrl: string, query: string, queryType?: string ) {\n let httpOptions;\n if (queryType === 'CONSTRUCT') {\n // A construct does contain a text as response, not a json, so responseType must be 'text' to avoid parse errors\n httpOptions = { headers: new HttpHeaders({'Content-Type': 'application/sparql-query', 'Accept': 'text/turtle'}),\n responseType: 'text'};\n return this.http.post(baseUrl, query, httpOptions).toPromise();\n } else {\n httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/sparql-query',\n 'Accept': 'application/sparql-results+json; charset=UTF-8'})};\n return this.http.post(baseUrl, query, httpOptions).toPromise();\n }\n }\n\n /**\n * Gets a text file by its name from the directory assets/queries.\n *\n * @param filename The name of the file + file name extension.\n * @returns the text of the file.\n */\n public getQueryfromFilename(filename) {\n return this.http.get('../assets/queries/' + filename, {responseType: 'text'}).toPromise();\n }\n\n /**\n * Gets a query string from a given file in the directory assets/queries.\n *\n * @param filename The name of the file + file name extension.\n * @returns The JSON equivalence of the parsed query.\n */\n public parseQueryFromFile(filename) {\n return this.getQueryfromFilename(filename )\n .then(query => {\n this.parser.parse(query);\n } );\n }\n\n /**\n * getQueryForItem()\n * Parametrizes a given baseQuery with a iri passed, so the iri will be the resource of the where clause\n *\n * @param subjectIri: The iri of the selected resource\n * @param baseQuery: name of the query to parametrize\n * @param propertyIri: The iri of the selected property\n * @param objectIri: The iri of the selected object\n * @returns the query for the resource.\n */\n public parametrizeQueryWithItem(baseQuery: string, subjectIri?: string, propertyIri?: string, objectIri?: string): string {\n let parsedQuery = this.parser.parse(baseQuery);\n // parametrize/reset the subject iri to the word's iri we like to query for\n if (subjectIri && subjectIri !== '') {\n parsedQuery.where[0].triples[0].subject = {'termType': 'NamedNode', 'value': decodeURI(subjectIri) };\n }\n\n if (propertyIri && propertyIri !== '') {\n parsedQuery.where[0].triples[0].predicate = {'termType': 'NamedNode', 'value': decodeURI(propertyIri) };\n }\n\n if (objectIri && objectIri !== '') {\n parsedQuery.where[0].triples[0].object = {'termType': 'NamedNode', 'value': decodeURI(objectIri) };\n }\n // generate the new query string and return it\n return this.sparqlGenerator.stringify(parsedQuery);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CacheService {\n cache = {};\n\n constructor() { }\n\n public getItem(key: string): any {\n try {\n return JSON.parse(localStorage.getItem(key));\n } catch(e) {\n try {\n return this.cache[key];\n } catch(e){\n return null;\n }\n }\n }\n public removeItem(key: string){\n try { delete this.cache[key]; } catch(e){}\n try { localStorage.removeItem(key); } catch(e){}\n }\n public setItem(key: string, data: any){\n this.cache[key] = data;\n try {\n localStorage.setItem(key, JSON.stringify(data));\n } catch(e) {\n localStorage.clear();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ResultRange } from './paginator-result-status';\n\n@Pipe({\n name: 'pageResultFilter'\n})\nexport class PageResultFilterPipe implements PipeTransform {\n\n transform(results: any[], range: ResultRange): any[] {\n if (results.length <= range.start){\n return results;\n }\n return results.slice(range.start, range.end);\n }\n\n}\n","import {PageEvent} from '@angular/material/paginator';\nimport { FoundPage} from '../datatypes/search';\nimport { PageIndexUpdater } from '../models';\n\nexport interface ResultRange {\n start: number;\n end: number;\n}\n\nexport class PaginatorResultStatus {\n resultLength: number;\n resultRange: ResultRange;\n resultIndex: number = 0;\n pageIndexUpdater: PageIndexUpdater;\n pageSizeOptions: number[] = [5, 10, 25, 100];\n\n constructor(resultLength: number, pageIndexUpdater?: PageIndexUpdater){\n this.resultLength = resultLength;\n this.resultRange = { start: 0, end: this.resultLength-1 };\n this.pageIndexUpdater = pageIndexUpdater;\n }\n updateResultRange(index: number){\n this.resultRange = null;\n this.resultIndex = index;\n let newStart = index*this.resultLength\n let newEnd = newStart+this.resultLength;\n this.resultRange = { start: newStart, end: newEnd };\n //console.log(this.resultRange);\n }\n showResults(event: PageEvent){\n this.resultLength = event.pageSize;\n this.updateResultRange(event.pageIndex);\n if (this.pageIndexUpdater != null){\n this.pageIndexUpdater.change.emit(event.pageIndex)\n }\n }\n\n}\n","import { OnInit } from '@angular/core';\nimport { DataProcessor } from '../models';\n\nexport interface CompareMapping {\n compareValueKey: string;\n sourceArrayKey: string;\n targetArrayKey: string[];\n commonPropertyKey: string;\n}\nexport class SelectFromArray implements DataProcessor {\n constructor(private onInit: OnInit, private compareMapping: CompareMapping){}\n\n private getItem(item: any, path: string[]): any {\n if (path.length == 1){\n return item[path[0]];\n } else {\n return this.getItem(item[path[0]], path.slice(1));\n }\n }\n public processData(){\n const target = this.getItem(this.onInit, this.compareMapping.targetArrayKey.slice());\n const compareValue = this.onInit[this.compareMapping.compareValueKey]\n this.onInit[this.compareMapping.sourceArrayKey].forEach(item =>{\n if(item[this.compareMapping.commonPropertyKey] === compareValue && target.indexOf(item) == -1){\n target.push(item)\n }\n });\n }\n}\n","export {HIGHTLIGHT_CASES} from '../page-view/highlight_status';\n\nexport enum VIEW_OPTIONS {\n TRANSKRIPTION = 'Transkription',\n FAKSIMILE = 'Faksimile',\n SYNOPSIS = 'Transkription/Faksimile',\n SYNOPSIS_B = 'Faksimile/Transkription'\n}\nexport const DEFAULT_VIEW_OPTION: string = VIEW_OPTIONS.SYNOPSIS_B;\nexport const ONTOLOTY_PREFIX: string = 'http://www.nie.org/ontology/nietzsche#'\n/**\n * Route for TlnCrossrefComponent\n **/\nexport const TLN_CROSSREF_ROUTE: string = 'tln-crossref';\n/**\n * Route for TlnCrossrefComponent\n **/\nexport const TLN_CROSSREF_EDITOR_ROUTE: string = 'tln-crossref-editor';\n/**\n * Route for TlnFulltextComponent\n **/\nexport const TLN_SEARCH_ROUTE: string = 'tln-search';\n/**\n * Route for TlnManuscriptViewComponent\n **/\nexport const TLN_MANUSCRIPT_ROUTE: string = 'tln-manuscript';\n/**\n * Route for TlnQuantComponent\n **/\nexport const TLN_QUANT_ROUTE: string = 'tln-quant';\n/**\n * Route for TlnViewerComponent\n **/\nexport const TLN_VIEWER_ROUTE: string = 'tln-viewer';\n/**\n * Param that refers to the context that should be shown, i.e. 'page' or 'manuscript'.\n **/\nexport const TLN_CONTEXT_VIEW_PARAM: string = 'contextView';\n/**\n * Param that toggles fullscreen, value type: boolean.\n **/\nexport const TLN_FULLSCREEN_PARAM: string = 'fullscreen';\n/**\n * Param for find text in page.\n **/\nexport const TLN_FIND_PARAM: string = 'find';\n/**\n * Param for manuscript iri.\n **/\nexport const TLN_MANUSCRIPT_PARAM: string = 'manuscript';\n/**\n * Param for navigation bar open state.\n **/\nexport const TLN_NAV_BAR_OPEN_STATE_PARAM: string = 'navBarOpenState';\n/**\n * Param for page iri.\n **/\nexport const TLN_PAGE_PARAM: string = 'page';\n/**\n * Param for result index, type: number.\n **/\nexport const TLN_QUERY_PARAM: string = 'query';\n/**\n * Param for quant query params, type: complex.\n **/\nexport const TLN_QUANT_QUERY_PARAM: string = 'quantQuery';\n/**\n * Param for result index, type: number.\n **/\nexport const TLN_QUANT_RESULT_INDEX_PARAM: string = 'quantResultIndex';\n/**\n * Param for result index, type: number.\n **/\nexport const TLN_RESULT_INDEX_PARAM: string = 'resultIndex';\n/**\n * Param for rotation value, type: number.\n **/\nexport const TLN_ROTATION_PARAM: string = 'rotation';\n/**\n * Param for search query params, type: complex.\n **/\nexport const TLN_SEARCH_QUERY_PARAM: string = 'searchQuery';\n/**\n * Param for selected lines.\n **/\nexport const TLN_SELECTED_LINES_PARAM: string = 'selectedLines';\n/**\n * Param for selected lines.\n **/\nexport const TLN_SELECTED_WORDS_PARAM: string = 'selectedWords';\n/**\n * Param for iri of a genetic order of text versions.\n **/\nexport const TLN_TEXT_GENETIC_ORDER_PARAM: string = 'geneticOrder';\n/**\n * Param for selected view option, e.g. 'Transkription', 'Faksimile', etc.\n **/\nexport const TLN_VIEW_OPTION_PARAM: string = 'viewMode';\n/**\n * Param for multi instance zoom (i.e. tln-crossref and tln-fulltext).\n **/\nexport const TLN_MULTI_INSTANCE_ZOOM_PARAM: string = 'multiInstanceZoom';\n/**\n * Param for zoom in tln-viewer.\n **/\nexport const TLN_ZOOM_PARAM: string = 'zoom';\n","import { OnInit, EventEmitter} from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { BasicResultBindingElement, FusekiResults, AskResult} from './datatypes/basic_datatype';\nimport { DataProcessor, StorageHandler, TlnQueryServiceInterface } from './models';\n\nexport interface KeyIriMapping {\n key: string;\n iri: string;\n}\nexport interface ComplexKeyIriMapping {\n idIndex: number;\n mapping: KeyIriMapping[];\n}\n\n/**\n * This interface can be used in order to handle data \n * of type {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport interface Handler {\n /**\n * a class that instantiates data of type {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}\n **/\n handler: typeof BasicResultBindingElement;\n /**\n * data handler's next key for retrieving and instantiating data.\n **/\n next_key?: string;\n /**\n * a service that informs its listeners about its handler's data.\n **/\n service?: any;\n process_data?: DataProcessor;\n storage_handler?: StorageHandler;\n}\n/**\n * This class retrieves data from a query service and instantiates it using \n * corresponding handlers.\n **/\nexport class DataHandler {\n dataTimestamp: number = 0;\n /**\n * the query services with which data is retrieved\n **/\n queryService: TlnQueryServiceInterface;\n debug: boolean = false;\n /**\n * whether or not DataHandler is ready to retrieve data\n **/\n ready: boolean = false;\n stop_processing = new EventEmitter();\n start_processing = new EventEmitter();\n processing_finished = new EventEmitter();\n /**\n * @param component the component that uses this data handler\n **/\n constructor(protected component: OnInit){}\n /**\n * add a {@link /interfaces/Handler.html|Handler} \n * or an Array of handler keys to DataHandler.\n **/\n public addHandler(key: string, handler: Handler | string[]) {\n this[key] = handler;\n }\n private processData(results: FusekiResults, handler: typeof BasicResultBindingElement, key: string, is_target_array: boolean, iri?: string, next_iri?: string){\n if (is_target_array){\n this.processArrayData(results, handler, key, iri, next_iri)\n } else {\n this.processObjectData(results, handler, key, iri, next_iri)\n }\n }\n private processArrayData(results: FusekiResults, handler: typeof BasicResultBindingElement, key: string, iri?: string, next_iri?: string){\n this.component[key] = (handler.use_id) ? handler.convertData(results, iri, this[key]['service']) : handler.convertData(results,null, this[key]['service']);\n this.processing_finished.emit(true);\n if (this.component[key].length > 0 && this[key]['next_key'] != null){\n let use_next_iri = (next_iri != null) ? next_iri : this.component[key][0].id;\n this.getData(this[key]['next_key'], use_next_iri);\n } else if(this[key]['process_data'] != undefined && this[key]['process_data'] != null){\n this[key]['process_data'].processData();\n } \n }\n private processObjectData(results: FusekiResults, handler: typeof BasicResultBindingElement, key: string, iri?: string, next_iri?: string){\n this.component[key] = handler.convertData(results, iri, this[key]['service'])[0];\n this.processing_finished.emit(true);\n if (next_iri != null && this[key]['next_key'] != null){\n this.getData(this[key]['next_key'], next_iri);\n } else if(this[key]['process_data'] != undefined && this[key]['process_data'] != null){\n this[key]['process_data'].processData();\n } \n }\n /**\n * Retrieve and instantiate data\n * @param key data handler key\n * @param iri iri that should be passed to query\n * @param next_iri use next_iri instead of the iri of the first item in the current data array.\n **/\n public getData(key: string, iri?: string, next_iri?: string) {\n if (Array.isArray(this[key])){ \n this[key].forEach(value =>this.getData(value, iri));\n if (next_iri != null && this[key]['next_key'] != null){\n this.getData(this[key]['next_key'], next_iri);\n }\n } else {\n this.start_processing.emit(true);\n const handler = this[key]['handler'];\n /*if (this.debug && key == 'markups' ) {\n console.log(handler.getQuery(iri, handler.query_key))\n }*/\n const is_target_array = Array.isArray(this.component[key]);\n const query = handler.getQuery(iri, handler.query_key)\n const queryKey = encodeURI(query).replace('+', '');\n this.queryService.getData(handler.getQuery(iri, handler.query_key)).pipe(takeUntil(this.stop_processing)).subscribe(results => {\n this.processData(results, handler, key, is_target_array, iri, next_iri);\n });\n }\n }\n public getData4Keys(key: string, datatypeKeyIriMapping: ComplexKeyIriMapping) {\n if (Array.isArray(this[key])){ \n this[key].forEach(value =>this.getData4Keys(value, datatypeKeyIriMapping));\n } else {\n let handler = this[key]['handler'];\n if (this.debug) {\n console.log(this[key]['handler'], datatypeKeyIriMapping);\n }\n let is_target_array = Array.isArray(this.component[key]);\n let iri = datatypeKeyIriMapping.mapping[datatypeKeyIriMapping.idIndex];\n if (!is_target_array){\n this.queryService.getData(handler.getComplexQuery(datatypeKeyIriMapping.mapping)).pipe(takeUntil(this.stop_processing) || first()).subscribe(results => {\n this.component[key] = handler.convertData(results, iri, this[key]['service'])[0];\n });\n } else {\n this.queryService.getData(handler.getQuery(datatypeKeyIriMapping.mapping)).pipe(takeUntil(this.stop_processing)).subscribe(results => {\n this.component[key] = (handler.use_id) ? handler.convertData(results, iri) : handler.convertData(results);\n if (this.component[key].length > 0 && this[key]['next_key'] != null){\n datatypeKeyIriMapping.mapping[datatypeKeyIriMapping.idIndex] = this.component[key][0].id;\n this.getData4Keys(this[key]['next_key'], datatypeKeyIriMapping);\n } \n });\n }\n }\n }\n public getDataWithNewHandlerIf(key: string, subjectIri: string, typeIri: string, handlerTrue: Handler, handlerFalse: Handler, iri?: string, next_iri?: string) {\n let complexMapping: KeyIriMapping[] = [ { key: 'id', iri: subjectIri }, { key: 'type', iri: typeIri } ] \n this.queryService.getData(AskResult.getComplexQuery(complexMapping)).pipe(first()).subscribe(result => {\n this[key] = (AskResult.getAnswer(result)) ? handlerTrue : handlerFalse;\n console.log(key, subjectIri, typeIri, result, this[key]);\n this.getData(key, iri, next_iri);\n });\n }\n public conditionalAddHandler(askQuery: string, key: string, handlerTrue: Handler, handlerFalse: Handler) {\n this.queryService.getData(askQuery).pipe(first()).subscribe(result => {\n this[key] = (AskResult.getAnswer(result)) ? handlerTrue : handlerFalse;\n });\n }\n protected retrieveLocalData(queryKey: string): FusekiResults {\n const rawData = sessionStorage.getItem(queryKey)\n if (rawData != null){\n const data = JSON.parse(rawData); \n if (data.timestamp > this.dataTimestamp){\n return data.results;\n } \n }\n return null;\n }\n protected storeDataLocally(results: FusekiResults, queryKey: string){\n const data = { timestamp: Date.now(), results: results };\n try {\n sessionStorage.setItem(queryKey, JSON.stringify(data)); \n console.log(sessionStorage.length);\n } catch(e){\n console.log(e);\n sessionStorage.clear();\n }\n }\n /**\n * reset all data belonging to key\n **/\n public resetData(key){\n this.queryService.resetData(key)\n if (Array.isArray(this[key])){ \n this[key].forEach(value =>this.resetData(value));\n } else {\n this.component[key] = (Array.isArray(this.component[key])) ? [] : null;\n }\n }\n /**\n * set a query service to DataHandler and switch status ready to true.\n **/\n public setQueryService(queryService: TlnQueryServiceInterface){\n this.queryService = queryService;\n this.ready = true;\n this.queryService.error_emitter.subscribe(\n error =>{this.processing_finished.emit(true);\n });\n }\n}\n","import { Parser, Generator } from 'sparqljs';\nimport { KeyIriMapping } from '../data_handler';\n/** \n * this interface specifies the head of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\ninterface FusekiVars {\n vars: string[];\n}\n/** \n * this interface specifies the bindings of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\nexport interface FusekiBindings {\n bindings: [];\n}\n/** \n * this interface specifies the results as they are retrieved from an Apache Jena Fuseki server.\n **/\nexport interface FusekiResults {\n results: FusekiBindings; \n head: FusekiVars\n}\nexport interface FusekiBoolean {\n head: any;\n boolean: boolean;\n}\nexport class FusekiResultsInstance {\n public static fixFusekiResults(fusekiResults: FusekiResults){\n if (fusekiResults.results.bindings.length > 0 \n && Object.keys(Array.of(...fusekiResults.results.bindings)[0]).length < fusekiResults.head.vars.length) {\n fusekiResults.head.vars = fusekiResults.head.vars.filter(key => Object.keys(Array.of(...fusekiResults.results.bindings)[0]).includes(key));\n }\n }\n}\n/**\n * This is the basic datatype that instantiates an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n *\n * All datatypes can be subclassed from this type in order to create SPARQL-queries, retrieve data and convert it\n * to the corresponding datatypes.\n **/\nexport class BasicResultBindingElement {\n /** \n * the internal default key for replacing {@link /classes/BasicResultBindingElement.html#query|query} by \"id\"\n * in {@link /classes/BasicResultBindingElement.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n protected static readonly default_key: string = 'id';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `SELECT ?id ?p ?o WHERE { ?id ?p ?o. }`;\n /** \n * the public key for replacing {@link /classes/BasicResultBindingElement.html#query|query} by \"id\".\n **/\n public static readonly query_key: string = null;\n /**\n * the id of this datatype.\n **/\n public id: string;\n /**\n * the raw data of this datatype, i.e. a singular bindings element of {@link /interfaces/FusekiBindings.html|FusekiBindings}.\n **/\n protected data: any;\n /**\n * whether or not to pass the id used for the query to the constructor and \n * use it as the value of the property specified by query_key.\n **/\n public static readonly use_id: boolean = false; \n /**\n * a service that this datatype can use in order to communicate with its data holder.\n **/\n protected service: any;\n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n this.data = data;\n this.service = service;\n if (id != undefined && id != null && id != ''){\n let key = (Object.getPrototypeOf(this).constructor.use_id \n && Object.getPrototypeOf(this).constructor.query_key != null) \n ? Object.getPrototypeOf(this).constructor.query_key : 'id';\n this[key] = id;\n } \n if (this.id == null){\n this.id = this.getData4Key('id'); \n }\n }\n /**\n * This function returns the value of the content specified by \"key\" from {@link /classes/BasicResultBindingElement.html#data|data}.\n * \n * @param key the key that specifies the content\n *\n * @returns {any} the value of the content if key exists else null\n **/\n protected getData4Key(key: string): any {\n if (!this.data.hasOwnProperty(key)) {\n return null;\n }\n if (this.data[key].datatype == 'http://www.w3.org/2001/XMLSchema#boolean'){\n return JSON.parse(this.data[key].value);\n } else if (this.data[key].datatype == 'http://www.w3.org/2001/XMLSchema#integer'){\n return Number(this.data[key].value);\n }\n return this.data[key].value;\n }\n public removeService(){\n this.service = null;\n }\n /**\n * This method returns the SPARQL query of this BasicResultBindingElement.\n * The query can be modified by providing an \"id\" and \"key\" such that every \"key\" in\n * the query will be replaced by \"id\".\n *\n * If \"key\" is omitted {@link /classes/BasicResultBindingElement.html#default_key|default_key} will be used.\n *\n * @param id will replace key in query\n * @param key will be replaced by id. \n **/\n public static getQuery(id?: string, key?: string): string {\n if (typeof(id) === 'undefined' || id === null || id == ''){\n return this.query;\n } else {\n if (key == null || key == ''){\n key = this.default_key;\n }\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(this.query)\n for (var k = 0; k < parsedQuery.where.length; k++){\n if (parsedQuery.where[k].patterns != undefined){\n for (var j = 0; j < parsedQuery.where[k].patterns.length; j++){\n if (parsedQuery.where[k].patterns[j].triples != undefined) {\n for (var i = 0; i < parsedQuery.where[k].patterns[j].triples.length; i++){\n if(parsedQuery.where[k].patterns[j].triples[i]['subject']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['subject'] = { termType: \"NamedNode\", value: id };\n } else if(parsedQuery.where[k].patterns[j].triples[i]['object']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['object'] = { termType: \"NamedNode\", value: id };\n } else if(parsedQuery.where[k].patterns[j].triples[i]['predicate']['value'] == key){\n parsedQuery.where[k].patterns[j].triples[i]['predicate'] = { termType: \"NamedNode\", value: id };\n }\n }\n }\n }\n } else if (parsedQuery.where[k].triples != undefined){\n for (var i = 0; i < parsedQuery.where[k].triples.length; i++){\n if(parsedQuery.where[k].triples[i]['subject']['value'] == key){\n parsedQuery.where[k].triples[i]['subject'] = { termType: \"NamedNode\", value: id };\n } else if (parsedQuery.where[k].triples[i]['object']['value'] == key){\n parsedQuery.where[k].triples[i]['object'] = { termType: \"NamedNode\", value: id };\n } else if (parsedQuery.where[k].triples[i]['predicate']['value'] == key){\n parsedQuery.where[k].triples[i]['predicate'] = { termType: \"NamedNode\", value: id };\n }\n }\n }\n }\n return sparqlGenerator.stringify(parsedQuery);\n }\n }\n public static contentConforms2Type(data: FusekiResults): boolean {\n let parser = new Parser();\n let parsedQuery = parser.parse(this.query)\n let variableCounter = parsedQuery['variables'].length;\n parsedQuery['variables'].forEach(item =>{\n if(data.head.vars.includes(item.value)){\n variableCounter--;\n }\n });\n return variableCounter == 0; \n }\n public static getComplexQuery(keyIriMapping: KeyIriMapping[]): string {\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(this.query)\n for (let mapping of keyIriMapping){\n let key = mapping.key;\n let id = mapping.iri;\n for (var i = 0; i < parsedQuery.where[0].triples.length; i++){\n if(parsedQuery.where[0].triples[i]['subject']['value'] == key){\n parsedQuery.where[0].triples[i]['subject'] = { termType: \"NamedNode\", value: id };\n } else if (parsedQuery.where[0].triples[i]['object']['value'] == key){\n parsedQuery.where[0].triples[i]['object'] = { termType: \"NamedNode\", value: id };\n } else if (parsedQuery.where[0].triples[i]['predicate']['value'] == key){\n parsedQuery.where[0].triples[i]['predicate'] = { termType: \"NamedNode\", value: id };\n }\n }\n }\n return sparqlGenerator.stringify(parsedQuery);\n }\n /**\n * This function returns 'results.bindings' of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\n public static getContent(data: FusekiResults): [] {\n return data['results']['bindings'];\n }\n /**\n * This static function instantiates the subclasses of {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement} from\n * the data retrieved by executing the query that is provided by {@link /classes/BasicResultBindingElement.html#getQuery|getQuery}.\n *\n * @param this a subclass of BasicResultBindingElement\n * @param data the fuseki result json\n * @param id the id that has been used in order to retrieve the data and that will identify the instantiation of the subclass.\n * @param service a means to communicate with the data holder.\n *\n * @returns Array of subclass instantiations\n **/\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new this(content[i], id, service) as InstanceType;\n elements.push(element);\n }\n return elements;\n }\n}\nexport class AskResult extends BasicResultBindingElement {\n static readonly query: string = `\n PREFIX tln: \n ASK { \n ?id a ?type.\n }`;\n\n public static getAnswer(answer: FusekiBoolean): boolean {\n return answer.boolean;\n }\n}\nexport class IsReconstructedKonvolut extends AskResult {\n static readonly query: string = `\n PREFIX tln: \n ASK { \n ?id a tln:ReconstructedKonvolut.\n }`;\n\n public static readonly query_key: string = 'id';\n}\n\n\n","import { BasicResultBindingElement, FusekiResults } from './basic_datatype';\nimport { WordStub } from './word';\nimport { TlnFilteredPositionalStyleMarkup } from './positional-markup';\n/**\n * This is the 'earlier version' stub instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\nexport class TlnEarlierVersionStub extends WordStub {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX homotypic: \n PREFIX stoff: \n\n SELECT ?id ?text ?markup ?sStyle ?start ?end WHERE {\n ?word tln:wordHasEarlierVersion ?id.\n ?id tln:hasText ?text.\n OPTIONAL {\n ?id homotypic:hasMarkup ?markup.\n ?markup stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n }\n }`;\n markups: TlnFilteredPositionalStyleMarkup[] = [];\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id the id will be retrieved from data anyway\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.id = this.getData4Key('id');\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new this(content[i], id, service);\n element['markups'] = (content[i]['markup'] != undefined) ? \n TlnFilteredPositionalStyleMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }) : [];\n if (elements.length > 0 && elements[elements.length-1].id == element.id && element['markups'] != undefined && element['markups'] != null && element['markups'].length > 0){\n elements[elements.length-1]['markups'].push(element['markups'][0]);\n } else {\n elements.push(element)\n }\n }\n return elements;\n }\n\n}\nexport class TlnOverwrittenStub extends TlnEarlierVersionStub {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text ?uncertain_decipherment ?deleted WHERE {\n ?word (tln:wordHasWordParts/rdf:rest*/rdf:first/tln:overwritesWord|tln:overwritesWord) ?id. \n ?id tln:hasText ?text.\n OPTIONAL {\n ?id tln:wordHasEditorComment ?comment.\n ?comment a tln:UncertainDecipherment.\n \t\tBIND(true as ?isUncertainDecipherment)\n }\n BIND(IF(bound(?isUncertainDecipherment), true, false) as ?uncertain_decipherment)\n BIND(exists{ ?id tln:wordIsDeletedByPath ?path } as ?deleted) \n }`;\n deleted: boolean;\n uncertain_decipherment?: boolean;\n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.deleted = this.getData4Key('deleted');\n this.uncertain_decipherment = this.getData4Key('uncertain_decipherment');\n }\n\n}\n","import { BasicResultBindingElement, FusekiResults } from './basic_datatype';\nimport { EditorComment, Line, LineContinuationReference, Word } from '../models';\nimport { TlnEditorCommentMarkup } from './positional-markup';\nimport { TlnLine } from './line';\n/**\n * This is the 'editor comment' of page instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\nexport class TlnPageEditorCommentStub extends BasicResultBindingElement implements EditorComment {\n static readonly default_key: string = 'page';\n static readonly query_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT ?id ?editorClass ?comment ?isUncertain WHERE {\n ?page a tln:Page; tln:hasEditorComments/rdf:rest*/rdf:first ?id.\n ?id a ?editorClass;\n tln:hasComment ?comment;\n tln:isUncertain ?isUncertain.\n FILTER (?editorClass != rdfs:Resource)\n }`;\n editorClass: string;\n comment?: string;\n isUncertain: boolean;\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.editorClass = this.getData4Key('editorClass');\n this.isUncertain = this.getData4Key('isUncertain');\n this.comment = this.getData4Key('comment');\n }\n}\n\n/**\n * This is the 'editor comment' stub instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\nexport class TlnEditorCommentStub extends TlnPageEditorCommentStub {\n static readonly default_key: string = 'word';\n static readonly query_key: string = 'word';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT ?id ?editorClass ?comment ?correction ?text ?textWithMarkup ?isUncertain WHERE {\n { ?word tln:wordHasEditorComment ?id. } UNION {\n ?word tln:wordHasWordParts/rdf:rest*/rdf:first/tln:wordHasEditorComment ?id.\n }\n ?id a ?editorClass;\n tln:isUncertain ?isUncertain.\n FILTER (?editorClass != rdfs:Resource)\n OPTIONAL { ?id tln:hasComment ?comment.}\n OPTIONAL { ?id tln:hasCorrectionText ?correction;\n tln:isUncertain true.}\n OPTIONAL { ?id tln:commentHasText ?textWithMarkup.\n ?textWithMarkup tln:textHasContent ?text.\n }\n }`;\n editorClass: string;\n comment?: string;\n correction?: string;\n isUncertain: boolean;\n text?: string;\n textWithMarkup?: string;\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.editorClass = this.getData4Key('editorClass');\n this.isUncertain = this.getData4Key('isUncertain');\n this.comment = this.getData4Key('comment');\n this.correction = this.getData4Key('correction');\n this.text = this.getData4Key('text');\n this.textWithMarkup = this.getData4Key('textWithMarkup');\n }\n}\nexport class TlnLineEditorComment extends TlnEditorCommentStub {\n static readonly default_key: string = 'page';\n static readonly query_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX stoff: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT DISTINCT ?id ?line ?number ?top ?bottom ?editorClass ?comment ?reference ?isToRef ?refTitle ?refPageNumber ?refLine ?isUncertain WHERE {\n ?page tln:hasLines/rdf:rest*/rdf:first ?line.\n ?line tln:lineHasEditorComment ?id;\n tln:lineHasNumber ?number;\n tln:lineHasTopValueOnTranskription ?top;\n tln:lineHasBottomValueOnTranskription ?bottom.\n ?id a ?editorClass;\n tln:isUncertain ?isUncertain.\n FILTER (!isBlank(?editorClass) && ?editorClass != rdfs:Resource)\n OPTIONAL { ?id tln:hasComment ?comment.}\n OPTIONAL { ?id tln:lineContinuationHasReference ?reference;\n tln:isLineAContinuationTo ?isToRef.\n ?reference tln:hasPageNumber ?refPageNumber;\n tln:firstLineOfReference ?refLine.\n OPTIONAL { ?reference tln:hasTitle ?refTitle }\n }\n }`;\n lineContinuationReference?: LineContinuationReference;\n tLine: Line;\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.tLine = {\n id: this.getData4Key('line'),\n number: this.getData4Key('number'),\n bottom: this.getData4Key('bottom'),\n top: this.getData4Key('top')\n }\n const reference = this.getData4Key('reference');\n if (reference != undefined && reference != null){\n this.lineContinuationReference = {\n isToRef: this.getData4Key('isToRef'),\n refTitle: this.getData4Key('refTitle'),\n refPageNumber: this.getData4Key('refPageNumber'),\n refLine: this.getData4Key('refLine')\n }\n }\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnLineEditorComment(content[i], id, service);\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (elements[elements.length-1].editorClass.endsWith('EditorComment')){\n elements[elements.length-1].editorClass = element.editorClass;\n }\n } else {\n elements.push(element)\n }\n }\n return elements;\n }\n}\nexport class TlnEditorComment extends TlnLineEditorComment {\n static readonly default_key: string = 'page';\n static readonly query_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX stoff: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT DISTINCT ?id ?word ?line ?text ?number ?top ?bottom ?editorClass ?comment ?commentIsUncertain ?correction ?markup ?sStyle ?start ?end ?isUncertain WHERE {\n ?page tln:hasWords/rdf:rest*/rdf:first ?word.\n { ?word tln:wordHasEditorComment ?id. } UNION {\n ?word tln:wordHasWordParts/rdf:rest*/rdf:first/tln:wordHasEditorComment ?id.\n }\n ?id a ?editorClass;\n tln:isUncertain ?isUncertain.\n FILTER (?editorClass != rdfs:Resource)\n ?word tln:hasText ?wordText;\n tln:wordBelongsToLine ?line.\n ?line tln:lineHasNumber ?number;\n tln:lineHasTopValueOnTranskription ?top;\n tln:lineHasBottomValueOnTranskription ?bottom.\n OPTIONAL { ?id tln:hasComment ?comment.}\n OPTIONAL { ?word tln:hasEditedText ?editedText.}\n OPTIONAL { ?id tln:hasCorrectionText ?editorCorrection;\n tln:isUncertain true.}\n OPTIONAL { ?id tln:commentHasText ?textWithMarkup.\n ?textWithMarkup tln:textHasContent ?contentText;\n tln:textHasMarkup ?markup.\n ?markup stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n }\n BIND(IF(BOUND(?contentText), ?contentText, ?wordText) AS ?text)\n BIND(IF(BOUND(?editorCorrection), ?editorCorrection, ?editedText) AS ?correction)\n }`;\n underlineLine: boolean = false;\n word: Word;\n markups: TlnEditorCommentMarkup[] = [];\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.word = {\n id: this.getData4Key('word'),\n text: this.getData4Key('text'),\n line: (this.tLine != null) ? this.tLine.id : null,\n line_number: (this.tLine != null) ? this.tLine.number: -1,\n deleted: false,\n left: -1,\n top: -1,\n width: -1,\n height: -1\n }\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = (new this(content[i], id, service)) as EditorComment;\n element.markups = (content[i]['markup'] != undefined) ? \n TlnEditorCommentMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }) : [];\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if(elements[elements.length-1].editorClass == element.editorClass){\n elements[elements.length-1].markups = elements[elements.length-1].markups.concat(element.markups);\n } else if (elements[elements.length-1].editorClass.endsWith('EditorComment')){\n elements[elements.length-1].editorClass = element.editorClass;\n }\n } else {\n elements.push(element)\n }\n }\n return elements;\n }\n\n}\nexport class TlnOverwrittenWordEditorComment extends TlnEditorComment {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX stoff: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT DISTINCT ?id ?word ?line ?text ?overwritten_text ?number ?top ?bottom ?editorClass ?comment ?commentIsUncertain ?correction ?markup ?sStyle ?start ?end ?isUncertain WHERE {\n ?page tln:hasWords/rdf:rest*/rdf:first ?word.\n ?word tln:overwritesWord ?overwrittenWord.\n ?overwrittenWord tln:wordHasEditorComment ?id;\n tln:hasText ?wordText. \n ?id a ?editorClass;\n tln:isUncertain ?isUncertain.\n FILTER (?editorClass != rdfs:Resource)\n ?word tln:wordBelongsToLine ?line;\n tln:hasText ?text.\n ?line tln:lineHasNumber ?number;\n tln:lineHasTopValueOnTranskription ?top;\n tln:lineHasBottomValueOnTranskription ?bottom.\n OPTIONAL { ?id tln:hasComment ?comment.}\n OPTIONAL { ?id tln:hasCorrectionText ?correction;\n tln:isUncertain true.}\n OPTIONAL { ?word tln:hasStandoffMarkup4PartThatOverwritesWord ?markup.\n ?markup stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n }\n BIND(IF(BOUND(?contentText), ?contentText, ?wordText) AS ?overwritten_text)\n }`;\n underlineLine: boolean = true;\n overwritten_text: string;\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.overwritten_text = this.getData4Key('overwritten_text');\n }\n}\n","import { TlnImage } from './image';\nimport { Copyright, Image } from '../models';\n/**\n * This is the faksimile image instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/TlnImage.html|TlnImage}.\n **/\nexport class FaksimileImage extends TlnImage {\n /**\n * the SPARQL-query of this datatype\n **/\n static readonly query: string = `\n PREFIX tln: \n\n SELECT ?id ?filename ?URL ?secondaryURL ?width ?height ?t_left ?t_top ?t_width ?t_height ?page ?transform WHERE {\n ?id a tln:FaksimileImage;\n tln:hasFileName ?filename;\n tln:hasPrimaryurl ?URL;\n tln:hasSecondaryurl ?secondaryURL;\n tln:hasWidth ?width;\n tln:hasHeight ?height;\n tln:hasTextField ?textfield.\n ?textfield tln:hasLeft ?t_left;\n tln:hasTop ?t_top;\n tln:hasWidth ?t_width;\n tln:hasHeight ?t_height;\n ^tln:pageIsOnFaksimileTextField ?page.\n OPTIONAL { ?id tln:hasTransform ?transform. }\n }`;\n /**\n * Copyright information of image\n **/\n copyright: Copyright;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.copyright = { \n originalUrl: 'http://www.nietzschesource.org/DFGA/' + this.filename.replace('.jpg', ''),\n licenseTextUrl: 'http://creativecommons.org/licenses/by-nc-nd/4.0/deed.de',\n license: 'CC BY-NC-ND 4.0',\n text: 'Dieses Faksimile wird von nietzschesource.org gehostet und wird hier unverändert dargestellt.'\n }\n }\n}\n","import { FusekiResults, BasicResultBindingElement } from './basic_datatype';\nimport { TlnPositionalObject } from './positional_object';\nimport { TextByForeignHand } from '../models';\nimport { TlnPositionalStyleMarkup } from './positional-markup';\n/**\n * This is the 'text by foreign hand' instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnTextByForeignHand extends TlnPositionalObject implements TextByForeignHand {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text ?pen ?left ?top ?width ?height ?resolution ?comment ?transform ?markup ?sStyle ?start ?end \n ?idOFH ?textOFH ?penOFH ?markupOFH ?startOFH ?endOFH ?sStyleOFH\n WHERE {\n ?page tln:hasMarkForeignHands/rdf:rest*/rdf:first ?id.\n ?id tln:textOfForeignHands ?textOfForeignHands;\n tln:penOfForeignHands ?pen;\n tln:hasTranskriptionPosition ?tp.\n ?textOfForeignHands tln:textHasContent ?text.\n \t?tp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n OPTIONAl { ?id tln:resolutionOfAbbreviation ?resolution.}\n OPTIONAl { ?id tln:foreignHandHasCommentByEditors ?comment.}\n OPTIONAl { ?textOfForeignHands tln:textHasMarkup ?markup.\n ?markup tln:standoffTagHasEndIndex ?end;\n tln:standoffTagHasStartIndex ?start;\n tln:standoffTagHasCSS ?sStyle.\n }\n OPTIONAl { ?tp tln:hasTransform ?transform.}\n OPTIONAL { ?id tln:foreignHandOverwritesForeignHand ?idOFH.\n \t\t\t\t?idOFH tln:textOfForeignHands ?textOfForeignHandsOFH;\n \t\t\ttln:penOfForeignHands ?penOFH.\n \t\t\t\t?textOfForeignHandsOFH tln:textHasContent ?textOFH.\n OPTIONAL {\n\t\t\t\t ?textOfForeignHandsOFH tln:textHasMarkup ?markupOFH.\n \t\t\t ?markupOFH tln:standoffTagHasEndIndex ?endOFH;\n tln:standoffTagHasStartIndex ?startOFH;\n tln:standoffTagHasCSS ?sStyleOFH.\n \t }\n }\n } `;\n /**\n * the text of this word\n **/\n text: string;\n /**\n * the text of this word as it has been edited by the editors.\n **/\n pen: string;\n /**\n * resolution of the abbrevation\n **/\n resolution?: string;\n /**\n * editor's comment about this text of foreign hand\n **/\n comment?: string;\n markups: TlnPositionalStyleMarkup[] = [];\n /**\n * overwritten text by foreign hand\n **/\n overwrittenTextByForeignHand?: TextByForeignHand;\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.text = this.getData4Key('text');\n this.pen = this.getData4Key('pen');\n this.resolution = this.getData4Key('resolution');\n this.comment = this.getData4Key('comment');\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnTextByForeignHand(content[i], id, service);\n if (content[i]['markup'] != undefined && content[i]['markup']['value'] != null){\n element.markups = TlnPositionalStyleMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['markup']['value'])\n }\n if (content[i]['idOFH'] != undefined && content[i]['idOFH']['value'] != null){\n //let results = Object.fromEntries(Object.entries(content[i]).filter(key_value =>key_value[0].endsWith('OFH')))\n let contentObject = Object.fromEntries(\n Object.entries(content[i]).filter(key_value =>key_value[0].endsWith('OFH')).map(key_value =>[ key_value[0].replace('OFH', ''), key_value[1]])\n );\n let overwritten_mark = TlnTextByForeignHand.convertData({ head: { vars: []}, results: { bindings: [ contentObject ] }}, content[i]['idOFH']['value'])[0]\n if (elements.length > 0 && elements[elements.length-1].id == element.id \n && elements[elements.length-1].overwrittenTextByForeignHand != undefined && elements[elements.length-1].overwrittenTextByForeignHand != null){\n overwritten_mark.markups.forEach(markup =>{elements[elements.length-1].overwrittenTextByForeignHand.markups.push(markup) });\n } else {\n element.overwrittenTextByForeignHand = overwritten_mark\n }\n }\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n element.markups.forEach(markup =>{elements[elements.length-1].markups.push(markup)});\n if (element.overwrittenTextByForeignHand != undefined && element.overwrittenTextByForeignHand != null){\n elements[elements.length-1].overwrittenTextByForeignHand = element.overwrittenTextByForeignHand\n }\n } else {\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\n/**\n * This is the faksimile text by foreign hand instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class FaksimileTextByForeignHand extends TlnTextByForeignHand {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text ?pen ?left ?top ?width ?height ?resolution ?comment ?transform ?markup ?sStyle ?start ?end\n ?idOFH ?textOFH ?penOFH ?markupOFH ?startOFH ?endOFH ?sStyleOFH\n WHERE {\n ?page tln:hasMarkForeignHands/rdf:rest*/rdf:first ?id.\n ?id tln:textOfForeignHands ?textOfForeignHands;\n tln:penOfForeignHands ?pen;\n tln:hasFaksimilePosition ?fp.\n ?textOfForeignHands tln:textHasContent ?text.\n \t?fp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n OPTIONAl { ?id tln:resolutionOfAbbreviation ?resolution.}\n OPTIONAl { ?id tln:foreignHandHasCommentByEditors ?comment.}\n OPTIONAl { ?textOfForeignHands tln:textHasMarkup ?markup.\n ?markup tln:standoffTagHasEndIndex ?end;\n tln:standoffTagHasStartIndex ?start;\n tln:standoffTagHasCSS ?sStyle.\n }\n OPTIONAl { ?fp tln:hasTransform ?transform.}\n OPTIONAL { ?id tln:foreignHandOverwritesForeignHand ?idOFH.\n \t\t\t\t?idOFH tln:textOfForeignHands ?textOfForeignHandsOFH;\n \t\t\ttln:penOfForeignHands ?penOFH.\n \t\t\t\t?textOfForeignHandsOFH tln:textHasContent ?textOFH.\n OPTIONAL {\n\t\t\t\t ?textOfForeignHandsOFH tln:textHasMarkup ?markupOFH.\n \t\t\t ?markupOFH tln:standoffTagHasEndIndex ?endOFH;\n tln:standoffTagHasStartIndex ?startOFH;\n tln:standoffTagHasCSS ?sStyleOFH.\n \t }\n }\n\n } `;\n\n}\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { Image, TextField} from '../models';\n\nexport class TlnImage extends BasicResultBindingElement implements Image {\n static readonly default_key: string = 'page';\n static readonly query: string = `\n PREFIX tln: \n\n SELECT ?id ?filename ?width ?height ?URL ?secondaryURL ?t_left ?t_top ?t_width ?t_height ?page ?transform WHERE {\n ?id a tln:Image;\n tln:hasPrimaryurl ?URL;\n tln:hasSecondaryurl ?secondaryURL;\n tln:hasFileName ?filename;\n tln:hasWidth ?width;\n tln:hasHeight ?height;\n tln:hasTextField ?textfield.\n ?textfield tln:hasLeft ?t_left;\n tln:hasTop ?t_top;\n tln:hasWidth ?t_width;\n tln:hasHeight ?t_height;\n ^tln:pageIsOnTextField ?page.\n OPTIONAL { ?id tln:hasTransform ?transform. }\n }`;\n filename: string;\n x: number;\n y: number;\n width: number;\n height: number;\n text_field: TextField;\n URL: string;\n secondaryURL: string;\n transform: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.x = 0;\n this.y = 0;\n this.filename = this.getData4Key('filename');\n this.width = this.getData4Key('width');\n this.height = this.getData4Key('height');\n this.URL = this.getData4Key('URL');\n this.secondaryURL = this.getData4Key('secondaryURL');\n this.transform = this.getData4Key('transform')\n this.text_field = new TlnTextField(this.getData4Key('t_left'),\n this.getData4Key('t_top'),\n this.getData4Key('t_width'),\n this.getData4Key('t_height'));\n }\n}\n\nexport class TlnTextField implements TextField {\n left: number;\n top: number;\n width: number;\n height: number;\n bottom: number;\n \n constructor(left: number, top: number, width: number, height: number){\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n }\n}\n","import { BasicResultBindingElement, FusekiResults } from './basic_datatype';\nimport { Line } from '../models';\n/**\n * This is the 'editor comment' stub instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n **/\nexport class TlnImprint extends BasicResultBindingElement {\n static readonly default_key: string = 'page';\n static readonly query_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX rdfs: \n\n SELECT ?id ?reference ?line ?lineNumber WHERE {\n ?page a tln:Page;\n tln:hasImprints/rdf:rest*/rdf:first ?id.\n ?id tln:imprintHasReference ?reference.\n OPTIONAL { ?id tln:imprintRefersToLines/rdf:rest*/rdf:first ?line.\n ?line tln:lineHasNumber ?lineNumber .\n }\n }`;\n reference: string;\n lines: Line[] = [];\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.reference = this.getData4Key('reference');\n }\n\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnImprint(content[i], id, service);\n if(content[i]['line'] != undefined && content[i]['line'] != null) {\n element.lines.push({\n id: content[i]['line']['value'],\n number: Number(content[i]['lineNumber']['value']),\n bottom: -1,\n top: -1\n });\n }\n if (elements.length > 0 && elements[elements.length-1].id == element.id\n && element.lines.length > 0){\n elements[elements.length-1].lines.push(element.lines[0])\n } else {\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\n\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { Identifier, Line, LineStub, Manuscript, Page, Reference } from '../models';\n/**\n * This is the line instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnLine extends BasicResultBindingElement implements Line {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'page';\n static readonly use_id: boolean = true;\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?number ?top ?bottom \n ?pageNumber ?manuscriptId ?manuscriptTitle\n ?toLine ?toLineNumber ?toPage ?toPageNumber ?toManuscript ?toManuscriptTitle \n ?fromLine ?fromLineNumber ?fromPage ?fromPageNumber ?fromManuscript ?fromManuscriptTitle \n WHERE {\n ?page tln:hasLines/rdf:rest*/rdf:first ?id;\n tln:hasNumber ?pageNumber.\n ?id a tln:Line; tln:lineHasNumber ?number;\n tln:lineHasTopValueOnTranskription ?top;\n tln:lineHasBottomValueOnTranskription ?bottom.\n ?manuscriptId tln:hasPages/rdf:rest*/rdf:first ?page;\n tln:hasTitle ?manuscriptTitle.\n OPTIONAL { \n ?id tln:lineContinuesOn ?toLine.\n ?toLine tln:lineHasNumber ?toLineNumber.\n ?toPage tln:hasLines/rdf:rest*/rdf:first ?toLine; tln:hasNumber ?toPageNumber.\n ?toManuscript tln:hasPages/rdf:rest*/rdf:first ?toPage; tln:hasTitle ?toManuscriptTitle.\n }\n OPTIONAL { \n ?id ^tln:lineContinuesOn ?fromLine.\n ?fromLine tln:lineHasNumber ?fromLineNumber.\n ?fromPage tln:hasLines/rdf:rest*/rdf:first ?fromLine; tln:hasNumber ?fromPageNumber.\n ?fromManuscript tln:hasPages/rdf:rest*/rdf:first ?fromPage; tln:hasTitle ?fromManuscriptTitle.\n }\n } `;\n /** \n * the number of this line.\n **/\n number: number;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'page';\n /** \n * the geometrical top position of this line.\n **/\n top: number;\n /** \n * the geometrical bottom position of this line.\n **/\n bottom: number;\n continuesFrom?: Reference;\n continuesTo?: Reference;\n source?: Reference;\n page?: string;\n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.number = this.getData4Key('number');\n this.top = this.getData4Key('top');\n this.bottom = this.getData4Key('bottom');\n let pageNumber = this.getData4Key('pageNumber')\n let manuscriptTitle = this.getData4Key('manuscriptTitle')\n let continuesTo = this.getData4Key('toLine')\n let continuesFrom = this.getData4Key('fromLine')\n if (continuesTo != null){\n let manuscript: Manuscript = { id: this.getData4Key('toManuscript'), title: this.getData4Key('toManuscriptTitle') } \n let page: Page = { id: this.getData4Key('toPage'), number: this.getData4Key('toPageNumber') }\n let line: LineStub = { id: continuesTo, number: this.getData4Key('toLineNumber') }\n this.continuesTo = { manuscript: manuscript, page: page, line: line }\n }\n if (continuesFrom != null){\n let manuscript: Manuscript = { id: this.getData4Key('fromManuscript'), title: this.getData4Key('fromManuscriptTitle') } \n let page: Page = { id: this.getData4Key('fromPage'), number: this.getData4Key('fromPageNumber') }\n let line: LineStub = { id: continuesFrom, number: this.getData4Key('fromLineNumber') }\n this.continuesFrom = { manuscript: manuscript, page: page, line: line }\n }\n if (this.continuesFrom != null || this.continuesTo != null){\n let reference = (this.continuesTo != null) ? this.continuesTo : this.continuesFrom;\n let manuscript: Manuscript = (this.getData4Key('manuscriptId') == reference.manuscript.id) ? null :\n { id: this.getData4Key('manuscriptId'), title: this.getData4Key('manuscriptTitle') }\n let page: Page = (this.page == reference.page.id) ? null:\n { id: this.page, number: this.getData4Key('pageNumber') }\n this.source = { manuscript: manuscript, page: page, line: { id: this.id, number: this.number } }\n }\n }\n}\n/**\n * This is the faksimile line instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/TlnLine.html|TlnLine}.\n **/\nexport class FaksimileLine extends TlnLine implements Line {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?number ?top ?bottom\n ?pageNumber ?manuscriptId ?manuscriptTitle\n ?toLine ?toLineNumber ?toPage ?toPageNumber ?toManuscript ?toManuscriptTitle \n ?fromLine ?fromLineNumber ?fromPage ?fromPageNumber ?fromManuscript ?fromManuscriptTitle \n WHERE {\n ?page tln:hasLines/rdf:rest*/rdf:first ?id;\n tln:hasNumber ?pageNumber.\n ?id a tln:Line; tln:lineHasNumber ?number;\n tln:lineHasInnerTopValueOnFaksimile ?top;\n tln:lineHasInnerBottomValueOnFaksimile ?i_bottom.\n ?manuscriptId tln:hasPages/rdf:rest*/rdf:first ?page;\n tln:hasTitle ?manuscriptTitle.\n BIND( (?top+?i_bottom)/2 as ?bottom).\n OPTIONAL { \n ?id tln:lineContinuesOn ?toLine.\n ?toLine tln:lineHasNumber ?toLineNumber.\n ?toPage tln:hasLines/rdf:rest*/rdf:first ?toLine; tln:hasNumber ?toPageNumber.\n ?toManuscript tln:hasPages/rdf:rest*/rdf:first ?toPage; tln:hasTitle ?toManuscriptTitle.\n }\n OPTIONAL { \n ?id ^tln:lineContinuesOn ?fromLine.\n ?fromLine tln:lineHasNumber ?fromLineNumber.\n ?fromPage tln:hasLines/rdf:rest*/rdf:first ?fromLine; tln:hasNumber ?fromPageNumber.\n ?fromManuscript tln:hasPages/rdf:rest*/rdf:first ?fromPage; tln:hasTitle ?fromManuscriptTitle.\n }\n } `;\n}\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { Identifier, LineStub, Manuscript, Page, Reference} from '../models';\n\nexport class TlnLineReference extends BasicResultBindingElement implements Reference {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?page ?page_id ?manuscript ?title ?line_number WHERE {\n ?id a tln:Line; tln:lineHasNumber ?line_number.\n ?page_id tln:hasLines/rdf:rest*/rdf:first ?id; tln:hasNumber ?page.\n ?manuscript tln:hasPages/rdf:rest*/rdf:first ?page_id; tln:hasTitle ?title.\n } `;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'id';\n /** \n * the manuscript.\n **/\n manuscript: Manuscript;\n /** \n * the line.\n **/\n line: LineStub;\n /**\n * the page.\n **/\n page: Page;\n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.line = { id: this.id, number: this.getData4Key('line_number') }\n this.page = { id: this.getData4Key('page_id'), number: this.getData4Key('page') }\n this.manuscript = { id: this.getData4Key('manuscript'), title: this.getData4Key('title') }\n }\n}\n\n","import { BasicResultBindingElement, FusekiResults } from './basic_datatype';\nimport { Manuscript, Page } from '../models';\nimport { TlnPositionalStyleMarkup } from './positional-markup';\nimport { PageStub, TlnPage } from './page';\n\nexport class ManuscriptStub extends BasicResultBindingElement implements Manuscript {\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n\n SELECT ?id ?title ?type WHERE {\n ?id a tln:ArchivalManuscriptUnity ;\n tln:hasTitle ?title;\n tln:hasManuscriptType ?type.\n }`;\n title: string;\n type: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title'); \n this.type = this.getData4Key('type');\n }\n}\nexport class TlnExtManuscript extends ManuscriptStub {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'manuscript';\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX rdf: \n PREFIX stoff: \n\n SELECT DISTINCT ?gsaSignature ?title ?thumbImage ?type ?archivalicSignature WHERE {\n ?manuscript tln:hasPages/rdf:first/tln:hasFaksimileImage/tln:hasThumburl ?thumbImage;\n tln:hasGsaSignature ?gsaSignature;\n tln:hasTitle ?title;\n tln:hasManuscriptType ?type. \n OPTIONAL {\n ?manuscript tln:hasArchivalicSignature ?archivalicSignature. \n }\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'manuscript';\n thumbImage: string;\n gsaSignature?: string;\n archivalicSignature?: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.thumbImage = this.getData4Key('thumbImage');\n this.gsaSignature = this.getData4Key('gsaSignature');\n this.archivalicSignature = this.getData4Key('archivalicSignature');\n }\n}\nexport class Manuscript4Selection extends ManuscriptStub {\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX rdf: \n PREFIX stoff: \n\n SELECT DISTINCT ?id ?title ?type WHERE {\n ?id a tln:ArchivalManuscriptUnity; \n tln:hasTitle ?title;\n tln:hasManuscriptType ?type.\n FILTER (?type = \"Mappe\")\n }`;\n}\nexport class ManuscriptPages extends ManuscriptStub {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'id';\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX rdf: \n PREFIX stoff: \n\n SELECT DISTINCT ?id ?title ?type ?page ?number WHERE {\n ?id a tln:ArchivalManuscriptUnity; \n tln:hasTitle ?title;\n tln:hasManuscriptType ?type;\n tln:hasPages/rdf:rest*/rdf:first ?page. \n ?page tln:hasNumber ?number.\n FILTER (?type = \"Mappe\")\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'id';\n pages: Page[] = [];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new ManuscriptPages(content[i], id, service);\n let pages = [];\n if (content[i]['page'] != undefined && content[i]['page'] != null){\n pages = (content[i]['title'] != undefined && content[i]['title'] != null) \n ? TlnPage.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['page']['value']) \n : PageStub.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['page']['value']);\n }\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (pages.length > 0){\n elements[elements.length-1].pages.push(pages[0]);\n }\n } else {\n if (pages.length > 0){\n element.pages.push(pages[0]);\n }\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\nexport class ReconstructedKonvolut extends ManuscriptStub {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'manuscript';\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX rdf: \n PREFIX stoff: \n\n SELECT DISTINCT ?id ?manuscriptTitle ?title ?type ?page ?number ?description WHERE {\n ?manuscript tln:partsBelongToReconstructedKonvolut ?id. \n ?id tln:hasTitle ?manuscriptTitle;\n tln:hasDescription/tln:textHasContent ?description;\n tln:hasManuscriptType ?type;\n tln:hasPages/rdf:rest*/rdf:first ?page. \n OPTIONAL { ?page tln:hasNumber ?number.}\n OPTIONAL { \n ?archivalicUnity a tln:ArchivalManuscriptUnity;\n tln:hasPages/rdf:rest*/rdf:first ?page;\n tln:hasTitle ?title.\n }\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'manuscript';\n pages: Page[] = [];\n description: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('manuscriptTitle');\n this.description = this.getData4Key('description');\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new ReconstructedKonvolut(content[i], id, service);\n let pages = [];\n if (content[i]['page'] != undefined && content[i]['page'] != null){\n pages = (content[i]['title'] != undefined && content[i]['title'] != null) \n ? TlnPage.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['page']['value']) \n : PageStub.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['page']['value']);\n }\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (pages.length > 0){\n elements[elements.length-1].pages.push(pages[0]);\n }\n } else {\n if (pages.length > 0){\n element.pages.push(pages[0]);\n }\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\nexport class ManuscriptDescription extends BasicResultBindingElement {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'manuscript';\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX rdf: \n PREFIX stoff: \n\n SELECT DISTINCT ?id ?text ?description_markup ?sStyle ?start ?end WHERE {\n ?manuscript tln:hasDescription ?id.\n ?id tln:textHasContent ?text.\n OPTIONAL { ?id tln:textHasMarkup ?description_markup.\n ?description_markup stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.}\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'manuscript';\n text: string;\n markups: TlnPositionalStyleMarkup[];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.text = this.getData4Key('text');\n this.markups = [];\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new ManuscriptDescription(content[i], id, service);\n let markups = (content[i]['description_markup'] != undefined && content[i]['description_markup'] != null) ? \n TlnPositionalStyleMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['description_markup']['value']) : [];\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (markups.length > 0){\n elements[elements.length-1].markups.push(markups[0]);\n }\n } else {\n if (markups.length > 0){\n element.markups.push(markups[0]);\n }\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n}\nexport class ManuscriptEarlierDescription extends BasicResultBindingElement {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'manuscript';\n static readonly query: string = `\n PREFIX data: \n PREFIX tln: \n PREFIX stoff: \n\n SELECT ?id ?text ?author ?citation ?description_markup ?sStyle ?start ?end WHERE {\n ?manuscript tln:hasEarlierDescriptions ?id. \n ?id tln:textHasContent ?text;\n tln:hasAuthor ?author;\n tln:hasCitation ?citation.\n OPTIONAL { ?id tln:textHasMarkup ?description_markup.\n ?description_markup stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.}\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'manuscript';\n text: string;\n author: string;\n citation: string;\n markups: TlnPositionalStyleMarkup[];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.text = this.getData4Key('text');\n this.author = this.getData4Key('author');\n this.citation = this.getData4Key('citation');\n this.markups = [];\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new ManuscriptEarlierDescription(content[i], id, service);\n let markups = (content[i]['description_markup'] != undefined && content[i]['description_markup'] != null) ? \n TlnPositionalStyleMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['description_markup']['value']) : [];\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (markups.length > 0){\n elements[elements.length-1].markups.push(markups[0]);\n }\n } else {\n if (markups.length > 0){\n element.markups.push(markups[0]);\n }\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n}\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { ManuscriptUnity, NavigationPage } from '../models';\n\nexport class TlnManuscriptUnity extends BasicResultBindingElement implements ManuscriptUnity {\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX list: \n\n SELECT ?title ?numberOfPages ?firstItem ?firstNumber ?lastItem ?lastNumber WHERE {\n ?id a tln:ManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages ?list.\n ?list list:length ?numberOfPages;\n rdf:first ?firstItem;\n rdf:rest* ?lastNode.\n ?lastNode rdf:first ?lastItem;\n rdf:rest rdf:nil.\n ?firstItem tln:hasNumber ?firstNumber.\n ?lastItem tln:hasNumber ?lastNumber.\n }`;\n static readonly query_key: string = 'id';\n title: string;\n numberOfPages: number;\n firstPage: NavigationPage;\n lastPage: NavigationPage;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title');\n this.numberOfPages = this.getData4Key('numberOfPages')\n this.firstPage = { id: this.getData4Key('firstItem'), number: this.getData4Key('firstNumber'), title: this.title, index: 1 };\n this.lastPage = { id: this.getData4Key('lastItem'), number: this.getData4Key('lastNumber'), title: this.title, index: this.numberOfPages };\n }\n}\n\nexport class TlnNavigationPage extends BasicResultBindingElement {\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n PREFIX list: \n\n SELECT ?title ?number ?previous ?previousNumber ?next ?nextNumber ?previousIndex ?nextIndex WHERE {\n ?id tln:hasNumber ?number.\n ?unity a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages ?list.\n ?list rdf:rest* ?node.\n ?node rdf:first ?id.\n OPTIONAL { ?node ^rdf:rest/rdf:first ?previous.\n ?previous tln:hasNumber ?previousNumber.\n ?list list:index (?previousIndex ?previous);\n }\n OPTIONAL { ?node rdf:rest/rdf:first ?next.\n ?next tln:hasNumber ?nextNumber.\n ?list list:index (?nextIndex ?next);\n }\n }`;\n static readonly query_key: string = 'id';\n title: string; \n number: string;\n previous?: NavigationPage;\n next?: NavigationPage;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title');\n this.number = this.getData4Key('number');\n let previous = this.getData4Key('previous');\n let next = this.getData4Key('next');\n if (previous != null){\n this.previous = { id: previous, number: this.getData4Key('previousNumber'), title: this.title, index: this.getData4Key('previousIndex')+1 };\n }\n if (next != null){\n this.next = { id: next, number: this.getData4Key('nextNumber'), title: this.title, index: this.getData4Key('nextIndex')+1 };\n }\n }\n}\n\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { Page} from '../models';\n\nexport class PageStub extends BasicResultBindingElement implements Page {\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?number WHERE {\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasPages/rdf:rest*/rdf:first ?id.\n ?id tln:hasNumber ?number.\n FILTER EXISTS { ?id tln:hasImage ?image }\n }`;\n static readonly query_key: string = 'manuscript';\n number: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.number = this.getData4Key('number');\n }\n}\nexport class TlnPage extends PageStub {\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?title ?number ?manuscript WHERE {\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages/rdf:rest*/rdf:first ?id.\n ?id a tln:Page; tln:hasNumber ?number.\n }`;\n static readonly query_key: string = 'id';\n title: string; \n manuscript: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title');\n this.manuscript = this.getData4Key('manuscript');\n if (this.service != null) {\n this.service.setCurrentIri(this.id, this.manuscript);\n //this.service.setTitle(this.title + \", \" + this.number);\n }\n }\n}\n\n","import { StandoffMarkup } from 'ngx-mat-standoff-markup';\nimport { BasicResultBindingElement } from './basic_datatype';\n/**\n * This is the line instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnPositionalStyleMarkup extends BasicResultBindingElement implements StandoffMarkup {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'word';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX homotypic: \n PREFIX rdf: \n PREFIX stoff: \n PREFIX tln: \n\n SELECT ?id ?sStyle ?start ?end WHERE {\n ?word homotypic:hasMarkup ?id. \n ?id stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n } `;\n /**\n * one or multiple css style tags like 'font-weight: bold;' or 'font-weight: bold; font-style: italic'\n **/\n sStyle: string;\n /** \n * character where the style ends.\n **/\n end: number;\n /** \n * standoff type: 0 === markup via css tag; 1 === apply css class\n **/\n sType: number = 0;\n /** \n * character where the style starts.\n **/\n start: number;\n static readonly query_key: string = 'word';\n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.sStyle = this.getData4Key('sStyle');\n this.end = this.getData4Key('end');\n this.start = this.getData4Key('start');\n }\n}\nexport class TlnFilteredPositionalStyleMarkup extends TlnPositionalStyleMarkup {\n protected readonly regex: RegExp = new RegExp('font-size:[0-9]\\+%[;]*');\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n console.log(this.sStyle, this.start, this.end);\n this.sStyle = this.sStyle.replace(this.regex,'') + 'filter: invert(1);';\n }\n}\nexport class TlnEditorCommentMarkup extends TlnPositionalStyleMarkup {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'text';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX rdf: \n PREFIX stoff: \n PREFIX tln: \n\n SELECT ?sStyle ?start ?end WHERE {\n ?text tln:textHasMarkup ?id.\n ?id stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n } `;\n static readonly query_key: string = 'text';\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.sStyle = this.sStyle + 'color: red;';\n }\n}\nexport class TlnOverwrittenMarkup extends TlnPositionalStyleMarkup {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX rdf: \n PREFIX stoff: \n PREFIX tln: \n\n SELECT ?sStyle ?start ?end WHERE {\n ?word tln:hasStandoffMarkup4PartThatOverwritesWord ?id.\n ?id stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n } `;\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.sStyle = this.sStyle + 'color: red;';\n console.log(this.sStyle);\n }\n\n}\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { PositionalObject } from '../models';\n/**\n * This is the 'text by foreign hand' instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnPositionalObject extends BasicResultBindingElement implements PositionalObject {\n /** \n * the internal default key for replacing {@link /classes/TlnWord.html#query|query} by \"id\"\n * in {@link /classes/TlnWord.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'page';\n /** \n * the public key for replacing {@link /classes/TlnWord.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'page';\n /**\n * the geometrical left position of this word's rect.\n **/\n left: number;\n /**\n * the geometrical top position of this word's rect.\n **/\n top: number;\n /**\n * the width of this word's rect.\n **/\n width: number;\n /**\n * the height of this word's rect.\n **/\n height: number;\n /** \n * the matrix transformation string of the geometrical position of this word's rect.\n * */\n transform?: string;\n \n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.left = this.getData4Key('left');\n this.top = this.getData4Key('top');\n this.width = this.getData4Key('width');\n this.height = this.getData4Key('height');\n this.transform = this.getData4Key('transform');\n }\n}\n","import { BasicResultBindingElement, FusekiResults } from './basic_datatype';\nimport { TlnWord } from './word';\nimport { TlnPositionalStyleMarkup, TlnFilteredPositionalStyleMarkup } from './positional-markup';\n\nexport class TlnPreviewWord extends TlnWord {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'line';\n static readonly query_key: string = 'line';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX homotypic: \n PREFIX rdf: \n PREFIX stoff: \n PREFIX tln: \n\n SELECT DISTINCT ?id ?text ?markup_id ?sStyle ?start ?end ?left ?top ?earlier_version WHERE {\n ?id a tln:Word; \n tln:wordBelongsToLine ?line; \n tln:hasTranskriptionPosition/tln:hasLeft ?left;\n tln:hasTranskriptionPosition/tln:hasTop ?top;\n tln:hasText ?text;\n homotypic:hasMarkup ?markup_id. \n ?markup_id stoff:hasCSS ?sStyle;\n stoff:standoffMarkupHasStartIndex ?start;\n stoff:standoffMarkupHasEndIndex ?end.\n\n FILTER(NOT EXISTS {?word tln:wordHasWordParts/rdf:rest*/rdf:first ?id})\n FILTER(NOT EXISTS {?word (tln:wordHasEarlierVersion|tln:overwritesWord) ?id})\n OPTIONAL { ?id (tln:wordHasEarlierVersion|tln:overwritesWord)/tln:hasText ?earlier_version}\n }`;\n earlier_version?: string;\n left: number;\n top: number;\n markups: TlnPositionalStyleMarkup[] = [];\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.earlier_version = this.getData4Key('earlier_version')\n this.left = this.getData4Key('left')\n this.top = this.getData4Key('top')\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnPreviewWord(content[i], id, service);\n element.markups = TlnFilteredPositionalStyleMarkup.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['markup_id'])\n if (elements.length > 0 && element.id == elements[elements.length-1].id){\n elements[elements.length-1].markups.push(element.markups[0])\n if (element.top < elements[elements.length-1].top && element.left < elements[elements.length-1].left){\n elements[elements.length-1].left = element.left;\n }\n } else {\n elements.push(element);\n }\n }\n elements.sort((w0: TlnPreviewWord, w1: TlnPreviewWord)=>{\n return w0.left - w1.left\n })\n return elements;\n }\n}\n","import { Parser, Generator } from 'sparqljs';\nimport { BasicResultBindingElement, FusekiResults} from './basic_datatype';\nimport { ManuscriptPages } from './manuscript';\nimport { QueryJson } from './query_json';\nimport { TextQuality } from '../models';\n\n\nexport class NumericResultRow extends BasicResultBindingElement {\n static readonly hasText = \"http://www.nie.org/ontology/nietzsche#hasText\";\n static readonly hasCleanText = \"http://www.nie.org/ontology/nietzsche#hasCleanText\";\n static readonly hasEditedText = \"http://www.nie.org/ontology/nietzsche#hasEditedText\";\n static readonly hasCleanEditedText = \"http://www.nie.org/ontology/nietzsche#hasCleanEditedText\";\n static readonly manuscript_variable = \"manuscript\";\n static readonly text_variable = \"id\";\n static readonly raw_text_variable = \"raw_text\";\n static readonly edited_text_variable = \"edited_text\";\n static readonly word_variable = \"word\";\n static readonly bindObject = { type: \"bind\", variable: { termType: \"Variable\", value: NumericResultRow.text_variable },\n expression: { type: \"operation\", operator: \"if\", args: [ \n { type: \"operation\", operator: \"bound\", args: [ { termType: \"Variable\", value: NumericResultRow.edited_text_variable } ] },\n { termType: \"Variable\", value: NumericResultRow.edited_text_variable }, \n { termType: \"Variable\", value: NumericResultRow.raw_text_variable }, \n ]}\n };\n static readonly orderObject = { expression: { termType: \"Variable\", value: NumericResultRow.text_variable }, descending: false };\n static readonly punctuationPattern = /[.,!;:\\-_–()“„]/g\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?word ?numText ?total WHERE { \n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasManuscriptType \"Mappe\";\n tln:hasPages/rdf:rest*/rdf:first ?page.\n ?page a tln:Page; \n tln:hasWords/rdf:rest*/rdf:first ?word.\n }`;\n wordIds: string[] = [];\n numText: number;\n numProperties: number = 1;\n numPropertiesPercent: number = 1;\n numPropertiesIncludeMulti: number = 1;\n numTextPercent: number = 1;\n numPropertyTextPercent: number = 1;\n total: number;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.numText = this.getData4Key('numText');\n this.total = this.getData4Key('total');\n this.wordIds.push(this.getData4Key('word'));\n this.updatePercentages();\n }\n public updateResult(item: NumericResultRow) {\n this.wordIds = this.wordIds.concat(item.wordIds);\n this.numPropertiesIncludeMulti = this.wordIds.length \n this.numProperties = (new Set(this.wordIds)).size;\n this.updatePercentages();\n }\n private updatePercentages(){\n this.numPropertiesPercent = Math.round((this.numProperties/this.total)*10000)/100;\n this.numTextPercent = Math.round((this.numText/this.total)*10000)/100;\n this.numPropertyTextPercent = Math.round((this.numProperties/this.numText)*10000)/100;\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n if (!this.contentConforms2Type(data)){\n return [];\n }\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new NumericResultRow(content[i], service);\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n elements[elements.length-1].updateResult(element);\n } else {\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n private static createGroup(whereItems: Object[], aggregate_variable: string, group?: string): Object {\n if (group != undefined && group != null) {\n return { \n type: \"group\", \n patterns: [ \n { queryType: \"SELECT\", \n variables: [ \n { expression: { type: \"aggregate\", aggregation: \"count\", distinct: false, expression: { termType: \"Variable\", value: group }}, \n variable: { termType: \"Variable\", value: aggregate_variable } },\n { termType: \"Variable\", value: group }\n ],\n where: whereItems, \n type: \"query\",\n group: [ { expression: { termType: \"Variable\", value: group }} ]\n } ] \n };\n } else {\n return { \n type: \"group\", \n patterns: [ \n { queryType: \"SELECT\", \n variables: [ \n { expression: { type: \"aggregate\", aggregation: \"count\", distinct: false, expression: { termType: \"Variable\", value: this.word_variable }}, \n variable: { termType: \"Variable\", value: aggregate_variable } } \n ],\n where: [{ type: \"bgp\", triples: whereItems }], \n type: \"query\"\n } ] \n };\n }\n }\n private static hasTextObject(textQuality: TextQuality): Object {\n const hasText = (textQuality.clean) ? NumericResultRow.hasCleanText : NumericResultRow.hasText;\n const objectVariable = (textQuality.preferEditedText) ? NumericResultRow.raw_text_variable : NumericResultRow.text_variable;\n return { \n subject: { termType: \"Variable\", value: NumericResultRow.word_variable }, \n predicate: { termType: \"NamedNode\", value: hasText }, \n object: { termType: \"Variable\", value: objectVariable } \n };\n }\n private static optionalEditedTextObject(textQuality: TextQuality): Object { \n const hasEditedText = (textQuality.clean) ? NumericResultRow.hasCleanEditedText : NumericResultRow.hasEditedText;\n return { type: \"optional\", patterns: [ { type: \"bgp\", triples: [ { \n subject: { termType: \"Variable\", value: NumericResultRow.word_variable }, \n predicate: { termType: \"NamedNode\", value: hasEditedText }, \n object: { termType: \"Variable\", value: NumericResultRow.edited_text_variable } \n } ] } ]\n };\n }\n private static insertTextConditions(parsedQuery: Object, textQuality: TextQuality){\n parsedQuery['where'][0].triples.push(this.hasTextObject(textQuality));\n if(textQuality.preferEditedText){\n parsedQuery['where'].push(this.optionalEditedTextObject(textQuality));\n parsedQuery['where'].push(this.bindObject);\n } \n }\n public static getSelectableQuery(selectableProperties: SelectableWordProperty[], scopus: ManuscriptPages[], textQuality: TextQuality, text?: string, ignoreCase?: boolean, orderDesc?: boolean): string {\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(this.query)\n let basicWhereTriples = parsedQuery.where[0].triples.slice();\n this.insertTextConditions(parsedQuery, textQuality);\n const whereBeforeProperties = JSON.parse(JSON.stringify(parsedQuery.where));//deep cloning\n selectableProperties.forEach(selectableProperty =>{\n parsedQuery.where[0].triples.push({ \n subject: { termType: \"Variable\", value: this.word_variable }, \n predicate: { termType: \"NamedNode\", value: selectableProperty.id }, \n object: { termType: \"Variable\", value: selectableProperty.id.substring(selectableProperty.id.indexOf('#')+1) } \n })\n });\n if (text != undefined && text != null && text != '') {\n let regexFilter = { type: \"filter\", expression: {\n type: \"operation\", operator: \"regex\", args: [\n { termType: \"Variable\", value: this.text_variable },\n { termType: \"Literal\", value: text }\n ]\n } \n }\n if (ignoreCase != undefined && ignoreCase){\n regexFilter.expression.args.push({ termType: \"Literal\", value: \"i\" });\n }\n parsedQuery.where.push(regexFilter);\n }\n let totalGroup = this.createGroup(basicWhereTriples, \"total\");\n let numGroup = this.createGroup(whereBeforeProperties, \"numText\", this.text_variable);\n if (scopus.length > 0){\n let filters = scopus.map(manuscript =>QueryJson.createEqualsOperation(manuscript.id, this.manuscript_variable));\n let filterObject = QueryJson.createFilterObject(filters);\n parsedQuery.where.push(filterObject);\n totalGroup['patterns'][0].where.push(filterObject);\n numGroup['patterns'][0].where.push(filterObject);\n }\n parsedQuery.where.push(totalGroup);\n parsedQuery.where.push(numGroup);\n parsedQuery['order'] = [ this.orderObject ]\n return sparqlGenerator.stringify(parsedQuery);\n }\n}\n\nexport class SelectableWordProperty extends BasicResultBindingElement{\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdfs: \n PREFIX skos: \n\n SELECT DISTINCT ?id ?label ?propName WHERE {\n ?id rdfs:subPropertyOf tln:selectableWordProperty;\n skos:prefLabel ?label.\n #BIND(STRAFTER(STR(?id), STR(tln:)) as ?propName)\n }`;\n id: string;\n label: string;\n //propName: string;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.id = this.getData4Key('id');\n this.label = this.getData4Key('label');\n //this.propName = this.getData4Key('propName');\n }\n}\n","import { Parser, Generator } from 'sparqljs';\n\n\nexport interface ParsedQuery {\n where: any[];\n}\nexport interface Arg {\n termType: string; \n value: string;\n}\nexport class Literal implements Arg {\n termType: string = \"Literal\"\n value: string;\n constructor(value: string){\n this.value = value;\n }\n}\nexport class NamedNode implements Arg {\n termType: string = \"NamedNode\"\n value: string;\n constructor(value: string){\n this.value = value;\n }\n}\nexport class Variable implements Arg {\n termType: string = \"Variable\"\n value: string;\n constructor(value: string){\n this.value = value;\n }\n}\nexport interface Triple {\n subject: Arg;\n predicate: Arg;\n object: Arg;\n}\nexport interface WhereBgp {\n type: string;\n triples: Triple[];\n}\nexport class QueryObject {\n type: string;\n constructor(type: string){\n this.type = type;\n }\n}\nexport class Operation extends QueryObject {\n args: Arg[];\n operator: string;\n constructor(operator: string, args: Arg[] ){\n super(\"operation\");\n this.operator = operator;\n this.args = args;\n }\n}\nexport class BGP extends QueryObject implements WhereBgp {\n triples: Triple[];\n constructor(triples: Triple[] ){\n super(\"bgp\");\n this.triples = triples;\n }\n}\n\nexport class QueryJson {\n public static toString(parsedQuery: ParsedQuery): string {\n const sparqlGenerator = new Generator({});\n return sparqlGenerator.stringify(parsedQuery);\n }\n public static parseQuery(query: string): ParsedQuery {\n const parser = new Parser(); \n return parser.parse(query);\n }\n public static createFilterObject(filters: Object[] ): Object{\n let filterObject = { type: \"filter\", expression: null };\n if (filters.length > 1){\n filterObject.expression = { type: \"operation\", operator: \"||\", args: [] }\n let filter = filters.pop()\n this.pushFilter2Args(filters, filterObject.expression.args, filter);\n } else {\n filterObject.expression = filters[0];\n }\n return filterObject;\n }\n public static createEqualsOperation(id: string, variable_name: string): Operation {\n return new Operation(\"=\", [ new Variable(variable_name), new NamedNode(id) ]);\n }\n public static createRegexOperation(variable_name: string, regex: string, flag?: string): Operation {\n let args: Arg[] = [ new Variable(variable_name), new Literal(regex) ]\n if (flag != undefined && flag != null && flag != '') {\n args.push(new Literal(flag))\n }\n return new Operation(\"regex\", args);\n }\n private static pushFilter2Args(filters: Object[], args: Object[], latestFilter: Object){\n if (filters.length > 1){\n let filter = filters.pop();\n let disjunction = { type: \"operation\", operator: \"||\", args: [] }\n disjunction.args.push(filter);\n disjunction.args.push(latestFilter);\n this.pushFilter2Args(filters, args, disjunction);\n } else {\n args.push(latestFilter);\n args.push(filters.pop());\n }\n }\n public static hasSyntaxError(query: string): boolean {\n const parser = new Parser(); \n try {\n const parsedQuery = parser.parse(query);\n } catch(e){\n return true;\n }\n return false;\n }\n public static getSyntaxError(query: string): string {\n const parser = new Parser(); \n try {\n const parsedQuery = parser.parse(query);\n } catch(e){\n return String(e);\n }\n return '';\n }\n public static splitWhereBGP(bgp: WhereBgp, key: string): BGP[] {\n let triplesWithKey = bgp.triples.filter(triple =>triple.subject.value == key)\n let triplesWithOutKey = bgp.triples.filter(triple =>triple.subject.value != key)\n return [ new BGP(triplesWithKey), new BGP(triplesWithOutKey) ]\n }\n}\n","import { BasicResultBindingElement, FusekiResults} from './basic_datatype';\nimport { TLN_SEARCH_ROUTE } from '../constants';\nimport { QueryJson } from './query_json';\nimport { ManuscriptPages } from './manuscript';\nimport { TlnWord } from './word';\nexport class TlnExtWord extends TlnWord {\n startLine?: string; \n endLine?: string;\n\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.startLine = this.getData4Key('startLine');\n this.endLine = this.getData4Key('endLine');\n }\n}\nexport class PageResult {\n words: TlnExtWord[] = [];\n\n constructor(words: TlnExtWord[]){\n this.words = words;\n }\n public getWords(): string[] {\n return this.words.map(word =>word.id);\n }\n public getStartLine(): string {\n let sortedWords = this.words.sort((word0, word1) =>word0.line_number - word1.line_number)\n if (sortedWords.length == 0){\n return '';\n }\n return (sortedWords[0].startLine != undefined && sortedWords[0].startLine != null) ? sortedWords[0].startLine : sortedWords[0].line;\n }\n public getEndLine(): string {\n let sortedWords = this.words.sort((word0, word1) =>word0.line_number - word1.line_number)\n if (sortedWords.length == 0){\n return '';\n }\n return (sortedWords[sortedWords.length-1].endLine != undefined && sortedWords[sortedWords.length-1].endLine != null) \n ? sortedWords[sortedWords.length-1].endLine : sortedWords[sortedWords.length-1].line;\n }\n}\nexport class FoundPage extends BasicResultBindingElement{\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT DISTINCT ?id ?manuscript ?title ?number ?word ?text ?line ?line_number ?startLine ?endLine WHERE {\n ?id tln:hasPseudoText ?fulltext.\n FILTER(?fulltext != \"none\").\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasManuscriptType \"Mappe\";\n tln:hasPages/rdf:rest*/rdf:first ?id;\n tln:hasTitle ?title.\n FILTER(?manuscript != \"none\").\n ?id a tln:Page;\n tln:hasNumber ?number;\n tln:hasWords/rdf:rest*/rdf:first ?word.\n ?word tln:hasOutputText ?text;\n tln:wordBelongsToLine ?line.\n ?line tln:lineHasNumber ?line_number.\n OPTIONAL{ ?previouseNode rdf:rest/rdf:first ?line;\n rdf:first ?startLine.}\n OPTIONAL{ ?myNode rdf:first ?line;\n rdf:rest/rdf:first ?endLine.}\n } order by ?id ?line_number`;\n title: string\n number: string;\n manuscript: string\n results: PageResult[] = [];\n\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title'); \n this.number = this.getData4Key('number');\n this.manuscript = this.getData4Key('manuscript');\n }\n public removeIncompleteResults(searchTerms: string[], ignoreCaseFlag: string) {\n this.results = this.results.filter(result =>searchTerms.every(\n searchText =>result.words.filter(word =>word.text.match(new RegExp('^[^\\w\\s]*' + searchText + '.*', ignoreCaseFlag))).length > 0))\n }\n /**\n * This method returns the parametrized SPARQL query of this FoundPage\n *\n * If \"key\" is omitted {@link /classes/BasicResultBindingElement.html#default_key|default_key} will be used.\n *\n * @param find the search text\n * @param korpus (optional) restrict search on selected ManuscriptPages. \n **/\n public static getSeachQuery(find: string, ignoreCase: boolean, korpus: ManuscriptPages[], manuscript_variable?: string): string {\n let words = find.split(' ')\n let find_regex = words.join('.*') + '.*'\n let or_find_regex = '^[^\\\\w]?(' + words.join('.*|') + '.*)';\n let parsedQuery = QueryJson.parseQuery(this.query)\n let ignoreCaseFlag = (ignoreCase) ? 'i' : '';\n let join_filters = [ QueryJson.createRegexOperation('fulltext', find_regex, 's' + ignoreCaseFlag) ]\n parsedQuery.where[1] = QueryJson.createFilterObject(join_filters);\n if (korpus.length > 0 && manuscript_variable != undefined && manuscript_variable != null){\n let equal_filters = korpus.map(manuscript =>QueryJson.createEqualsOperation(manuscript.id, manuscript_variable));\n parsedQuery.where[3] = QueryJson.createFilterObject(equal_filters);\n }\n let or_filters = [ QueryJson.createRegexOperation('text', or_find_regex, ignoreCaseFlag) ]\n parsedQuery.where.push(QueryJson.createFilterObject(or_filters));\n return QueryJson.toString(parsedQuery);\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let pages = []; \n let searchTerms = service.getSearchTerms();\n let content = this.getContent(data);\n let currentResult: PageResult = null;\n let currentPage: FoundPage = null;\n for (var i = 0; i < content.length; i++){\n let page = new FoundPage(content[i], id, service);\n if(content[i]['word'] != undefined && content[i]['word'] != null) { \n let words = TlnExtWord.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['word']['value']);\n if (pages.length == 0 || pages.map(page =>page.id).indexOf(page.id) == -1){\n currentResult = new PageResult(words);\n currentPage = page;\n currentPage.results.push(currentResult)\n pages.push(currentPage)\n } else {\n if (currentResult.words.indexOf(words[0]) == -1){\n if (currentResult.words.length > 0 \n && (Math.abs(Math.min(...currentResult.words.map(word =>word.line_number)) - words[0].line_number) > 4\n || Math.abs(Math.max(...currentResult.words.map(word =>word.line_number)) - words[0].line_number) > 4)){\n currentResult = new PageResult(words);\n currentPage.results.push(currentResult);\n } else {\n currentResult.words.push(words[0]);\n }\n }\n }\n }\n }\n pages.forEach(page =>page.removeIncompleteResults(searchTerms, service.getIgnoreCaseFlag()));\n return pages.filter(page =>page.results.length > 0);\n }\n}\n","import { TlnImage } from './image';\nimport { Image } from '../models';\n\nexport class SVGImage extends TlnImage {\n static readonly query: string = `\n PREFIX tln: \n\n SELECT ?id ?filename ?width ?height ?URL ?secondaryURL ?t_left ?t_top ?t_width ?t_height ?page WHERE {\n ?id a tln:SVGImage;\n tln:hasPrimaryurl ?URL;\n tln:hasSecondaryurl ?secondaryURL;\n tln:hasFileName ?filename;\n tln:hasWidth ?width;\n tln:hasHeight ?height;\n tln:hasTextField ?textfield.\n ?textfield tln:hasLeft ?t_left;\n tln:hasTop ?t_top;\n tln:hasWidth ?t_width;\n tln:hasHeight ?t_height;\n ^tln:pageIsOnTextField ?page.\n }`;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.x = this.text_field.left;\n this.y = this.text_field.top;\n }\n}\nexport class SVGImageClip extends SVGImage {\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?filename ?width ?height ?URL ?secondaryURL ?t_left ?t_top ?t_width ?t_height ?page ?y ?end_bottom WHERE {\n ?id a tln:SVGImage;\n tln:hasPrimaryurl ?URL;\n tln:hasSecondaryurl ?secondaryURL;\n tln:hasFileName ?filename;\n tln:hasWidth ?width;\n tln:hasHeight ?height;\n tln:hasTextField ?textfield.\n ?textfield tln:hasLeft ?t_left;\n tln:hasTop ?y;\n tln:hasWidth ?t_width;\n ^tln:pageIsOnTextField ?page.\n ?page tln:hasLines ?lines.\n ?lines rdf:rest* ?start_node;\n rdf:rest* ?end_node.\n ?start_node rdf:first ?startLine;.\n ?end_node rdf:first ?endLine;.\n ?startLine tln:lineHasTopValueOnTranskription ?start_top.\n ?endLine tln:lineHasBottomValueOnTranskription ?end_bottom.\n OPTIONAL { ?start_node ^rdf:rest/rdf:first ?previousLine.\n ?previousLine tln:lineHasBottomValueOnTranskription ?previous_bottom. \n }\n OPTIONAL { ?end_node rdf:rest/rdf:first/rdf:rest/rdf:first ?nextLine.\n ?nextLine tln:lineHasTopValueOnTranskription ?next_top. \n }\n BIND(IF(bound(?previous_bottom), ?previous_bottom+1, ?start_top - 5) as ?t_top)\n BIND(IF(bound(?next_top), ?next_top-?t_top, ?end_bottom - ?t_top + 10) as ?t_height)\n }`;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.y = this.getData4Key('y');\n }\n}\n","import { FusekiResults, BasicResultBindingElement } from './basic_datatype';\nimport { TextGeneticOrder, TextUnity, TextVersion } from '../models';\nimport { PageStub } from './page';\nexport class TlnTextVersion extends BasicResultBindingElement implements TextVersion {\n id: string;\n title: string; \n extUrl?: string;\n manuscript?: string;\n textUnities: TlnTextUnity[] = [];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.title = this.getData4Key('title');\n this.extUrl = this.getData4Key('extUrl');\n this.manuscript = this.getData4Key('manuscript');\n }\n}\nexport class TlnTextUnity extends BasicResultBindingElement implements TextUnity {\n number: string;\n startLine?: number;\n endLine?: number;\n belongsToPage?: string;\n endLineIri?: string;\n startLineIri? : string;\n hasFaksimileImage?: boolean;\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.number = this.getData4Key('number');\n this.startLine = this.getData4Key('startLine');\n this.endLine = this.getData4Key('endLine');\n this.belongsToPage = this.getData4Key('text_page');\n this.startLineIri = this.getData4Key('startLineIri');\n this.endLineIri = this.getData4Key('endLineIri');\n this.hasFaksimileImage = this.getData4Key('hasFaksimileImage');\n }\n}\n/**\n * This is the text version instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnTextGeneticOrder extends BasicResultBindingElement implements TextGeneticOrder {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'page';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n \n SELECT distinct ?id ?text_version ?text_unity ?text_page ?number ?startLine ?endLine ?title WHERE {\n {?version a tln:IdentifiedTextVersion;\n \t\t tln:identifiesAsVersion/rdf:rest*/rdf:first ?page.\n } UNION {\n ?version a tln:IdentifiedTextVersion;\n \t\t tln:identifiesAsVersion/rdf:rest*/rdf:first/tln:belongsToPage ?page.\n }\n ?id tln:hasGeneticOrder/rdf:rest*/rdf:first ?version;\n tln:hasGeneticOrder/rdf:rest*/rdf:first ?text_version.\n \n OPTIONAL { ?text_version tln:identifiesAsVersion/rdf:rest*/rdf:first ?text_unity.\n OPTIONAL { ?text_unity tln:hasNumber ?number.\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages/rdf:rest*/rdf:first ?text_unity.\n }\n OPTIONAL { ?text_unity tln:belongsToPage ?text_page; \n tln:startLine/tln:lineHasNumber?startLine;\n tln:endLine/tln:lineHasNumber ?endLine.\n \t\t\t ?text_page tln:hasNumber ?number.\n \t\t\t ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages/rdf:rest*/rdf:first ?text_page.\n }\n }\n OPTIONAL { ?text_version tln:textUnitHasTitle ?title.}\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'page';\n textVersions: TlnTextVersion[] = []; \n\n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnTextGeneticOrder(content[i], service);\n let versions = TlnTextVersion.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['text_version']['value'])\n let text_unities = (content[i]['text_unity'] != undefined) ? \n TlnTextUnity.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['text_unity']['value']) : [];\n /*if (text_unities.length > 0){\n console.log(text_unities[0]);\n }*/\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (elements[elements.length-1].textVersions.length > 0 \n && elements[elements.length-1].textVersions[elements[elements.length-1].textVersions.length-1].id == versions[0].id){\n if (text_unities.length > 0){\n elements[elements.length-1].textVersions[elements[elements.length-1].textVersions.length-1].textUnities.push(text_unities[0]);\n }\n } else {\n if (text_unities.length > 0){\n versions[0].textUnities.push(text_unities[0])\n }\n elements[elements.length-1].textVersions.push(versions[0]);\n }\n } else {\n if (text_unities.length > 0){\n versions[0].textUnities.push(text_unities[0])\n }\n element.textVersions.push(versions[0])\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\nexport class TlnStandaloneTextVersion extends TlnTextVersion {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'geneticOrder';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n \n SELECT distinct ?id ?text_unity ?text_page ?manuscript ?number ?startLine ?startLineIri ?endLine ?endLineIri ?title ?extUrl ?hasFaksimileImage WHERE {\n ?geneticOrder a tln:TextGenesis;\n tln:hasGeneticOrder/rdf:rest*/rdf:first ?id.\n \n OPTIONAL { ?id tln:identifiesAsVersion/rdf:rest*/rdf:first ?text_unity.\n OPTIONAL { ?text_unity tln:hasNumber ?number.\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages/rdf:rest*/rdf:first ?text_unity.\n BIND(exists{ ?text_unity tln:hasFaksimileImage ?image } as ?hasFaksimileImage)\n }\n OPTIONAL { ?text_unity tln:belongsToPage ?text_page; \n tln:startLine ?startLineIri;\n tln:endLine ?endLineIri.\n \t\t\t ?text_page tln:hasNumber ?number.\n ?startLineIri tln:lineHasNumber?startLine.\n ?endLineIri tln:lineHasNumber ?endLine.\n \t\t\t ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasTitle ?title;\n tln:hasPages/rdf:rest*/rdf:first ?text_page.\n BIND(exists{ ?text_page tln:hasFaksimileImage ?image } as ?hasFaksimileImage)\n }\n }\n OPTIONAL { ?id tln:textUnitHasTitle ?title; tln:textUnitHasUrl ?extUrl.}\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'geneticOrder';\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n if(this.service != null){\n this.service.initSelecteTextVersion(this);\n }\n }\n\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let elements = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let element = new TlnStandaloneTextVersion(content[i], id, service);\n let text_unities = (content[i]['text_unity'] != undefined) ? \n TlnTextUnity.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['text_unity']['value']) : [];\n if (elements.length > 0 && elements[elements.length-1].id == element.id){\n if (text_unities.length > 0){\n elements[elements.length-1].textUnities.push(text_unities[0]);\n }\n } else {\n if (text_unities.length > 0){\n element.textUnities.push(text_unities[0]);\n }\n elements.push(element)\n }\n }\n //console.log(elements)\n return elements;\n }\n\n}\nexport class TlnPageWithTextGeneticOrder extends PageStub {\n /** \n * the internal default key for replacing {@link /classes/TlnLine.html#query|query} by \"id\"\n * in {@link /classes/TlnLine.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'manuscript';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n \n SELECT distinct ?id ?number WHERE {\n ?manuscript tln:hasPages/rdf:rest*/rdf:first ?id.\n {?version a tln:IdentifiedTextVersion;\n \t\t tln:identifiesAsVersion/rdf:rest*/rdf:first ?id.\n } UNION {\n ?version a tln:IdentifiedTextVersion;\n \t\t tln:identifiesAsVersion/rdf:rest*/rdf:first/tln:belongsToPage ?id.\n }\n ?id tln:hasNumber ?number.\n }`;\n /** \n * the public key for replacing {@link /classes/TlnLine.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'manuscript';\n\n}\n\n","import { BasicResultBindingElement } from './basic_datatype';\nimport { TlnPositionalObject } from './positional_object';\nimport { Word } from '../models';\n/**\n * This is the word instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnWord extends TlnPositionalObject implements Word {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text ?edited_text ?left ?top ?width ?height ?transform ?line ?line_number ?deleted ?deletion_path ?undeleted WHERE {\n ?page tln:hasWords/rdf:rest*/rdf:first ?id.\n ?id tln:wordBelongsToLine ?line; \n tln:hasText ?text;\n tln:hasTranskriptionPosition ?tp.\n \t?tp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n ?line tln:lineHasNumber ?line_number.\n BIND(exists{\n {?id tln:wordIsDeletedByPath ?path} \n UNION{ ?id tln:wordHasWordParts/rdf:rest*/rdf:first ?word_part.\n ?word_part tln:hasTranskriptionPosition ?tp; tln:wordIsDeletedByPath ?path}\n } as ?deleted)\n BIND(exists{\n {?id tln:wordIsUndeletedFromPath ?path} \n UNION{ ?id tln:wordHasWordParts/rdf:rest*/rdf:first ?word_part.\n ?word_part tln:hasTranskriptionPosition ?tp; tln:wordIsUndeletedFromPath ?path}\n } as ?undeleted)\n OPTIONAl { ?tp tln:hasTransform ?transform.}\n OPTIONAl { ?id tln:hasEditedText ?edited_text.}\n OPTIONAl { ?id tln:wordIsDeletedByPath/tln:hasDAttribute ?deletion_path.}\n OPTIONAl { ?id tln:wordHasWordParts/rdf:rest*/rdf:first ?word_part.\n ?word_part tln:hasTranskriptionPosition ?tp; tln:wordIsDeletedByPath/tln:hasDAttribute ?deletion_path}\n } `;\n /**\n * the text of this word\n **/\n text: string;\n /**\n * the text of this word as it has been edited by the editors.\n **/\n edited_text?: string;\n /**\n * the id of the line to which this word belongs.\n **/\n line: string;\n /**\n * the number of the line to which this word belongs.\n * */\n line_number: number;\n /**\n * is this word deleted.\n **/\n deleted: boolean;\n /** \n * a deletion path\n **/\n deletion_path?: string;\n \n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.text = this.getData4Key('text');\n this.edited_text = this.getData4Key('edited_text');\n this.line = this.getData4Key('line');\n this.line_number = this.getData4Key('line_number');\n this.deleted = this.getData4Key('deleted');\n let undeleted = this.getData4Key('undeleted');\n if (undeleted){\n this.deleted = false;\n }\n this.deletion_path = this.getData4Key('deletion_path');\n }\n}\n/**\n * This is the faksimile word instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class FaksimileWord extends TlnWord {\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text ?edited_text ?left ?top ?width ?height ?transform ?line ?line_number ?deleted ?undeleted WHERE {\n ?page tln:hasWords/rdf:rest*/rdf:first ?id.\n ?id tln:wordBelongsToLine ?line; \n tln:hasText ?text;\n tln:hasFaksimilePosition ?fp.\n \t?fp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n ?line tln:lineHasNumber ?line_number.\n BIND(exists{{?id tln:wordIsDeletedByPath ?path} UNION { ?id tln:wordHasWordParts/rdf:rest*/rdf:first/tln:wordIsDeletedByPath ?path}\n } as ?deleted)\n BIND(exists{\n {?id tln:wordIsUndeletedFromPath ?path}\n UNION{ ?id tln:wordHasWordParts/rdf:rest*/rdf:first ?word_part.\n ?word_part tln:hasTranskriptionPosition ?tp; tln:wordIsUndeletedFromPath ?path}\n } as ?undeleted)\n OPTIONAl { ?fp tln:hasTransform ?transform.}\n OPTIONAl { ?id tln:hasEditedText ?edited_text.}\n } `;\n}\n/**\n * This is the word stub instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class WordStub extends BasicResultBindingElement {\n /** \n * the internal default key for replacing {@link /classes/TlnWord.html#query|query} by \"id\"\n * in {@link /classes/TlnWord.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'word';\n /** \n * the public key for replacing {@link /classes/TlnWord.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'word';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?text WHERE {\n ?id a tln:Word;\n tln:hasText ?text.\n }`;\n /**\n * text of word \n **/\n text: string;\n \n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.text = this.getData4Key('text');\n }\n}\nexport class WordWithLine extends WordStub {\n /** \n * the internal default key for replacing {@link /classes/TlnWord.html#query|query} by \"id\"\n * in {@link /classes/TlnWord.html#getQuery|getQuery} if \"key\" is omitted.\n **/\n static readonly default_key: string = 'id';\n /** \n * the public key for replacing {@link /classes/TlnWord.html#query|query} by \"id\".\n **/\n static readonly query_key: string = 'id';\n /** \n * the SPARQL-query of this datatype.\n **/\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?text ?lineNumber WHERE {\n ?id a tln:Word;\n tln:wordBelongsToLine ?line;\n tln:hasText ?text.\n ?line tln:lineHasNumber ?lineNumber.\n }`;\n /**\n * text of word \n **/\n lineNumber: number;\n \n /**\n * The constructor creates a datatype from the data.\n *\n * @param id if omitted the id will be retrieved from data\n **/\n constructor(data: any, id?: string, service?: any){\n super(data, id, service)\n this.lineNumber = this.getData4Key('lineNumber');\n }\n}\n","import { Parser, Generator } from 'sparqljs';\nimport { BasicResultBindingElement, FusekiResults} from './basic_datatype';\nimport { ManuscriptStub } from './manuscript';\nimport { PageStub } from './page';\nimport { WordStub } from './word';\nimport { QueryJson } from './query_json';\n\nexport class PresentationWord extends WordStub {\n line_number: number;\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n this.line_number = this.getData4Key('line_number');\n }\n}\nexport class PageWords extends PageStub {\n words: WordStub[] = [];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n }\n}\nexport class ManuscriptPageWords extends ManuscriptStub {\n static readonly query_key: string = 'word';\n static readonly default_key: string = 'word';\n static readonly query: string = `\n PREFIX tln: \n PREFIX rdf: \n\n SELECT ?id ?word ?title ?type ?page ?number ?text ?line_number WHERE {\n ?word tln:hasText ?text;\n tln:wordBelongsToLine/tln:lineHasNumber ?line_number.\n ?page a tln:Page;\n tln:hasWords/rdf:rest*/rdf:first ?word;\n tln:hasNumber ?number.\n ?id a tln:ArchivalManuscriptUnity;\n tln:hasPages/rdf:rest*/rdf:first ?page;\n tln:hasManuscriptType ?type;\n tln:hasTitle ?title.\n } ORDER BY ?id ?page`;\n pages: PageWords[] = [];\n\n constructor (data: any, id?: string, service?: any) {\n super(data, id, service);\n }\n public static convertData(this: T, data: FusekiResults, id?: string, service?: any): Array> {\n let manuscripts = []; \n let content = this.getContent(data);\n for (var i = 0; i < content.length; i++){\n let manuscript = new ManuscriptPageWords(content[i], id, service);\n let page = PageWords.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['page']['value'])[0]\n let word = PresentationWord.convertData({ head: { vars: []}, results: { bindings: [ content[i] ] } }, content[i]['word']['value'])[0]\n if (manuscripts.length > 0 && manuscript.id == manuscripts[manuscripts.length-1].id){\n if (manuscripts[manuscripts.length-1].pages.length > 0 \n && page.id == manuscripts[manuscripts.length-1].pages[manuscripts[manuscripts.length-1].pages.length-1].id){\n manuscripts[manuscripts.length-1].pages[manuscripts[manuscripts.length-1].pages.length-1].words.push(word);\n } else {\n if (manuscripts[manuscripts.length-1].pages.length > 0){\n console.log(page)\n }\n page.words.push(word)\n manuscripts[manuscripts.length-1].pages.push(page)\n }\n } else {\n page.words.push(word)\n manuscript.pages.push(page);\n manuscripts.push(manuscript);\n }\n }\n return manuscripts;\n }\n public static getParameterizedQuery(wordIds: string[]): string {\n let parser = new Parser();\n let sparqlGenerator = new Generator({});\n let parsedQuery = parser.parse(this.query)\n let filters = wordIds.map(id =>QueryJson.createEqualsOperation(id, this.query_key));\n let filterObject = QueryJson.createFilterObject(filters);\n parsedQuery.where.push(filterObject);\n return sparqlGenerator.stringify(parsedQuery);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'debug'\n})\nexport class DebugPipe implements PipeTransform {\n\n transform(value: any): any {\n console.log(value)\n return value;\n }\n\n}\n","import { OnInit, EventEmitter} from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { BasicResultBindingElement, AskResult} from './datatypes/basic_datatype';\nimport { DataHandler, Handler } from './data_handler';\n\n/**\n * This class retrieves quantitative data from a query service and instantiates it using \n * corresponding handlers.\n **/\nexport class QuantitativeDataHandler extends DataHandler {\n /**\n * @param component the component that uses this data handler\n **/\n constructor(protected component: OnInit){\n super(component)\n }\n /**\n * Retrieve and instantiate data\n * @param key data handler key\n * @param query iri that should be passed to query\n **/\n public getData4Query(key: string, query: string, raw_data_key?: string) {\n this.start_processing.emit(true);\n let handler = this[key]['handler'];\n this.queryService.getData(query).pipe(takeUntil(this.stop_processing)).subscribe(results => {\n this.component[key] = handler.convertData(results);\n if (raw_data_key != undefined && raw_data_key != null){\n this.component[raw_data_key] = results;\n }\n this.processing_finished.emit(true);\n if (this[key]['process_data'] != undefined && this[key]['process_data'] != null){\n this[key]['process_data'].processData(); \n }\n });\n }\n /**\n * Retrieve and instantiate data\n * @param key data handler key\n * @param query iri that should be passed to query\n * @param searchTermsString string containing the search terms \n **/\n public getSearchData(key: string, query: string, searchTermsString: string) {\n this.start_processing.emit(true);\n let handler = this[key]['handler'];\n this.queryService.getData(query).pipe(takeUntil(this.stop_processing)).subscribe(results => {\n this.component[key] = handler.convertData(results, null, this[key]['service']);\n this.processing_finished.emit(true);\n if (this[key]['process_data'] != undefined && this[key]['process_data'] != null){\n this[key]['process_data'].processData(); \n }\n });\n }\n}\n","import { OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\n\nexport interface ParamContent {\n param: string;\n type: string;\n debug?: string;\n ignore?: boolean;\n}\nexport interface Mapping {\n [name: string]: ParamContent; \n}\n\nexport class RouteReader implements OnInit {\n protected mapping: Mapping; \n protected routerParams: Params;\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { }\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe(params => {\n this.readParams(params)\n });\n }\n protected readParams(params: Params) {\n this.routerParams = params;\n for(let key of Object.keys(this.mapping)){\n if (this.mapping[key]['ignore'] == undefined || !this.mapping[key]['ignore']){\n let paramsKey = this.mapping[key]['param'];\n if (this.routerParams[paramsKey] != null){\n if (this.mapping[key]['type'] == 'number'){\n this[key] = Number(this.routerParams[paramsKey])\n } else if (this.mapping[key]['type'] == 'boolean'){\n this[key] = (this.routerParams[paramsKey] == 'true')\n } else if (this.mapping[key]['type'] == 'URI' || this.mapping[key]['type'] == 'URL'){\n this[key] = decodeURI(this.routerParams[paramsKey])\n } else if (this.mapping[key]['type'] == 'complex'){\n this[key] = JSON.parse(this.routerParams[paramsKey])\n } else if (Array.isArray(this[key]) && !Array.isArray(this.routerParams[paramsKey])) {\n this[key] = JSON.parse(this.routerParams[paramsKey])\n } else {\n this[key] = this.routerParams[paramsKey];\n } \n if (this.mapping[key]['debug'] != null){\n console.log(this.mapping[key]['debug'], this[key]);\n }\n }\n }\n }\n }\n}\n","import { Router, ActivatedRoute, Params } from '@angular/router';\nimport { Mapping, RouteReader } from './route-reader';\n\nexport class RouteUpdater extends RouteReader {\n protected mapping: Mapping;\n protected routerParams: Params;\n protected currentRoute: string;\n parentActivatedRoute: ActivatedRoute;\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n if(this.currentRoute == undefined || this.currentRoute == null){\n this.currentRoute = (this.activatedRoute.snapshot.routeConfig != null)\n ? this.activatedRoute.snapshot.routeConfig.path : null;\n }\n }\n public setParam(key: string, value: any){\n if(this.mapping.hasOwnProperty(key)){\n this[key] = value;\n this.updateParams();\n }\n }\n private removeData(dataBearer: any) {\n if (typeof dataBearer != 'string' && typeof dataBearer != 'number' && typeof dataBearer != 'boolean'){\n if (Array.isArray(dataBearer)){\n dataBearer.forEach(data =>this.removeData(data));\n } else {\n dataBearer['data'] = null;\n Object.values(dataBearer).forEach(item =>{\n if (item != null){\n this.removeData(item);\n }\n });\n }\n }\n }\n protected updateParams(launch?: boolean) {\n let newRouterParam = {};\n for(let key of Object.keys(this.mapping)){\n let paramsKey = this.mapping[key]['param'];\n if(this[key] != null){\n if (this.mapping[key]['type'] == 'complex' || (Array.isArray(this[key]) && this[key].length > 0)){\n this.removeData(this[key]);\n newRouterParam[paramsKey] = JSON.stringify(this[key]);\n } else if (this.mapping[key]['type'] == 'URI' || this.mapping[key]['type'] == 'URL') {\n newRouterParam[paramsKey] = encodeURI(this[key]);\n } else {\n newRouterParam[paramsKey] = this[key];\n }\n }\n }\n let parentActivatedRoute = (this.activatedRoute.parent != null) ? this.activatedRoute.parent : this.parentActivatedRoute;\n if(parentActivatedRoute != undefined && parentActivatedRoute != null){\n parentActivatedRoute.url.subscribe(url=>{\n let parentPath = url[0].path;\n if (launch != undefined && launch){\n let link = this.router.createUrlTree([ parentPath + '/' + this.currentRoute], { queryParams: newRouterParam, queryParamsHandling: 'merge' });\n window.open(link.toString(), '_blank')\n } else {\n this.router.navigate([parentPath + '/' + this.currentRoute], { queryParams: newRouterParam, queryParamsHandling: 'merge' });\n }\n });\n } else {\n if (launch != undefined && launch){\n let link = this.router.createUrlTree([ this.currentRoute], { queryParams: newRouterParam, queryParamsHandling: 'merge' });\n window.open(link.toString(), '_blank')\n } else {\n this.router.navigate([this.currentRoute], { queryParams: newRouterParam, queryParamsHandling: 'merge' });\n }\n }\n }\n}\n","export { TlnQueryService } from './tln-query.service';\nexport { TlnCacheQueryService } from './tln-query.service';\nexport { PageViewService } from '../page-view/page-view.service';\nexport { ConfigurableComponent } from '../page-view/configurable-component';\n","export default \"#navi {\\n width: 100%;\\n height: 50px;\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n.search {\\n margin-left: 8px;\\n }\\n.mat-button.min-width {\\n min-width: 120px;\\n max-width: 120px;\\n}\\n.default-mouse {\\n cursor: default;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxZQUFZO0dBQ1osU0FBUztHQUNULFVBQVU7R0FDVixtQkFBbUI7QUFDdEI7QUFDQTtHQUNHLGdCQUFnQjtDQUNsQjtBQUVEO0dBQ0csZ0JBQWdCO0dBQ2hCLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csZUFBZTtBQUNsQiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjbmF2aSB7XG4gICB3aWR0aDogMTAwJTtcbiAgIGhlaWdodDogNTBweDtcbiAgIG1hcmdpbjogMDtcbiAgIHBhZGRpbmc6IDA7XG4gICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnNlYXJjaCB7XG4gICBtYXJnaW4tbGVmdDogOHB4O1xuIH1cblxuLm1hdC1idXR0b24ubWluLXdpZHRoIHtcbiAgIG1pbi13aWR0aDogMTIwcHg7XG4gICBtYXgtd2lkdGg6IDEyMHB4O1xufVxuLmRlZmF1bHQtbW91c2Uge1xuICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuIl19 */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TlnQueryServiceInterface, Reference, ManuscriptUnity, NavigationPage } from '../../models';\nimport { TlnManuscriptUnity, TlnNavigationPage} from '../../datatypes/navigation';\nimport { DEFAULT_VIEW_OPTION, TLN_VIEWER_ROUTE, TLN_CROSSREF_ROUTE, TLN_CONTEXT_VIEW_PARAM, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM,\n TLN_SELECTED_LINES_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../../constants';\nimport { IsReconstructedKonvolut } from '../../datatypes/basic_datatype';\nimport { TlnLine} from '../../datatypes/line';\nimport { TlnTextGeneticOrder} from '../../datatypes/text_version';\nimport { Mapping } from '../../route-reader';\nimport { RouteUpdater } from '../../route-updater';\nimport { ComplexKeyIriMapping, DataHandler, KeyIriMapping } from '../../data_handler';\nimport { PageViewService, TlnCacheQueryService } from '../../services';\nimport { TlnInformationComponent, ParentInformation } from '../../tln-information/tln-information.component';\nimport { PageInformation } from '../../tln-information/page-information';\n\n@Component({\n selector: 'crossref-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.css']\n})\nexport class NavigationComponent extends RouteUpdater {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n /**\n * whether or not to show page view in fullscreen mode.\n **/\n fullscreen: boolean = false;\n current_iri: string;\n current_manuscript_iri: string;\n current_page: NavigationPage;\n pageInformation: PageInformation;\n previous_page: NavigationPage;\n next_page: NavigationPage;\n showArchivalManuscriptUnity: boolean = false;\n dataHandler: DataHandler = new DataHandler(this);\n geneticOrders: TlnTextGeneticOrder[] = [];\n selectedLines: string[] = [];\n private readonly PAGE_CONTEXT_VIEW: string = TLN_PAGE_PARAM;\n private readonly MANUSCRIPT_CONTEXT_VIEW: string = TLN_MANUSCRIPT_PARAM;\n contextView: string = this.PAGE_CONTEXT_VIEW;\n private readonly increment: number = 0.333;\n private readonly decrement: number = this.increment*-1;\n protected currentRoute: string = TLN_CROSSREF_ROUTE;\n protected mapping: Mapping = { \n contextView: { param: TLN_CONTEXT_VIEW_PARAM, type: \"string\" },\n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n current_manuscript_iri: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" }\n }\n routerParams: Params;\n selectedViewOption: string = DEFAULT_VIEW_OPTION\n updating: boolean = false;\n viewOptions: string[] = [ VIEW_OPTIONS.TRANSKRIPTION, VIEW_OPTIONS.FAKSIMILE, VIEW_OPTIONS.SYNOPSIS, VIEW_OPTIONS.SYNOPSIS_B ];\n\n constructor(private pageViewService: PageViewService, private localQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n ngOnInit() {\n let tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('navigation_page', ['current_page', 'geneticOrders'] );\n this.dataHandler.addHandler('current_page', { 'handler': TlnNavigationPage });\n this.dataHandler.addHandler('geneticOrders', { 'handler': TlnTextGeneticOrder});\n this.dataHandler.setQueryService(tlnQueryService);\n this.dataHandler.start_processing.subscribe(\n (started: boolean) =>{ this.updating = true;\n });\n this.dataHandler.processing_finished.subscribe(\n (finished: boolean) =>{ this.updating = false;\n });\n super.ngOnInit();\n }\n changeContext(){\n this.contextView = (this.contextView == this.PAGE_CONTEXT_VIEW) ? this.MANUSCRIPT_CONTEXT_VIEW : this.PAGE_CONTEXT_VIEW;\n //this.current_genetic_order_iri = 'none'; \n this.updateParams();\n }\n private getPageTitle(page?: NavigationPage, numPages?: number): string {\n if (page == null){\n return '';\n }\n let indexPrefix = (numPages != null) ? page.index + '/' + numPages : page.index;\n return indexPrefix + ': ' + page.title + ' ' + page.number;\n }\n protected readParams(params: Params){\n super.readParams(params);\n if (this.dataHandler.ready && (this.current_page == null || this.current_page.id != this.current_iri)){\n this.dataHandler.resetData('navigation_page')\n this.dataHandler.getData('navigation_page', this.current_iri);\n } \n }\n private setCurrentIri(pageIri: string){\n this.dataHandler.stop_processing.emit(true);\n this.current_iri = pageIri;\n this.currentRoute = TLN_VIEWER_ROUTE;\n this.updateParams();\n }\n private toggleFullscreen(){\n this.fullscreen = !this.fullscreen;\n this.updateParams();\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TlnTextGeneticOrder} from '../../datatypes/text_version';\n\n@Pipe({\n name: 'geneticOrderFilter'\n})\nexport class GeneticOrderFilterPipe implements PipeTransform {\n\n transform(geneticOrders: TlnTextGeneticOrder[], iri?: string): TlnTextGeneticOrder[] {\n if(!iri){\n return geneticOrders\n }\n return geneticOrders.filter(geneticOrder =>geneticOrder.id != iri);\n }\n\n}\n","export default \".example-radio-group {\\n display: flex;\\n flex-direction: column;\\n margin: 15px 0;\\n}\\n\\n.example-radio-button {\\n margin: 5px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi9wYWdlLXZlcnNpb24tdmlldy9wYWdlLXZlcnNpb24tdmlldy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsV0FBVztBQUNiIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi9wYWdlLXZlcnNpb24tdmlldy9wYWdlLXZlcnNpb24tdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmV4YW1wbGUtcmFkaW8tZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBtYXJnaW46IDE1cHggMDtcbn1cblxuLmV4YW1wbGUtcmFkaW8tYnV0dG9uIHtcbiAgbWFyZ2luOiA1cHg7XG59XG4iXX0= */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { ManuscriptUnity, NavigationPage} from '../../models';\nimport { Mapping, RouteReader } from '../../route-reader';\nimport { RouteUpdater } from '../../route-updater';\nimport { TlnTextGeneticOrder} from '../../datatypes/text_version';\nimport { TLN_CONTEXT_VIEW_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_CROSSREF_ROUTE } from '../../constants';\n\n@Component({\n selector: 'page-version-view',\n templateUrl: './page-version-view.component.html',\n styleUrls: ['./page-version-view.component.css']\n})\nexport class PageVersionViewComponent extends RouteUpdater implements OnInit {\n /**\n * IRI of the current page\n **/\n current_iri: string;\n /**\n * the current page\n **/\n @Input() current_page_iri: string;\n /**\n * the genetic text order that should be displayed.\n **/\n @Input() geneticOrders: TlnTextGeneticOrder[] = [];\n @Input() bottomSheetRef: MatBottomSheetRef;\n @Input() parentActivatedRoute: ActivatedRoute;\n @Input() targetRoute: string;\n @Output() textGenesisSelected = new EventEmitter();\n current_manuscript_iri: string;\n current_genetic_order: string;\n contextView: string;\n //TODO: change default parentActivatedRoute, exception @Input\n protected currentRoute: string;// = TLN_CROSSREF_ROUTE;\n protected mapping: Mapping = { \n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n current_manuscript_iri: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n contextView: { param: TLN_CONTEXT_VIEW_PARAM, type: \"string\" },\n current_genetic_order: { param: TLN_TEXT_GENETIC_ORDER_PARAM, type: \"string\" } \n }\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ){ \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n if (this.targetRoute != undefined && this.targetRoute != null){\n this.currentRoute = this.targetRoute;\n }\n super.ngOnInit();\n }\n private openCrossRef(geneticOrder: TlnTextGeneticOrder){\n this.current_genetic_order = geneticOrder.id; \n this.textGenesisSelected.emit(this.current_genetic_order);\n this.current_iri = this.current_page_iri\n this.contextView = TLN_PAGE_PARAM;\n this.updateParams();\n if(this.bottomSheetRef != undefined && this.bottomSheetRef != null){\n this.bottomSheetRef.dismiss();\n }\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvcGFnZS12ZXJzaW9uLXZpZXcvdGxuLXBhZ2UtdmVyc2lvbi12aWV3LmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TlnQueryServiceInterface} from '../../models';\nimport { TlnCacheQueryService } from '../../services';\nimport { DataHandler } from '../../data_handler';\nimport { TlnTextGeneticOrder} from '../../datatypes/text_version';\n\n@Component({\n selector: 'tln-page-version-view',\n templateUrl: './tln-page-version-view.component.html',\n providers: [ TlnCacheQueryService],\n styleUrls: ['./tln-page-version-view.component.css']\n})\nexport class TlnPageVersionViewComponent implements OnInit {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n @Output() textGenesisSelected = new EventEmitter(); \n @Input() current_iri: string;\n dataHandler: DataHandler = new DataHandler(this);\n geneticOrders: TlnTextGeneticOrder[] = [];\n\n\n constructor(private localQueryService: TlnCacheQueryService) { }\n\n ngOnInit() {\n let tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('geneticOrders', { 'handler': TlnTextGeneticOrder});\n this.dataHandler.setQueryService(tlnQueryService);\n this.dataHandler.getData('geneticOrders', this.current_iri);\n }\n\n}\n","export default \"#page {\\n width: 100%;\\n position: relative;\\n top: 0px;\\n left: 0px;\\n}\\n.grid-container{ /* Chrome, Safari, Opera */\\n -moz-column-count: 2; /* Firefox */\\n column-count: 2;\\n}\\n.extra-space {\\n margin-top: 45px;\\n}\\n.page-crossref-title {\\n margin-left: 20px;\\n}\\n.preview {\\n position: relative;\\n top: 60px;\\n width: 400px;\\n height: 100%;\\n text-align: center;\\n}\\n.icon {\\n margin-left: 5px;\\n}\\n.centered {\\n margin: auto;\\n}\\n.text {\\n position: absolute;\\n top: 0px;\\n left: 400px;\\n}\\n.page-view {\\n overflow: auto;\\n}\\n.external {\\n margin-top: 35px;\\n background-color: lightblue;\\n height: 100px;\\n position: relative;\\n left: 80px;\\n z-index: 2;\\n}\\n.highlight {\\n background-color: lightblue;\\n}\\n.text-navi {\\n position: absolute;\\n margin-top: -3px;\\n left: 0px;\\n height: 38px;\\n width: 100%;\\n background-color: lightblue;\\n z-index: 1;\\n}\\n.close-text {\\n position: absolute;\\n height: 38px;\\n right: 0px;\\n z-index: 2;\\n}\\n.page-navi {\\n float: left;\\n margin-top: -3px;\\n margin-bottom: 1px;\\n height: 38px;\\n background-color: lightblue;\\n z-index: 2;\\n}\\n.icon-button {\\n width: 15px;\\n margin-left: 3px;\\n}\\n.default-mouse {\\n cursor: default;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi90bG4tY3Jvc3NyZWYuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxrQkFBa0I7R0FDbEIsUUFBUTtHQUNSLFNBQVM7QUFDWjtBQUNBLGtCQUM0QiwwQkFBMEI7RUFDcEQsb0JBQW9CLE1BQU0sWUFBWTtFQUN0QyxlQUFlO0FBQ2pCO0FBQ0E7R0FDRyxpQkFBaUI7QUFDcEI7QUFDQTtHQUNHLGlCQUFpQjtBQUNwQjtBQUNBO0dBQ0csa0JBQWtCO0dBQ2xCLFNBQVM7R0FDVCxZQUFZO0dBQ1osWUFBWTtHQUNaLGtCQUFrQjtBQUNyQjtBQUNBO0dBQ0csZ0JBQWdCO0FBQ25CO0FBQ0E7R0FDRyxZQUFZO0FBQ2Y7QUFDQTtHQUNHLGtCQUFrQjtHQUNsQixRQUFRO0dBQ1IsV0FBVztBQUNkO0FBQ0E7R0FDRyxjQUFjO0FBQ2pCO0FBQ0E7R0FDRyxnQkFBZ0I7R0FDaEIsMkJBQTJCO0dBQzNCLGFBQWE7R0FDYixrQkFBa0I7R0FDbEIsVUFBVTtHQUNWLFVBQVU7QUFDYjtBQUNBO0dBQ0csMkJBQTJCO0FBQzlCO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIsZ0JBQWdCO0dBQ2hCLFNBQVM7R0FDVCxZQUFZO0dBQ1osV0FBVztHQUNYLDJCQUEyQjtHQUMzQixVQUFVO0FBQ2I7QUFDQTtHQUNHLGtCQUFrQjtHQUNsQixZQUFZO0dBQ1osVUFBVTtHQUNWLFVBQVU7QUFDYjtBQUNBO0dBQ0csV0FBVztHQUNYLGdCQUFnQjtHQUNoQixrQkFBa0I7R0FDbEIsWUFBWTtHQUNaLDJCQUEyQjtHQUMzQixVQUFVO0FBQ2I7QUFDQTtHQUNHLFdBQVc7R0FDWCxnQkFBZ0I7QUFDbkI7QUFDQTtHQUNHLGVBQWU7QUFDbEIiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLWNyb3NzcmVmL3Rsbi1jcm9zc3JlZi5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3BhZ2Uge1xuICAgd2lkdGg6IDEwMCU7XG4gICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICB0b3A6IDBweDtcbiAgIGxlZnQ6IDBweDtcbn1cbi5ncmlkLWNvbnRhaW5lcntcbiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IDI7ICAvKiBDaHJvbWUsIFNhZmFyaSwgT3BlcmEgKi9cbiAgLW1vei1jb2x1bW4tY291bnQ6IDI7ICAgICAvKiBGaXJlZm94ICovXG4gIGNvbHVtbi1jb3VudDogMjtcbn1cbi5leHRyYS1zcGFjZSB7XG4gICBtYXJnaW4tdG9wOiAgNDVweDtcbn1cbi5wYWdlLWNyb3NzcmVmLXRpdGxlIHtcbiAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuLnByZXZpZXcge1xuICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgdG9wOiA2MHB4O1xuICAgd2lkdGg6IDQwMHB4O1xuICAgaGVpZ2h0OiAxMDAlO1xuICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmljb24ge1xuICAgbWFyZ2luLWxlZnQ6IDVweDtcbn1cbi5jZW50ZXJlZCB7XG4gICBtYXJnaW46IGF1dG87XG59XG4udGV4dCB7XG4gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICB0b3A6IDBweDtcbiAgIGxlZnQ6IDQwMHB4O1xufVxuLnBhZ2UtdmlldyB7XG4gICBvdmVyZmxvdzogYXV0bztcbn1cbi5leHRlcm5hbCB7XG4gICBtYXJnaW4tdG9wOiAzNXB4O1xuICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlO1xuICAgaGVpZ2h0OiAxMDBweDtcbiAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgIGxlZnQ6IDgwcHg7XG4gICB6LWluZGV4OiAyO1xufVxuLmhpZ2hsaWdodCB7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG59XG4udGV4dC1uYXZpIHtcbiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICBsZWZ0OiAwcHg7XG4gICBoZWlnaHQ6IDM4cHg7XG4gICB3aWR0aDogMTAwJTtcbiAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTtcbiAgIHotaW5kZXg6IDE7XG59XG4uY2xvc2UtdGV4dCB7XG4gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICBoZWlnaHQ6IDM4cHg7XG4gICByaWdodDogMHB4O1xuICAgei1pbmRleDogMjtcbn1cbi5wYWdlLW5hdmkge1xuICAgZmxvYXQ6IGxlZnQ7XG4gICBtYXJnaW4tdG9wOiAtM3B4O1xuICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgaGVpZ2h0OiAzOHB4O1xuICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlO1xuICAgei1pbmRleDogMjtcbn1cbi5pY29uLWJ1dHRvbiB7XG4gICB3aWR0aDogMTVweDtcbiAgIG1hcmdpbi1sZWZ0OiAzcHg7XG59XG4uZGVmYXVsdC1tb3VzZSB7XG4gICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4iXX0= */\"","import { Component, EventEmitter, OnInit, OnDestroy, Output, Input } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { DataProcessor, TlnQueryServiceInterface, TextVersion, NavigationPage} from '../models';\nimport { TLN_CROSSREF_ROUTE, TLN_VIEWER_ROUTE, TLN_CONTEXT_VIEW_PARAM, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM,\n TLN_SELECTED_LINES_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../constants';\nimport { IsReconstructedKonvolut } from '../datatypes/basic_datatype';\nimport { TlnNavigationPage} from '../datatypes/navigation';\nimport { TlnLine} from '../datatypes/line';\nimport { TlnWord} from '../datatypes/word';\nimport { ManuscriptStub } from '../datatypes/manuscript';\nimport { TlnPageWithTextGeneticOrder, TlnTextGeneticOrder, TlnStandaloneTextVersion} from '../datatypes/text_version';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { ComplexKeyIriMapping, DataHandler, KeyIriMapping } from '../data_handler';\nimport { PageViewService, TlnCacheQueryService } from '../services';\nimport { TlnInformationComponent, ParentInformation } from '../tln-information/tln-information.component';\nimport { PageInformation } from '../tln-information/page-information';\n\n@Component({\n selector: 'tln-crossref',\n templateUrl: './tln-crossref.component.html',\n providers: [ TlnCacheQueryService],\n styleUrls: ['./tln-crossref.component.css']\n})\nexport class TlnCrossrefComponent extends RouteUpdater implements DataProcessor, OnDestroy {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n @Output() textGenesisSelected = new EventEmitter();\n @Output() textVersionSelected = new EventEmitter();\n @Output() textVersionUnselected = new EventEmitter();\n tlnQueryService: TlnQueryServiceInterface;\n private readonly PAGE_CONTEXT_VIEW: string = TLN_PAGE_PARAM;\n private readonly MANUSCRIPT_CONTEXT_VIEW: string = TLN_MANUSCRIPT_PARAM;\n zoomFactor: number = 1;\n findText: string;\n dataHandler: DataHandler = new DataHandler(this);\n textVersions: TextVersion[] = [];\n geneticOrders: TlnTextGeneticOrder[] = [];\n contextView: string = this.PAGE_CONTEXT_VIEW;\n current_genetic_order_iri: string;\n current_manuscript_unity: string;\n current_manuscript: ManuscriptStub;\n current_iri: string;\n current_page: NavigationPage;\n fullscreen: boolean = false;\n pagesWithGeneticOrder: TlnPageWithTextGeneticOrder[] = [];\n max_width: number = -1;\n max_height: number = -1;\n next_page_iri: string;\n each_version_height: number = -1;\n selectedLines: string[] = [];\n selectedTextVersions: TextVersion[] = []\n private readonly increment: number = 0.333;\n private readonly decrement: number = this.increment*-1;\n private readonly margin_width: number = 280;\n private readonly initialPreviewWidth : number = 400;\n previewWidth: number = this.initialPreviewWidth;\n //protected currentRoute: string = TLN_CROSSREF_ROUTE;\n protected mapping: Mapping = { findText: { param: TLN_FIND_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n contextView: { param: TLN_CONTEXT_VIEW_PARAM, type: \"string\" },\n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n current_manuscript_unity: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n current_genetic_order_iri: { param: TLN_TEXT_GENETIC_ORDER_PARAM, type: \"string\" },\n selectedLines: { param: TLN_SELECTED_LINES_PARAM, type: \"string\" },\n zoomFactor: { param: TLN_ZOOM_PARAM, type: \"number\" } }\n routerParams: Params;\n selectedViewOption: string = VIEW_OPTIONS.TRANSKRIPTION\n updating: boolean = false;\n viewOptions: string[] = [ VIEW_OPTIONS.TRANSKRIPTION, VIEW_OPTIONS.FAKSIMILE ];\n subscriptions: any[] = [];\n\n constructor(private pageViewService: PageViewService, private localQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n ngOnInit() {\n if (screen.availWidth - this.initialPreviewWidth - this.margin_width > 1000){\n this.previewWidth = screen.availWidth - this.initialPreviewWidth - 1000;\n }\n this.max_width = screen.availWidth - this.previewWidth - this.margin_width;\n this.max_height = screen.availHeight - 200;\n this.tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('page_content', ['current_page', 'geneticOrders'] );\n this.dataHandler.addHandler('manuscript_content', ['current_manuscript', 'pagesWithGeneticOrder'] );\n this.dataHandler.addHandler('current_manuscript', { 'handler': ManuscriptStub});\n this.dataHandler.addHandler('current_page', { 'handler': TlnNavigationPage });\n this.dataHandler.addHandler('geneticOrders', { 'handler': TlnTextGeneticOrder});\n this.dataHandler.addHandler('pagesWithGeneticOrder', { 'handler': TlnPageWithTextGeneticOrder });\n this.dataHandler.addHandler('textVersions', { 'handler': TlnStandaloneTextVersion, 'process_data': this });\n this.dataHandler.setQueryService(this.tlnQueryService);\n this.subscriptions.push(this.dataHandler.start_processing.subscribe(\n (started: boolean) =>{ this.updating = true;\n }));\n this.subscriptions.push(this.dataHandler.processing_finished.subscribe(\n (finished: boolean) =>{ this.updating = false;\n }));\n super.ngOnInit();\n this.subscriptions.push(this.pageViewService.onClickedWord.subscribe(\n (clickedWord: TlnWord) => { \n this.addWordText2FindText(clickedWord)\n }));\n }\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n private addWordText2FindText(word: TlnWord){\n let text = (word.edited_text != null && word.edited_text != '') ? word.edited_text : word.text;\n if (this.findText == null || !this.findText.includes(text)){\n this.findText = (this.findText == null || this.findText == '') ? text : this.findText + ' ' + text;\n } else {\n let index = this.findText.indexOf(text)\n let startText = this.findText.substring(0, index)\n let endText = (this.findText.length > index + text.length) ? this.findText.substring(index + text.length) : '';\n let findText = startText + endText;\n this.findText = findText.replace(' ', ' ').trim();\n \n }\n this.updateParams();\n }\n public processData(): void {\n this.selectedTextVersions = [];\n let index = 0;\n while (index < this.textVersions.length && this.selectedTextVersions.length < 1){\n if(this.textVersions[index].textUnities != undefined && this.textVersions[index].textUnities.length > 0){\n this.selectedTextVersions.push(this.textVersions[index]);\n }\n index++\n }\n }\n private addOrRemove(textVersion: TextVersion) {\n let index = this.selectedTextVersions.indexOf(textVersion);\n if (index == -1){\n this.textVersionSelected.emit(textVersion.id);\n this.selectedTextVersions.push(textVersion);\n } else {\n this.textVersionUnselected.emit(textVersion.id);\n this.selectedTextVersions.splice(index, 1);\n }\n this.each_version_height = (this.selectedTextVersions.length > 0) ? this.max_height/this.selectedTextVersions.length : this.max_height;\n }\n private clearFindText() {\n this.findText = '';\n this.updateParams();\n }\n private getButtonTitle(textVersion: TextVersion): string {\n return (this.selectedTextVersions.indexOf(textVersion) == -1) ? 'Textstelle anzeigen' : 'Textstelle ausblenden';\n }\n private isNewPagePartOfOldTextVersions(): boolean {\n if (this.current_manuscript_unity == undefined || this.current_manuscript_unity == null){\n return false\n }\n for (let textVersion of this.textVersions){\n if (textVersion.manuscript != undefined \n && textVersion.manuscript != null \n && textVersion.manuscript == this.current_manuscript_unity){\n for (let textUnity of textVersion.textUnities){\n if (textUnity.id == this.current_iri || textUnity.belongsToPage == this.current_iri){\n console.log(textUnity.id, textUnity.belongsToPage, this.current_iri);\n return true\n }\n }\n }\n }\n return false\n }\n protected readParams(params: Params){\n let old_genetic_order_iri = this.current_genetic_order_iri;\n let old_current_iri = this.current_iri;\n let old_manuscript_unity = this.current_manuscript_unity;\n let old_context_view = this.contextView;\n super.readParams(params);\n if (this.dataHandler.ready){\n if (old_current_iri != null \n && this.current_iri != old_current_iri && !this.isNewPagePartOfOldTextVersions()){\n this.selectedTextVersions = [];\n this.dataHandler.resetData('textVersions')\n if (old_genetic_order_iri == this.current_genetic_order_iri){\n this.current_genetic_order_iri = ''\n this.updateParams()\n }\n }\n if (this.contextView == this.PAGE_CONTEXT_VIEW \n && (this.contextView != old_context_view \n || (this.current_iri != null && this.current_iri != old_current_iri))){\n this.dataHandler.resetData('page_content')\n this.dataHandler.getData('page_content', this.current_iri);\n }\n if (this.current_manuscript_unity != old_manuscript_unity){\n this.dataHandler.resetData('manuscript_content')\n this.dataHandler.getData('manuscript_content', this.current_manuscript_unity);\n }\n if (this.contextView == this.PAGE_CONTEXT_VIEW \n && (this.contextView != old_context_view || \n (this.textVersions.length == 0 || this.current_genetic_order_iri != old_genetic_order_iri))){\n this.dataHandler.resetData('textVersions')\n if (this.current_genetic_order_iri != null && this.current_genetic_order_iri != ''){\n this.dataHandler.getData('textVersions', this.current_genetic_order_iri);\n }\n }\n }\n }\n private openInViewer(pageIri: string, belongsToPageIri?: string, manuscriptIri?: string, launch?: boolean){\n this.current_iri = (belongsToPageIri != null) ? belongsToPageIri : pageIri;\n if(manuscriptIri != null){\n this.current_manuscript_unity = manuscriptIri;\n }\n this.currentRoute = TLN_VIEWER_ROUTE;\n this.updateParams(launch);\n }\n private setZoomFactor(newZoomFactor: number){\n if (newZoomFactor > 0){\n this.zoomFactor = Math.round(newZoomFactor*100)/100;\n } else {\n this.zoomFactor = this.zoomFactor/2\n }\n this.updateParams();\n }\n}\n","export default \".highlight {\\n text-decoration: underline;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi92ZXJzaW9uLXZpZXcvdmVyc2lvbi12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRywwQkFBMEI7QUFDN0IiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLWNyb3NzcmVmL3ZlcnNpb24tdmlldy92ZXJzaW9uLXZpZXcuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oaWdobGlnaHQge1xuICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4iXX0= */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { TextVersion} from '../../models';\n\n@Component({\n selector: 'version-view',\n templateUrl: './version-view.component.html',\n styleUrls: ['./version-view.component.css']\n})\nexport class VersionViewComponent implements OnInit {\n @Input() version: TextVersion;\n @Input() current_iri: string;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { MatBadgeModule, MatSnackBarModule, MatSlideToggleModule, MatTreeModule, MatSliderModule,MatProgressSpinnerModule,MatBottomSheetModule,MatButtonModule,MatCheckboxModule,MatDialogModule,MatExpansionModule,MatFormFieldModule,MatInputModule,MatListModule,MatPaginatorModule,MatRadioModule,MatSelectModule,MatSidenavModule,MatSortModule,MatTableModule,MatToolbarModule,MatButtonToggleModule,MatCardModule,MatIconModule,MatMenuModule,MatTabsModule,MatTooltipModule\n} from '@angular/material';\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\nimport { NgxMatStandoffMarkupModule} from \"ngx-mat-standoff-markup\";\nimport { CacheService } from './common/cache.service';\nimport { PageViewService } from '../page-view/page-view.service';\nimport { PageViewModule } from '../page-view/page-view.module';\nimport { OntologyViewerModule } from '../ontology-viewer/ontology-viewer.module';\nimport { TlnPageViewComponent } from './tln-page-view.component';\nimport { TlnQueryService, TlnCacheQueryService } from './tln-query.service';\nimport { ToolTipComponent } from './tooltip/tool-tip.component';\nimport { TlnViewerNavigation } from './tln-viewer-navigation/tln-viewer-navigation.component';\nimport { TlnInformationComponent } from './tln-information/tln-information.component';\nimport { TlnCrossrefComponent } from './tln-crossref/tln-crossref.component';\nimport { VersionViewComponent } from './tln-crossref/version-view/version-view.component';\nimport { PageVersionViewComponent } from './tln-crossref/page-version-view/page-version-view.component';\nimport { NavigationComponent } from './tln-crossref/navigation/navigation.component';\nimport { GeneticOrderFilterPipe} from './tln-crossref/page-version-view/filter.pipe';\nimport { TlnPageVersionViewComponent } from './tln-crossref/page-version-view/tln-page-version-view.component';\nimport { TlnManuscriptViewComponent } from './tln-manuscript-view/tln-manuscript-view.component';\nimport { TlnFulltextComponent } from './tln-fulltext/tln-fulltext.component';\nimport { FulltextNavigationComponent } from './tln-fulltext/navigation/navigation.component';\nimport { ResultPipePipe } from './tln-fulltext/result-pipe.pipe';\nimport { PageResultFilterPipe} from './common/page-result-filter.pipe';\nimport { SearchComponent } from './tln-navigation-elements/search.component';\nimport { ToggleNavigationComponent } from './tln-navigation-elements/toggle-navigation.component';\nimport { ZoomComponent } from './tln-navigation-elements/zoom.component';\nimport { ZoomPipe } from './tln-navigation-elements/zoom.pipe';\nimport { OpenInViewerComponent } from './tln-navigation-elements/open-in-viewer.component';\nimport { DebugPipe } from './debug.pipe';\nimport { TlnHeightDirective } from './tln-height.directive';\nimport { TlnQuantComponent } from './tln-quant/tln-quant.component';\nimport { TlnTableComponent } from './tln-quant/tln-table.component';\nimport { ResultPipe } from './tln-quant/result.pipe';\nimport { WordPresentationComponent } from './tln-quant/word-presentation.component';\nimport { ToIdsPipe } from './tln-quant/2-ids.pipe';\nimport { SortByLinePipe } from './tln-quant/sort-by-line.pipe';\nimport { QueryErrorComponent } from './tln-quant/query-error.component';\nimport { ExportComponent } from './tln-quant/export.component';\nimport { FusekiTableComponent } from './tln-quant/fuseki-table.component';\nimport { TlnOntologyViewerComponent } from './tln-quant/tln-ontology-viewer.component';\nimport { EditorCommentComponent } from './tooltip/editor-comment.component';\nimport { MergeEditorCommentPipe } from './tooltip/merge-editor-comment.pipe';\nimport { OverwrittenComponent } from './tooltip/overwritten.component';\nimport { FootnoteComponent } from './tln-information/footnote.component';\nimport { ImprintComponent } from './tln-information/imprint.component';\n\n\n@NgModule({\n declarations: [FulltextNavigationComponent, TlnPageViewComponent, ToolTipComponent, TlnViewerNavigation, TlnInformationComponent, TlnCrossrefComponent, VersionViewComponent, PageVersionViewComponent, NavigationComponent, GeneticOrderFilterPipe, TlnPageVersionViewComponent, TlnManuscriptViewComponent, TlnFulltextComponent, PageResultFilterPipe, ResultPipePipe, SearchComponent, ToggleNavigationComponent, ZoomComponent, ZoomPipe, OpenInViewerComponent, DebugPipe, TlnHeightDirective, TlnQuantComponent, TlnTableComponent, ResultPipe, WordPresentationComponent, ToIdsPipe, SortByLinePipe, QueryErrorComponent, ExportComponent, FusekiTableComponent, TlnOntologyViewerComponent, EditorCommentComponent, MergeEditorCommentPipe, OverwrittenComponent, FootnoteComponent, ImprintComponent],\n imports: [\n CodemirrorModule,\n MatBadgeModule,\n MatSnackBarModule,\n MatSlideToggleModule,\n MatSliderModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatDialogModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatPaginatorModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatTreeModule,\n MatToolbarModule,\n MatTooltipModule,\n BrowserModule,\n CommonModule,\n FormsModule,\n NgxMatStandoffMarkupModule,\n PageViewModule,\n OntologyViewerModule\n ],\n exports: [\n DebugPipe,\n FulltextNavigationComponent,\n NavigationComponent,\n ToggleNavigationComponent,\n ToolTipComponent,\n TlnCrossrefComponent,\n TlnHeightDirective,\n TlnManuscriptViewComponent,\n TlnPageViewComponent,\n TlnViewerNavigation,\n TlnQuantComponent\n ], \n providers: [\n PageViewService,\n CacheService\n //TlnQueryService\n ],\n entryComponents: [TlnInformationComponent, QueryErrorComponent]\n})\nexport class TlnEditionModule { \n}\n","export default \"#navi {\\n width: 100%;\\n height: 50px;\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1mdWxsdGV4dC9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxZQUFZO0dBQ1osU0FBUztHQUNULFVBQVU7R0FDVixtQkFBbUI7QUFDdEIiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLWZ1bGx0ZXh0L25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI25hdmkge1xuICAgd2lkdGg6IDEwMCU7XG4gICBoZWlnaHQ6IDUwcHg7XG4gICBtYXJnaW46IDA7XG4gICBwYWRkaW5nOiAwO1xuICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'fulltext-navigation',\n templateUrl: './navigation.component.html',\n styleUrls: ['./navigation.component.css']\n})\nexport class FulltextNavigationComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FoundPage} from '../datatypes/search';\n@Pipe({\n name: 'resultPipe'\n})\nexport class ResultPipePipe implements PipeTransform {\n\n transform(pages: FoundPage[]): string {\n if (pages.length == 0){\n return 'Keine Treffer'\n }\n let pageResult = (pages.length > 1) ? pages.length + ' Seiten' : pages[0].title + ' ' + pages[0].number;\n let numFoundWords = 0;\n pages.forEach(page =>page.results.forEach(result =>numFoundWords++));\n return numFoundWords + ' Treffer auf ' + pageResult;\n }\n\n}\n","export default \"#page {\\n width: 98%;\\n position: relative;\\n top: 0px;\\n left: 0px;\\n height: 100%;\\n overflow: visible;\\n}\\n.icon-button {\\n width: 15px;\\n margin-left: 3px;\\n}\\n.page-navi {\\n float: left;\\n margin-top: -3px;\\n margin-bottom: 1px;\\n height: 38px;\\n background-color: lightblue;\\n z-index: 2;\\n}\\n.default-mouse {\\n cursor: default;\\n}\\n.small-grey {\\n color: lightgrey;\\n font-size: 80%;\\n}\\n.text {\\n position: absolute;\\n top: 10px;\\n left: 500px;\\n}\\n.search {\\n position: relative;\\n top: 60px;\\n width: 500px;\\n height: 100%;\\n text-align: center;\\n margin-right: 20px;\\n}\\n.extra-space {\\n margin-top: 45px;\\n}\\n.title {\\n text-align: left;\\n margin-left: 20px;\\n}\\n.form {\\n width: 95%;\\n}\\n.full-width {\\n min-width: 150px;\\n max-width: 500px;\\n width: 80%;\\n}\\n.korpus {\\n text-align: left;\\n}\\n.belowOptions {\\n margin-top: 50px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1mdWxsdGV4dC90bG4tZnVsbHRleHQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFVBQVU7R0FDVixrQkFBa0I7R0FDbEIsUUFBUTtHQUNSLFNBQVM7R0FDVCxZQUFZO0dBQ1osaUJBQWlCO0FBQ3BCO0FBQ0E7R0FDRyxXQUFXO0dBQ1gsZ0JBQWdCO0FBQ25CO0FBQ0E7R0FDRyxXQUFXO0dBQ1gsZ0JBQWdCO0dBQ2hCLGtCQUFrQjtHQUNsQixZQUFZO0dBQ1osMkJBQTJCO0dBQzNCLFVBQVU7QUFDYjtBQUNBO0dBQ0csZUFBZTtBQUNsQjtBQUNBO0dBQ0csZ0JBQWdCO0dBQ2hCLGNBQWM7QUFDakI7QUFDQTtHQUNHLGtCQUFrQjtHQUNsQixTQUFTO0dBQ1QsV0FBVztBQUNkO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIsU0FBUztHQUNULFlBQVk7R0FDWixZQUFZO0dBQ1osa0JBQWtCO0dBQ2xCLGtCQUFrQjtBQUNyQjtBQUNBO0dBQ0csaUJBQWlCO0FBQ3BCO0FBQ0E7R0FDRyxnQkFBZ0I7R0FDaEIsaUJBQWlCO0FBQ3BCO0FBQ0E7RUFDRSxVQUFVO0FBQ1o7QUFDQTtFQUNFLGdCQUFnQjtFQUNoQixnQkFBZ0I7RUFDaEIsVUFBVTtBQUNaO0FBQ0E7R0FDRyxnQkFBZ0I7QUFDbkI7QUFDQTtHQUNHLGdCQUFnQjtBQUNuQiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tZnVsbHRleHQvdGxuLWZ1bGx0ZXh0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjcGFnZSB7XG4gICB3aWR0aDogOTglO1xuICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgdG9wOiAwcHg7XG4gICBsZWZ0OiAwcHg7XG4gICBoZWlnaHQ6IDEwMCU7XG4gICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cbi5pY29uLWJ1dHRvbiB7XG4gICB3aWR0aDogMTVweDtcbiAgIG1hcmdpbi1sZWZ0OiAzcHg7XG59XG4ucGFnZS1uYXZpIHtcbiAgIGZsb2F0OiBsZWZ0O1xuICAgbWFyZ2luLXRvcDogLTNweDtcbiAgIG1hcmdpbi1ib3R0b206IDFweDtcbiAgIGhlaWdodDogMzhweDtcbiAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTtcbiAgIHotaW5kZXg6IDI7XG59XG4uZGVmYXVsdC1tb3VzZSB7XG4gICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4uc21hbGwtZ3JleSB7XG4gICBjb2xvcjogbGlnaHRncmV5O1xuICAgZm9udC1zaXplOiA4MCU7XG59XG4udGV4dCB7XG4gICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICB0b3A6IDEwcHg7XG4gICBsZWZ0OiA1MDBweDtcbn1cbi5zZWFyY2gge1xuICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgdG9wOiA2MHB4O1xuICAgd2lkdGg6IDUwMHB4O1xuICAgaGVpZ2h0OiAxMDAlO1xuICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuLmV4dHJhLXNwYWNlIHtcbiAgIG1hcmdpbi10b3A6ICA0NXB4O1xufVxuLnRpdGxlIHtcbiAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICBtYXJnaW4tbGVmdDogMjBweDtcbn1cbi5mb3JtIHtcbiAgd2lkdGg6IDk1JTtcbn1cbi5mdWxsLXdpZHRoIHtcbiAgbWluLXdpZHRoOiAxNTBweDtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgd2lkdGg6IDgwJTtcbn1cbi5rb3JwdXMge1xuICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbi5iZWxvd09wdGlvbnMge1xuICAgbWFyZ2luLXRvcDogNTBweDtcbn1cbiJdfQ== */\"","import { Component, EventEmitter, Input, OnInit, ViewChild } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport {PageEvent} from '@angular/material/paginator';\nimport { TLN_CROSSREF_ROUTE, TLN_SEARCH_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_VIEWER_ROUTE, TLN_CONTEXT_VIEW_PARAM, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM,\n TLN_SEARCH_QUERY_PARAM, TLN_RESULT_INDEX_PARAM,TLN_SELECTED_LINES_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../constants';\nimport { ResultRange, PaginatorResultStatus } from '../common/paginator-result-status';\nimport { CacheService } from '../common/cache.service';\nimport { Handler, DataHandler } from '../data_handler';\nimport { QuantitativeDataHandler } from '../quant_data_handler';\nimport { FoundPage} from '../datatypes/search';\nimport { Manuscript4Selection} from '../datatypes/manuscript';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TlnCacheQueryService } from '../services';\nimport {DataProcessor, PageIndexUpdater, QueryProperties, StorageHandler, TlnQueryServiceInterface} from '../models';\n//TODO: german language support for paginator, see: https://github.com/ngx-translate/core\n@Component({\n selector: 'tln-fulltext',\n templateUrl: './tln-fulltext.component.html',\n styleUrls: ['./tln-fulltext.component.css']\n})\nexport class TlnFulltextComponent extends RouteUpdater implements DataProcessor, OnInit {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n tlnQueryService: TlnQueryServiceInterface;\n //protected currentRoute: string = TLN_SEARCH_ROUTE;\n change = new EventEmitter();\n current_page_iri: string;\n current_manuscript_unity: string;\n expandOptions: boolean = false;\n dataHandler: QuantitativeDataHandler = new QuantitativeDataHandler(this);\n fullscreen: boolean;\n max_width: number = -1;\n max_height: number = -1;\n manuscriptPages: Manuscript4Selection[] = [];\n readonly manuscript_variable = \"manuscript\";\n searchTerm: string;\n resultIndex: number = 0;\n paginatorResultStatus: PaginatorResultStatus = new PaginatorResultStatus(5);\n resultsReceived: boolean = false;\n selectedViewOption: string = VIEW_OPTIONS.TRANSKRIPTION\n startSearch: boolean = false;\n protected mapping: Mapping = { \n current_page_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n // resultIndex: { param: TLN_RESULT_INDEX_PARAM, type: \"number\" },\n searchTerm: { param: TLN_FIND_PARAM, type: \"string\" },\n queryProps: { param: TLN_SEARCH_QUERY_PARAM, type: \"complex\" },\n current_manuscript_unity: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n }\n pages: FoundPage[] = [];\n queryProps: QueryProperties = { ignoreCase: false, selectedManuscripts: [], resultIndex: 0 }\n private readonly margin_width: number = 280;\n private readonly initialPreviewWidth : number = 300;\n previewWidth: number = this.initialPreviewWidth;\n\n constructor(private cacheService: CacheService, private localQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n if (screen.availWidth - this.initialPreviewWidth - this.margin_width > 1000){\n this.previewWidth = screen.availWidth - this.initialPreviewWidth - 1000;\n }\n this.tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.max_width = screen.availWidth - this.previewWidth - this.margin_width;\n this.max_height = screen.availHeight - 200;\n this.dataHandler.addHandler('manuscriptPages', { 'handler': Manuscript4Selection});\n this.dataHandler.addHandler('pages', { 'handler': FoundPage, 'process_data': this });\n this.dataHandler['pages']['service'] = this\n this.dataHandler.setQueryService(this.tlnQueryService);\n this.dataHandler.start_processing.subscribe(\n (started: boolean) =>{ \n this.resultsReceived = false;\n this.startSearch = true;\n });\n this.dataHandler.processing_finished.subscribe(\n (finished: boolean) =>{ \n this.resultsReceived = true;\n this.startSearch = false;\n });\n this.dataHandler.getData('manuscriptPages');\n super.ngOnInit();\n this.expandOptions = (this.queryProps.selectedManuscripts.length > 0 || this.queryProps.ignoreCase)\n }\n private clearFindText() {\n this.searchTerm = '';\n this.pages = [];\n this.queryProps.resultIndex = 0;\n super.updateParams();\n }\n private search(){\n this.queryProps.resultIndex = 0;\n this.paginatorResultStatus.updateResultRange(this.queryProps.resultIndex);\n super.updateParams();\n if (this.searchTerm != undefined && this.searchTerm != null && this.searchTerm != ''){\n this.dataHandler.resetData('pages');\n let query = this.dataHandler['pages'].handler.getSeachQuery(this.searchTerm, this.queryProps.ignoreCase, this.queryProps.selectedManuscripts, this.manuscript_variable)\n this.dataHandler.getSearchData('pages', query, this.searchTerm);\n }\n }\n protected readParams(params: Params){\n let oldSearchTerm = this.searchTerm;\n super.readParams(params);\n if (this.searchTerm != undefined && this.searchTerm != null && this.searchTerm != '' && this.searchTerm != oldSearchTerm){\n let results = (this.queryProps != null && this.queryProps.dataKey != undefined && this.queryProps.dataKey != null)\n ? this.cacheService.getItem(this.queryProps.dataKey + this.searchTerm) : null;\n if (results != null){\n this.pages = results;\n } else {\n this.dataHandler.resetData('pages');\n let query = this.dataHandler['pages'].handler.getSeachQuery(this.searchTerm, this.queryProps.ignoreCase, this.queryProps.selectedManuscripts, this.manuscript_variable)\n this.dataHandler.getSearchData('pages', query, this.searchTerm);\n }\n } \n if(this.pages.length > 0 && this.queryProps.resultIndex > 0 ){\n this.paginatorResultStatus.updateResultRange(this.queryProps.resultIndex);\n }\n }\n getSearchTerms(): string[] {\n return this.searchTerm.split(' '); \n }\n getIgnoreCaseFlag(): string {\n return (this.queryProps.ignoreCase) ? 'i' : '';\n }\n isSelected = (o1: any, o2: any): boolean => {\n return o1.id == o2.id;\n }\n private updateResultIndex(event: PageEvent){\n this.paginatorResultStatus.showResults(event);\n this.queryProps.resultIndex = event.pageIndex;\n this.updateParams();\n }\n public processData(){\n if (this.queryProps != null \n && this.queryProps.dataKey != undefined \n && this.queryProps.dataKey != null){\n this.cacheService.removeItem(this.queryProps.dataKey + this.searchTerm);\n }\n const dataKey = TLN_SEARCH_ROUTE + Date.now().toString();\n this.cacheService.setItem(dataKey + this.searchTerm, this.pages);\n this.queryProps['dataKey'] = dataKey;\n this.updateParams();\n }\n\n}\n","import { Directive, ElementRef, OnInit, Input } from '@angular/core';\nimport { TlnPageViewComponent } from './tln-page-view.component';\n\n@Directive({\n selector: '[setMaxHeightTo]'\n})\nexport class TlnHeightDirective implements OnInit{\n @Input('setMaxHeightTo') pageView: TlnPageViewComponent;\n constructor(public el: ElementRef) { }\n\n ngOnInit(){\n if (this.pageView != undefined && this.pageView != null){\n this.pageView.max_height = window.innerHeight - this.el.nativeElement.offsetHeight -15;\n }\n }\n}\n","export default \".footnote {\\n cursor: pointer;\\n}\\n.highlighted {\\n cursor: pointer;\\n background-color: yellow;\\n}\\n.unhighlighted {\\n cursor: pointer;\\n background-color: white;\\n}\\n.space {\\n margin-left: 1ch;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1pbmZvcm1hdGlvbi9mb290bm90ZS5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csZUFBZTtBQUNsQjtBQUNBO0dBQ0csZUFBZTtHQUNmLHdCQUF3QjtBQUMzQjtBQUNBO0dBQ0csZUFBZTtHQUNmLHVCQUF1QjtBQUMxQjtBQUNBO0dBQ0csZ0JBQWdCO0FBQ25CIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1pbmZvcm1hdGlvbi9mb290bm90ZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmZvb3Rub3RlIHtcbiAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5oaWdobGlnaHRlZCB7XG4gICBjdXJzb3I6IHBvaW50ZXI7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7XG59XG4udW5oaWdobGlnaHRlZCB7XG4gICBjdXJzb3I6IHBvaW50ZXI7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbi5zcGFjZSB7XG4gICBtYXJnaW4tbGVmdDogMWNoO1xufVxuIl19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { MarkupSettings, StandoffMarkup } from 'ngx-mat-standoff-markup';\nimport { PageViewService } from '../services';\nimport { EditorComment, Line } from '../models';\nimport { TlnEditorComment } from '../datatypes/editor_comment';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TLN_SELECTED_WORDS_PARAM, TLN_SELECTED_LINES_PARAM } from '../constants';\n\n@Component({\n selector: 'footnote',\n templateUrl: './footnote.component.html',\n styleUrls: ['./footnote.component.css']\n})\nexport class FootnoteComponent extends RouteUpdater implements OnInit {\n @Input() editor_comment: EditorComment;\n @Input() bottomSheetRef: MatBottomSheetRef;\n @Input() parentActivatedRoute: ActivatedRoute;\n @Input() targetRoute: string;\n protected currentRoute: string;// = TLN_CROSSREF_ROUTE;\n highlighted: boolean = false;\n mySettings: MarkupSettings = new MarkupSettings();\n editorType: string;\n selectedLines: string[] = [];\n selectedWords: string[] = [];\n protected mapping: Mapping = { \n selectedWords: { param: TLN_SELECTED_WORDS_PARAM, type: \"string\" },\n selectedLines: { param: TLN_SELECTED_LINES_PARAM, type: \"string\" }\n };\n\n constructor(private pageViewService: PageViewService, protected router: Router, protected activatedRoute: ActivatedRoute ){ \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n if (this.targetRoute != undefined && this.targetRoute != null){\n this.currentRoute = this.targetRoute;\n }\n if (this.editor_comment != undefined && this.editor_comment != null && this.editor_comment.editorClass != null \n && this.editor_comment.editorClass.split('#').length > 1 &&this.editor_comment.editorClass.split('#')[1] != 'EditorComment'){ \n this.editorType = this.editor_comment.editorClass.split('#')[1];\n }\n super.ngOnInit();\n }\n private selectItem(){\n if (this.editor_comment.word != null){\n const id = this.editor_comment.word.id;\n if(this.selectedWords.indexOf(id) == -1){ \n this.selectedWords.push(id);\n }\n } else if (this.editor_comment.tLine != null){\n const id = this.editor_comment.tLine.id;\n if(this.selectedLines.indexOf(id) == -1){ \n this.selectedLines.push(id);\n }\n }\n this.updateParams();\n if(this.bottomSheetRef != undefined && this.bottomSheetRef != null){\n this.bottomSheetRef.dismiss();\n }\n }\n private onHover(){\n this.highlighted = true;\n if (this.editor_comment.word != null){\n this.pageViewService.onHoveredWord.emit(this.editor_comment.word);\n } else if (this.editor_comment.tLine != null){\n this.pageViewService.onHoveredLine.emit(this.editor_comment.tLine);\n }\n }\n private offHover(){\n this.highlighted = false;\n if (this.editor_comment.word != null){\n this.pageViewService.offHoveredWord.emit(this.editor_comment.word);\n } else if (this.editor_comment.tLine != null){\n this.pageViewService.offHoveredLine.emit(this.editor_comment.tLine);\n }\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4taW5mb3JtYXRpb24vaW1wcmludC5jb21wb25lbnQuY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { PageViewService } from '../services';\nimport { Line } from '../models';\nimport { TlnImprint } from '../datatypes/imprint';\nimport { Mapping } from '../route-reader';\nimport { RouteReader } from '../route-reader';\nimport { TLN_SELECTED_LINES_PARAM, TLN_SELECTED_WORDS_PARAM } from '../constants';\n\ninterface Range {\n start: number;\n end?: number;\n}\n\n@Component({\n selector: 'imprint',\n templateUrl: './imprint.component.html',\n styleUrls: ['./imprint.component.css']\n})\nexport class ImprintComponent extends RouteReader implements OnInit {\n @Input() imprint: TlnImprint;\n @Input() bottomSheetRef: MatBottomSheetRef;\n @Input() parentActivatedRoute: ActivatedRoute;\n @Input() targetRoute: string;\n highlighted: boolean = false;\n imprintReference: string;\n selectedLines: string[] = [];\n selectedWords: string[] = [];\n tempSelectedLines: string[] = [];\n tempSelectedWords: string[] = [];\n protected mapping: Mapping = { \n selectedLines: { param: TLN_SELECTED_LINES_PARAM, type: \"string\" },\n selectedWords: { param: TLN_SELECTED_WORDS_PARAM, type: \"string\" }\n };\n\n constructor(private pageViewService: PageViewService, protected router: Router, protected activatedRoute: ActivatedRoute ){ \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n this.imprintReference = this.getLineReference() + this.imprint.reference;\n super.ngOnInit();\n }\n private getLineReference(): string {\n let lineString = '';\n if (this.imprint.lines.length == 0){\n return lineString\n }\n const ranges = this.numbers2ConsecutiveRanges(this.imprint.lines.map(line =>line.number));\n ranges.forEach(range =>{\n if (lineString != ''){\n lineString = lineString + ','\n }\n lineString = (range.end != undefined) ? lineString + range.start + '-' + range.end : lineString + range.start;\n });\n return lineString + ': ';\n }\n private numbers2ConsecutiveRanges(lines: number[]): Range[] {\n if (lines.length == 0) {\n return []\n } else if (lines.length < 2){\n return [ { start: lines[0] } ];\n } else if (lines.length == 2) {\n return (lines[1] - lines[0] > 1) ? [ { start: lines[0] }, { start: lines[1] } ] : [ { start: lines[0], end: lines[1] } ];\n } else {\n const index = Math.round((lines.length-1)/2)\n let leftRanges = this.numbers2ConsecutiveRanges(lines.slice(0, index))\n let rightRanges = this.numbers2ConsecutiveRanges(lines.slice(index))\n if (leftRanges.length == 0){\n return rightRanges\n } \n if (rightRanges.length == 0){\n return leftRanges\n }\n if ((leftRanges[leftRanges.length-1].end != undefined && rightRanges[0].start - leftRanges[leftRanges.length-1].end == 1)\n || rightRanges[0].start - leftRanges[leftRanges.length-1].start == 1){\n leftRanges[leftRanges.length-1].end = (rightRanges[0].end != undefined) ? rightRanges[0].end : rightRanges[0].start;\n return [...leftRanges,...rightRanges.slice(1)];\n }\n return [...leftRanges,...rightRanges];\n }\n }\n private hoverChanged(hover: boolean){\n this.highlighted = hover;\n if (this.imprint != null){\n if (hover && (this.selectedLines.length > 0 || this.selectedWords.length > 0)){\n this.tempSelectedLines = this.selectedLines.slice();\n this.tempSelectedWords = this.selectedWords.slice();\n this.selectedLines.forEach(lineId =>{\n this.pageViewService.onClickedLine.emit({ id: lineId, top: -1, bottom: -1, number: -1 });\n });\n this.selectedWords.forEach(wordId =>{\n this.pageViewService.onClickedWord.emit({ id: wordId, text: 'none', top: -1, deleted: false, line: 'none', line_number: -1, left: -1, width: 0, height: 0 });\n });\n }\n this.imprint.lines.forEach(line =>{\n this.pageViewService.onClickedLine.emit(line);\n })\n if (!hover && (this.tempSelectedLines.length > 0 || this.tempSelectedWords.length > 0)){\n this.tempSelectedLines.forEach(lineId =>{\n this.pageViewService.onClickedLine.emit({ id: lineId, top: -1, bottom: -1, number: -1 });\n }); \n this.tempSelectedWords.forEach(wordId =>{\n this.pageViewService.onClickedWord.emit({ id: wordId, text: 'none', top: -1, deleted: false, line: 'none', line_number: -1, left: -1, width: 0, height: 0 });\n });\n }\n }\n }\n\n}\n","export default \".highlight {\\n text-decoration: underline;\\n}\\nh4.rhizome {\\n margin-bottom: -10px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1pbmZvcm1hdGlvbi90bG4taW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLDBCQUEwQjtBQUM3QjtBQUNBO0dBQ0csb0JBQW9CO0FBQ3ZCIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1pbmZvcm1hdGlvbi90bG4taW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oaWdobGlnaHQge1xuICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5oNC5yaGl6b21lIHtcbiAgIG1hcmdpbi1ib3R0b206IC0xMHB4O1xufVxuIl19 */\"","import { Component, Inject, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { EditorComment, ManuscriptUnity, NavigationPage} from '../models';\nimport { Mapping, RouteReader } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TlnTextGeneticOrder} from '../datatypes/text_version';\nimport { TlnEditorComment } from '../datatypes/editor_comment';\nimport { TlnImprint } from '../datatypes/imprint';\nimport { TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_CROSSREF_ROUTE, TLN_VIEWER_ROUTE } from '../constants';\nimport { TlnViewerNavigation } from '../tln-viewer-navigation/tln-viewer-navigation.component';\n\nexport interface ParentInformation {\n editor_comments: EditorComment[];\n page_editor_comments: EditorComment[];\n imprints: TlnImprint[];\n geneticOrders: TlnTextGeneticOrder[];\n page: NavigationPage;\n manuscript_iri: string;\n parentActivatedRoute?: ActivatedRoute;\n}\n\n@Component({\n selector: 'app-tln-information',\n templateUrl: './tln-information.component.html',\n styleUrls: ['./tln-information.component.css']\n})\nexport class TlnInformationComponent extends RouteUpdater implements OnInit {\n /**\n * IRI of the current page TODO: for later use\n **/\n current_iri: string;\n /**\n * IRI of the current manuscript TODO: for later use\n **/\n current_manuscript_iri: string;\n /**\n * IRI of the current geneticOrder TODO: for later use\n **/\n current_genetic_order: string;\n /**\n * the route to the crossref app\n **/\n private crossrefRoute: string = TLN_CROSSREF_ROUTE;\n /**\n * the route to the viewer app\n **/\n private viewerRoute: string = TLN_VIEWER_ROUTE;\n\n /**\n * the param mapping TODO: for later use\n **/\n protected mapping: Mapping = { \n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n current_manuscript_iri: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n current_genetic_order: { param: TLN_TEXT_GENETIC_ORDER_PARAM, type: \"string\" } \n }\n\n constructor(@Inject(MAT_BOTTOM_SHEET_DATA) private data: ParentInformation, private bottomSheetRef: MatBottomSheetRef, protected router: Router, protected activatedRoute: ActivatedRoute ){ \n super(router, activatedRoute);\n }\n\n /*ngOnInit() { //TODO: for later use\n super.ngOnInit();\n }*/\n\n}\n","export default \"img.thumb {\\n overflow: auto;\\n padding: 0 20px;\\n text-align: center;\\n}\\ntd.author {\\n text-align: left;\\n width: 150px;\\n vertical-align: top;\\n padding-right: 10px;\\n}\\ntd.text {\\n text-align: justify;\\n width: 600px;\\n}\\np.text {\\n text-align: justify;\\n width: 760px;\\n}\\nbutton.nospace {\\n /*margin: -12px;*/\\n max-width: 15px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1tYW51c2NyaXB0LXZpZXcvdGxuLW1hbnVzY3JpcHQtdmlldy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csY0FBYztHQUNkLGVBQWU7R0FDZixrQkFBa0I7QUFDckI7QUFDQTtHQUNHLGdCQUFnQjtHQUNoQixZQUFZO0dBQ1osbUJBQW1CO0dBQ25CLG1CQUFtQjtBQUN0QjtBQUNBO0dBQ0csbUJBQW1CO0dBQ25CLFlBQVk7QUFDZjtBQUNBO0dBQ0csbUJBQW1CO0dBQ25CLFlBQVk7QUFDZjtBQUNBO0dBQ0csaUJBQWlCO0dBQ2pCLGVBQWU7QUFDbEIiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLW1hbnVzY3JpcHQtdmlldy90bG4tbWFudXNjcmlwdC12aWV3LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpbWcudGh1bWIge1xuICAgb3ZlcmZsb3c6IGF1dG87XG4gICBwYWRkaW5nOiAwIDIwcHg7XG4gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG50ZC5hdXRob3Ige1xuICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgIHdpZHRoOiAxNTBweDtcbiAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xufVxudGQudGV4dCB7XG4gICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICAgd2lkdGg6IDYwMHB4O1xufVxucC50ZXh0IHtcbiAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICB3aWR0aDogNzYwcHg7XG59XG5idXR0b24ubm9zcGFjZSB7XG4gICAvKm1hcmdpbjogLTEycHg7Ki9cbiAgIG1heC13aWR0aDogMTVweDtcbn1cbiJdfQ== */\"","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_VIEWER_ROUTE, TLN_CONTEXT_VIEW_PARAM, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM,\n TLN_SELECTED_LINES_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../constants';\nimport { DataHandler } from '../data_handler';\nimport { ReconstructedKonvolut, TlnExtManuscript, ManuscriptEarlierDescription, ManuscriptDescription } from '../datatypes/manuscript';\nimport { PageStub } from '../datatypes/page';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TlnCacheQueryService } from '../services';\nimport { MarkupSettings, StandoffMarkup } from 'ngx-mat-standoff-markup';\n\n@Component({\n selector: 'tln-manuscript-view',\n templateUrl: './tln-manuscript-view.component.html',\n styleUrls: ['./tln-manuscript-view.component.css']\n})\nexport class TlnManuscriptViewComponent extends RouteUpdater implements OnInit {\n contextView: string = TLN_MANUSCRIPT_PARAM;\n protected currentRoute: string = TLN_MANUSCRIPT_ROUTE;\n current_manuscript: TlnExtManuscript;\n current_manuscript_unity: string;\n current_page_iri: string;\n dataHandler: DataHandler = new DataHandler(this);\n earlierDescriptions: ManuscriptEarlierDescription[] = [];\n fullscreen: boolean;\n manuscriptDescription?: ManuscriptDescription;\n reconstructedKonvolut?: ReconstructedKonvolut;\n protected mapping: Mapping = { \n contextView: { param: TLN_CONTEXT_VIEW_PARAM, type: \"string\" },\n current_page_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n current_manuscript_unity: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n }\n mySettings: MarkupSettings = new MarkupSettings();\n pages: PageStub[] = [];\n\n constructor(private tlnQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n this.dataHandler.addHandler('manuscript_content', ['current_manuscript','manuscriptDescription', 'earlierDescriptions', 'pages', 'reconstructedKonvolut'] );\n this.dataHandler.addHandler('current_manuscript', { 'handler': TlnExtManuscript });\n this.dataHandler.addHandler('manuscriptDescription', { 'handler': ManuscriptDescription});\n this.dataHandler.addHandler('earlierDescriptions', { 'handler': ManuscriptEarlierDescription});\n this.dataHandler.addHandler('pages', { 'handler': PageStub });\n this.dataHandler.addHandler('reconstructedKonvolut', { 'handler': ReconstructedKonvolut});\n this.dataHandler.setQueryService(this.tlnQueryService);\n super.ngOnInit();\n }\n protected readParams(params: Params){\n let old_manuscript_unity = this.current_manuscript_unity;\n super.readParams(params);\n if (this.dataHandler.ready){\n if (this.current_manuscript_unity != null && this.current_manuscript_unity != old_manuscript_unity){\n this.dataHandler.resetData('manuscript_content')\n this.dataHandler.getData('manuscript_content', this.current_manuscript_unity);\n }\n }\n }\n private openInViewer(pageIri: string, launch: boolean){\n this.current_page_iri = pageIri;\n this.currentRoute = TLN_VIEWER_ROUTE;\n this.fullscreen = true;\n this.updateParams(launch);\n }\n\n}\n","export default \".icon-button {\\n width: 15px;\\n margin-left: 3px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL3Rsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL29wZW4taW4tdmlld2VyLmNvbXBvbmVudC5zY3NzIiwidGxuLWVkaXRpb24vdGxuLW5hdmlnYXRpb24tZWxlbWVudHMvb3Blbi1pbi12aWV3ZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRyxXQUFBO0VBQ0EsZ0JBQUE7QUNDSCIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tbmF2aWdhdGlvbi1lbGVtZW50cy9vcGVuLWluLXZpZXdlci5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5pY29uLWJ1dHRvbiB7XG4gICB3aWR0aDogMTVweDsgXG4gICBtYXJnaW4tbGVmdDogM3B4O1xufVxuIiwiLmljb24tYnV0dG9uIHtcbiAgd2lkdGg6IDE1cHg7XG4gIG1hcmdpbi1sZWZ0OiAzcHg7XG59Il19 */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_VIEWER_ROUTE, TLN_FULLSCREEN_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM, TLN_SELECTED_WORDS_PARAM } from '../constants';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { NavigationPage } from '../models';\n\ninterface ViewerRouteInformation {\n title: string;\n number: string;\n page: string;\n manuscript?: string;\n selectedWords?: string[];\n launchExternally?: boolean;\n}\n@Component({\n selector: 'open-in-viewer',\n templateUrl: './open-in-viewer.component.html',\n styleUrls: ['./open-in-viewer.component.scss']\n})\nexport class OpenInViewerComponent extends RouteUpdater {\n @Input() routerInformation: ViewerRouteInformation;\n @Input() title: string;\n @Input() launchTitle: string;\n launch: boolean = false;\n page: NavigationPage;\n protected currentRoute: string = TLN_VIEWER_ROUTE;\n current_iri: string;\n current_manuscript_unity: string;\n selectedWords: string[];\n protected mapping: Mapping = { current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n selectedWords: { param: TLN_SELECTED_WORDS_PARAM, type: \"string\" },\n current_manuscript_unity: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" }}\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n ngOnInit(){\n super.ngOnInit();\n this.page = { id: this.routerInformation.page, \n number: this.routerInformation.number,\n title: this.routerInformation.title };\n this.launch = (this.routerInformation.launchExternally != undefined \n && this.routerInformation.launchExternally != null\n && this.routerInformation.launchExternally)\n if (this.routerInformation.selectedWords != undefined \n && this.routerInformation.selectedWords != null\n && this.routerInformation.selectedWords.length > 0){\n this.selectedWords = this.routerInformation.selectedWords;\n }\n if (this.title == undefined || this.title == null || this.title == ''){\n this.title = this.page.title + ' ' + this.page.number + ' in Seitenansicht öffnen'\n }\n if (this.launchTitle == undefined || this.launchTitle == null || this.launchTitle == ''){\n this.launchTitle = this.page.title + ' ' + this.page.number + ' in neuem Tab in Seitenansicht öffnen'\n }\n }\n private openInViewer(){\n if (this.routerInformation != undefined && this.routerInformation != null){\n this.current_iri = this.routerInformation.page;\n if (this.routerInformation.manuscript != undefined && this.routerInformation != null){\n this.current_manuscript_unity = this.routerInformation.manuscript;\n }\n this.updateParams(this.launch);\n }\n }\n\n}\n","export default \".search {\\n margin-left: 8px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL3NlYXJjaC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csZ0JBQWdCO0FBQ25CIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL3NlYXJjaC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNlYXJjaCB7XG4gICBtYXJnaW4tbGVmdDogOHB4O1xufVxuIl19 */\"","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_SEARCH_ROUTE, TLN_FIND_PARAM } from '../constants';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\n\n@Component({\n selector: 'search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.css']\n})\nexport class SearchComponent extends RouteUpdater {\n findText: string;\n protected mapping: Mapping = { findText: { param: TLN_FIND_PARAM, type: \"string\" }}\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n openFulltextSearch(){\n this.currentRoute = TLN_SEARCH_ROUTE\n this.updateParams();\n }\n private clearFindText() {\n this.findText = '';\n this.updateParams();\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tbmF2aWdhdGlvbi1lbGVtZW50cy90b2dnbGUtbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzIn0= */\"","import { Component, OnInit} from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_SEARCH_ROUTE, TLN_FULLSCREEN_PARAM, TLN_NAV_BAR_OPEN_STATE_PARAM} from '../constants';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\n\n\n@Component({\n selector: 'toggle-navigation',\n templateUrl: './toggle-navigation.component.html',\n styleUrls: ['./toggle-navigation.component.css']\n})\n\nexport class ToggleNavigationComponent extends RouteUpdater {\n fullscreen: boolean = false;\n navBarOpenState: boolean = false;\n protected mapping: Mapping = { \n navBarOpenState: { param: TLN_NAV_BAR_OPEN_STATE_PARAM, type: \"boolean\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" }\n }\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n private toggleFullscreen(){\n this.fullscreen = !this.fullscreen;\n this.updateParams();\n }\n toggleNavDrawer(){\n this.navBarOpenState = !this.navBarOpenState;\n this.updateParams();\n }\n}\n","export default \".zoom {\\n max-width: 20px;\\n}\\n.zoom-in {\\n cursor: zoom-in;\\n}\\n.zoom-out {\\n cursor: zoom-out;\\n}\\nmat-slider {\\n width: 200px;\\n}\\n::ng-deep .mat-slider-thumb-label {\\n width: 33px !important;\\n height: 33px !important;\\n top: -42px !important;\\n right: -15px !important;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL3pvb20uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLGdCQUFnQjtBQUNuQjtBQUNBO0VBQ0UsWUFBWTtBQUNkO0FBQ0E7TUFDTSxzQkFBc0I7TUFDdEIsdUJBQXVCO01BQ3ZCLHFCQUFxQjtNQUNyQix1QkFBdUI7QUFDN0IiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLW5hdmlnYXRpb24tZWxlbWVudHMvem9vbS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnpvb20ge1xuICAgbWF4LXdpZHRoOiAyMHB4O1xufVxuLnpvb20taW4ge1xuICAgY3Vyc29yOiB6b29tLWluO1xufVxuLnpvb20tb3V0IHtcbiAgIGN1cnNvcjogem9vbS1vdXQ7XG59XG5tYXQtc2xpZGVyIHtcbiAgd2lkdGg6IDIwMHB4O1xufVxuOjpuZy1kZWVwIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgIHdpZHRoOiAzM3B4ICFpbXBvcnRhbnQ7XG4gICAgICBoZWlnaHQ6IDMzcHggIWltcG9ydGFudDtcbiAgICAgIHRvcDogLTQycHggIWltcG9ydGFudDtcbiAgICAgIHJpZ2h0OiAtMTVweCAhaW1wb3J0YW50O1xufVxuIl19 */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_MULTI_INSTANCE_ZOOM_PARAM, TLN_ZOOM_PARAM } from '../constants';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\n\n@Component({\n selector: 'zoom',\n templateUrl: './zoom.component.html',\n styleUrls: ['./zoom.component.css']\n})\nexport class ZoomComponent extends RouteUpdater {\n @Input() resetButtonOn: boolean = true;\n @Input() useViewerZoom: boolean = true;\n @Input() sliderOn: boolean = true;\n @Input() step: number = 0.25;\n zoomFactor: number = 1;\n protected mapping: Mapping = { zoomFactor: { param: TLN_ZOOM_PARAM, type: \"number\" }}\n \n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n ngOnInit(){\n if (!this.useViewerZoom){\n this.mapping['zoomFactor']['param'] = TLN_MULTI_INSTANCE_ZOOM_PARAM;\n }\n super.ngOnInit();\n }\n private formatLabel(value: number): string {\n return Math.round(value * 100) + '%'; \n }\n private setZoomFactor(newZoomFactor: number){\n console.log(newZoomFactor);\n if (newZoomFactor > 0){\n this.zoomFactor = Math.round(newZoomFactor*100)/100;\n } else {\n this.zoomFactor = this.zoomFactor/2\n }\n this.updateParams();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ninterface ZoomObject {\n zoomFactor: number;\n changeValue: number;\n}\n\n@Pipe({\n name: 'zoomTitle'\n})\nexport class ZoomPipe implements PipeTransform {\n\n transform(zoom: ZoomObject): string {\n return (zoom.zoomFactor+zoom.changeValue < 0) ? Math.round(zoom.zoomFactor*50) + '%' : Math.round((zoom.zoomFactor+zoom.changeValue)*100) + '%';\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tcGFnZS12aWV3LmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TlnQueryServiceInterface } from './models';\nimport { TlnCacheQueryService} from './tln-query.service';\nimport { TlnPage} from './datatypes/page';\nimport { FaksimileImage } from './datatypes/faksimile_image';\nimport { SVGImage, SVGImageClip } from './datatypes/svg_image';\nimport { TlnImage } from './datatypes/image';\nimport { TlnLine, FaksimileLine } from './datatypes/line';\nimport { TlnWord, FaksimileWord } from './datatypes/word';\nimport { TlnTextByForeignHand, FaksimileTextByForeignHand } from './datatypes/foreign_text';\nimport { externalAssignClass, externalAssignStyle, Configuration, Identifier, Image, Line, Word } from './models';\nimport { ConfigurableComponent } from './services';\nimport { ComplexKeyIriMapping, DataHandler } from './data_handler';\nimport { DEFAULT_VIEW_OPTION, VIEW_OPTIONS, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_ROTATION_PARAM, TLN_SELECTED_LINES_PARAM, TLN_SELECTED_WORDS_PARAM, TLN_VIEW_OPTION_PARAM, TLN_MULTI_INSTANCE_ZOOM_PARAM, TLN_ZOOM_PARAM } from './constants';\nimport { Mapping, RouteReader } from './route-reader';\n\n/**\n * Given a page IRI, this component will request all relevant information and\n * display the data with {@link /components/PageViewComponent.html|PageViewComponent}.\n **/\n@Component({\n selector: 'tln-page-view',\n templateUrl: './tln-page-view.component.html',\n styleUrls: ['./tln-page-view.component.css']\n})\nexport class TlnPageViewComponent extends RouteReader implements OnInit, OnChanges {\n @Input() configuration: Configuration = { '*': { 'useExtendedTooltip': true }};\n /**\n * IRI of the current page, the component will ignore page iri's from params if set.\n **/\n @Input('page') current_iri: string;\n /**\n * the search text of words that should be highlighted as {@link /miscellaneous/enumerations.html#HIGHTLIGHT_CASES|HIGHTLIGHT_CASES.SEARCHED_WORD}.\n **/\n @Input() findText: string;\n /**\n * whether or not to ignore the params\n **/\n private ignoreParams: boolean = false;\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n /**\n * global zoom factor.\n **/\n @Input() zoomFactor: number = 1;\n /**\n * identifiers of selected words that should be highlighted.\n **/\n @Input() selectedWords: Identifier[] = [];\n /**\n * identifiers of selected lines that should be highlighted.\n **/\n @Input() selectedLines: Identifier[] = [];\n /**\n * the (initial) maximum height of the image.\n **/\n @Input() max_height: number = -1;\n /**\n * the (initial) maximum width of the image, if both height and width are specified prefer width.\n **/\n @Input() max_width: number = -1;\n /**\n * Rotation value, i.e. one of [ 0, 90, 180, 270 ].\n **/\n rotation: number = 0;\n dontShowReference: boolean = false;\n @Input() showAllLines: boolean = false;\n @Input() startLine: Identifier;\n @Input() endLine: Identifier;\n /**\n * should primary Url be used for image. Use secondary Url if false.\n **/\n @Input() preferPrimaryUrl: boolean = true;\n /**\n * selected view option, i.e. one of the following \n * {@link /miscellaneous/enumerations.html#VIEW_OPTIONS|VIEW_OPTIONS}.\n * */\n @Input() selectedViewOption: string = DEFAULT_VIEW_OPTION;\n /**\n * An optional function that will be passed to {@link /components/TextFieldComponent.html|TextFieldComponent} \n * in order to return a further highlight class\n * to the word rects when the internal function would return 'textfield unhighlighted'. \n **/\n @Input('assignClass') assignClass?: externalAssignClass;\n /**\n * An optional function that will be passed to {@link /components/TextFieldComponent.html|TextFieldComponent}\n * and {@link /components/MarginFieldComponent.html|MarginFieldComponent}\n * in order to return a (svg-)style object \n * to the word and line rects. This function allows the user to extend the style of this component.\n * E.g. by returning { fill: blue } the function overwrites the default behaviour and sets\n * the default highlight color to blue.\n **/\n @Input('assignStyle') assignStyle?: externalAssignStyle;\n /**\n * the data handler of this component that retrieves\n * data and instantiates it according to their proper \n * datatypes.\n **/\n dataHandler: DataHandler = new DataHandler(this);\n /**\n * whether or not to show page view in fullscreen mode.\n **/\n fullscreen: boolean = false;\n /**\n * texts written by foreign hand \n **/\n foreignTexts: TlnTextByForeignHand[] = [];\n /**\n * the (first) image to be displayed by \n * {@link /components/PageViewComponent.html|PageViewComponent}.\n **/\n image: Image;\n /**\n * the Array of lines of the first image that will be displayed by {@link /components/MarginFieldComponent.html|MarginFieldComponent}.\n **/\n lines: Line[] = [];\n /**\n * texts written by foreign hand \n **/\n second_foreignTexts: FaksimileTextByForeignHand[] = [];\n /**\n * the second image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n second_image: Image;\n /**\n * the Array of lines of the second image that will be displayed by {@link /components/MarginFieldComponent.html|MarginFieldComponent}.\n **/\n second_lines: Line[] = [];\n /**\n * the Array of words of the second image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n second_words: Word[] = [];\n /**\n * the Array of words of the first image that will be displayed by {@link /components/TextFieldComponent.html|TextFieldComponent}.\n **/\n words: Word[] = [];\n @Input() multiInstanceMode: boolean = false;\n protected mapping: Mapping = { \n findText: { param: TLN_FIND_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n rotation: { param: TLN_ROTATION_PARAM, type: \"number\" },\n selectedViewOption: { param: TLN_VIEW_OPTION_PARAM, type: \"string\" },\n selectedLines: { param: TLN_SELECTED_LINES_PARAM, type: \"string\" },\n selectedWords: { param: TLN_SELECTED_WORDS_PARAM, type: \"string\" },\n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n zoomFactor: { param: TLN_ZOOM_PARAM, type: \"number\" }\n }\n\n /**\n * @param localQueryService internal query service that will be used if no external queryService is passed \n * to input.\n **/\n constructor(private localQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute){ \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n if (this.multiInstanceMode){\n this.mapping['current_iri']['ignore'] = (this.current_iri != null);\n this.mapping['selectedViewOption']['ignore'] = true;\n this.mapping['zoomFactor']['param'] = TLN_MULTI_INSTANCE_ZOOM_PARAM;\n this.dontShowReference = true;\n //this.configuration['*']['useExtendedTooltip'] = false;\n }\n super.ngOnInit();\n this.localQueryService.use_cache = true;\n let tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n //console.log(tlnQueryService['use_cache']);\n let queryConfiguration: Configuration = { '*': { 'tlnQueryService': tlnQueryService }}\n this.configuration = ConfigurableComponent.updateConfiguration(this.configuration, queryConfiguration)\n this.dataHandler.addHandler('image', { 'handler': SVGImage });\n this.dataHandler.addHandler('words', { 'handler': TlnWord });\n this.dataHandler.addHandler('foreignTexts', { 'handler': TlnTextByForeignHand});\n this.dataHandler.addHandler('lines', { 'handler': TlnLine });\n this.dataHandler.addHandler('second_image',{ 'handler': FaksimileImage });\n this.dataHandler.addHandler('second_words',{ 'handler': FaksimileWord });\n this.dataHandler.addHandler('second_lines',{ 'handler': FaksimileLine });\n this.dataHandler.addHandler('second_foreignTexts', { 'handler': FaksimileTextByForeignHand});\n this.dataHandler.addHandler('page_content',[ 'image', 'lines', 'words', 'foreignTexts' ]);\n this.dataHandler.addHandler('second_page_content', [ 'second_image', 'second_lines', 'second_words', 'second_foreignTexts' ] );\n this.dataHandler.setQueryService(tlnQueryService);\n this.updatePageData();\n }\n ngOnChanges(change: SimpleChanges) {\n if (this.dataHandler.ready \n && (change.current_iri != undefined && change.current_iri != null && !change.current_iri.firstChange)\n || (change.selectedViewOption != undefined && change.selectedViewOption != null && !change.selectedViewOption.firstChange)) {\n this.updatePageData();\n } \n }\n protected readParams(params: Params){\n let old_page_iri = this.current_iri;\n let old_selectedViewOption = this.selectedViewOption;\n let old_fullscreen = this.fullscreen\n super.readParams(params);\n if (this.dataHandler.ready \n && (old_page_iri != this.current_iri || old_selectedViewOption != this.selectedViewOption)){\n this.updatePageData();\n }\n if (old_fullscreen != this.fullscreen && !this.multiInstanceMode){\n //this.dontShowReference = !this.fullscreen; \n //this.configuration['*']['useExtendedTooltip'] = this.fullscreen;\n }\n }\n /**\n * This function updates the page data by setting the handlers for the current \n * {@link #selectedViewOption|selectedViewOption} and by retrieving the data.\n **/\n private updatePageData(){\n this.dataHandler['image']['handler'] = (this.selectedViewOption != VIEW_OPTIONS.FAKSIMILE && this.selectedViewOption != VIEW_OPTIONS.SYNOPSIS_B) ? SVGImage : FaksimileImage ; \n this.dataHandler['words']['handler'] = (this.selectedViewOption != VIEW_OPTIONS.FAKSIMILE && this.selectedViewOption != VIEW_OPTIONS.SYNOPSIS_B) ? TlnWord : FaksimileWord ; \n this.dataHandler['lines']['handler'] = (this.selectedViewOption != VIEW_OPTIONS.FAKSIMILE && this.selectedViewOption != VIEW_OPTIONS.SYNOPSIS_B) ? TlnLine : FaksimileLine ; \n this.dataHandler['foreignTexts']['handler'] = (this.selectedViewOption != VIEW_OPTIONS.FAKSIMILE && this.selectedViewOption != VIEW_OPTIONS.SYNOPSIS_B) \n ? TlnTextByForeignHand : FaksimileTextByForeignHand ; \n if (this.dataHandler['page_content'][this.dataHandler['page_content'].length-1] == 'second_page_content'){\n this.dataHandler['page_content'].pop(); \n this.second_image = null;\n this.second_foreignTexts = [];\n this.second_words = [];\n this.second_lines = [];\n }\n if (this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS || this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS_B){\n this.dataHandler['second_image']['handler'] = (this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS_B) ? SVGImage : FaksimileImage ; \n this.dataHandler['second_words']['handler'] = (this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS_B) ? TlnWord : FaksimileWord ; \n this.dataHandler['second_lines']['handler'] = (this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS_B) ? TlnLine : FaksimileLine ; \n this.dataHandler['second_foreignTexts']['handler'] = (this.selectedViewOption == VIEW_OPTIONS.SYNOPSIS_B) ? TlnTextByForeignHand : FaksimileTextByForeignHand ; \n this.dataHandler['page_content'].push('second_page_content');\n } \n if (this.current_iri != null){\n this.dataHandler.resetData('page_content');\n if (this.startLine != null && this.startLine != undefined){\n this.dataHandler['image']['handler'] = SVGImageClip ; \n let endLine = (this.endLine != null && this.endLine != undefined) ? this.endLine : this.startLine;\n let complex: ComplexKeyIriMapping = { idIndex: 0, \n mapping: [ { key: 'page', iri: this.current_iri}, { key: 'startLine', iri: this.startLine}, {key: 'endLine', iri: endLine} ]\n }\n this.dataHandler['page_content'] = this.dataHandler['page_content'].filter(key =>key != 'image')\n this.dataHandler.getData4Keys('image', complex);\n } else if (this.dataHandler['page_content'].indexOf('image') == -1){\n this.dataHandler['page_content'].splice(0, 0, 'image')\n }\n this.dataHandler.getData('page_content', this.current_iri);\n }\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { BasicResultBindingElement } from '../datatypes/basic_datatype';\n\n@Pipe({\n name: 'toIds'\n})\nexport class ToIdsPipe implements PipeTransform {\n\n transform(basicElements: BasicResultBindingElement[]): string[] {\n return basicElements.map(element =>element.id);\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tcXVhbnQvZXhwb3J0LmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, OnInit, Input } from '@angular/core';\nimport { ngxCsv } from 'ngx-csv/ngx-csv';\nimport { SelectableWordProperty } from '../datatypes/quant';\nimport { FusekiResults} from '../datatypes/basic_datatype';\n\n\n@Component({\n selector: 'export',\n templateUrl: './export.component.html',\n styleUrls: ['./export.component.css']\n})\nexport class ExportComponent implements OnInit {\n @Input() displayedColumns: string[];\n @Input() exportData: any[];\n @Input() fusekiResults: FusekiResults;\n @Input() replaceId: string;\n @Input() selectedWordProperties: SelectableWordProperty[] = [];\n @Input() csv_title: string = 'SPN Data from ' + location.hostname;\n @Input() csv_file_name: string = \"SPN_Data\";\n readonly availableExportFormats: string[] = [ 'CSV', 'JSON' ]\n selectedExportFormat: string = 'CSV'\n\n constructor() { }\n\n ngOnInit() {\n if(this.selectedWordProperties.length > 0){\n this.csv_title = 'Wörter mit Eigenschaften:,' + this.selectedWordProperties.map(property =>property.label).join(',');\n }\n }\n // EXPORT function from: https://github.com/nie-ine/inseri/blob/devel/src/app/app-engine/apps/data-list-view/data-list-view-table/data-list-view-table.component.ts\n\n public export() {\n switch (this.selectedExportFormat) {\n case 'CSV': {\n this.exportToCsv();\n break;\n }\n case 'JSON': this.exportToJson();\n }\n }\n\n public exportToCsv() {\n var options = {\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalseparator: '.',\n showLabels: true,\n showTitle: true,\n title: this.csv_title,\n useBom: true,\n noDownload: false,\n headers: this.displayedColumns.map(column =>{\n if (column == 'id' && this.replaceId != undefined && this.replaceId != null){\n return this.replaceId;\n } else {\n return column;\n }\n })\n };\n\n //let exportData = this.flatten();\n new ngxCsv(this.flattenData(), this.csv_file_name, options);\n }\n private flattenData(): any[] {\n let data = [];\n this.exportData.forEach(entry =>{\n let element = {};\n this.displayedColumns.forEach(key =>{\n element[key] = (entry[key].hasOwnProperty('value')) ? entry[key].value : entry[key];\n });\n data.push(element);\n });\n return data;\n }\n exportToJson() {\n const data = (this.fusekiResults != undefined && this.fusekiResults != null) ? this.fusekiResults : this.exportData;\n const dataStr = JSON.stringify(data, null, 2);\n const file = new Blob([dataStr], {type: 'text/json'});\n this.download(file, 'export.json');\n }\n\n download(blob, filename) {\n if (window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob, filename); } else {\n let elem = document.createElement('a'), url = URL.createObjectURL(blob);\n elem.href = url;\n elem.download = filename;\n document.body.appendChild(elem);\n elem.click();\n setTimeout(function() {\n document.body.removeChild(elem);\n window.URL.revokeObjectURL(url);\n },0);\n }\n }\n\n}\n","export default \"table {\\n width: 100%;\\n}\\nexport {\\n float: right;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1xdWFudC9mdXNla2ktdGFibGUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVc7QUFDYjtBQUNBO0dBQ0csWUFBWTtBQUNmIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1xdWFudC9mdXNla2ktdGFibGUuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbInRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5leHBvcnQge1xuICAgZmxvYXQ6IHJpZ2h0O1xufVxuIl19 */\"","import { Component, EventEmitter, Input, Output, OnInit, ViewChild } from '@angular/core';\nimport {MatPaginator} from '@angular/material/paginator';\nimport {Sort} from '@angular/material/sort';\nimport { PaginatorResultStatus } from '../common/paginator-result-status';\nimport { FusekiResults, FusekiBindings } from '../datatypes/basic_datatype';\nimport { MySort} from './sort';\nimport { QuantQuery, PageIndexUpdater } from '../models';\n\n@Component({\n selector: 'fuseki-table',\n templateUrl: './fuseki-table.component.html',\n styleUrls: ['./fuseki-table.component.css']\n})\nexport class FusekiTableComponent implements OnInit, PageIndexUpdater {\n @Input() fusekiResults: FusekiResults;\n @Input() resultIndicesIndex: number = 0;\n @Input() quantQuery: QuantQuery;\n @Output() quantQueryChanged = new EventEmitter();\n @Output() change = new EventEmitter();\n @ViewChild(MatPaginator,{static:false}) paginator: MatPaginator;\n paginatorResultStatus: PaginatorResultStatus = new PaginatorResultStatus(10, this);\n sort: MySort = new MySort();\n\n constructor() {}\n\n ngOnInit() { \n this.paginatorResultStatus.updateResultRange(this.quantQuery.resultIndices[this.resultIndicesIndex]);\n }\n private sortData(sort: Sort){\n this.paginator.pageIndex = 0;\n this.paginatorResultStatus.updateResultRange(0);\n this.quantQuery.sortArray[this.resultIndicesIndex] = sort;\n this.quantQuery.resultIndices[this.resultIndicesIndex] = 0;\n this.quantQueryChanged.emit(this.quantQuery);\n }\n\n}\n","export default \".error {\\n /* margin-top: 20px;\\n color: red;*/\\n background-color: black;\\n color: white;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1xdWFudC9xdWVyeS1lcnJvci5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7ZUFDYTtFQUNiLHVCQUF1QjtFQUN2QixZQUFZO0FBQ2QiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLXF1YW50L3F1ZXJ5LWVycm9yLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXJyb3Ige1xuICAvKiBtYXJnaW4tdG9wOiAyMHB4O1xuICAgY29sb3I6IHJlZDsqL1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgY29sb3I6IHdoaXRlO1xufVxuIl19 */\"","import { Component, Inject} from '@angular/core';\nimport {MatDialog, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef} from '@angular/material/bottom-sheet';\n\n@Component({\n selector: 'app-query-error',\n templateUrl: './query-error.component.html',\n styleUrls: ['./query-error.component.css']\n})\nexport class QueryErrorComponent {\n constructor(@Inject(MAT_BOTTOM_SHEET_DATA) public data: any) {}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NumericResultRow } from '../datatypes/quant';\nimport { QuantQuery } from '../models';\n\n@Pipe({\n name: 'quantResultPipe'\n})\nexport class ResultPipe implements PipeTransform {\n\n transform(numResultRows: NumericResultRow[], quantQuery: QuantQuery): string {\n const total = (numResultRows.length > 0) ? numResultRows[0].total : 0;\n let numWordWithPropertiesTotal = 0\n numResultRows.forEach(result =>{ numWordWithPropertiesTotal += result.numProperties});\n let wordPropString = (numWordWithPropertiesTotal > 1) ? 'Wörter' : 'Wort';\n if (quantQuery.altQuery == null && quantQuery.selectedWordProperties.length > 0) {\n if (quantQuery.selectedWordProperties.length > 1) {\n const propStrings = quantQuery.selectedWordProperties.map(prop =>'\"' + prop.label.replace('.', '') + '\"');\n wordPropString = wordPropString + ' haben die Eigenschaften ' + propStrings.join(', ')\n } else {\n wordPropString = wordPropString + ' haben die Eigenschaft \"' + quantQuery.selectedWordProperties[0].label.replace('.', '') + '\"'; \n }\n }\n let filterString = ''\n if (quantQuery.altQuery == null \n && ((quantQuery.text != null && quantQuery.text != '') \n || (quantQuery.filterValue != null && quantQuery.filterValue != ''))){\n filterString = (quantQuery.text != null && quantQuery.text != '') ? ' und den Worttext \"' + quantQuery.text + '\"' : ' und den Filtertext \"' + quantQuery.filterValue +'\"';\n }\n //const filterString = (quantQuery.altQuery == null && quantQuery.text != null && quantQuery.text != '') ? ' und den Worttext \"' + quantQuery.text + '\"': '';\n return numWordWithPropertiesTotal + '/' + total + ' ' + wordPropString + filterString;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { PresentationWord } from '../datatypes/word_presentation';\n\n@Pipe({\n name: 'sortByLine'\n})\nexport class SortByLinePipe implements PipeTransform {\n\n transform(words: PresentationWord[]): PresentationWord[] {\n return words.sort((n1,n2) => n1.line_number - n2.line_number);\n }\n\n}\n","import {Sort} from '@angular/material/sort';\nimport { FusekiResults } from '../datatypes/basic_datatype';\n\nexport class MySort {\n public sortFusekiData(sort: Sort, fusekiResults: FusekiResults){\n let bindings = fusekiResults.results.bindings;\n let data = bindings.slice();\n if (!sort.active || sort.direction === '') {\n fusekiResults.results.bindings = <[]>data;\n return;\n }\n fusekiResults.results.bindings = <[]>data.sort((a, b) =>{\n return this.compare(a[sort.active]['value'], b[sort.active]['value'], sort.direction === 'asc');\n });\n }\n public compare(a: number | string, b: number | string, isAsc: boolean): number {\n return (a < b ? -1 : 1) * (isAsc ? 1: -1);\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tcXVhbnQvdGxuLW9udG9sb2d5LXZpZXdlci5jb21wb25lbnQuY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport { Namespace, Ontology } from '../../ontology-viewer/models';\n\n@Component({\n selector: 'tln-ontology-viewer',\n templateUrl: './tln-ontology-viewer.component.html',\n styleUrls: ['./tln-ontology-viewer.component.css']\n})\nexport class TlnOntologyViewerComponent implements OnInit {\n baseUrl = 'https://nietzsche.fuseki.services.dasch.swiss/nietzsche'\n ontologies: Ontology[] = [ { prefix: 'tln', name: 'The late Nietzsche', iri: 'http://www.nie.org/ontology/nietzsche' },\n { prefix: 'homotypic', name: 'Homotypic', iri: 'http://www.nie.org/ontology/homotypic' } , \n { prefix: 'standoff', name: 'Standoff Markup', iri: 'http://www.nie.org/ontology/standoff' } ] \n namespaces: Namespace[] = [{ prefix: 'text', iri: 'http://www.e-editiones.ch/ontology/text#', isExternal: true },\n { prefix: 'document', iri: 'https://www.e-editiones.ch/ontology/document#', isExternal: true },\n { prefix: 'document', iri: 'http://e-editiones.ch/ontology/document#', isExternal: true },\n { prefix: 'text', iri: 'https://www.e-editiones.ch/ontology/text#', isExternal: true }]\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","export default \".text-quality {\\n margin-left: 15px;\\n margin-top: 10px;\\n display: block;\\n}\\n\\nmat-selection-list {\\n width: 300px;\\n}\\n\\n.headers-align .mat-expansion-panel-header-title,\\n.headers-align .mat-expansion-panel-header-description {\\n flex-basis: 0;\\n}\\n\\n.headers-align .mat-expansion-panel-header-description {\\n justify-content: space-between;\\n align-items: center;\\n}\\n\\n.headers-align .mat-form-field + .mat-form-field {\\n margin-left: 8px;\\n}\\n\\n.form {\\n margin-top: 10px;\\n margin-left: 15px;\\n margin-right: 15px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1xdWFudC90bG4tcXVhbnQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtDQUNDLGlCQUFpQjtDQUNqQixnQkFBZ0I7Q0FDaEIsY0FBYztBQUNmOztBQUVBO0dBQ0csWUFBWTtBQUNmOztBQUNBOztFQUVFLGFBQWE7QUFDZjs7QUFFQTtFQUNFLDhCQUE4QjtFQUM5QixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBQ0E7R0FDRyxnQkFBZ0I7R0FDaEIsaUJBQWlCO0dBQ2pCLGtCQUFrQjtBQUNyQiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90bG4tcXVhbnQvdGxuLXF1YW50LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dC1xdWFsaXR5IHtcbiBtYXJnaW4tbGVmdDogMTVweDtcbiBtYXJnaW4tdG9wOiAxMHB4O1xuIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5tYXQtc2VsZWN0aW9uLWxpc3Qge1xuICAgd2lkdGg6IDMwMHB4O1xufVxuLmhlYWRlcnMtYWxpZ24gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuLmhlYWRlcnMtYWxpZ24gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcbiAgZmxleC1iYXNpczogMDtcbn1cblxuLmhlYWRlcnMtYWxpZ24gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaGVhZGVycy1hbGlnbiAubWF0LWZvcm0tZmllbGQgKyAubWF0LWZvcm0tZmllbGQge1xuICBtYXJnaW4tbGVmdDogOHB4O1xufVxuLmZvcm0ge1xuICAgbWFyZ2luLXRvcDogMTBweDtcbiAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xufVxuIl19 */\"","import { Component, OnInit, Input, ViewChild } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { HttpErrorResponse} from '@angular/common/http';\nimport {Sort} from '@angular/material/sort';\nimport {MatBottomSheet, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport {MatTabChangeEvent} from '@angular/material/tabs';\nimport {QueryErrorComponent} from './query-error.component';\nimport { CodemirrorComponent} from '@ctrl/ngx-codemirror';\nimport { DataHandler } from '../data_handler';\nimport { QuantitativeDataHandler } from '../quant_data_handler';\nimport { Manuscript4Selection} from '../datatypes/manuscript';\nimport { FusekiResults } from '../datatypes/basic_datatype';\nimport { NumericResultRow, SelectableWordProperty} from '../datatypes/quant';\nimport { QueryJson} from '../datatypes/query_json';\nimport { AccordionStatus, DataProcessor, QuantQuery, TlnQueryServiceInterface, TextQuality} from '../models';\nimport { TlnCacheQueryService } from '../services';\nimport { TLN_QUANT_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_VIEWER_ROUTE, TLN_CONTEXT_VIEW_PARAM, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM, TLN_QUANT_QUERY_PARAM, \n TLN_QUERY_PARAM, TLN_RESULT_INDEX_PARAM,TLN_SELECTED_LINES_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../constants';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { CacheService } from '../common/cache.service';\nimport { CompareMapping, SelectFromArray } from '../common/select-array';\n\n@Component({\n selector: 'tln-quant',\n templateUrl: './tln-quant.component.html',\n providers: [ TlnCacheQueryService],\n styleUrls: ['./tln-quant.component.css']\n})\nexport class TlnQuantComponent extends RouteUpdater implements DataProcessor, OnInit {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n @Input() restrictKorpusOnContext: boolean = false;\n @ViewChild(CodemirrorComponent,{static:false}) codemirror: CodemirrorComponent;\n tlnQueryService: TlnQueryServiceInterface;\n dataHandler: DataHandler = new DataHandler(this);\n fusekiResults: FusekiResults;\n current_manuscript_iri: string;\n select_manuscript_iri: string;\n displayedColumns: string[] = [ 'id', 'numProperties', 'numPropertyTextPercent', 'numPropertiesPercent', 'numPropertiesIncludeMulti', 'numText', 'numTextPercent' ];\n errorLine: number = -1;\n quantDataHandler: QuantitativeDataHandler = new QuantitativeDataHandler(this);\n isLoadingResults: boolean = false;\n manuscriptPages: Manuscript4Selection[] = [];\n numResultRows: NumericResultRow[] = [];\n resultIndex: number = 0;\n quantAccordionStatus: AccordionStatus = { \n wordProperties: { expanded: true, disabled: false }, \n scopus: { expanded: false, disabled: false },\n query: { expanded: false, disabled: false }\n };\n query: string = '';\n queryInput: string = '';\n queryHasSyntaxError: boolean = false;\n curlQuery: string = '';\n shareQuery: boolean = false;\n wordProperties: SelectableWordProperty[] = [];\n quantQuery: QuantQuery = { \n currentTable: 0, resultIndices: [ 0, 0 ], sortArray: [ { active: null, direction: '' }, { active: null, direction: '' }, { active: null, direction: '' }], \n ignoreCase: false, text: '', selectedManuscripts: [], selectedWordProperties: [], textQuality: { clean: true, preferEditedText: true },\n restrictKorpusOnContext: false, filterValue: ''\n }\n protected mapping: Mapping = { \n current_manuscript_iri: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n quantQuery: { param: TLN_QUANT_QUERY_PARAM, type: \"complex\" } }\n\n constructor(private cacheService: CacheService, private localQueryService: TlnCacheQueryService,\n protected router: Router, protected activatedRoute: ActivatedRoute, private _dialog: MatBottomSheet) { \n super(router, activatedRoute);\n }\n\n ngOnInit() {\n this.tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('wordProperties', { 'handler': SelectableWordProperty});\n this.dataHandler.addHandler('manuscriptPages', { 'handler': Manuscript4Selection});\n this.quantDataHandler.addHandler('numResultRows', { 'handler': NumericResultRow, 'process_data': this });\n this.dataHandler.setQueryService(this.tlnQueryService);\n this.quantDataHandler.setQueryService(this.tlnQueryService);\n this.quantDataHandler.start_processing.subscribe(\n (started: boolean) =>{ \n this.isLoadingResults = true;\n });\n this.quantDataHandler.processing_finished.subscribe(\n (started: boolean) =>{ \n this.isLoadingResults = false;\n });\n this.dataHandler.getData('wordProperties');\n this.dataHandler.getData('manuscriptPages');\n this.quantQuery.restrictKorpusOnContext = this.restrictKorpusOnContext\n if (this.restrictKorpusOnContext){\n this.dataHandler['manuscriptPages']['process_data'] = new SelectFromArray(this, {\n compareValueKey: 'select_manuscript_iri',\n sourceArrayKey: 'manuscriptPages',\n targetArrayKey: ['quantQuery', 'selectedManuscripts'], \n commonPropertyKey: 'id'\n })\n }\n super.ngOnInit();\n }\n isManuscriptSelected(manuscript: Manuscript4Selection): boolean {\n return this.restrictKorpusOnContext && this.current_manuscript_iri == manuscript.id \n }\n isSelected = (o1: any, o2: any): boolean => {\n return o1.id == o2.id;\n }\n normalLineNumberFormatter = (line: number): string =>{\n return String(line);\n }\n private markError(error: string){\n if (this.quantQuery != null \n && this.quantQuery.dataKey != undefined \n && this.quantQuery.dataKey != null){\n this.cacheService.removeItem(this.quantQuery.dataKey) \n this.quantQuery['dataKey'] = null;\n this.updateParams();\n }\n const matches = error.match(/(.*line\\s)([0-9]+)(:.*)/s)\n if (matches != null && matches.length == 4){\n this.errorLine = Number(matches[2]);\n this.codemirror.codeMirror.setOption('lineNumberFormatter' as any, (line:number): string =>{\n if (line == this.errorLine){\n return 'E>';\n }\n return String(line)\n });\n this.quantAccordionStatus.query.expanded = true;\n }\n }\n private send() {\n const error = QueryJson.getSyntaxError(this.query); \n //console.log('error', error);\n if (error != ''){\n this._dialog.open(QueryErrorComponent, { data: {error: error }}); \n this.markError(error);\n } else {\n this.numResultRows = [];\n Object.keys(this.quantAccordionStatus).forEach(key =>{this.quantAccordionStatus[key].expanded = false});\n if (this.quantQuery.currentTable == 2){\n this.quantQuery.currentTable = (this.query != this.getQuery()) ? 1 : 0;\n this.updateParams();\n }\n this.quantDataHandler.getData4Query('numResultRows', this.query, 'fusekiResults');\n }\n }\n private cancel(){\n this.quantDataHandler.stop_processing.emit(true);\n this.isLoadingResults = false;\n }\n private copyToClipboard(curlQueryInput){\n curlQueryInput.select(); \n curlQueryInput.setSelectionRange(0, 99999); /* For mobile devices */\n\n /* Copy the text inside the text field */\n document.execCommand(\"copy\");\n }\n protected readParams(params: Params){\n const old_current_manuscript_iri = this.current_manuscript_iri\n super.readParams(params);\n if (this.current_manuscript_iri != null \n && old_current_manuscript_iri != this.current_manuscript_iri\n && this.quantQuery.restrictKorpusOnContext){\n this.select_manuscript_iri = this.current_manuscript_iri;\n this.quantAccordionStatus.scopus.expanded = true; \n }\n if (this.quantQuery != null){\n if (this.quantQuery.selectedManuscripts.length > 0){\n this.select_manuscript_iri = null; \n }\n if (this.quantQuery.altQuery != null){\n this.query = this.quantQuery.altQuery;\n this.curlQuery = 'curl ' + this.tlnQueryService.baseUrl + ' -X POST --data \\'query=' + encodeURI(this.query) + '\\''\n this.quantAccordionStatus.wordProperties = { expanded: false, disabled: true };\n this.quantAccordionStatus.query.expanded = true;\n }\n if (this.quantQuery.dataKey != undefined && this.quantQuery.dataKey != null){\n const results = this.cacheService.getItem(this.quantQuery.dataKey);\n if (results != null){\n this.fusekiResults = results;\n this.numResultRows = NumericResultRow.convertData(this.fusekiResults);\n if (this.quantQuery.sortArray[this.quantQuery.currentTable].active != null){\n const sort = this.quantQuery.sortArray[this.quantQuery.currentTable]\n if (this.quantQuery.currentTable == 0){\n this.numResultRows = this.numResultRows.sort((a, b) => { \n return this.compare(a[sort.active], b[sort.active], sort.direction === 'asc')\n });\n } else {\n this.fusekiResults.results.bindings = this.fusekiResults.results.bindings.sort((a, b) => {\n return this.compare((a[sort.active]['value']), (b[sort.active]['value']), sort.direction === 'asc')\n });\n }\n }\n if (this.quantQuery.filterValue != undefined && this.quantQuery.filterValue != null && this.quantQuery.filterValue != ''){\n this.numResultRows = this.numResultRows.filter(result =>result.id.startsWith(this.quantQuery.filterValue));\n }\n }\n }\n }\n if (this.query == ''){\n this.updateQuery();\n }\n }\n private compare(a: number | string, b: number | string, isAsc: boolean): number {\n return (a < b ? -1 : 1) * (isAsc ? 1: -1);\n }\n private toggleEnableSelectionList(updateQuery: boolean) {\n if (this.errorLine > -1){\n this.errorLine = -1;\n this.codemirror.codeMirror.setOption('lineNumberFormatter' as any, (line:number): string =>{return String(line)})\n }\n if (updateQuery) {\n this.updateQuery();\n this.queryHasSyntaxError = false;\n this.quantAccordionStatus.wordProperties.disabled = false; \n } else {\n const queryChanged = this.query != this.getQuery();\n this.queryHasSyntaxError = QueryJson.hasSyntaxError(this.query);\n this.quantAccordionStatus.wordProperties.disabled = queryChanged;\n this.updateQuery4Ext(queryChanged);\n if (this.quantAccordionStatus.wordProperties.disabled) {\n this.quantAccordionStatus.wordProperties.expanded = false;\n }\n }\n }\n private getQuery(): string {\n let selectedManuscripts = (this.quantQuery.selectedManuscripts.length == this.manuscriptPages.length) ? [] : this.quantQuery.selectedManuscripts;\n return this.quantDataHandler['numResultRows'].handler.getSelectableQuery(\n this.quantQuery.selectedWordProperties, \n selectedManuscripts, \n this.quantQuery.textQuality, \n this.quantQuery.text, this.quantQuery.ignoreCase);\n }\n public processData(){\n if (this.quantQuery != null \n && this.quantQuery.dataKey != undefined \n && this.quantQuery.dataKey != null){\n this.cacheService.removeItem(this.quantQuery.dataKey);\n }\n const dataKey = TLN_QUANT_ROUTE + Date.now().toString();\n this.cacheService.setItem(dataKey, this.fusekiResults);\n this.quantQuery['dataKey'] = dataKey;\n this.updateParams();\n }\n private tabChanged(tabChange: MatTabChangeEvent){\n this.quantQuery.currentTable = tabChange.index;\n this.quantQuery.resultIndex = 0;\n this.updateParams();\n }\n private updateTextQuality(clean: boolean, preferEditedText?: boolean){\n this.quantQuery.textQuality = { clean: clean, preferEditedText: preferEditedText };\n this.updateQuery();\n }\n private updatePageIndex(pageIndex: number){\n if (typeof pageIndex == 'number'){\n this.quantQuery.resultIndices[this.quantQuery.currentTable] = pageIndex;\n this.updateParams();\n }\n }\n private updateQuantQuery(quantQuery: QuantQuery){\n console.log(quantQuery);\n this.quantQuery = quantQuery;\n this.updateParams();\n }\n private updateQuery(source?: string) {\n this.query = this.getQuery();\n this.updateQuery4Ext(false);\n }\n private updateQuery4Ext(setAltQuery: boolean) {\n this.curlQuery = 'curl ' + this.tlnQueryService.baseUrl + ' -X POST --data \\'query=' + encodeURI(this.query) + '\\''\n if (setAltQuery) {\n this.quantQuery.altQuery = this.query\n } else {\n this.quantQuery.altQuery = null;\n }\n this.updateParams();\n }\n}\n","export default \"table {\\n width: 100%;\\n}\\nexport {\\n float: right;\\n}\\nmat-form-field {\\n margin-left: 25px;\\n margin-top: 30px;\\n}\\ntr.example-detail-row {\\n height: 0;\\n}\\ntr.example-element-row {\\n cursor: pointer;\\n}\\ntr.example-element-row:not(.example-expanded-row):hover {\\n background: whitesmoke;\\n}\\ntr.example-element-row:not(.example-expanded-row):active {\\n background: #efefef;\\n}\\n.example-element-row td {\\n border-bottom-width: 0;\\n}\\n.example-element-detail {\\n overflow: hidden;\\n /*display: flex;*/\\n}\\n.example-element-diagram {\\n min-width: 80px;\\n border: 2px solid black;\\n padding: 8px;\\n font-weight: lighter;\\n margin: 8px 0;\\n height: 104px;\\n}\\n.example-element-symbol {\\n font-weight: bold;\\n font-size: 40px;\\n line-height: normal;\\n}\\n.example-element-description {\\n padding: 16px;\\n}\\n.example-element-description-attribution {\\n opacity: 0.5;\\n}\\n.test {\\n display: block;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1xdWFudC90bG4tdGFibGUuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLFdBQVc7QUFDYjtBQUNBO0dBQ0csWUFBWTtBQUNmO0FBQ0E7R0FDRyxpQkFBaUI7R0FDakIsZ0JBQWdCO0FBQ25CO0FBQ0E7RUFDRSxTQUFTO0FBQ1g7QUFDQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtFQUNFLHNCQUFzQjtBQUN4QjtBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCO0FBRUE7RUFDRSxzQkFBc0I7QUFDeEI7QUFFQTtFQUNFLGdCQUFnQjtFQUNoQixpQkFBaUI7QUFDbkI7QUFFQTtFQUNFLGVBQWU7RUFDZix1QkFBdUI7RUFDdkIsWUFBWTtFQUNaLG9CQUFvQjtFQUNwQixhQUFhO0VBQ2IsYUFBYTtBQUNmO0FBRUE7RUFDRSxpQkFBaUI7RUFDakIsZUFBZTtFQUNmLG1CQUFtQjtBQUNyQjtBQUVBO0VBQ0UsYUFBYTtBQUNmO0FBRUE7RUFDRSxZQUFZO0FBQ2Q7QUFDQTtHQUNHLGNBQWM7QUFDakIiLCJmaWxlIjoidGxuLWVkaXRpb24vdGxuLXF1YW50L3Rsbi10YWJsZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsidGFibGUge1xuICB3aWR0aDogMTAwJTtcbn1cbmV4cG9ydCB7XG4gICBmbG9hdDogcmlnaHQ7XG59XG5tYXQtZm9ybS1maWVsZCB7XG4gICBtYXJnaW4tbGVmdDogMjVweDtcbiAgIG1hcmdpbi10b3A6IDMwcHg7XG59XG50ci5leGFtcGxlLWRldGFpbC1yb3cge1xuICBoZWlnaHQ6IDA7XG59XG50ci5leGFtcGxlLWVsZW1lbnQtcm93IHtcbiAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbnRyLmV4YW1wbGUtZWxlbWVudC1yb3c6bm90KC5leGFtcGxlLWV4cGFuZGVkLXJvdyk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB3aGl0ZXNtb2tlO1xufVxuXG50ci5leGFtcGxlLWVsZW1lbnQtcm93Om5vdCguZXhhbXBsZS1leHBhbmRlZC1yb3cpOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQ6ICNlZmVmZWY7XG59XG5cbi5leGFtcGxlLWVsZW1lbnQtcm93IHRkIHtcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbn1cblxuLmV4YW1wbGUtZWxlbWVudC1kZXRhaWwge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAvKmRpc3BsYXk6IGZsZXg7Ki9cbn1cblxuLmV4YW1wbGUtZWxlbWVudC1kaWFncmFtIHtcbiAgbWluLXdpZHRoOiA4MHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCBibGFjaztcbiAgcGFkZGluZzogOHB4O1xuICBmb250LXdlaWdodDogbGlnaHRlcjtcbiAgbWFyZ2luOiA4cHggMDtcbiAgaGVpZ2h0OiAxMDRweDtcbn1cblxuLmV4YW1wbGUtZWxlbWVudC1zeW1ib2wge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiA0MHB4O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4uZXhhbXBsZS1lbGVtZW50LWRlc2NyaXB0aW9uIHtcbiAgcGFkZGluZzogMTZweDtcbn1cblxuLmV4YW1wbGUtZWxlbWVudC1kZXNjcmlwdGlvbi1hdHRyaWJ1dGlvbiB7XG4gIG9wYWNpdHk6IDAuNTtcbn1cbi50ZXN0IHtcbiAgIGRpc3BsYXk6IGJsb2NrO1xufVxuIl19 */\"","import { Component, EventEmitter, Input, Output, OnInit, ViewChild } from '@angular/core';\nimport {animate, state, style, transition, trigger} from '@angular/animations';\nimport {MatPaginator} from '@angular/material/paginator';\nimport {Sort} from '@angular/material/sort';\nimport { NumericResultRow} from '../datatypes/quant';\nimport { PaginatorResultStatus } from '../common/paginator-result-status';\nimport { QuantQuery, PageIndexUpdater } from '../models';\nimport { MySort } from './sort';\n\n@Component({\n selector: 'tln-table',\n templateUrl: './tln-table.component.html',\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({height: '0px', minHeight: '0'})),\n state('expanded', style({height: '*'})),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n styleUrls: ['./tln-table.component.css']\n})\nexport class TlnTableComponent implements OnInit, PageIndexUpdater {\n @Input() results: NumericResultRow[];\n @Input() resultIndicesIndex: number = 0;\n @Input() quantQuery: QuantQuery;\n @Output() quantQueryChanged = new EventEmitter();\n @Output() change = new EventEmitter();\n expandedElement: NumericResultRow | null;\n resultQuery: QuantQuery;\n paginatorResultStatus: PaginatorResultStatus = new PaginatorResultStatus(10, this);\n sort: MySort = new MySort();\n unfilteredResults: NumericResultRow[] = [];\n @Input() displayedColumns: string[];\n @ViewChild(MatPaginator,{static:false}) paginator: MatPaginator;\n\n constructor() { }\n\n ngOnInit() {\n this.resultQuery = this.quantQuery;\n this.paginatorResultStatus.updateResultRange(this.resultQuery.resultIndices[this.resultIndicesIndex]);\n }\n private addFilter(event: Event) {\n const filterValue = (event.target as HTMLInputElement).value;\n this.quantQuery.filterValue = filterValue;\n this.quantQuery.resultIndices[this.resultIndicesIndex] = 0;\n this.paginatorResultStatus.updateResultRange(0);\n this.quantQueryChanged.emit(this.quantQuery);\n }\n private sortData(sort: Sort){\n this.paginator.pageIndex = 0;\n this.paginatorResultStatus.updateResultRange(0);\n this.quantQuery.sortArray[this.resultIndicesIndex] = sort;\n this.quantQuery.resultIndices[this.resultIndicesIndex] = 0;\n this.quantQueryChanged.emit(this.quantQuery);\n }\n}\n","export default \".word {\\n margin-left: 10px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi1xdWFudC93b3JkLXByZXNlbnRhdGlvbi5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csaUJBQWlCO0FBQ3BCIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi1xdWFudC93b3JkLXByZXNlbnRhdGlvbi5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLndvcmQge1xuICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG4iXX0= */\"","import { Component, OnInit, OnChanges, SimpleChanges,Input } from '@angular/core';\nimport { DataHandler } from '../data_handler';\nimport { QuantitativeDataHandler } from '../quant_data_handler';\nimport { TlnQueryServiceInterface} from '../models';\nimport { TlnCacheQueryService } from '../services';\nimport { ManuscriptPageWords } from '../datatypes/word_presentation';\n\n@Component({\n selector: 'word-presentation',\n templateUrl: './word-presentation.component.html',\n styleUrls: ['./word-presentation.component.css']\n})\nexport class WordPresentationComponent implements OnInit, OnChanges {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n @Input() wordIds: string[];\n @Input() expanded: boolean = false;\n isLoadingResults: boolean = false;\n dataHandler: QuantitativeDataHandler = new QuantitativeDataHandler(this);\n private readonly displayedColumns: string[] = [ 'text', 'editedText', 'cleanText', 'cleanEditedText', 'link'];\n manuscriptPageWords: ManuscriptPageWords[] = [];\n tlnQueryService: TlnQueryServiceInterface;\n\n constructor(private localQueryService: TlnCacheQueryService) {}\n\n ngOnInit() {\n this.tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('manuscriptPageWords', { 'handler': ManuscriptPageWords});\n this.dataHandler.setQueryService(this.tlnQueryService);\n this.dataHandler.start_processing.subscribe(\n (started: boolean) =>{ \n this.isLoadingResults = true;\n });\n this.dataHandler.processing_finished.subscribe(\n (started: boolean) =>{ \n this.isLoadingResults = false;\n });\n }\n ngOnChanges(changes: SimpleChanges){\n if (this.expanded && this.manuscriptPageWords.length == 0 && this.wordIds.length > 0){\n const query = ManuscriptPageWords.getParameterizedQuery(this.wordIds)\n this.dataHandler.getData4Query('manuscriptPageWords', query);\n }\n }\n}\n","import { Injectable, EventEmitter, OnInit } from '@angular/core';\nimport {HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { EMPTY, Observable, throwError } from 'rxjs';\nimport { catchError, shareReplay } from 'rxjs/operators';\nimport { TlnQueryServiceInterface } from './models';\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition, } from '@angular/material/snack-bar';\nimport {MatDialog, MatDialogConfig} from '@angular/material/dialog';\n/**\n * This is the internal query service \n * that communicates with the SPARQL-endpoint.\n * */\n@Injectable({ providedIn: 'root'})\nexport class TlnQueryService implements TlnQueryServiceInterface {\n //baseUrl = 'http://localhost:3030/nietzsche/query';\n baseUrl = 'https://nietzsche.fuseki.services.dasch.swiss/nietzsche'\n reset_data = new EventEmitter();\n error_emitter = new EventEmitter();\n use_cache: boolean = false;\n cache = {};\n\n constructor(private http: HttpClient, private _snackBar: MatSnackBar) { }\n\n public resetData(key: string){\n this.reset_data.emit(key);\n }\n /**\n * Gets the data from an endpoint via http post\n *\n * @param query: The query to run.\n * @returns response\n */\n public getData(query: string): Observable {\n let httpOptions = { \n headers: new HttpHeaders(\n { 'Content-Type': 'application/sparql-query',\n 'Accept': 'application/sparql-results+json; charset=UTF-8'}\n )\n };\n if (this.use_cache && this.cache[query]){\n console.log('Returning cached value!')\n return this.cache[query];\n } \n if (!this.use_cache){\n return this.http.post(this.baseUrl, query, httpOptions).pipe(catchError(this.handleError)); \n }\n this.cache[query] = this.http.post(this.baseUrl, query, httpOptions).pipe(\n shareReplay(1),\n catchError(error =>{\n delete this.cache[query];\n this.handleError(error);\n return EMPTY\n })\n ); \n return this.cache[query]\n }\n private handleError(error: HttpErrorResponse) {\n this.error_emitter.emit(error);\n switch (error.status){\n case 0:\n // A client-side or network error occurred. Handle it accordingly.\n console.error('The backend data server is offline:', error.error);\n this._snackBar.open('The backend data server ' + this.baseUrl + ' is offline!');\n break;\n default:\n console.error( `Backend returned code ${error.status}, ` + `body was: ${error.error}`);\n }\n return throwError( 'Something bad happened; please try again later.');\n }\n\n}\n\n@Injectable({ providedIn: 'root'})\nexport class TlnCacheQueryService extends TlnQueryService {\n use_cache: boolean = true;\n}\n\n","export default \"#navi {\\n width: 100%;\\n height: 50px;\\n margin: 0;\\n padding: 0;\\n white-space: nowrap;\\n}\\n.search {\\n margin-left: 8px;\\n }\\n.zoom {\\n max-width: 20px;\\n}\\n.zoom-in {\\n cursor: zoom-in;\\n}\\n.zoom-out {\\n cursor: zoom-out;\\n}\\n.mat-button.min-width {\\n min-width: 120px;\\n max-width: 120px;\\n}\\n.default-mouse {\\n cursor: default;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rsbi12aWV3ZXItbmF2aWdhdGlvbi90bG4tdmlld2VyLW5hdmlnYXRpb24uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLFdBQVc7R0FDWCxZQUFZO0dBQ1osU0FBUztHQUNULFVBQVU7R0FDVixtQkFBbUI7QUFDdEI7QUFDQTtHQUNHLGdCQUFnQjtDQUNsQjtBQUNEO0dBQ0csZUFBZTtBQUNsQjtBQUNBO0dBQ0csZUFBZTtBQUNsQjtBQUNBO0dBQ0csZ0JBQWdCO0FBQ25CO0FBQ0E7R0FDRyxnQkFBZ0I7R0FDaEIsZ0JBQWdCO0FBQ25CO0FBQ0E7R0FDRyxlQUFlO0FBQ2xCIiwiZmlsZSI6InRsbi1lZGl0aW9uL3Rsbi12aWV3ZXItbmF2aWdhdGlvbi90bG4tdmlld2VyLW5hdmlnYXRpb24uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiNuYXZpIHtcbiAgIHdpZHRoOiAxMDAlO1xuICAgaGVpZ2h0OiA1MHB4O1xuICAgbWFyZ2luOiAwO1xuICAgcGFkZGluZzogMDtcbiAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uc2VhcmNoIHtcbiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gfVxuLnpvb20ge1xuICAgbWF4LXdpZHRoOiAyMHB4O1xufVxuLnpvb20taW4ge1xuICAgY3Vyc29yOiB6b29tLWluO1xufVxuLnpvb20tb3V0IHtcbiAgIGN1cnNvcjogem9vbS1vdXQ7XG59XG4ubWF0LWJ1dHRvbi5taW4td2lkdGgge1xuICAgbWluLXdpZHRoOiAxMjBweDtcbiAgIG1heC13aWR0aDogMTIwcHg7XG59XG4uZGVmYXVsdC1tb3VzZSB7XG4gICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4iXX0= */\"","import { Component, OnInit, OnDestroy, HostListener, Input, ElementRef } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport {MatBottomSheet, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { EditorComment, TlnQueryServiceInterface, Reference, ManuscriptUnity, NavigationPage } from '../models';\nimport { TlnManuscriptUnity, TlnNavigationPage} from '../datatypes/navigation';\nimport { DEFAULT_VIEW_OPTION, TLN_VIEWER_ROUTE, TLN_FULLSCREEN_PARAM, TLN_FIND_PARAM, TLN_NAV_BAR_OPEN_STATE_PARAM, TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM,\n TLN_ROTATION_PARAM, TLN_SELECTED_LINES_PARAM, TLN_SELECTED_WORDS_PARAM, TLN_VIEW_OPTION_PARAM, TLN_ZOOM_PARAM, VIEW_OPTIONS, ONTOLOTY_PREFIX } from '../constants';\nimport { IsReconstructedKonvolut } from '../datatypes/basic_datatype';\nimport { TlnLine} from '../datatypes/line';\nimport { TlnWord} from '../datatypes/word';\nimport { TlnTextGeneticOrder} from '../datatypes/text_version';\nimport { TlnEditorComment, TlnPageEditorCommentStub, TlnOverwrittenWordEditorComment, TlnLineEditorComment } from '../datatypes/editor_comment';\nimport { TlnImprint } from '../datatypes/imprint';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { ComplexKeyIriMapping, DataHandler, KeyIriMapping } from '../data_handler';\nimport { PageViewService, TlnCacheQueryService } from '../services';\nimport { TlnInformationComponent, ParentInformation } from '../tln-information/tln-information.component';\nimport { PageInformation } from '../tln-information/page-information';\n\n@Component({\n selector: 'tln-viewer-navigation',\n templateUrl: './tln-viewer-navigation.component.html',\n providers: [ TlnCacheQueryService ],\n styleUrls: ['./tln-viewer-navigation.component.css']\n})\nexport class TlnViewerNavigation extends RouteUpdater implements OnDestroy {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: TlnQueryServiceInterface;\n /**\n * whether or not to show page view in fullscreen mode.\n **/\n fullscreen: boolean = false;\n findText: string;\n current_iri: string;\n current_manuscript_iri: string;\n manuscript_unity: ManuscriptUnity;\n current_page: NavigationPage;\n pageInformation: PageInformation;\n previous_page: NavigationPage;\n /**\n * page editor comments \n **/\n page_editor_comments: TlnPageEditorCommentStub[] = [];\n /**\n * editor comments \n **/\n editor_comments: TlnEditorComment[] = [];\n /**\n * overwritten editor comments \n **/\n overwritten_comments: TlnEditorComment[] = [];\n /**\n * line editor comments \n **/\n line_comments: TlnLineEditorComment[] = [];\n /**\n * page imprints \n **/\n imprints: TlnImprint[] = [];\n /**\n * Rotation value, i.e. one of [ 0, 90, 180, 270 ].\n **/\n rotation: number = 0;\n next_page: NavigationPage;\n navBarOpenState: boolean;\n showArchivalManuscriptUnity: boolean = false;\n dataHandler: DataHandler = new DataHandler(this);\n geneticOrders: TlnTextGeneticOrder[] = [];\n selectedLines: string[] = [];\n selectedWords: string[] = [];\n private readonly increment: number = 0.333;\n private readonly decrement: number = this.increment*-1;\n //protected currentRoute: string = TLN_VIEWER_ROUTE;\n protected mapping: Mapping = { findText: { param: TLN_FIND_PARAM, type: \"string\" },\n current_iri: { param: TLN_PAGE_PARAM, type: \"string\" },\n navBarOpenState: { param: TLN_NAV_BAR_OPEN_STATE_PARAM, type: \"boolean\" },\n current_manuscript_iri: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n rotation: { param: TLN_ROTATION_PARAM, type: \"number\" },\n selectedViewOption: { param: TLN_VIEW_OPTION_PARAM, type: \"string\" },\n selectedWords: { param: TLN_SELECTED_WORDS_PARAM, type: \"string\" },\n selectedLines: { param: TLN_SELECTED_LINES_PARAM, type: \"string\" } }\n routerParams: Params;\n selectedViewOption: string = DEFAULT_VIEW_OPTION\n updating: boolean = false;\n viewOptions: string[] = [ VIEW_OPTIONS.TRANSKRIPTION, VIEW_OPTIONS.FAKSIMILE, VIEW_OPTIONS.SYNOPSIS, VIEW_OPTIONS.SYNOPSIS_B ];\n subscriptions: any[] = [];\n\n constructor(el: ElementRef, private bottomSheet: MatBottomSheet, private pageViewService: PageViewService, private localQueryService: TlnCacheQueryService, protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\n }\n ngOnInit() {\n let tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\n this.dataHandler.addHandler('manuscript_unity', { 'handler': TlnManuscriptUnity, 'next_key': 'navigation_page'});\n this.dataHandler.addHandler('navigation_page', ['current_page', 'geneticOrders', 'page_editor_comments','editor_comments', 'overwritten_comments', 'line_comments', 'imprints'] );\n this.dataHandler.addHandler('current_page', { 'handler': TlnNavigationPage });\n this.dataHandler.addHandler('geneticOrders', { 'handler': TlnTextGeneticOrder});\n this.dataHandler.addHandler('page_editor_comments', { 'handler': TlnPageEditorCommentStub});\n this.dataHandler.addHandler('editor_comments', { 'handler': TlnEditorComment});\n this.dataHandler.addHandler('overwritten_comments', { 'handler': TlnOverwrittenWordEditorComment});\n this.dataHandler.addHandler('line_comments', { 'handler': TlnLineEditorComment});\n this.dataHandler.addHandler('imprints', { 'handler': TlnImprint});\n this.dataHandler.setQueryService(tlnQueryService);\n this.subscriptions.push(this.dataHandler.start_processing.subscribe(\n (started: boolean) =>{ this.updating = true;\n }));\n this.subscriptions.push(this.dataHandler.processing_finished.subscribe(\n (finished: boolean) =>{ this.updating = false;\n }));\n super.ngOnInit();\n this.subscriptions.push(this.pageViewService.reference.subscribe(\n (newReference: Reference) => {\n this.updatePageToReference(newReference)\n })); \n this.subscriptions.push(this.pageViewService.onClickedLine.subscribe(\n (clickedLine: TlnLine) => { \n let index = this.selectedLines.indexOf(clickedLine.id)\n if (index > -1){\n this.selectedLines.splice(index, 1);\n } else {\n this.selectedLines.push(clickedLine.id);\n }\n this.updateParams();\n }));\n this.subscriptions.push(this.pageViewService.onClickedWord.subscribe(\n (clickedWord: TlnWord) => { \n this.clickWord(clickedWord)\n }));\n }\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n private clearFindText() {\n this.findText = '';\n this.updateParams();\n }\n private clickWord(clickedWord: TlnWord){\n let wordIndex = this.selectedWords.indexOf(clickedWord.id)\n let lineIndex = this.selectedLines.indexOf(clickedWord.line)\n if (wordIndex > -1){\n this.selectedWords.splice(wordIndex, 1);\n } else if (lineIndex > -1){\n this.selectedLines.splice(lineIndex, 1);\n } else {\n this.selectedWords.push(clickedWord.id);\n }\n this.updateParams();\n }\n\n private getPageTitle(page?: NavigationPage, numPages?: number): string {\n if (page == null){\n return '';\n }\n let indexPrefix = (numPages != null) ? page.index + '/' + numPages : page.index;\n return indexPrefix + ': ' + page.title + ' ' + page.number;\n }\n protected readParams(params: Params){\n super.readParams(params);\n if (this.dataHandler.ready && (this.current_page == null && this.current_iri != undefined || this.current_page != null && this.current_page.id != this.current_iri)){\n this.dataHandler.resetData('navigation_page')\n if(this.current_manuscript_iri != null){\n this.dataHandler.getData('manuscript_unity', this.current_manuscript_iri, this.current_iri);\n } else {\n this.dataHandler.getData('current_page', this.current_iri);\n }\n } \n }\n \n private rotate(addRotation: number){\n this.rotation = (this.rotation+addRotation < 0) ? 360 + this.rotation+addRotation : (this.rotation+addRotation) % 360;\n this.updateParams();\n }\n private setCurrentIri(pageIri: string, manuscriptIir?: string){\n this.dataHandler.stop_processing.emit(true);\n this.current_iri = pageIri;\n this.updateParams();\n }\n private showInformation() {\n let editor_comments = this.line_comments.concat(this.editor_comments)\n editor_comments = editor_comments.concat(this.overwritten_comments)\n let parentData: ParentInformation = {\n editor_comments: editor_comments.sort((a, b)=>{\n return (a.tLine.number <= b.tLine.number) ? -1 : 1;\n }),\n page_editor_comments: this.page_editor_comments,\n imprints: this.imprints,\n geneticOrders: this.geneticOrders,\n page: this.current_page,\n manuscript_iri: this.current_manuscript_iri,\n parentActivatedRoute: this.activatedRoute.parent\n }\n this.bottomSheet.open(TlnInformationComponent, {\n data: parentData,\n backdropClass: (parentData.editor_comments.length > 0) ? 'backdropNonFadingClass' : ''\n });\n }\n private updatePageToReference(reference: Reference){\n this.current_iri = reference.page.id;\n this.selectedLines = [ reference.line.id ]\n this.updateParams();\n }\n}\n","export default \".editor-comment {\\n /*margin-right: 8px;*/\\n}\\n.word-button {\\n text-align: left;\\n margin-right: 5px !important;\\n /*margin-left: 0px;\\n margin-right: 8px;*/\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rvb2x0aXAvZWRpdG9yLWNvbW1lbnQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLHFCQUFxQjtBQUN4QjtBQUNBO0dBQ0csZ0JBQWdCO0dBQ2hCLDRCQUE0QjtHQUM1QjtzQkFDbUI7QUFDdEIiLCJmaWxlIjoidGxuLWVkaXRpb24vdG9vbHRpcC9lZGl0b3ItY29tbWVudC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmVkaXRvci1jb21tZW50IHtcbiAgIC8qbWFyZ2luLXJpZ2h0OiA4cHg7Ki9cbn1cbi53b3JkLWJ1dHRvbiB7XG4gICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgbWFyZ2luLXJpZ2h0OiA1cHggIWltcG9ydGFudDtcbiAgIC8qbWFyZ2luLWxlZnQ6IDBweDtcbiAgIG1hcmdpbi1yaWdodDogOHB4OyovXG59XG4iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { MarkupSettings, StandoffMarkup } from 'ngx-mat-standoff-markup';\nimport { EditorComment } from '../models';\nimport { WordWithLine } from '../datatypes/word';\nimport { DataHandler } from '../data_handler';\nimport { TlnCacheQueryService } from '../services';\nimport { TlnEditorCommentMarkup } from '../datatypes/positional-markup';\n\n@Component({\n selector: 'editor-comment',\n templateUrl: './editor-comment.component.html',\n styleUrls: ['./editor-comment.component.css']\n})\nexport class EditorCommentComponent implements OnInit {\n @Input() editor_comment: EditorComment;\n editorType: string;\n dataHandler: DataHandler = new DataHandler(this);\n markups: StandoffMarkup[] = [];\n word: WordWithLine;\n mySettings: MarkupSettings = new MarkupSettings();\n\n constructor(private tlnQueryService: TlnCacheQueryService) { }\n\n ngOnInit() {\n if (this.editor_comment != undefined && this.editor_comment != null && this.editor_comment.editorClass != null && this.editor_comment.editorClass.split('#').length > 1){\n this.dataHandler.setQueryService(this.tlnQueryService);\n if (this.editor_comment.editorClass.split('#')[1] != 'EditorComment'){ \n this.editorType = this.editor_comment.editorClass.split('#')[1];\n }\n /*if (this.editor_comment.word != undefined && this.editor_comment.word != null){\n this.dataHandler.addHandler('word', { 'handler': WordWithLine});\n this.dataHandler.getData('word', this.editor_comment.word);\n }*/\n if (this.editor_comment.textWithMarkup != undefined && this.editor_comment.textWithMarkup != null){\n this.dataHandler.addHandler('markups', { 'handler': TlnEditorCommentMarkup });\n this.tlnQueryService.reset_data.subscribe(\n (data_key: string) =>{\n if (data_key == 'page_content'){\n this.markups = [];\n }\n });\n this.dataHandler.getData('markups', this.editor_comment.textWithMarkup);\n }\n } \n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TlnEditorCommentStub } from '../datatypes/editor_comment';\n\n@Pipe({\n name: 'mergeEditorComment'\n})\nexport class MergeEditorCommentPipe implements PipeTransform {\n\n transform(editor_comments: TlnEditorCommentStub[]): TlnEditorCommentStub[] {\n if (editor_comments.length < 2){\n return editor_comments\n }\n let newComments = [];\n editor_comments.forEach(comment =>{\n if(newComments.length == 0 || newComments[newComments.length-1].id != comment.id){\n newComments.push(comment);\n }\n })\n return newComments;\n }\n\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90b29sdGlwL292ZXJ3cml0dGVuLmNvbXBvbmVudC5jc3MifQ== */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { MarkupSettings, StandoffMarkup } from 'ngx-mat-standoff-markup';\nimport { TlnEditorCommentStub } from '../datatypes/editor_comment';\nimport { DataHandler } from '../data_handler';\nimport { TlnCacheQueryService } from '../services';\nimport { TlnOverwrittenMarkup } from '../datatypes/positional-markup';\nimport { Word } from '../models';\n\n@Component({\n selector: 'overwritten',\n templateUrl: './overwritten.component.html',\n styleUrls: ['./overwritten.component.css']\n})\nexport class OverwrittenComponent implements OnInit {\n @Input() word: Word;\n mySettings: MarkupSettings = new MarkupSettings();\n dataHandler: DataHandler = new DataHandler(this);\n markups: StandoffMarkup[] = [];\n\n constructor(private tlnQueryService: TlnCacheQueryService) { }\n\n ngOnInit() {\n if (this.word != undefined && this.word != null){\n this.dataHandler.addHandler('markups', { 'handler': TlnOverwrittenMarkup }); \n this.dataHandler.setQueryService(this.tlnQueryService);\n this.tlnQueryService.reset_data.subscribe(\n (data_key: string) =>{\n if (data_key == 'page_content'){\n this.markups = [];\n }\n });\n this.dataHandler.getData('markups', this.word.id);\n }\n }\n\n}\n","export default \".tooltip {\\n position: absolute;\\n /*color: white;\\n background-color: black;*/\\n border-radius: 10px;\\n padding: 8px;\\n font-size: 0.8em;\\n opacity: 0.65;\\n z-index: 1000;\\n}\\ndiv .text, .edited_text, .overwritten {\\n display: block;\\n}\\nspan {\\n display: inline;\\n}\\n.deleted {\\n text-decoration: line-through;\\n /* text-decoration-color: red;*/\\n}\\n.blackfg {\\n color: black;\\n}\\n.word { \\n opacity: 0.7; \\n background-color: black;\\n color: white;\\n}\\n.foreignHand { \\n opacity: 0.5; \\n background-color: blue; \\n color: white;\\n}\\n.continuation { \\n opacity: 1.0; \\n background-color: black; \\n color: white;\\n}\\n.copyright { \\n opacity: 1.0; \\n background-color: white; \\n color: black;\\n}\\n\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRsbi1lZGl0aW9uL3Rvb2x0aXAvdG9vbC10aXAuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtDQUNDLGtCQUFrQjtDQUNsQjswQkFDeUI7Q0FDekIsb0JBQW9CO0NBQ3BCLFlBQVk7Q0FDWixnQkFBZ0I7Q0FDaEIsYUFBYTtDQUNiLGFBQWE7QUFDZDtBQUNBO0dBQ0csY0FBYztBQUNqQjtBQUNBO0dBQ0csZUFBZTtBQUNsQjtBQUNBO0dBQ0csNkJBQTZCO0VBQzlCLCtCQUErQjtBQUNqQztBQUNBO0dBQ0csWUFBWTtBQUNmO0FBQ0E7R0FDRyxZQUFZO0dBQ1osdUJBQXVCO0dBQ3ZCLFlBQVk7QUFDZjtBQUNBO0dBQ0csWUFBWTtHQUNaLHNCQUFzQjtHQUN0QixZQUFZO0FBQ2Y7QUFDQTtHQUNHLFlBQVk7R0FDWix1QkFBdUI7R0FDdkIsWUFBWTtBQUNmO0FBQ0E7R0FDRyxZQUFZO0dBQ1osdUJBQXVCO0dBQ3ZCLFlBQVk7QUFDZiIsImZpbGUiOiJ0bG4tZWRpdGlvbi90b29sdGlwL3Rvb2wtdGlwLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudG9vbHRpcCB7XG4gcG9zaXRpb246IGFic29sdXRlO1xuIC8qY29sb3I6IHdoaXRlO1xuIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyovXG4gYm9yZGVyLXJhZGl1czogIDEwcHg7XG4gcGFkZGluZzogOHB4O1xuIGZvbnQtc2l6ZTogMC44ZW07XG4gb3BhY2l0eTogMC42NTtcbiB6LWluZGV4OiAxMDAwO1xufVxuZGl2IC50ZXh0LCAuZWRpdGVkX3RleHQsIC5vdmVyd3JpdHRlbiB7XG4gICBkaXNwbGF5OiBibG9jaztcbn1cbnNwYW4ge1xuICAgZGlzcGxheTogaW5saW5lO1xufVxuLmRlbGV0ZWQge1xuICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gIC8qIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogcmVkOyovXG59XG4uYmxhY2tmZyB7XG4gICBjb2xvcjogYmxhY2s7XG59XG4ud29yZCB7IFxuICAgb3BhY2l0eTogMC43OyBcbiAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICAgY29sb3I6IHdoaXRlO1xufVxuLmZvcmVpZ25IYW5kIHsgXG4gICBvcGFjaXR5OiAwLjU7IFxuICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsgXG4gICBjb2xvcjogd2hpdGU7XG59XG4uY29udGludWF0aW9uIHsgXG4gICBvcGFjaXR5OiAxLjA7IFxuICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IFxuICAgY29sb3I6IHdoaXRlO1xufVxuLmNvcHlyaWdodCB7IFxuICAgb3BhY2l0eTogMS4wOyBcbiAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBcbiAgIGNvbG9yOiBibGFjaztcbn1cblxuIl19 */\"","import { Component, Input, OnInit, OnChanges, ElementRef, ViewChild} from '@angular/core';\nimport { MarkupSettings, StandoffMarkup } from 'ngx-mat-standoff-markup';\nimport { ConfigurableComponent, PageViewService, TlnCacheQueryService } from '../services';\nimport { Configuration, Continuation, Copyright, DataProcessor, Point, Position, PositionalObject, Reference, TextByForeignHand, TlnQueryServiceInterface, Word } from '../models';\nimport { TlnEarlierVersionStub, TlnOverwrittenStub } from '../datatypes/earlier_version';\nimport { TlnLineReference } from '../datatypes/line_reference';\nimport { TlnPreviewWord } from '../datatypes/preview_data';\nimport { TlnPositionalStyleMarkup, TlnFilteredPositionalStyleMarkup } from '../datatypes/positional-markup';\nimport { TlnEditorCommentStub } from '../datatypes/editor_comment';\nimport { DataHandler } from '../data_handler';\n\n/**\n * This component can be used to show extended tooltips, i.e. with deleted words and distinguished\n * words if they are by foreign hand.\n **/\n@Component({\n selector: 'tool-tip',\n templateUrl: './tool-tip.component.html',\n providers: [ TlnCacheQueryService ],\n styleUrls: ['./tool-tip.component.css']\n})\nexport class ToolTipComponent extends ConfigurableComponent implements OnInit, OnChanges, DataProcessor {\n @Input('fullscreen') fullscreen: boolean = false;\n @Input() hasMenuIssues: boolean = false;\n @Input() menuOffsetPosition: Position;\n @Input() container: HTMLElement;\n //fullscreen: boolean = false;\n /**\n * content keys\n **/\n private readonly contentKeys: string[] = [ 'word', 'foreignHand', 'copyright', 'continuation' ]\n /**\n * copyright information to be shown in the tooltip.\n **/\n copyright: Copyright;\n /**\n * current key of contentKeys\n **/\n currentKey: string;\n debug: boolean = false;\n position: number = 0;\n /**\n * the data handler of this component that retrieves\n * data and instantiates it according to their proper \n * datatypes.\n **/\n dataHandler: DataHandler = new DataHandler(this);\n /**\n * text by foreign hand to be shown in tooltip\n **/\n foreignHand: TextByForeignHand;\n /**\n * earlier version of word\n **/\n earlier_version: TlnEarlierVersionStub;\n earlier_version_list: TlnEarlierVersionStub[] = [];\n /**\n * overwritten word\n **/\n overwrittenWord: TlnOverwrittenStub;\n /**\n * editor comments \n **/\n editor_comments: TlnEditorCommentStub[] = [];\n /**\n * a line continuation\n **/\n continuation: Continuation;\n /**\n * a list of positional style markups.\n **/\n positionalStyleMarkups: StandoffMarkup[] = [];\n continuation_words: TlnPreviewWord[] = [];\n mySettings: MarkupSettings = new MarkupSettings();\n width: number = 300;\n /**\n * line reference from\n **/\n sourceLineReference: TlnLineReference;\n /**\n * actual tooltip position\n **/\n tooltipPosition: Point = { visible: false, clientX: -1, clientY: -1, layerX: -1, layerY: -1 };\n /**\n * whether or not to show extended tooltips\n **/\n useExtendedTooltip: boolean = true;\n /**\n * word to be shown in tooltip\n **/\n word: Word;\n /**\n * y offset for tooltip position relative to mouse position\n **/\n private readonly yOffset: number = 25;\n private readonly menuIssueOffset: number = 80;\n private readonly menuIssueXOffset: number = 55;\n topOffset: number = 0; \n leftOffset: number = 0; \n constructor(protected pageViewService: PageViewService, private tlnQueryService: TlnCacheQueryService) { \n super()\n }\n ngOnChanges(){\n super.ngOnChanges();\n /*if((this.fullscreen && this.fullscreenString != 'true') || (!this.fullscreen && this.fullscreenString == 'true')){\n this.fullscreen = (this.fullscreenString == 'true')\n }*/\n if (this.tlnQueryService != null && !this.dataHandler.ready){\n this.dataHandler.addHandler('earlier_version', { 'handler': TlnEarlierVersionStub, 'process_data': this });\n this.dataHandler.addHandler('overwrittenWord', { 'handler': TlnOverwrittenStub});\n this.dataHandler.addHandler('positionalStyleMarkups', { 'handler': TlnFilteredPositionalStyleMarkup });\n this.dataHandler.addHandler('editor_comments', { 'handler': TlnEditorCommentStub});\n this.dataHandler.addHandler('sourceLineReference', { 'handler': TlnLineReference});\n this.dataHandler.addHandler('continuation_words', { 'handler': TlnPreviewWord});\n this.dataHandler.addHandler('wordStubs', ['earlier_version', 'overwrittenWord', 'positionalStyleMarkups', 'editor_comments' ]);\n this.dataHandler.setQueryService(this.tlnQueryService);\n this.tlnQueryService.reset_data.subscribe(\n (data_key: string) =>{\n if (data_key == 'page_content'){\n this.resetData()\n }\n });\n }\n }\n /**\n * listen on pageViewService\n **/\n ngOnInit() {\n this.pageViewService.mousePosition.subscribe(\n (newPoint: Point) =>{ this.tooltipPosition = newPoint;\n //console.log(this.tooltipPosition);\n });\n this.pageViewService.onHoveredWord.subscribe(\n (newWord: Word) => { this.dataHandler.stop_processing.emit(true);this.setContent('word', newWord);this.updateEarlierVersion() }\n );\n this.pageViewService.offHoveredWord.subscribe(\n (newWord: Word) => { this.word = null; this.resetData() }\n );\n this.pageViewService.onHoveredTextByForeignHand.subscribe(\n (newTextByForeignHand: TextByForeignHand) => { this.setContent('foreignHand',newTextByForeignHand) }\n );\n this.pageViewService.offHoveredTextByForeignHand.subscribe(\n (newTextByForeignHand: TextByForeignHand) => this.foreignHand = null \n );\n this.pageViewService.copyright.subscribe(\n (copyright: Copyright) =>{ \n this.setContent('copyright', (this.copyright == null) ? copyright : null)\n });\n this.pageViewService.onHoveredContinuation.subscribe(\n (newContinuation: Continuation) => { \n if(this.continuation == null){\n this.updateLineContinuation(newContinuation) \n }\n });\n this.pageViewService.offHoveredContinuation.subscribe(\n (newContinuation: Continuation) => { this.dataHandler.stop_processing.emit(true);this.continuation = null;this.updateLineContinuation(); }\n );\n }\n processData() {\n if (this.earlier_version != undefined && this.earlier_version != null){\n this.earlier_version_list.splice(0, 0, this.earlier_version)\n this.dataHandler.resetData('earlier_version');\n this.dataHandler.getData('earlier_version', this.earlier_version_list[0].id);\n }\n }\n /**\n * reset data\n **/\n private resetData(){\n this.earlier_version_list = [];\n this.dataHandler.resetData('positionalStyleMarkups')\n this.dataHandler.resetData('wordStubs')\n this.contentKeys.forEach(key=>this[key] = null);\n }\n /**\n * update earlier version of word\n **/\n private updateEarlierVersion(){\n if (this.word != null && this.dataHandler.ready) {\n this.earlier_version_list = [];\n this.dataHandler.resetData('positionalStyleMarkups')\n this.dataHandler.resetData('wordStubs')\n this.dataHandler.getData('wordStubs', this.word.id);\n }\n }\n private updateLineContinuation(continuation?: Continuation){\n this.setContent('continuation', continuation);\n if(continuation != null && this.dataHandler.ready){\n this.dataHandler.resetData('continuation_words')\n if (continuation.source.page != null){\n this.dataHandler.getData('continuation_words', this.continuation.reference.line.id)\n }\n }\n }\n private getTop(key: string): number {\n if (this.menuOffsetPosition != undefined && this.menuOffsetPosition != null && this.container != null && this.container != undefined){\n let containerRect: DOMRect = this.container.getBoundingClientRect();\n this.topOffset = containerRect.top;\n if (!this.fullscreen){\n this.topOffset = this.topOffset - this.menuOffsetPosition.y;\n }\n }\n return this.tooltipPosition.clientY - this.topOffset + this.yOffset;\n }\n private getLeft(width: number): number {\n let containerRect: DOMRect = (this.container != null && this.container != undefined) \n ? this.container.getBoundingClientRect() : null;\n this.leftOffset = (this.menuOffsetPosition != undefined && this.menuOffsetPosition != null && containerRect != null) ? containerRect.left : 0;\n let left = this.tooltipPosition.clientX - this.leftOffset;\n if (this.menuOffsetPosition != undefined && this.menuOffsetPosition != null){\n left += this.menuOffsetPosition.x;\n }\n if (!this.tooltipPosition.visible \n || this.continuation == null\n || this.continuation.show == null\n || this.continuation.show != 'to'){\n return left;\n }\n return (left + width <= containerRect.right) ? left : left-(left+width-containerRect.right)-5;\n }\n /**\n * Set tooltip's content and remove prior content.\n * @param key key of content\n * @param content new content\n **/\n private setContent(key: string, content: Continuation|Copyright|PositionalObject){\n this.contentKeys.forEach(key=>this[key] = null);\n this[key] = content;\n this.currentKey = key;\n }\n /**\n * whether tooltip has any content (i.e. any content of {@link /components/ToolTipComponent.html#contentKeys|contentKeys})\n **/\n private hasAnyContent(): boolean {\n return this.contentKeys.filter(key =>this[key] != null).length > 0 \n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import 'codemirror/mode/javascript/javascript';\nimport 'codemirror/mode/sparql/sparql';\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","/* (ignored) */","/* (ignored) */"],"sourceRoot":"webpack:///"}