{"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/lib/ngx-mat-standoff-markup.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/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/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/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-viewer-navigation/tln-viewer-navigation.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/lib/ngx-mat-standoff-markup.component.ts","./src/app/lib/ngx-mat-standoff-markup.module.ts","./src/app/lib/ngx-mat-standoff-markup.service.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/navtree-directive.directive.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/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/matrix.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/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/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/faksimile_image.ts","./src/app/tln-edition/datatypes/foreign_text.ts","./src/app/tln-edition/datatypes/image.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/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/debug.pipe.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/page-result-filter.pipe.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/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-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/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
\\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 Google Chromium in den aktuellen Versionen
  • \\n
  • erst die Daten zu Mp XIV eingehend erfasst und überprüft wurden. \\n \\n
  • \\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 {{segment.sText}}\\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 \\n \\n \\n \\n {{item.tlnEntity.label}}\\n \\n GSA-Signatur {{item.tlnEntity.description}}\\n {{navTrees[navTabIndex].parentLabel}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n\"","export default \"
\\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 \\n \\n
\\n\\n\"","export default \"\\n \\n \\n \\n\\n\"","export default \"\\n\"","export default \"
\\n \\n
\\n

Querverweise von {{current_manuscript.title}}

\\n
\\n

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

\\n \\n
\\n
\\n
\\n

Querverweise von {{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 {{ pages | resultPipe }}\\n
\\n resultLength\\\" \\n [length]=\\\"pages.length\\\"\\n [pageSize]=\\\"resultLength\\\"\\n [pageIndex]=\\\"resultIndex\\\"\\n (page)=\\\"showResults($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 resultLength\\\" \\n [length]=\\\"pages.length\\\"\\n [pageSize]=\\\"resultLength\\\"\\n [pageIndex]=\\\"resultIndex\\\"\\n (page)=\\\"showResults($event)\\\">\\n \\n
\\n \\n
\\n\"","export default \"
\\n

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

\\n

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 [cssDef]=\\\"cssDef\\\" [markupSettings]=\\\"mySettings\\\" \\n [textToStyle]=\\\"earlierDescription.text\\\" \\n [posStyleMarkup]=\\\"earlierDescription.markups\\\">\\n {{earlierDescription.citation}}\\n
\\n
\\n \\n

Beschreibung der Archivmappe

\\n

Heftbeschreibung

\\n

\\n {{manuscriptDescription.text}}\\n 0\\\"\\n [cssDef]=\\\"cssDef\\\" [markupSettings]=\\\"mySettings\\\" \\n [textToStyle]=\\\"manuscriptDescription.text\\\" \\n [posStyleMarkup]=\\\"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\\n\"","export default \"\\n Suche\\n \\n \\n \\n\\n\\n\"","export default \"\\n\\n\\n\"","export default \"\\n\\n\\n\\n\"","export default \"
\\n \\n
\\n\"","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n {{viewOption}}\\n \\n \\n \\n Loading ...\\n {{current_page.title}} {{current_page.number}}\\n \\n \\n \\n \\n \\n \\n
\\n\\n\"","export default \"
\\n
\\n
\\n {{tooltipPosition.clientY+yOffset}}, {{topOffset}}\\n \\n
\\n
0: {{earlier_version.text}}
\\n
\\n 1: \\n {{word.text}}\\n 0\\\" \\n [cssDef]=\\\"cssDef\\\" [markupSettings]=\\\"mySettings\\\"\\n [textToStyle]=\\\"word.text\\\" [posStyleMarkup]=\\\"positionalStyleMarkups\\\">\\n
\\n >{{word.edited_text}}\\n
überschreibt: {{overwrittenWord.text}}
\\n
\\n
\\n {{foreignHand.text}}, {{foreignHand.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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9hcHAuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0E7R0FDRyxtQkFBbUI7QUFDdEI7O0FBRUE7RUFDRSxXQUFXO0FBQ2I7O0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaO0FBQ0YiLCJmaWxlIjoiYXBwL2FwcC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiXG5ib2R5IHtcbiAgIHBhZGRpbmctcmlnaHQ6IDUwcHg7XG59XG5cbi5yZWN0LCAucmVjdC51bmhvdmVyZWQge1xuICBvcGFjaXR5OjAuMDtcbn1cbi5yZWN0OmhvdmVyLCAucmVjdC5ob3ZlcmVkIHtcbiAgb3BhY2l0eTowLjM0MDAwMDE3O1xuICBmaWxsOiNlMmZhMDA7XG4gIGZpbGwtb3BhY2l0eTowLjk4NDMxMzczXG59XG4iXX0= */\"","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 { 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 { 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';\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 ],\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 MatSelectModule, // for themes selection\n MatSidenavModule,\n MatTabsModule,\n MatToolbarModule,\n FormsModule,\n TlnEditionModule,\n ReactiveFormsModule\n ],\n providers: [ NavigationServiceService, QueryService ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import {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];\n\nexport const routing = RouterModule.forRoot(APP_ROUTES);\n","export 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';\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_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_SEARCH_ROUTE, TLN_VIEWER_ROUTE } from '../tln-edition/constants';\nimport { TlnFulltextComponent } from '../tln-edition/tln-fulltext/tln-fulltext.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: '', 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50L2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIiwiYXBwL2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50L2NvbnRlbnQtdmlldy10YWItY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBO0VBQ0UsV0FBQTtBQ0FGOztBREdBO0VBQ0UsZ0JBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFFQSxnQkFBQTtFQUNBLGVBQUE7QUNERjs7QURJQTtFQUNFLFdBQUE7QUNERjs7QURJQTtFQUNFLGlCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QUNERiIsImZpbGUiOiJhcHAvY29udGVudC12aWV3LXRhYi1jb21wb25lbnQvY29udGVudC12aWV3LXRhYi1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGUgbmF2aWdhdGlvbiBkcmF3ZXIgb24gdGhlIHZlcnkgbGVmdCBjb250YWluaW5nIHRoZSBpdGVtcyB0byBjaG9vc2UgZnJvbVxuLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5tYXQtZHJhd2VyIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuXG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDkwJTtcbn1cblxuLm1hdC1jYXJkIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5tYXQtZHJhd2VyLWNvbnRlbnQge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbiIsIi5tYXQtZHJhd2VyLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubWF0LWRyYXdlciB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogOTAlO1xufVxuXG4ubWF0LWNhcmQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLm1hdC1kcmF3ZXItY29udGVudCB7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufSJdfQ== */\"","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport {Subscription} from \"rxjs/index\";\nimport {NavigationServiceService} from \"../services/navigation-service.service\";\nimport { TLN_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_SEARCH_ROUTE, TLN_VIEWER_ROUTE } 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\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: false,\n context: 'manuscript'\n }, {\n label: 'Seitenansicht',\n link: TLN_VIEWER_ROUTE,\n index: 1,\n isActive: false,\n context: 'page'\n }, {\n label: 'Querverweise',\n link: TLN_CROSSREF_ROUTE,\n index: 2,\n isActive: false\n }, {\n label: 'Suche',\n link: TLN_SEARCH_ROUTE,\n index: 3,\n isActive: false\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.mesurePerformance();\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({navContext : navTabLink.context}), 300);\n }\n } else {\n this.navTabLinks[index].isActive = false;\n }\n });\n }\n\n\n mesurePerformance() {\n const perfData = window.performance.timing;\n const pageLoadTime = perfData.loadEventEnd - perfData.navigationStart;\n console.log('content load performance is: ', pageLoadTime);\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 if (!this.activatedRoute.snapshot.queryParamMap.get('navContext')) {\n qParams.navContext = 'manuscript';\n this.setActiveLink('tln-manuscript');\n } else {\n if (this.activatedRoute.snapshot.queryParamMap.get('navContext') === 'manuscript') {\n this.setActiveLink('tln-manuscript');\n } else {this.setActiveLink('tln-viewer'); } }\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\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9ob21lLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxnQkFBZ0I7QUFDbkI7QUFDQTtHQUNHLGlCQUFpQjtBQUNwQiIsImZpbGUiOiJhcHAvaG9tZS5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNraXAge1xuICAgbWFyZ2luLXRvcDogMjBweDtcbn1cbi5zZWNvbmR7XG4gICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbiJdfQ== */\"","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9pbXByZXNzdW0uY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLG1CQUFtQjtHQUNuQixZQUFZO0FBQ2Y7QUFDQTtHQUNHLG1CQUFtQjtBQUN0QiIsImZpbGUiOiJhcHAvaW1wcmVzc3VtLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dCB7XG4gICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xuICAgd2lkdGg6IDgwMHB4O1xufVxuLnN1YmNvbnRlbnQge1xuICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbiJdfQ== */\"","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","import {Component, Input, OnChanges} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl, SafeStyle} from '@angular/platform-browser'\nimport {NgxMatStandoffMarkupService} from \"./ngx-mat-standoff-markup.service\";\nimport {Style} from \"@angular/cli/lib/config/schema\";\n\n\n@Component({\n selector: 'NgxMat-NgxMatStandoffMarkup',\n templateUrl: './ngx-mat-standoff-markup.component.html'\n})\n/**\n* Simple and leightweight component marking up/styling a text input textToStyle with standoff markupDataMerged.\n* @param standoffData: the standoff data for style markup/semantic markup.\n* @param textToStyle: the text which will be styled acc. to the standoffData.\n* @param startIndices: the final startindices to segment the text for markup. Does NOT simply equal all startindices of standoffData. It\n* also contains all startindices of segments which are not styled/marked up.\n* @param templateSegments: the resulting text segments with their individual markup information. Overlaps are supported\n*/\nexport class NgxMatStandoffMarkupComponent implements OnChanges {\n @Input() textToStyle: string;\n @Input() markupSettings: StandoffMarkupSettings;\n @Input() standoffData: (SemanticPositonalAnnotation | PositionalStyleMarkup )[]; // both combined in one array\n @Input() posStyleMarkup?: PositionalStyleMarkup[];\n @Input() semPosAnnotation?: SemanticPositonalAnnotation[];\n @Input() cssDef?: StyleSheetDef;\n @Input() parentId?: string;\n @Input() parentClass?: string;\n cssUrl: SafeResourceUrl; // the url if a file path is passed acc. to the cssDef\n markupDataMerged: (SemanticPositonalAnnotation | PositionalStyleMarkup )[];\n\n startIndices: Array = []; // the start indices of all style segments\n templateSegments: Segment[]; // the resulting style segments with their css styles\n\n selectionStartIndex: number;\n\n constructor( public sanitizer: DomSanitizer, private standoffService: NgxMatStandoffMarkupService) {\n }\n\n ngOnChanges() {\n if (this.cssDef.type === 'url') {\n this.cssUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.cssDef.css); // the actual url of the css for embetting.\n }\n this.mergeInputData();\n this.startIndices = this.getStartIndices(this.markupDataMerged);\n this.segmentText();\n }\n\n /**\n * Merging the different data inputs to one data array if multiple inputs\n */\n private mergeInputData() {\n if (this.standoffData && this.standoffData.length) {\n this.markupDataMerged = this.standoffData;\n if ((this.posStyleMarkup && this.posStyleMarkup.length) || (this.semPosAnnotation && this.semPosAnnotation.length)) {\n console.log('WARNING: posStyleMarkup or semPosAnnotation input ignored.')\n }\n } else {\n if ((this.posStyleMarkup && this.posStyleMarkup.length) && (this.semPosAnnotation && this.semPosAnnotation.length)) {\n this.markupDataMerged.concat(this.posStyleMarkup, this.semPosAnnotation);\n } else {\n if (this.posStyleMarkup && this.posStyleMarkup.length) { this.markupDataMerged = this.posStyleMarkup }\n if (this.semPosAnnotation && this.semPosAnnotation.length) { this.markupDataMerged = this.semPosAnnotation }\n }\n }\n }\n\n\n /**\n * Creates the final text segments and styles (this.templateSegments) which will\n * be *ngFored as and styled with *ngStyle in the template.\n * Iterates through all startindices defined, pushes the corresponding substring\n * of our text to style together with its matching styles to this.templateSegments\n *\n */\n private segmentText() {\n this.templateSegments = [];\n let c = 1; // counter for getting the end index of the substring() via this.startIndices[c]\n for (const startIndex of this.startIndices) {\n // the text from startIndex to the next startIndex, i.e. the endIndex ...\n const segmentText = this.textToStyle.substring(startIndex, this.startIndices[c]);\n // all segmentDefs within the given range ...\n const segmentDefsInRange = this.markupDataMerged.filter((def) => {\n return def.startIndex <= startIndex && startIndex <= def.endIndex});\n let segment2 = new Segment(segmentText, startIndex, this.markupSettings, segmentDefsInRange);\n this.templateSegments.push(segment2);\n c += 1;\n }\n }\n\n /**\n * Creates an array of startindices defining the final text/style segments.\n * Hence every end index can be described as a startindex minus one (an end\n * index equals a start index of sth. new -1), end indices are also covered implicitly.\n * So every endIndex +1 is also pushed to the startIndices array if not yet existing.\n * If a defined range is ending at the very last character, there is obviously not a new\n * style starting and an additive startIndex is wrong. Therefore the last startIndex\n * is simply popped from the array if its value exceeds textToStyle.length.\n *\n * @return startIndices: Array of all distinct startIndices of the final text segments.\n */\n private getStartIndices(standoffData: StandoffDef[]) {\n\n const startIndices: Array = [];\n // Push every startindex to startIndices if not yet there to get a distinct array of startindices for segmenting the text.\n // Hence every every end means a start of sth new, every endIndex equals a startIndex -1. Therefore we simply add also\n // every endIndex +1 to the Array of startIndices (if there is not yet a start defined for that character).\n\n standoffData.forEach(defEntry => {\n if (startIndices.indexOf(defEntry.startIndex) === -1) { // if the startIndex of the defEntry is not yet in startIndices\n startIndices.push(defEntry.startIndex);\n }\n if (startIndices.indexOf(defEntry.endIndex + 1) === -1) {\n startIndices.push(defEntry.endIndex + 1);\n }\n });\n // if there is no startindex of 0, we have to add it to define the first text segment.\n if (startIndices.indexOf(0) === -1) {\n startIndices.push(0); }\n // sort it\n startIndices.sort((n1, n2) => n1 - n2);\n // If the last endIndex is the very last character of the string to style, we must not generate a startIndex at endIndex+1.\n // In any other case we have to start a new style.\n // If the last generated startIndex is bigger than this.textToStyle.length\n // we have to pop that last startIndex (from the right) from our startIndices.\n // If the textToStyle.length is bigger or equals the last startIndex, that last startIndex simply means the end of the style\n // one character before. In these cases a last style range with font style undefined (style:normal) has to start,\n // so the last end ist also defined.\n if (this.textToStyle.length < startIndices[startIndices.length - 1]) { startIndices.pop(); }\n return startIndices;\n }\n\n private onSegmentClick(segment: Segment){\n const sel = window.getSelection(); // needed for preventing onclicks when selecting text\n if (sel.type != 'Range' && segment.interact) {\n let seg = new InteractedSegment(this.parentId, this.parentClass, segment);\n this.standoffService.interactedSegmentEmitter.emit(seg);\n }\n }\n\n // Text selection only works within a parent element (div). If you have several ngx-mat-standoff-components, e.g.\n // in an ngFor loop, you have to read the window data out yourself in your component.\n private setSelectedText(selectionEndstartIndex: number){\n if (window.getSelection) {\n let sel = window.getSelection();\n if (!sel.isCollapsed) {\n let totalRangeStartIndex = this.selectionStartIndex + sel.anchorOffset;\n let totalRangeEndIndexFocus = selectionEndstartIndex + sel.focusOffset;\n // all standoff definitions in that range ...\n const segmentDefsInRange = this.markupDataMerged.filter((def) => {\n return def.endIndex >= totalRangeStartIndex && def.startIndex <= totalRangeEndIndexFocus\n });\n let selectedText = this.textToStyle.substring(totalRangeStartIndex, totalRangeEndIndexFocus);\n this.standoffService.selectedTextEmitter.emit(\n new TextSelection(selectedText, totalRangeStartIndex, totalRangeEndIndexFocus, this.parentId, segmentDefsInRange));\n }\n }\n }\n\n private setSelectionStartIndex(startIndex) {\n this.selectionStartIndex = startIndex;\n }\n}\n\nexport class StandoffDef { // extendended by both types\n sType: number; // 0 === markup via css tag; 1 === apply css class\n startIndex: number; // character where the style/class starts\n endIndex: number; // character where the style/class ends\n\n\n constructor( sType: number, startIndex: number, endIndex: number ) {\n this.sType = sType;\n this.startIndex = startIndex;\n this.endIndex = endIndex;\n }\n}\n\nexport class PositionalStyleMarkup extends StandoffDef {\n cssStyleTag: string; // one or multiple css style tags like 'font-weight: bold;' or 'font-weight: bold; font-style: italic'\n constructor( sType: number, startIndex: number, endIndex: number, cssStyleTag: string) {\n super( sType, startIndex, endIndex);\n this.cssStyleTag = cssStyleTag;\n }\n}\n\nexport class SemanticPositonalAnnotation extends StandoffDef {\n cssClass?: string; // class name or subclass path with or without dots like '.animal.dog' or 'animal dog'\n iri?: string; // a desired iri or id\n description?: string;\n custom?: any;\n constructor( sType: number,\n startIndex: number,\n endIndex: number,\n cssClass?: string,\n iri?: string,\n description?: string,\n custom?: any) {\n super(sType, startIndex, endIndex);\n this.cssClass = cssClass;\n this.iri = iri;\n this.description = description;\n this.custom = custom; }\n}\n\nexport class Segment {\n sType: number; // 0 = markup only, 1 = semAnnotation only\n sText: string;\n sStartIndex: number;\n interact: boolean;\n originalDefs?: OriginalStandoffDef; // all originalDefs no matter whatsoever\n cssStyleTag?: StyleDef;\n cssClass?: StyleDef;\n\n constructor( text,\n sStartIndex: number,\n settings: StandoffMarkupSettings,\n standoffDef?: (SemanticPositonalAnnotation[] | PositionalStyleMarkup[])) {\n this.sText = text; //the string (=== subString) of the segment\n this.sStartIndex = sStartIndex; // the startIndex of the segment within the whole text\n this.originalDefs = new OriginalStandoffDef(standoffDef);\n this.setSegment(standoffDef, settings);\n\n }\n\n /**\n * sets the sType, interact and sStyleDef\n *\n */\n private setSegment(defs, settings) {\n if (defs && defs.length > 0) { // If there are definitions ...\n // check for markup type overlaps, e.g. definitions for type 0 and type 1\n // by checking the length of a Set (= distinct) of all sTypes in defs.\n if (Array.from(new Set(defs.map((item: any) => item.sType))).length > 1) { // If >1 there is an overlap\n // set the sType depending on the markupPreference ...\n this.sType = settings.markupPreference;\n this.sType === 0? this.setSyle(defs): this.setClass(defs, settings.polysemanticWrapper);\n\n } else { this.sType = defs[0].sType } // if there is only one sType within defs we set that\n // setting the interact according to the sType.\n this.sType === 0? this.interact = settings.interactWithStyles : this.interact = settings.interactWithAnnotations;\n let filteredDefs = defs.filter((def) => { return def.sType === this.sType; }); // subset of all defs which type === sType\n this.sType === 0? this.setSyle(filteredDefs): this.setClass(filteredDefs, settings.polysemanticWrapper);\n } else {\n // If there is nothing defined for the text segment at all ...\n this.setUndefinedSegmentParts(settings.interactWithUndefined) }\n }\n\n setSyle(defs) {\n defs.forEach( def => {\n const posStyle = def as PositionalStyleMarkup;\n // Adds every css property/value to the markup object\n // splitting multiple styles at ';'\n // removes leading and ending spaces, deletes \";\" and assigns it as an object as css property:\"value\"\n this.cssStyleTag = {};\n posStyle.cssStyleTag.split(';').forEach( style => {\n if (style.trim().length > 0) { this.cssStyleTag[style.split(':')[0].trim()] = style.split(':')[1].trim()}\n }\n );\n });\n }\n\n setClass(defs, polysemanticWrapper?: string) {\n this.cssClass = {};\n if (polysemanticWrapper && defs.length > 1) { this.cssClass[polysemanticWrapper]= true;} else {\n defs.forEach( def => {\n const posSem = def as SemanticPositonalAnnotation;\n // adding a class\n this.cssClass[posSem.cssClass.trim().replace('.', ' ' )]= true;\n });\n }\n }\n\n setUndefinedSegmentParts(interact: boolean) {\n this.sType = 0;\n this.cssStyleTag = []; // {'font-style': 'normal'}\n this.interact = interact;\n }\n}\n\nexport class InteractedSegment{\n parentId: string;\n parentClass: string;\n segment;\n constructor(parentId: string, parentClass:string, segment: Segment) {\n this.parentClass = parentClass;\n this.parentId = parentId;\n this.segment = segment;\n }\n}\n\nexport class OriginalStandoffDef {\n positionalMarkup: PositionalStyleMarkup[];\n semanticAnnotation: SemanticPositonalAnnotation[];\n\n constructor(standOffDef: any[]) {\n this.positionalMarkup = standOffDef.filter((def) => { return def.sType === 0; }); // subset of all defs which type === 0\n this.semanticAnnotation = standOffDef.filter((def) => { return def.sType === 1; }); // subset of all defs which type === 1\n }\n}\n\nexport interface StyleDef {\n [klass: string]: any; // font-weight: bold; myCssClass = true; ...\n}\n\nexport class StyleSheetDef {\n css: string; // the url to the file or the css iteself as plain text\n type: string; // 'url' for a path to the css file or 'text' for plain css text;\n\n constructor(css: string, type: string) {\n this.css = css;\n this.type = type;\n }\n}\n\nexport class StandoffMarkupSettings {\n\n interactWithStyles?: boolean; // clickable style segments && emitting the style definition of the segment to service\n interactWithAnnotations?: boolean; // clickable anotation segments && emitting the definition back to service\n interactWithUndefined?: boolean; // clickable segments for which nothing is defined\n markupPreference?: number; // The preference on overlaps of styles and classes. Defines the winner: 0 === styles win; 1 === classes win;\n polysemanticWrapper?: string; // optional class name for all polysemantics. In case of semantic overlaps/polysemantics this css class will be applied\n\n constructor(interactWithStyles: boolean = false,\n interactWithAnnotations: boolean = true,\n interactWithUndefined: boolean = false,\n markupPreference: number = 1,\n polysemanticWrapper?: string) {\n\n this.interactWithStyles = interactWithStyles;\n this.interactWithAnnotations = interactWithAnnotations;\n this.interactWithUndefined = interactWithUndefined;\n this.markupPreference = markupPreference;\n this.polysemanticWrapper = polysemanticWrapper;\n }\n}\n\nexport class TextSelection {\n text: string;\n startIndex: number;\n endIndex: number;\n parentId: string;\n standoffDefsInRange?: (SemanticPositonalAnnotation | PositionalStyleMarkup )[];\n\n constructor(text: string, startIndex: number, endIndex: number, parentId?: string, standoffDefsInRange? ) {\n this.text = text;\n this.startIndex = startIndex;\n this.endIndex = endIndex;\n this.parentId = parentId;\n this.standoffDefsInRange = standoffDefsInRange;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NgxMatStandoffMarkupComponent } from './ngx-mat-standoff-markup.component';\nimport { MatTooltipModule } from '@angular/material';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NgxMatStandoffMarkupService} from \"./ngx-mat-standoff-markup.service\";\n\n@NgModule({\n declarations: [\n NgxMatStandoffMarkupComponent],\n imports: [\n MatTooltipModule,\n BrowserModule,\n BrowserAnimationsModule\n ],\n exports: [NgxMatStandoffMarkupComponent],\n providers: [NgxMatStandoffMarkupService]\n})\nexport class NgxMatStandoffMarkupModule { }\n","import { Injectable, EventEmitter } from '@angular/core';\nimport {\n PositionalStyleMarkup, SemanticPositonalAnnotation, Segment,\n TextSelection, InteractedSegment\n} from \"./ngx-mat-standoff-markup.component\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxMatStandoffMarkupService {\n\n // subscribe here to the selected things. For editing your standoff markup/semantic annotations\n public interactedSegmentEmitter = new EventEmitter();\n public selectedTextEmitter = new EventEmitter(); // multiple spaces removed\n\n constructor() {\n }\n}\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAvbWFpbi1tZW51LWNvbXBvbmVudC9tYWluLW1lbnUtY29tcG9uZW50LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit } from '@angular/core';\nimport {MatButtonModule} from '@angular/material/button';\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL21hbnVzY3JpcHQtdmlldy1jb21wb25lbnQvbWFudXNjcmlwdC12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsImFwcC9tYW51c2NyaXB0LXZpZXctY29tcG9uZW50L21hbnVzY3JpcHQtdmlldy1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxZQUFBO0VBQ0EsY0FBQTtBQ0NGOztBREVBO0VBQ0UsWUFBQTtFQUVBLFVBQUE7RUFDQSxtQkFBQTtBQ0FGOztBREdBO0VBQ0UsWUFBQTtFQUdBLG1CQUFBO0FDRkYiLCJmaWxlIjoiYXBwL21hbnVzY3JpcHQtdmlldy1jb21wb25lbnQvbWFudXNjcmlwdC12aWV3LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250ZW50LWFyZWEge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6dGFibGU7XG59XG5cbi5uYXYtY29udGFpbmVyIHtcbiAgaGVpZ2h0OjEwMCU7XG4gIC8vbWluLXdpZHRoOiB1bnNldDsgLy8gbmVlZGVkIGJlY2F1c2UgYW5ndWxhciBzZXRzIGFuIG93biBtaW4gd2lkdGghP1xuICB3aWR0aDo1MCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG4gIGhlaWdodDoxMDAlO1xuICAvLyBtaW4td2lkdGg6IHVuc2V0OyAvLyBuZWVkZWQgYmVjYXVzZSBhbmd1bGFyIHNldHMgYW4gb3duIG1pbiB3aWR0aCE/XG4gIC8vIHdpZHRoOjIwcHg7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG4iLCIuY29udGVudC1hcmVhIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLm5hdi1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiA1MCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn0iXX0= */\"","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","// class for Everything: extended by NavigationEntity, Manuscript, Page, Word with all common properties\nimport {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 navContext: string;\n label?: string;\n description?: string;\n\n constructor(id: string, iri: string, type: string, navContext: string, label?: string, description?: string) {\n this.id = id;\n this.iri = iri;\n this.type = type;\n this.navContext = navContext;\n this.label = label;\n this.description = description;\n }\n}\n\nexport class TlnQueryParams {\n navBarOpenState: boolean;\n navContext: string;\n manuscript: string;\n page: string;\n selectedLines: string;\n selectedWords: string;\n viewMode: string; // '\n fullscreen: boolean;\n zoom: number;\n\n constructor(navBarOpenState: boolean, navContext: string, manuscript: string, page: string, selectedLines: string, selectedWords: string, viewMode: string, fullscreen: boolean, zoom: number ) {\n this.navBarOpenState = navBarOpenState; //proposed solution: JSON.parse(navBarOpenState)\n this.navContext = navContext; // proposed solution: Number(navTabIndex)\n this.manuscript = manuscript;\n this.page = page;\n this.selectedLines = selectedLines;\n this.selectedWords = selectedWords;\n this.viewMode = viewMode;\n this.fullscreen = fullscreen; // proposed solution: JSON.parse(fullscreen)\n this.zoom = zoom; // proposed solution: Number(zoom)\n // console.log('TlnQueryParams.fullscreen typeof:', typeof this.fullscreen, 'TlnQueryParams.zoom typeof:', typeof this.zoom);\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, also set as queryParam\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\n constructor( type: number, baseUrl: string, dataArray: string, query?: string, mapping?: TlnEntityMapping) {\n this.type = type;\n this.baseUrl = baseUrl;\n this.dataArray = dataArray;\n this.query = query;\n this.mapping = mapping;\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\\n.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: 100px;\\n max-height: 100px;\\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQvbmF2aWdhdGlvbi1saXN0LWNvbXBvbmVudC5jb21wb25lbnQuc2NzcyIsImFwcC9uYXZpZ2F0aW9uLWxpc3QtY29tcG9uZW50L25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSx3QkFBQTtFQUFBLGdCQUFBO0VBQ0EsZ0JBQUE7QUNDRjs7QURFQTtFQUNFLHdCQUFBO0VBQUEsZ0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtBQ0NGOztBREVBO0VBQ0UsdUJBQUE7QUNDRjs7QURFQTtFQUNFLFdBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7RUFBYyxvQkFBQTtFQUNkLHFCQUFBO0VBQ0Esb0JBQUE7QUNFRjs7QURDQTtFQUNFLGdCQUFBO0VBQ0EsaUJBQUE7QUNFRjs7QURDQTtFQUNFLFdBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLG1EQUFBO0FDRUY7O0FEQ0E7RUFDRSxzRUFBQTtBQ0VGIiwiZmlsZSI6ImFwcC9uYXZpZ2F0aW9uLWxpc3QtY29tcG9uZW50L25hdmlnYXRpb24tbGlzdC1jb21wb25lbnQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZml4ZWQtbmF2LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IDE1dmg7XG59XG5cbi5uYXZsaXN0LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIG1heC1oZWlnaHQ6IDg1dmg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG59XG5cbi5tYXQtbmF2LWxpc3Qge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiA3MnB4O1xuICBoZWlnaHQ6IDEwMCU7IC8qIGRlZmF1bHQgaXMgNzJweCAqL1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7O1xuICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLnRodW1ibmFpbCB7XG4gIG1heC13aWR0aDogMTAwcHg7XG4gIG1heC1oZWlnaHQ6IDEwMHB4O1xufVxuXG4uY2FyZC1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApICFpbXBvcnRhbnQ7XG59XG5cbi5hY3RpdmUtaXRlbSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAsICNkYWRhZGEpO1xufVxuIiwiLmZpeGVkLW5hdi1jb250YWluZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBtYXgtaGVpZ2h0OiAxNXZoO1xufVxuXG4ubmF2bGlzdC1jb250YWluZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICBtYXgtaGVpZ2h0OiA4NXZoO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4ubWF0LW5hdi1saXN0IHtcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG59XG5cbi5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogNzJweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvKiBkZWZhdWx0IGlzIDcycHggKi9cbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLnRodW1ibmFpbCB7XG4gIG1heC13aWR0aDogMTAwcHg7XG4gIG1heC1oZWlnaHQ6IDEwMHB4O1xufVxuXG4uY2FyZC1pdGVtIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApICFpbXBvcnRhbnQ7XG59XG5cbi5hY3RpdmUtaXRlbSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSwgI2RhZGFkYSk7XG59Il19 */\"","import {AfterViewInit, Component, ElementRef, EventEmitter, OnInit, ViewChildren} from '@angular/core';\nimport {NavigationServiceService} from '../services/navigation-service.service';\nimport {NavigationEntity, NavTreeDef, TlnQueryParams} from '../models/models';\nimport {Subscription} from 'rxjs/index';\nimport {ActivatedRoute, Params, Router} 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 * NavigationListComponent\n * Does sinply consume data coming from naviservice && activated route. triggers click event to service.\n */\nexport class NavigationListComponentComponent implements OnInit, AfterViewInit {\n\n navigationTreeDefs: NavTreeDef[];\n navTrees: NavTree[]; // The actual Navtrees which are displayed\n\n oldQueryParams: Params;\n queryParams: Params;\n queryParamSubscription: Subscription;\n navTabIndex: number;\n\n constructor( public naviService: NavigationServiceService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private queryService: QueryService) {\n\n this.navigationTreeDefs = [\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: 'https://nietzsche.fuseki.services.dasch.swiss/nietzsche',//'http://fuseki.nie-ine.ch/nietzsche-rw/query',\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: 'https://nietzsche.fuseki.services.dasch.swiss/nietzsche',//'http://fuseki.nie-ine.ch/nietzsche-rw/query',\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: 'svgFileName.value',\n }\n }\n }\n ];\n // If url pasted or page refreshed --> resetting this.queryparams to the query params of the url;\n // needed for the template hence service instances can not be accessed in the template\n this.queryParamSubscription = this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n const navTabIndex = this.getActiveNavTabIndex(queryParams.navContext);\n if (this.oldQueryParams && queryParams.navContext) { // only if there are any oldParams\n this.reactOnContextChange(queryParams.navContext, this.oldQueryParams.navContext, navTabIndex );\n this.reactOnItemChange('page', queryParams.page, this.oldQueryParams.page);\n this.reactOnItemChange('manuscript', queryParams.manuscript, this.oldQueryParams.manuscript);\n }\n this.oldQueryParams = queryParams;\n });\n }\n\n async ngOnInit() {\n await this.createTreesOnInit();\n this.navTabIndex = await this.getActiveNavTabIndex();\n await this.populateNavTrees();\n // set selected things in url\n this.navTrees.forEach(tree => {\n // if there is no selected item for each tree, we have to listen to the selectedItemSet/tree population and set them per default\n if (!this.activatedRoute.snapshot.queryParamMap.get(tree.qParam)) {\n tree.selectedItemSet.subscribe(item => {\n this.setSelectedItemAndRoute(item.itemId, item.tabId);\n });\n }\n });\n // change navTree according to chosen route per default\n // set NavContext if unset according to selected component: manuscriptView, tln-page view\n if (this.activatedRoute.snapshot.firstChild.url[0].path === 'tln-viewer'\n && !this.activatedRoute.snapshot.queryParamMap.get('navContext')) {\n this.naviService.updateRoute({navContext: 'page'});\n }\n }\n\n ngAfterViewInit() {\n const selectedItem = this.activatedRoute.snapshot.queryParamMap.get(this.activatedRoute.snapshot.queryParamMap.get('navContext'));\n this.scrollOnToSelectedItem(selectedItem);\n }\n\n reactOnItemChange(param: string, itemId: string, oldItemId) {\n if (itemId && itemId !== '' && oldItemId) {\n if (itemId !== oldItemId) {\n const tab = this.navTrees.findIndex(tree => tree.id === param);\n this.setSelectedItem(itemId, tab);\n if (tab === this.navTabIndex) {\n window.setTimeout(() => this.scrollOnToSelectedItem(itemId), 100);\n }\n }\n }\n }\n\n reactOnContextChange(context: string, oldContext: string, activeTab: number) {\n if (context !== oldContext) {\n this.navTabIndex = activeTab;\n // must time out here hence document is not ready to scroll\n window.setTimeout(() => this.scrollOnToSelectedItem(this.oldQueryParams[context]), 100);\n }\n }\n\n scrollOnToSelectedItem(itemId: string ) {\n if (document.getElementById(itemId)) {\n const offSetTop = document.getElementById(itemId).offsetTop;\n document.getElementById('navlist').scrollTop = offSetTop - 100;\n }\n }\n\n /**\n * getActiveNavTabIndexOnInit\n * gets the active navTabIndex either from a passed navConText, from active qParam or or from definition\n */\n getActiveNavTabIndex(con?: string) {\n let navConText;\n if (!con || con === '') {\n navConText = this.activatedRoute.snapshot.queryParamMap.get('navContext');\n } else { navConText = con; }\n let navTabIndex = 0;\n if (navConText && navConText !== '') {\n const nIndex = this.navigationTreeDefs.findIndex(tree => tree.id === navConText);\n navTabIndex = this.navigationTreeDefs[nIndex].idx;\n } else { navTabIndex = 0; }\n return navTabIndex;\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 async onSelectNavItem(item: NavigationEntity) {\n // If a new item is clicked\n if (this.navTrees[this.navTabIndex].selectedItem !== item.tlnEntity.id) {\n // get new data for subTrees and set new params accordingly\n await this.emptyChildTrees(this.navTabIndex);\n await this.removeAllChildTreeQParams(this.navTabIndex);\n await this.setSelectedItemAndRoute(item.tlnEntity.id, this.navTabIndex);\n await this.populateChildren(this.navTabIndex, item.tlnEntity.id);\n // Only if context !== 'page', e.g. view is tln-viewer), we change to the second page tab\n const navContext = this.activatedRoute.snapshot.queryParamMap.get('navContext');\n if (navContext !== this.navTrees[this.getActiveNavTabIndex()].qParam) {\n this.changeNavTreeViaRoute(this.navTabIndex + 1);\n }\n } else { // if an already selected item is clicked again, it changes the tree/tab\n this.changeNavTreeViaRoute(this.navTabIndex + 1); }\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 setSelectedItem(navItemId: string, tabId: number) {\n this.navTrees[tabId].selectedItem = navItemId;\n }\n\n // Will route, the qParamSubscription reacts and trees are built further\n async setSelectedItemAndRoute(navItemId: string, tabId: number) {\n this.navTrees[tabId].selectedItem = navItemId;\n const idx = this.navigationTreeDefs.findIndex(tree => tree.idx === tabId);\n // set new qParam\n const newParams = {};\n const qParam = this.navigationTreeDefs[idx].itemQParam;\n newParams[qParam] = navItemId;\n this.naviService.updateRoute(newParams);\n }\n\n\n populateChildren(activeTab, itemId?: string) {\n if (activeTab + 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(activeTab + 1, itemId );\n }\n }\n\n // switches tabs in navtab ov navigation bar\n changeNavTreeViaRoute(idx: number) {\n if (idx < this.navTrees.length) {\n this.naviService.updateRoute({navContext: this.navTrees[idx].qParam}); }\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, itemId?: string) {\n const tabStartIndex = tabIdx || 0; // where to start refreshing navtrees\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).subscribe(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 (itemId) {\n queryToRun = this.queryService.parametrizeQueryWithItem(query, itemId);\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(item => {\n if (item.tabId === treeDef.idx - 1) {\n queryToRun = this.queryService.parametrizeQueryWithItem(query, item.itemId);\n this.populateNavTree(treeDef, queryToRun); }\n });\n }\n } else {\n this.populateNavTree(treeDef, query); }\n });\n }\n }\n }\n\n\n populateNavTree(def: NavTreeDef, query) {\n const idx = this.navTrees.findIndex(item => item.id === def.id);\n let parentLabel;\n if (idx > 0) { parentLabel = this.navTrees[idx - 1].selectedItemLabel; }\n if (idx !== -1) {\n this.queryService.getData(def.apiDef.baseUrl, query, 'SELECT').subscribe(data => {\n this.navTrees[idx].setNavTreeData(_.get(data, def.apiDef.dataArray),\n this.activatedRoute.snapshot.queryParams, parentLabel); });\n }\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 setNavTreeData(data: any, queryParams: Params, parentLabel?: string) {\n this.parentLabel = parentLabel;\n this.selectedItemLabel = _.get(data[0], this.apiDef.mapping.label);\n if (queryParams[this.qParam] && queryParams[this.qParam] !== '') {\n this.setSelected(queryParams[this.qParam]); } else {\n this.setSelected(_.get(data[0], this.apiDef.mapping.id));\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 = 'http://existdb-test.dasch.swiss/exist/rest/db/storage/nietzsche/' + _.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 setSelected(itemId: string) {\n this.selectedItem = itemId;\n this.selectedItemSet.emit({tabId: this.idx, itemId});\n }\n}\n\nexport interface SelectedItem {\n tabId: number;\n itemId: string;\n}\n","export default \"mat-card {\\n height: 85vh;\\n overflow: hidden;\\n}\\n\\n.drawer {\\n padding: 10px;\\n width: 25%;\\n}\\n\\n.in-drawer-content-area {\\n min-height: 300px;\\n height: 70vh;\\n min-width: 95%;\\n display: table;\\n}\\n\\n.in-drawer-toggle-button-container {\\n height: 100%;\\n vertical-align: top;\\n min-width: 10%;\\n width: 10%;\\n display: table-cell;\\n}\\n\\n.in-drawer-content-container {\\n height: 100%;\\n align-content: left;\\n width: 90%;\\n display: table-cell;\\n padding: 10px;\\n}\\n\\n.main-content-container {\\n min-height: 300px;\\n width: 100%;\\n height: 100%;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.outer-content-area {\\n min-height: 300px;\\n height: 100%;\\n display: table;\\n}\\n\\n.content-container {\\n height: 100%;\\n vertical-align: top;\\n align-content: left;\\n width: 80%;\\n display: table-cell;\\n padding: 10px;\\n}\\n\\n.page-turn-button-container {\\n height: 100%;\\n vertical-align: middle;\\n min-width: unset;\\n width: 20px;\\n display: table-cell;\\n}\\n\\n.page-turn-button {\\n height: 100px;\\n min-width: unset;\\n width: 15px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.toggle-button-container {\\n height: 100%;\\n display: table-cell;\\n vertical-align: top;\\n align-content: right;\\n align-items: right;\\n min-width: 5%;\\n width: 100%;\\n padding: 1em;\\n}\\n\\n.toggle-button {\\n height: 100px;\\n min-width: unset;\\n width: 15px;\\n display: flex;\\n justify-content: center;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.right-outer-element {\\n margin-right: 3em;\\n}\\n\\n.right-inner-element {\\n margin-left: 1em;\\n}\\n\\n.mat-button-toggle-group.mat-button-toggle-group {\\n display: flex;\\n align-items: right;\\n}\\n\\n.images-container {\\n display: table;\\n}\\n\\n.image-sell-container {\\n display: table-cell;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL3BhZ2Utdmlldy13cmFwcGVyLWNvbXBvbmVudC9wYWdlLXZpZXctd3JhcHBlci5jb21wb25lbnQuc2NzcyIsImFwcC9wYWdlLXZpZXctd3JhcHBlci1jb21wb25lbnQvcGFnZS12aWV3LXdyYXBwZXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7RUFDRSxZQUFBO0VBQ0EsZ0JBQUE7QUNERjs7QURLQTtFQUNFLGFBQUE7RUFDQSxVQUFBO0FDRkY7O0FETUE7RUFDRSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0VBQ0EsY0FBQTtBQ0hGOztBRE1BO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsY0FBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtBQ0hGOztBRE1BO0VBQ0UsWUFBQTtFQUVBLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtBQ0pGOztBRFFBO0VBQ0UsaUJBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0FDTEY7O0FEU0E7RUFDRSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FDTkY7O0FEU0E7RUFDRSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLFVBQUE7RUFDQSxtQkFBQTtFQUNBLGFBQUE7QUNORjs7QURTQTtFQUNFLFlBQUE7RUFDQSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0FDTkY7O0FEU0E7RUFDRSxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtBQ05GOztBRFVBO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0FDUEY7O0FEVUE7RUFDRSxhQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsU0FBQTtFQUNBLFVBQUE7QUNQRjs7QURXQTtFQUNFLGlCQUFBO0FDUkY7O0FEV0E7RUFDRSxnQkFBQTtBQ1JGOztBRFdBO0VBQ0UsYUFBQTtFQUNBLGtCQUFBO0FDUkY7O0FEV0E7RUFDRSxjQUFBO0FDUkY7O0FEV0E7RUFDRSxtQkFBQTtBQ1JGIiwiZmlsZSI6ImFwcC9wYWdlLXZpZXctd3JhcHBlci1jb21wb25lbnQvcGFnZS12aWV3LXdyYXBwZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0aGUgb3ZlcmFsbCBtYXQtY2FyZFxuXG5tYXQtY2FyZCB7XG4gIGhlaWdodDogODV2aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gdGhlIGRldGFpbHMgZHJhd2VyIG9uIHRoZSB2ZXJ5IHJpZ2h0XG4uZHJhd2VyIHtcbiAgcGFkZGluZzogMTBweDtcbiAgd2lkdGg6IDI1JTtcbn1cblxuLy8gVGhlIGNvbnRlbnQgYXJlYSBvZiB0aGUgZHJhd2VyIGFzIGEgdGFibGUgY29udGFpbmluZyBidXR0b24gJiBjb250ZW50XG4uaW4tZHJhd2VyLWNvbnRlbnQtYXJlYSB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICBoZWlnaHQ6IDcwdmg7XG4gIG1pbi13aWR0aDogOTUlO1xuICBkaXNwbGF5OnRhYmxlO1xufVxuXG4uaW4tZHJhd2VyLXRvZ2dsZS1idXR0b24tY29udGFpbmVyIHtcbiAgaGVpZ2h0OjEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIG1pbi13aWR0aDogMTAlO1xuICB3aWR0aDoxMCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG59XG5cbi5pbi1kcmF3ZXItY29udGVudC1jb250YWluZXIge1xuICBoZWlnaHQ6MTAwJTtcbiAgLy8gdmVydGljYWwtYWxpZ246IHRvcDtcbiAgYWxpZ24tY29udGVudDogbGVmdDtcbiAgd2lkdGg6OTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4vLyB0aGUgY29udGVudCBjb250YWluZXIgY29udGFpbmluZyB0aGUgY29udGVudCBhcmVhXG4ubWFpbi1jb250ZW50LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8vIFRoZSBjb250ZW50IGFyZWEgYXMgYSB0YWJsZSBjb250YWluaW5nIHRoZSBtYWluIGNvbnRlbnQgYW5kIHRoZSBvdXRlciB0b2dnbGUgYnV0dG9uIGNvbnRhaW5lclxuLm91dGVyLWNvbnRlbnQtYXJlYSB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6dGFibGU7XG59XG5cbi5jb250ZW50LWNvbnRhaW5lciB7XG4gIGhlaWdodDoxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBhbGlnbi1jb250ZW50OiBsZWZ0O1xuICB3aWR0aDo4MCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG4vLyBuYXYgYnV0dG9uc1xuLnBhZ2UtdHVybi1idXR0b24tY29udGFpbmVyIHtcbiAgaGVpZ2h0OjEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1pbi13aWR0aDogdW5zZXQ7IC8vIG5lZWRlZCBiZWNhdXNlIGFuZ3VsYXIgc2V0cyBhbiBvd24gbWluIHdpZHRoIT9cbiAgd2lkdGg6MjBweDtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cblxuLnBhZ2UtdHVybi1idXR0b24geyAvLyBmaWxscyBzaWRlbmF2LWJ1dHRvbi1jb250YWluZXIgY29tcGxldGVseSwgc28gYWxsIGlzIG9uZSBidXR0b25cbiAgaGVpZ2h0OiAxMDBweDtcbiAgbWluLXdpZHRoOiB1bnNldDsgLy8gbmVlZGVkIGJlY2F1c2UgYW5ndWxhciBzZXRzIGFuIG93biBtaW4gd2lkdGghP1xuICB3aWR0aDogMTVweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLy8gdGhlIGNlbGwgd2hlcmUgdGhlIGJ1dHRvbiB3aWxsIGJlIGluIHRoZSBtYWluIGNvbnRlbnQgYXJlYVxuLnRvZ2dsZS1idXR0b24tY29udGFpbmVyIHtcbiAgaGVpZ2h0OjEwMCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGFsaWduLWNvbnRlbnQ6IHJpZ2h0O1xuICBhbGlnbi1pdGVtczogcmlnaHQ7XG4gIG1pbi13aWR0aDogNSU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi50b2dnbGUtYnV0dG9uIHsgLy8gZmlsbHMgc2lkZW5hdi1idXR0b24tY29udGFpbmVyIGNvbXBsZXRlbHksIHNvIGFsbCBpcyBvbmUgYnV0dG9uXG4gIGhlaWdodDogMTAwcHg7XG4gIG1pbi13aWR0aDogdW5zZXQ7IC8vIG5lZWRlZCBiZWNhdXNlIGFuZ3VsYXIgc2V0cyBhbiBvd24gbWluIHdpZHRoIT9cbiAgd2lkdGg6IDE1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8vIGZvciBvcHRpb25zXG4ucmlnaHQtb3V0ZXItZWxlbWVudCB7XG4gIG1hcmdpbi1yaWdodDogM2VtO1xufVxuXG4ucmlnaHQtaW5uZXItZWxlbWVudCB7XG4gIG1hcmdpbi1sZWZ0OiAxZW07XG59XG5cbi5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiByaWdodDtcbn1cblxuLmltYWdlcy1jb250YWluZXIge1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmltYWdlLXNlbGwtY29udGFpbmVyIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cbiIsIm1hdC1jYXJkIHtcbiAgaGVpZ2h0OiA4NXZoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZHJhd2VyIHtcbiAgcGFkZGluZzogMTBweDtcbiAgd2lkdGg6IDI1JTtcbn1cblxuLmluLWRyYXdlci1jb250ZW50LWFyZWEge1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgaGVpZ2h0OiA3MHZoO1xuICBtaW4td2lkdGg6IDk1JTtcbiAgZGlzcGxheTogdGFibGU7XG59XG5cbi5pbi1kcmF3ZXItdG9nZ2xlLWJ1dHRvbi1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIG1pbi13aWR0aDogMTAlO1xuICB3aWR0aDogMTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuXG4uaW4tZHJhd2VyLWNvbnRlbnQtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBhbGlnbi1jb250ZW50OiBsZWZ0O1xuICB3aWR0aDogOTAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ubWFpbi1jb250ZW50LWNvbnRhaW5lciB7XG4gIG1pbi1oZWlnaHQ6IDMwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5vdXRlci1jb250ZW50LWFyZWEge1xuICBtaW4taGVpZ2h0OiAzMDBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cblxuLmNvbnRlbnQtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBhbGlnbi1jb250ZW50OiBsZWZ0O1xuICB3aWR0aDogODAlO1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4ucGFnZS10dXJuLWJ1dHRvbi1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIG1pbi13aWR0aDogdW5zZXQ7XG4gIHdpZHRoOiAyMHB4O1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuXG4ucGFnZS10dXJuLWJ1dHRvbiB7XG4gIGhlaWdodDogMTAwcHg7XG4gIG1pbi13aWR0aDogdW5zZXQ7XG4gIHdpZHRoOiAxNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4udG9nZ2xlLWJ1dHRvbi1jb250YWluZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIGFsaWduLWNvbnRlbnQ6IHJpZ2h0O1xuICBhbGlnbi1pdGVtczogcmlnaHQ7XG4gIG1pbi13aWR0aDogNSU7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi50b2dnbGUtYnV0dG9uIHtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgbWluLXdpZHRoOiB1bnNldDtcbiAgd2lkdGg6IDE1cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5yaWdodC1vdXRlci1lbGVtZW50IHtcbiAgbWFyZ2luLXJpZ2h0OiAzZW07XG59XG5cbi5yaWdodC1pbm5lci1lbGVtZW50IHtcbiAgbWFyZ2luLWxlZnQ6IDFlbTtcbn1cblxuLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IHJpZ2h0O1xufVxuXG4uaW1hZ2VzLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uaW1hZ2Utc2VsbC1jb250YWluZXIge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufSJdfQ== */\"","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport { TlnQueryParams} from '../models/models';\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 {\n queryParams: TlnQueryParams;\n\n constructor(private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n\n this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.queryParams = new TlnQueryParams(\n queryParams.navBarOpenState,\n queryParams.NavContext,\n queryParams.manuscript,\n queryParams.page,\n queryParams.selectedLines,\n queryParams.selectedWords,\n queryParams.viewMode,\n queryParams.fullscreen,\n queryParams.zoom\n );\n });\n\n }\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAvcGFnZS12aWV3L2NvcHlyaWdodC9jb3B5cmlnaHQtc2hlZXQvY29weXJpZ2h0LXNoZWV0LmNvbXBvbmVudC5jc3MifQ== */\"","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wYWdlLXZpZXcvY29weXJpZ2h0L2NvcHlyaWdodC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csVUFBVTtBQUNiO0FBQ0E7R0FDRyxVQUFVO0dBQ1YsWUFBWTtHQUNaLGVBQWU7QUFDbEIiLCJmaWxlIjoiYXBwL3BhZ2Utdmlldy9jb3B5cmlnaHQvY29weXJpZ2h0LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjY2lyY2xlIHtcbiAgIGZpbGw6IG5vbmU7XG59XG4jY2Mge1xuICAgZmlsbDogZ3JleTtcbiAgIG9wYWNpdHk6IDAuMjtcbiAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuIl19 */\"","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wYWdlLXZpZXcvbWFyZ2luLWZpZWxkL2xpbmUtcmVmZXJlbmNlL2xpbmUtcmVmZXJlbmNlLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsWUFBWTtBQUNmO0FBQ0E7R0FDRyxlQUFlO0dBQ2YsWUFBWTtBQUNmO0FBQ0E7R0FDRyxlQUFlO0FBQ2xCIiwiZmlsZSI6ImFwcC9wYWdlLXZpZXcvbWFyZ2luLWZpZWxkL2xpbmUtcmVmZXJlbmNlL2xpbmUtcmVmZXJlbmNlLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudW5oaWdobGlnaHRlZCB7XG4gICBmaWxsOiB3aGl0ZTtcbiAgIG9wYWNpdHk6IDAuMDtcbn1cbi5oaWdobGlnaHRlZCB7XG4gICBmaWxsOiBsaWdodGdyZXk7XG4gICBvcGFjaXR5OiAwLjM7XG59XG4ubW91c2UtcG9pbnRlciB7XG4gICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iXX0= */\"","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wYWdlLXZpZXcvbWFyZ2luLWZpZWxkL21hcmdpbi1maWVsZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsdUJBQXVCO0VBQ3ZCLGVBQWU7QUFDakI7O0FBRUE7R0FDRyxjQUFjO0FBQ2pCOztBQUVBO0dBQ0csV0FBVztHQUNYLFlBQVk7QUFDZjs7QUFDQTtHQUNHLFlBQVk7R0FDWixZQUFZO0FBQ2Y7O0FBQ0E7RUFDRSxlQUFlO0VBQ2YsY0FBYztFQUNkLFlBQVk7QUFDZDs7QUFDQTtFQUNFLGFBQWE7RUFDYixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsWUFBWTtBQUNkOztBQUVBO0VBQ0UsYUFBYTtBQUNmOztBQUVBO0VBQ0UscUJBQXFCO0FBQ3ZCIiwiZmlsZSI6ImFwcC9wYWdlLXZpZXcvbWFyZ2luLWZpZWxkL21hcmdpbi1maWVsZC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1hcmdpbmZpZWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLm1hcmdpbmZpZWxkIC50ZXh0IHtcbiAgIGZvbnQtc2l6ZTogOHB4O1xufVxuXG4ubWFyZ2luZmllbGQgLnVuaGlnaGxpZ2h0ZWQge1xuICAgZmlsbDogd2hpdGU7XG4gICBvcGFjaXR5OiAwLjA7XG59XG4ubWFyZ2luZmllbGQgLmhpZ2hsaWdodCB7XG4gICBmaWxsOiB5ZWxsb3c7XG4gICBvcGFjaXR5OiAwLjM7XG59XG4ubWFyZ2luZmllbGQgLmJvcmRlciB7XG4gIHN0cm9rZTogI2UyZmEwMDtcbiAgc3Ryb2tlLXdpZHRoOjU7XG4gIG9wYWNpdHk6IDAuMztcbn1cbi5tYXJnaW5maWVsZCAuaG93ZXJlZF9saW5lIHtcbiAgZmlsbDogI2ZhMzAxYztcbiAgb3BhY2l0eTogMC4zO1xufVxuXG4ubWFyZ2luZmllbGQgLnNhbWVfd29yZCB7XG4gIGZpbGw6ICNjOWZhYzU7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLnRleHRfZmFkZW91dCB7XG4gIGZpbGw6ICNhNGE0YTQ7XG59XG5cbi5ob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbn1cbiJdfQ== */\"","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';\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 * 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 * 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 local_zoom: number = 1;\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 this.local_zoom = (this.max_height != -1 && this.max_width == -1) \n ? this.max_height/this.text_field.height : this.max_width/this.text_field.width;\n if (this.max_width == -1 && this.text_field.height < this.text_field.width){\n this.local_zoom = (window.innerWidth/2-100)/this.text_field.width;\n }\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}\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 display: inline-block;\\n height: 100%;\\n margin: 0;\\n}\\n#textfield {\\n display: inline-block;\\n /*width: 95%;*/\\n height: 100%;\\n margin: 0;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wYWdlLXZpZXcvcGFnZS12aWV3LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsU0FBUztHQUNULFVBQVU7R0FDVixtQkFBbUI7QUFDdEI7QUFDQTtHQUNHLHFCQUFxQjtBQUN4QjtBQUNBO0dBQ0csY0FBYztHQUNkLFdBQVc7R0FDWCxnQkFBZ0I7QUFDbkI7QUFDQTtHQUNHLHFCQUFxQjtHQUNyQixVQUFVO0dBQ1YsWUFBWTtHQUNaLFNBQVM7QUFDWjtBQUNBO0dBQ0cscUJBQXFCO0dBQ3JCLFlBQVk7R0FDWixTQUFTO0FBQ1o7QUFDQTtHQUNHLHFCQUFxQjtHQUNyQixjQUFjO0dBQ2QsWUFBWTtHQUNaLFNBQVM7QUFDWiIsImZpbGUiOiJhcHAvcGFnZS12aWV3L3BhZ2Utdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3BhZ2Uge1xuICAgd2lkdGg6IDEwMCU7XG4gICBtYXJnaW46IDA7XG4gICBwYWRkaW5nOiAwO1xuICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5pbmxpbmUge1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmJyZWFrbGluZSB7XG4gICBkaXNwbGF5OiBibG9jaztcbiAgIGhlaWdodDogNTAlO1xuICAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cbi5nYXAge1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgd2lkdGg6IDFweDtcbiAgIGhlaWdodDogMTAwJTtcbiAgIG1hcmdpbjogMDtcbn1cbiNtYXJnaW4ge1xuICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgaGVpZ2h0OiAxMDAlO1xuICAgbWFyZ2luOiAwO1xufVxuI3RleHRmaWVsZCB7XG4gICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAvKndpZHRoOiA5NSU7Ki9cbiAgIGhlaWdodDogMTAwJTtcbiAgIG1hcmdpbjogMDtcbn1cbiJdfQ== */\"","import { Component, Input, OnInit, OnChanges} from '@angular/core';\nimport { externalAssignClass, externalAssignStyle, Configuration, Identifier, Image, Line, TextField, TextByForeignHand, Word} from './models';\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 /**\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 (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 * 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 /**\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 * 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() 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.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 && this.first_image.transform != null){\n this.updateLines(this.first_words, this.first_lines)\n }\n if (this.second_image != null && this.second_image != undefined && this.second_image.transform != null){\n this.updateLines(this.second_words, this.second_lines)\n }\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 private updateLines(words: Word[], lines: Line[]) {\n for (var i = 0; i < lines.length; i++){\n if (words.filter(word =>word.line == lines[i].id).length > 0){\n lines[i].top = words.filter(word =>word.line == lines[i].id).map(word =>Number(word.top)).sort(function(a,b){ return a-b; })[0]\n lines[i].bottom = words.filter(word =>word.line == lines[i].id).map(word =>Number(word.top)+Number(word.height)).sort(function(a,b){ return b-a; })[0]\n }\n }\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 { NgxMatStandoffMarkupModule } from '../lib/ngx-mat-standoff-markup.module';\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 class Matrix {\n private readonly offset: number = -140;\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\n constructor(matrix_string: string, zoomFactor?: number){\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 if (zoomFactor != null){\n this.matrix[this.E] = zoomFactor*this.offset\n this.matrix[this.F] = zoomFactor*this.offset\n }\n }\n\n public toString(): string {\n return 'matrix(' + this.matrix.map(n =>String(n)).join(' ') + ')'\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wYWdlLXZpZXcvdGV4dGZpZWxkLWNvbXBvbmVudC90ZXh0ZmllbGQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsVUFBVTtFQUNWLFlBQVk7QUFDZDtBQUNBO0VBQ0UsYUFBYTtFQUNiLFlBQVk7QUFDZDtBQUNBO0VBQ0UsYUFBYTtFQUNiLFlBQVk7QUFDZDtBQUNBO0VBQ0UsYUFBYTtFQUNiLFlBQVk7QUFDZDtBQUNBO0VBQ0UsVUFBVTtFQUNWLFlBQVk7QUFDZDtBQUNBO0VBQ0UsWUFBWTtBQUNkO0FBQ0E7R0FDRyxXQUFXO0dBQ1gsVUFBVTtHQUNWLGlCQUFpQjtBQUNwQjtBQUNBO0dBQ0csWUFBWTtHQUNaLFVBQVU7R0FDVixZQUFZO0FBQ2Y7QUFDQTtFQUNFLGVBQWU7RUFDZixjQUFjO0VBQ2QsWUFBWTtBQUNkIiwiZmlsZSI6ImFwcC9wYWdlLXZpZXcvdGV4dGZpZWxkLWNvbXBvbmVudC90ZXh0ZmllbGQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50ZXh0ZmllbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjREFEQURBO1xufVxuLnRleHRmaWVsZCAuZGVsZXRlZCB7XG4gIGZpbGw6IGdyZXk7XG4gIG9wYWNpdHk6IDAuMztcbn1cbi50ZXh0ZmllbGQgLmhpZ2hsaWdodF9yZWQge1xuICBmaWxsOiAjZTIwMDAwO1xuICBvcGFjaXR5OiAwLjM7XG59XG4udGV4dGZpZWxkIC5oaWdobGlnaHRfeWVsbG93IHtcbiAgZmlsbDogI2UyZmEwMDtcbiAgb3BhY2l0eTogMC4zO1xufVxuLnRleHRmaWVsZCAuaGlnaGxpZ2h0X21hZ2VudGEge1xuICBmaWxsOiAjRkYwMEZGO1xuICBvcGFjaXR5OiAwLjM7XG59XG4udGV4dGZpZWxkIC5oaWdobGlnaHRfZm9yZWlnbl90ZXh0IHtcbiAgZmlsbDogYmx1ZTtcbiAgb3BhY2l0eTogMC41O1xufVxuLnRleHRmaWVsZCAudW5oaWdobGlnaHRlZCB7XG4gIG9wYWNpdHk6IDAuMDtcbn1cbi50ZXh0ZmllbGQgLmhpZ2hsaWdodF9wYXRoIHtcbiAgIHN0cm9rZTogcmVkO1xuICAgZmlsbDogbm9uZTtcbiAgIHN0cm9rZS13aWR0aDogMC4yO1xufVxuLnRleHRmaWVsZCAudW5oaWdobGlnaHRlZF9wYXRoIHtcbiAgIHN0cm9rZTogbm9uZTtcbiAgIGZpbGw6IG5vbmU7XG4gICBvcGFjaXR5OiAwLjA7XG59XG4udGV4dGZpZWxkIC5ib3JkZXIge1xuICBzdHJva2U6ICNlMmZhMDA7XG4gIHN0cm9rZS13aWR0aDo1O1xuICBvcGFjaXR5OiAwLjM7XG59XG4iXX0= */\"","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 './matrix';\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 * 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 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 behaviour 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 this.local_zoom = (this.max_height != -1 && this.max_width == -1)\n ? this.max_height/this.image.text_field.height : this.max_width/this.image.text_field.width;\n if (this.max_width == -1 && this.image_height < this.image_width){\n this.local_zoom = (window.innerWidth/2-100)/this.image.text_field.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 if(this.image.transform != null){\n this.local_zoom = this.max_height/this.image.text_field.width;\n let matrix = new Matrix(this.image.transform, this.local_zoom*this.zoomFactor);\n this.imageSpec.transform = matrix.toString()\n }\n this.viewBox = image_left + ' ' + image_top + ' ' + this.image_width + ' ' + this.image_height;\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9wcm9qZWN0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxtQkFBbUI7R0FDbkIsWUFBWTtBQUNmO0FBQ0E7R0FDRyxnQkFBZ0I7QUFDbkIiLCJmaWxlIjoiYXBwL3Byb2plY3QuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50ZXh0IHtcbiAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICB3aWR0aDogNjAwcHg7XG59XG4uaW1nIHtcbiAgIG1hcmdpbi10b3A6IDIwcHg7XG59XG4iXX0= */\"","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 \"#page {\\n margin-top: 10px;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC9yaGl6b21lLXZpZXctY29tcG9uZW50L3JoaXpvbWUtdmlldy1jb21wb25lbnQuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLGdCQUFnQjtBQUNuQiIsImZpbGUiOiJhcHAvcmhpem9tZS12aWV3LWNvbXBvbmVudC9yaGl6b21lLXZpZXctY29tcG9uZW50LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjcGFnZSB7XG4gICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIl19 */\"","import { Component, OnInit } from '@angular/core';\nimport {ActivatedRoute, Params, Router} from '@angular/router';\nimport { TlnQueryParams} from '../models/models';\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 queryParams: TlnQueryParams;\n constructor(private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n ngOnInit() {\n this.activatedRoute.queryParams.subscribe( (queryParams: Params ) => {\n this.queryParams = new TlnQueryParams(\n queryParams.navBarOpenState,\n queryParams.navContext,\n queryParams.manuscript,\n queryParams.page,\n queryParams.selectedLines,\n queryParams.selectedWords,\n queryParams.viewMode,\n queryParams.fullscreen,\n queryParams.zoom\n );\n });\n\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport {TlnQueryParams, NavTreeDef } from '../models/models';\nimport * as _ from 'lodash';\nimport {Subscription} from 'rxjs';\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) {\n this.router.navigate([], { relativeTo: this.activatedRoute, queryParams: qParams, queryParamsHandling: 'merge' });\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);\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);\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'});\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 .subscribe(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 subject of the where clause\n *\n * @param itemIri: The iri of the selected resource\n * @param baseQuery: name of the query to parametrize\n * @returns the query for the resource.\n */\n public parametrizeQueryWithItem(baseQuery: string, itemIri: string) {\n const parsedQuery = this.parser.parse(baseQuery);\n // console.log('parsedQuery', parsedQuery);\n // parametrize/reset the subject iri to the word's iri we like to query for\n const resourceOfInterest = {'termType': 'NamedNode', 'value': decodeURI(itemIri) };\n parsedQuery.where[0].triples[0].subject = resourceOfInterest;\n // generate the new query string and return it\n // console.log('parametrized query', this.sparqlGenerator.stringify(parsedQuery));\n return this.sparqlGenerator.stringify(parsedQuery);\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 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 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_RESULT_INDEX_PARAM: string = 'resutlIndex';\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 zoom.\n **/\nexport const TLN_ZOOM_PARAM: string = 'zoom';\n","import { OnInit, EventEmitter} from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { BasicResultBindingElement, AskResult} from './datatypes/basic_datatype';\nimport { DataProcessor, 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}\n/**\n * This class retrieves data from a query service and instantiates it using \n * corresponding handlers.\n **/\nexport class DataHandler {\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(private 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 /**\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 let handler = this[key]['handler'];\n if (this.debug && key == 'textVersions' ) {\n //console.log(this[key]['handler'], key, iri);\n //console.log(handler.getQuery(iri, handler.query_key))\n //console.log(this[key]['service']);\n }\n let is_target_array = Array.isArray(this.component[key]);\n if (!is_target_array){\n this.queryService.getData(handler.getQuery(iri, handler.query_key)).pipe(takeUntil(this.stop_processing) || first()).subscribe(results => {\n this.component[key] = handler.convertData(results, iri, this[key]['service'])[0];\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 } else {\n this.queryService.getData(handler.getQuery(iri, handler.query_key)).pipe(takeUntil(this.stop_processing)).subscribe(results => {\n this.component[key] = (handler.use_id) ? handler.convertData(results, iri, this[key]['service']) : handler.convertData(results,null, this[key]['service']);\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 }\n this.processing_finished.emit(true);\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\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 }\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 **/\ninterface 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}\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 /**\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 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 /**\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 } from './basic_datatype';\n/**\n * This is the 'earlier version' stub instantiation of an element of {@link /interfaces/FusekiResults.html|FusekiResults}.\n * It extends {@link /classes/BasicResultBindingElement.html|BasicResultBindingElement}.\n **/\nexport class TlnEarlierVersionStub 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 ?word tln:wordHasEarlierVersion ?id.\n ?id tln:hasText ?text.\n }`;\n /**\n * text of earlier version\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 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 WHERE {\n ?word (tln:wordHasWordParts/rdf:rest*/rdf:first/tln:overwritesWord|tln:overwritesWord) ?id. \n ?id tln:hasText ?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 { TlnPositionalObject } from './positional_object';\nimport { TextByForeignHand } 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 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 ?transform WHERE {\n ?page tln:hasMarkForeignHands/rdf:rest*/rdf:first ?id.\n ?id tln:textOfForeignHands/tln:textHasContent ?text;\n tln:penOfForeignHands ?pen;\n tln:hasTranskriptionPosition ?tp.\n \t?tp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n OPTIONAl { ?tp tln:hasTransform ?transform.}\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 /**\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 }\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 ?transform WHERE {\n ?page tln:hasMarkForeignHands/rdf:rest*/rdf:first ?id.\n ?id tln:textOfForeignHands/tln:textHasContent ?text;\n tln:penOfForeignHands ?pen;\n tln:hasFaksimilePosition ?fp.\n \t?fp tln:hasLeft ?left; tln:hasTop ?top; tln:hasWidth ?width; tln:hasHeight ?height.\n OPTIONAl { ?fp tln:hasTransform ?transform.}\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 } 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 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 ?cssStyleTag ?startIndex ?endIndex WHERE {\n ?manuscript tln:hasDescription ?id.\n ?id tln:textHasContent ?text.\n OPTIONAL { ?id tln:textHasMarkup ?description_markup.\n ?description_markup stoff:hasCSS ?cssStyleTag;\n stoff:standoffMarkupHasStartIndex ?startIndex;\n stoff:standoffMarkupHasEndIndex ?endIndex.}\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 ?cssStyleTag ?startIndex ?endIndex 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 ?cssStyleTag;\n stoff:standoffMarkupHasStartIndex ?startIndex;\n stoff:standoffMarkupHasEndIndex ?endIndex.}\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 { 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 {\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 ?cssStyleTag ?startIndex ?endIndex WHERE {\n ?word homotypic:hasMarkup ?id. \n ?id stoff:hasCSS ?cssStyleTag;\n stoff:standoffMarkupHasStartIndex ?startIndex;\n stoff:standoffMarkupHasEndIndex ?endIndex.\n } `;\n /**\n * one or multiple css style tags like 'font-weight: bold;' or 'font-weight: bold; font-style: italic'\n **/\n cssStyleTag: string;\n /** \n * character where the style ends.\n **/\n endIndex: number; // character where the style/class ends\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 startIndex: 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.cssStyleTag = this.getData4Key('cssStyleTag');\n this.endIndex = this.getData4Key('endIndex');\n this.startIndex = this.getData4Key('startIndex');\n }\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 this.cssStyleTag = this.cssStyleTag.replace(this.regex,'') + 'filter: invert(1);';\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 ?cssStyleTag ?startIndex ?endIndex ?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 ?cssStyleTag;\n stoff:standoffMarkupHasStartIndex ?startIndex;\n stoff:standoffMarkupHasEndIndex ?endIndex.\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 { BasicResultBindingElement, FusekiResults} from './basic_datatype';\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}\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 a tln:Page;\n tln:hasNumber ?number; \n tln:hasPseudoText ?fulltext.\n FILTER regex(?fulltext, \"#find#\", \"s\").\n ?manuscript a tln:ArchivalManuscriptUnity;\n tln:hasManuscriptType \"Mappe\";\n tln:hasPages/rdf:rest*/rdf:first ?id;\n tln:hasTitle ?title.\n ?id 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 #FILTER().\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[]) {\n this.results = this.results.filter(result =>searchTerms.every(searchText =>result.words.filter(word =>word.text.match('^[^\\w\\s]*' + searchText + '.*')).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 key will be ignored. \n **/\n public static getQuery(find?: string, key?: string): string {\n if(find == undefined || find == null){\n return this.query;\n }\n let words = find.split(' ')\n let find_regex = words.join('.*') + '.*'\n let filter = 'FILTER regex(?text, \"^[^\\\\\\\\w]?(' + words.join('.*|') + '.*)\")';\n let query = this.query.replace('#find#', find_regex).replace('#FILTER()', filter);\n //console.log(query);\n return query;\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));\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 { 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 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\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 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 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 OPTIONAl { ?fp tln:hasTransform ?transform.}\n OPTIONAl { ?id tln:hasEditedText ?edited_text.}\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 } 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 (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 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 (Array.isArray(this[key]) && this[key].length > 0){\n newRouterParam[paramsKey] = JSON.stringify(this[key]);\n } else {\n newRouterParam[paramsKey] = this[key];\n }\n }\n }\n for(let key of Object.keys(this.routerParams)){\n if(newRouterParam[key] == null){\n newRouterParam[key] = this.routerParams[key];\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 });\n window.open(link.toString(), '_blank')\n } else {\n this.router.navigate([ parentPath + '/' + this.currentRoute], { queryParams: newRouterParam });\n }\n });\n } else {\n if (launch != undefined && launch){\n let link = this.router.createUrlTree([ this.currentRoute], { queryParams: newRouterParam });\n window.open(link.toString(), '_blank')\n } else {\n this.router.navigate([ this.currentRoute], { queryParams: newRouterParam });\n }\n }\n }\n}\n","export { TlnQueryService } 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsWUFBWTtHQUNaLFNBQVM7R0FDVCxVQUFVO0dBQ1YsbUJBQW1CO0FBQ3RCO0FBQ0E7R0FDRyxnQkFBZ0I7Q0FDbEI7QUFFRDtHQUNHLGdCQUFnQjtHQUNoQixnQkFBZ0I7QUFDbkI7QUFDQTtHQUNHLGVBQWU7QUFDbEIiLCJmaWxlIjoiYXBwL3Rsbi1lZGl0aW9uL3Rsbi1jcm9zc3JlZi9uYXZpZ2F0aW9uL25hdmlnYXRpb24uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIiNuYXZpIHtcbiAgIHdpZHRoOiAxMDAlO1xuICAgaGVpZ2h0OiA1MHB4O1xuICAgbWFyZ2luOiAwO1xuICAgcGFkZGluZzogMDtcbiAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uc2VhcmNoIHtcbiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gfVxuXG4ubWF0LWJ1dHRvbi5taW4td2lkdGgge1xuICAgbWluLXdpZHRoOiAxMjBweDtcbiAgIG1heC13aWR0aDogMTIwcHg7XG59XG4uZGVmYXVsdC1tb3VzZSB7XG4gICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4iXX0= */\"","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, TlnQueryService } 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: TlnQueryService, 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('current_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: 'filter'\n})\nexport class FilterPipe 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvcGFnZS12ZXJzaW9uLXZpZXcvcGFnZS12ZXJzaW9uLXZpZXcuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsY0FBYztBQUNoQjs7QUFFQTtFQUNFLFdBQVc7QUFDYiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLWNyb3NzcmVmL3BhZ2UtdmVyc2lvbi12aWV3L3BhZ2UtdmVyc2lvbi12aWV3LmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZXhhbXBsZS1yYWRpby1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1hcmdpbjogMTVweCAwO1xufVxuXG4uZXhhbXBsZS1yYWRpby1idXR0b24ge1xuICBtYXJnaW46IDVweDtcbn1cbiJdfQ== */\"","import { Component, Input, OnInit } 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() filterGeneticOrder: string;\n @Input() bottomSheetRef: MatBottomSheetRef;\n @Input() parentActivatedRoute: ActivatedRoute;\n current_manuscript_iri: string;\n current_genetic_order: string;\n contextView: string;\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 super.ngOnInit();\n }\n private openCrossRef(geneticOrder: TlnTextGeneticOrder){\n this.current_genetic_order = geneticOrder.id; \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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLWNyb3NzcmVmL3BhZ2UtdmVyc2lvbi12aWV3L3Rsbi1wYWdlLXZlcnNpb24tdmlldy5jb21wb25lbnQuY3NzIn0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { TlnQueryService } 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 styleUrls: ['./tln-page-version-view.component.css']\n})\nexport class TlnPageVersionViewComponent implements OnInit {\n @Input() current_iri: string;\n dataHandler: DataHandler = new DataHandler(this);\n geneticOrders: TlnTextGeneticOrder[] = [];\n\n\n constructor(private queryService: TlnQueryService) { }\n\n ngOnInit() {\n this.dataHandler.addHandler('geneticOrders', { 'handler': TlnTextGeneticOrder});\n this.dataHandler.setQueryService(this.queryService);\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvdGxuLWNyb3NzcmVmLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsa0JBQWtCO0dBQ2xCLFFBQVE7R0FDUixTQUFTO0FBQ1o7QUFDQSxrQkFDNEIsMEJBQTBCO0VBQ3BELG9CQUFvQixNQUFNLFlBQVk7RUFDdEMsZUFBZTtBQUNqQjtBQUNBO0dBQ0csaUJBQWlCO0FBQ3BCO0FBQ0E7R0FDRyxpQkFBaUI7QUFDcEI7QUFDQTtHQUNHLGtCQUFrQjtHQUNsQixTQUFTO0dBQ1QsWUFBWTtHQUNaLFlBQVk7R0FDWixrQkFBa0I7QUFDckI7QUFDQTtHQUNHLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csWUFBWTtBQUNmO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIsUUFBUTtHQUNSLFdBQVc7QUFDZDtBQUNBO0dBQ0csY0FBYztBQUNqQjtBQUNBO0dBQ0csZ0JBQWdCO0dBQ2hCLDJCQUEyQjtHQUMzQixhQUFhO0dBQ2Isa0JBQWtCO0dBQ2xCLFVBQVU7R0FDVixVQUFVO0FBQ2I7QUFDQTtHQUNHLDJCQUEyQjtBQUM5QjtBQUNBO0dBQ0csa0JBQWtCO0dBQ2xCLGdCQUFnQjtHQUNoQixTQUFTO0dBQ1QsWUFBWTtHQUNaLFdBQVc7R0FDWCwyQkFBMkI7R0FDM0IsVUFBVTtBQUNiO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIsWUFBWTtHQUNaLFVBQVU7R0FDVixVQUFVO0FBQ2I7QUFDQTtHQUNHLFdBQVc7R0FDWCxnQkFBZ0I7R0FDaEIsa0JBQWtCO0dBQ2xCLFlBQVk7R0FDWiwyQkFBMkI7R0FDM0IsVUFBVTtBQUNiO0FBQ0E7R0FDRyxXQUFXO0dBQ1gsZ0JBQWdCO0FBQ25CO0FBQ0E7R0FDRyxlQUFlO0FBQ2xCIiwiZmlsZSI6ImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvdGxuLWNyb3NzcmVmLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjcGFnZSB7XG4gICB3aWR0aDogMTAwJTtcbiAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgIHRvcDogMHB4O1xuICAgbGVmdDogMHB4O1xufVxuLmdyaWQtY29udGFpbmVye1xuICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjsgIC8qIENocm9tZSwgU2FmYXJpLCBPcGVyYSAqL1xuICAtbW96LWNvbHVtbi1jb3VudDogMjsgICAgIC8qIEZpcmVmb3ggKi9cbiAgY29sdW1uLWNvdW50OiAyO1xufVxuLmV4dHJhLXNwYWNlIHtcbiAgIG1hcmdpbi10b3A6ICA0NXB4O1xufVxuLnBhZ2UtY3Jvc3NyZWYtdGl0bGUge1xuICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG4ucHJldmlldyB7XG4gICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICB0b3A6IDYwcHg7XG4gICB3aWR0aDogNDAwcHg7XG4gICBoZWlnaHQ6IDEwMCU7XG4gICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uaWNvbiB7XG4gICBtYXJnaW4tbGVmdDogNXB4O1xufVxuLmNlbnRlcmVkIHtcbiAgIG1hcmdpbjogYXV0bztcbn1cbi50ZXh0IHtcbiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgIHRvcDogMHB4O1xuICAgbGVmdDogNDAwcHg7XG59XG4ucGFnZS12aWV3IHtcbiAgIG92ZXJmbG93OiBhdXRvO1xufVxuLmV4dGVybmFsIHtcbiAgIG1hcmdpbi10b3A6IDM1cHg7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG4gICBoZWlnaHQ6IDEwMHB4O1xuICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgbGVmdDogODBweDtcbiAgIHotaW5kZXg6IDI7XG59XG4uaGlnaGxpZ2h0IHtcbiAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTtcbn1cbi50ZXh0LW5hdmkge1xuICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgbWFyZ2luLXRvcDogLTNweDtcbiAgIGxlZnQ6IDBweDtcbiAgIGhlaWdodDogMzhweDtcbiAgIHdpZHRoOiAxMDAlO1xuICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlO1xuICAgei1pbmRleDogMTtcbn1cbi5jbG9zZS10ZXh0IHtcbiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgIGhlaWdodDogMzhweDtcbiAgIHJpZ2h0OiAwcHg7XG4gICB6LWluZGV4OiAyO1xufVxuLnBhZ2UtbmF2aSB7XG4gICBmbG9hdDogbGVmdDtcbiAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gICBoZWlnaHQ6IDM4cHg7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG4gICB6LWluZGV4OiAyO1xufVxuLmljb24tYnV0dG9uIHtcbiAgIHdpZHRoOiAxNXB4O1xuICAgbWFyZ2luLWxlZnQ6IDNweDtcbn1cbi5kZWZhdWx0LW1vdXNlIHtcbiAgIGN1cnNvcjogZGVmYXVsdDtcbn1cbiJdfQ== */\"","import { Component, OnInit, 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 { 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, TlnQueryService } 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 styleUrls: ['./tln-crossref.component.css']\n})\nexport class TlnCrossrefComponent extends RouteUpdater implements DataProcessor {\n /**\n * OPTIONAL pass a queryService with method \n * {@link /interfaces/TlnQueryServiceInterface.html#getData|getData}\n * to TlnPageViewComponent.\n **/\n @Input() queryService: 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\n constructor(private pageViewService: PageViewService, private localQueryService: TlnQueryService, 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 let 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(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 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.selectedTextVersions.push(textVersion);\n } else {\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 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 (this.contextView == this.PAGE_CONTEXT_VIEW \n && (this.contextView != old_context_view || (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.contextView == this.MANUSCRIPT_CONTEXT_VIEW \n && (this.contextView != old_context_view || (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 if (this.contextView == this.PAGE_CONTEXT_VIEW \n && (this.contextView != old_context_view || \n (this.current_genetic_order_iri != null && (this.textVersions.length == 0 || this.current_genetic_order_iri != old_genetic_order_iri)))){\n this.dataHandler.resetData('textVersions')\n this.dataHandler.getData('textVersions', this.current_genetic_order_iri);\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvdmVyc2lvbi12aWV3L3ZlcnNpb24tdmlldy5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0dBQ0csMEJBQTBCO0FBQzdCIiwiZmlsZSI6ImFwcC90bG4tZWRpdGlvbi90bG4tY3Jvc3NyZWYvdmVyc2lvbi12aWV3L3ZlcnNpb24tdmlldy5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmhpZ2hsaWdodCB7XG4gICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiJdfQ== */\"","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 } from '@angular/core';\nimport { 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 { NgxMatStandoffMarkupModule } from '../lib/ngx-mat-standoff-markup.module';\nimport { PageViewService } from '../page-view/page-view.service';\nimport { PageViewModule } from '../page-view/page-view.module';\nimport { TlnPageViewComponent } from './tln-page-view.component';\nimport { TlnQueryService } 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 { FilterPipe } 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 { 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 { PageResultFilterPipe } from './tln-fulltext/page-result-filter.pipe';\n\n\n@NgModule({\n declarations: [FulltextNavigationComponent, TlnPageViewComponent, ToolTipComponent, TlnViewerNavigation, TlnInformationComponent, TlnCrossrefComponent, VersionViewComponent, PageVersionViewComponent, NavigationComponent, FilterPipe, TlnPageVersionViewComponent, TlnManuscriptViewComponent, TlnFulltextComponent, ResultPipePipe, SearchComponent, ToggleNavigationComponent, ZoomComponent, ZoomPipe, OpenInViewerComponent, DebugPipe, TlnHeightDirective, PageResultFilterPipe],\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 MatProgressSpinnerModule,\n MatPaginatorModule,\n MatRadioModule,\n MatSelectModule,\n MatSidenavModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n BrowserModule,\n CommonModule,\n FormsModule,\n NgxMatStandoffMarkupModule,\n PageViewModule\n ],\n exports: [\n DebugPipe,\n FulltextNavigationComponent,\n NavigationComponent,\n ToolTipComponent,\n TlnCrossrefComponent,\n TlnHeightDirective,\n TlnManuscriptViewComponent,\n TlnPageViewComponent,\n TlnViewerNavigation\n ], \n providers: [\n PageViewService,\n TlnQueryService\n ],\n entryComponents: [TlnInformationComponent]\n})\nexport class TlnEditionModule { }\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tZnVsbHRleHQvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsWUFBWTtHQUNaLFNBQVM7R0FDVCxVQUFVO0dBQ1YsbUJBQW1CO0FBQ3RCIiwiZmlsZSI6ImFwcC90bG4tZWRpdGlvbi90bG4tZnVsbHRleHQvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIjbmF2aSB7XG4gICB3aWR0aDogMTAwJTtcbiAgIGhlaWdodDogNTBweDtcbiAgIG1hcmdpbjogMDtcbiAgIHBhZGRpbmc6IDA7XG4gICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuIl19 */\"","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\nexport interface ResultRange {\n start: number;\n end: number;\n}\n\n@Pipe({\n name: 'pageResultFilter'\n})\nexport class PageResultFilterPipe implements PipeTransform {\n\n transform(results: FoundPage[], range: ResultRange): FoundPage[] {\n if (results.length <= range.start){\n return results;\n }\n return results.slice(range.start, range.end);\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\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tZnVsbHRleHQvdGxuLWZ1bGx0ZXh0LmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxVQUFVO0dBQ1Ysa0JBQWtCO0dBQ2xCLFFBQVE7R0FDUixTQUFTO0dBQ1QsWUFBWTtHQUNaLGlCQUFpQjtBQUNwQjtBQUNBO0dBQ0csV0FBVztHQUNYLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csV0FBVztHQUNYLGdCQUFnQjtHQUNoQixrQkFBa0I7R0FDbEIsWUFBWTtHQUNaLDJCQUEyQjtHQUMzQixVQUFVO0FBQ2I7QUFDQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLGdCQUFnQjtHQUNoQixjQUFjO0FBQ2pCO0FBQ0E7R0FDRyxrQkFBa0I7R0FDbEIsU0FBUztHQUNULFdBQVc7QUFDZDtBQUNBO0dBQ0csa0JBQWtCO0dBQ2xCLFNBQVM7R0FDVCxZQUFZO0dBQ1osWUFBWTtHQUNaLGtCQUFrQjtHQUNsQixrQkFBa0I7QUFDckI7QUFDQTtHQUNHLGlCQUFpQjtBQUNwQjtBQUNBO0dBQ0csZ0JBQWdCO0dBQ2hCLGlCQUFpQjtBQUNwQjtBQUNBO0VBQ0UsVUFBVTtBQUNaO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLFVBQVU7QUFDWiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLWZ1bGx0ZXh0L3Rsbi1mdWxsdGV4dC5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI3BhZ2Uge1xuICAgd2lkdGg6IDk4JTtcbiAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgIHRvcDogMHB4O1xuICAgbGVmdDogMHB4O1xuICAgaGVpZ2h0OiAxMDAlO1xuICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4uaWNvbi1idXR0b24ge1xuICAgd2lkdGg6IDE1cHg7XG4gICBtYXJnaW4tbGVmdDogM3B4O1xufVxuLnBhZ2UtbmF2aSB7XG4gICBmbG9hdDogbGVmdDtcbiAgIG1hcmdpbi10b3A6IC0zcHg7XG4gICBtYXJnaW4tYm90dG9tOiAxcHg7XG4gICBoZWlnaHQ6IDM4cHg7XG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7XG4gICB6LWluZGV4OiAyO1xufVxuLmRlZmF1bHQtbW91c2Uge1xuICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLnNtYWxsLWdyZXkge1xuICAgY29sb3I6IGxpZ2h0Z3JleTtcbiAgIGZvbnQtc2l6ZTogODAlO1xufVxuLnRleHQge1xuICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgdG9wOiAxMHB4O1xuICAgbGVmdDogNTAwcHg7XG59XG4uc2VhcmNoIHtcbiAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgIHRvcDogNjBweDtcbiAgIHdpZHRoOiA1MDBweDtcbiAgIGhlaWdodDogMTAwJTtcbiAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgIG1hcmdpbi1yaWdodDogMjBweDtcbn1cbi5leHRyYS1zcGFjZSB7XG4gICBtYXJnaW4tdG9wOiAgNDVweDtcbn1cbi50aXRsZSB7XG4gICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG4uZm9ybSB7XG4gIHdpZHRoOiA5NSU7XG59XG4uZnVsbC13aWR0aCB7XG4gIG1pbi13aWR0aDogMTUwcHg7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIHdpZHRoOiA4MCU7XG59XG4iXX0= */\"","import { Component, 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_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 { DataHandler } from '../data_handler';\nimport { FoundPage} from '../datatypes/search';\nimport { Mapping } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TlnQueryService } from '../services';\nimport { ResultRange } from './page-result-filter.pipe';\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 OnInit {\n protected currentRoute: string = TLN_SEARCH_ROUTE;\n current_page_iri: string;\n current_manuscript_unity: string;\n dataHandler: DataHandler = new DataHandler(this);\n fullscreen: boolean;\n max_width: number = -1;\n max_height: number = -1;\n searchTerm: string;\n resultIndex: number = 0;\n resultLength: number = 5;\n resultRange: ResultRange = { start: 0, end: 4 }; \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 current_manuscript_unity: { param: TLN_MANUSCRIPT_PARAM, type: \"string\" },\n fullscreen: { param: TLN_FULLSCREEN_PARAM, type: \"boolean\" },\n }\n pages: FoundPage[] = [];\n private readonly margin_width: number = 280;\n private readonly initialPreviewWidth : number = 300;\n previewWidth: number = this.initialPreviewWidth;\n\n constructor(private tlnQueryService: TlnQueryService, 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.max_width = screen.availWidth - this.previewWidth - this.margin_width;\n this.max_height = screen.availHeight - 200;\n this.dataHandler.addHandler('pages', { 'handler': FoundPage});\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 super.ngOnInit();\n }\n private clearFindText() {\n this.searchTerm = '';\n this.pages = [];\n this.resultIndex = 0;\n super.updateParams();\n }\n private search(){\n this.resultIndex = 0;\n this.updateResultRange();\n super.updateParams();\n if (this.searchTerm != undefined && this.searchTerm != null && this.searchTerm != ''){\n this.dataHandler.resetData('pages');\n this.dataHandler.getData('pages', this.searchTerm);\n }\n }\n protected readParams(params: Params){\n let oldSearchTerm = this.searchTerm;\n let oldResultIndex = this.resultIndex;\n super.readParams(params);\n if (this.searchTerm != undefined && this.searchTerm != null && this.searchTerm != '' && this.searchTerm != oldSearchTerm){\n this.resultIndex = 0;\n this.dataHandler.getData('pages', this.searchTerm);\n } \n if(oldResultIndex != this.resultIndex){\n this.updateResultRange();\n }\n }\n getSearchTerms(): string[] {\n return this.searchTerm.split(' '); \n }\n showResults(event: PageEvent){\n this.resultIndex = event.pageIndex; \n this.updateResultRange();\n this.updateParams()\n }\n private updateResultRange(){\n let newStart = this.resultIndex*this.resultLength\n let newEnd = newStart+this.resultLength;\n this.resultRange = { start: newStart, end: newEnd };\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 \".highlight {\\n text-decoration: underline;\\n}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4taW5mb3JtYXRpb24vdGxuLWluZm9ybWF0aW9uLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRywwQkFBMEI7QUFDN0IiLCJmaWxlIjoiYXBwL3Rsbi1lZGl0aW9uL3Rsbi1pbmZvcm1hdGlvbi90bG4taW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5oaWdobGlnaHQge1xuICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4iXX0= */\"","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 { ManuscriptUnity, NavigationPage} from '../models';\nimport { Mapping, RouteReader } from '../route-reader';\nimport { RouteUpdater } from '../route-updater';\nimport { TlnTextGeneticOrder} from '../datatypes/text_version';\nimport { TLN_PAGE_PARAM, TLN_MANUSCRIPT_PARAM, TLN_TEXT_GENETIC_ORDER_PARAM, TLN_CROSSREF_ROUTE } from '../constants';\nimport { TlnViewerNavigation } from '../tln-viewer-navigation/tln-viewer-navigation.component';\nimport { PositionalStyleMarkup, StyleSheetDef, StandoffMarkupSettings} from '../../lib/ngx-mat-standoff-markup.component';\nimport { TlnPositionalStyleMarkup, TlnFilteredPositionalStyleMarkup } from '../datatypes/positional-markup';\n\nexport interface ParentInformation {\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\n **/\n current_iri: string;\n /**\n * the current page\n **/\n current_page: NavigationPage;\n /**\n * the data handler of this component that retrieves\n * data and instantiates it according to their proper \n * datatypes.\n **/\n geneticOrders: TlnTextGeneticOrder[] = [];\n current_manuscript_iri: string;\n current_genetic_order: string;\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 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 this.current_page = data.page;\n this.geneticOrders = data.geneticOrders;\n this.current_manuscript_iri = data.manuscript_iri;\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n private openCrossRef(geneticOrder: TlnTextGeneticOrder){\n this.current_genetic_order = geneticOrder.id; \n this.current_iri = this.current_page.id\n this.updateParams();\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tbWFudXNjcmlwdC12aWV3L3Rsbi1tYW51c2NyaXB0LXZpZXcuY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLGNBQWM7R0FDZCxlQUFlO0dBQ2Ysa0JBQWtCO0FBQ3JCO0FBQ0E7R0FDRyxnQkFBZ0I7R0FDaEIsWUFBWTtHQUNaLG1CQUFtQjtHQUNuQixtQkFBbUI7QUFDdEI7QUFDQTtHQUNHLG1CQUFtQjtHQUNuQixZQUFZO0FBQ2Y7QUFDQTtHQUNHLG1CQUFtQjtHQUNuQixZQUFZO0FBQ2Y7QUFDQTtHQUNHLGlCQUFpQjtHQUNqQixlQUFlO0FBQ2xCIiwiZmlsZSI6ImFwcC90bG4tZWRpdGlvbi90bG4tbWFudXNjcmlwdC12aWV3L3Rsbi1tYW51c2NyaXB0LXZpZXcuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbImltZy50aHVtYiB7XG4gICBvdmVyZmxvdzogYXV0bztcbiAgIHBhZGRpbmc6IDAgMjBweDtcbiAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbnRkLmF1dGhvciB7XG4gICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgd2lkdGg6IDE1MHB4O1xuICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG50ZC50ZXh0IHtcbiAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICB3aWR0aDogNjAwcHg7XG59XG5wLnRleHQge1xuICAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgIHdpZHRoOiA3NjBweDtcbn1cbmJ1dHRvbi5ub3NwYWNlIHtcbiAgIC8qbWFyZ2luOiAtMTJweDsqL1xuICAgbWF4LXdpZHRoOiAxNXB4O1xufVxuIl19 */\"","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 { TlnQueryService } from '../services';\nimport { PositionalStyleMarkup, StyleSheetDef, StandoffMarkupSettings} from '../../lib/ngx-mat-standoff-markup.component';\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 cssDef: StyleSheetDef = { type: 'text', css: '' }\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 = new StandoffMarkupSettings(true, true, false, 1);\n pages: PageStub[] = [];\n\n constructor(private tlnQueryService: TlnQueryService, 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9kYXRhL2hvbWUva25pc3RlcjAvZ2l0aHVicy9OaWV0enNjaGVCZXRhL25pZXR6c2NoZS1iZXRhLWFwcC9zcmMvYXBwL3Rsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL29wZW4taW4tdmlld2VyLmNvbXBvbmVudC5zY3NzIiwiYXBwL3Rsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL29wZW4taW4tdmlld2VyLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0csV0FBQTtFQUNBLGdCQUFBO0FDQ0giLCJmaWxlIjoiYXBwL3Rsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL29wZW4taW4tdmlld2VyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmljb24tYnV0dG9uIHtcbiAgIHdpZHRoOiAxNXB4OyBcbiAgIG1hcmdpbi1sZWZ0OiAzcHg7XG59XG4iLCIuaWNvbi1idXR0b24ge1xuICB3aWR0aDogMTVweDtcbiAgbWFyZ2luLWxlZnQ6IDNweDtcbn0iXX0= */\"","import { Component, Input, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TLN_VIEWER_ROUTE, TLN_PAGE_PARAM, TLN_MANUSCRIPT_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 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 launch: boolean = false;\n page: NavigationPage;\n protected currentRoute: string = TLN_VIEWER_ROUTE;\n current_iri: string;\n current_manuscript_unity: string;\n protected mapping: Mapping = { current_iri: { param: TLN_PAGE_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 }\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tbmF2aWdhdGlvbi1lbGVtZW50cy9zZWFyY2guY29tcG9uZW50LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtHQUNHLGdCQUFnQjtBQUNuQiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLW5hdmlnYXRpb24tZWxlbWVudHMvc2VhcmNoLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VhcmNoIHtcbiAgIG1hcmdpbi1sZWZ0OiA4cHg7XG59XG4iXX0= */\"","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLW5hdmlnYXRpb24tZWxlbWVudHMvdG9nZ2xlLW5hdmlnYXRpb24uY29tcG9uZW50LmNzcyJ9 */\"","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}\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tbmF2aWdhdGlvbi1lbGVtZW50cy96b29tLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxlQUFlO0FBQ2xCO0FBQ0E7R0FDRyxlQUFlO0FBQ2xCO0FBQ0E7R0FDRyxnQkFBZ0I7QUFDbkIiLCJmaWxlIjoiYXBwL3Rsbi1lZGl0aW9uL3Rsbi1uYXZpZ2F0aW9uLWVsZW1lbnRzL3pvb20uY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi56b29tIHtcbiAgIG1heC13aWR0aDogMjBweDtcbn1cbi56b29tLWluIHtcbiAgIGN1cnNvcjogem9vbS1pbjtcbn1cbi56b29tLW91dCB7XG4gICBjdXJzb3I6IHpvb20tb3V0O1xufVxuIl19 */\"","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { 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 private readonly increment: number = 0.25;\n private readonly decrement: number = this.increment*-1;\n zoomFactor: number = 1;\n protected mapping: Mapping = { zoomFactor: { param: TLN_ZOOM_PARAM, type: \"number\" }}\n\n constructor(protected router: Router, protected activatedRoute: ActivatedRoute ) { \n super(router, activatedRoute);\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","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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLXBhZ2Utdmlldy5jb21wb25lbnQuY3NzIn0= */\"","import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport { TlnQueryServiceInterface } from './models';\nimport { TlnQueryService } 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_SELECTED_LINES_PARAM, TLN_VIEW_OPTION_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 dontShowReference: 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 selectedViewOption: { param: TLN_VIEW_OPTION_PARAM, type: \"string\" },\n selectedLines: { param: TLN_SELECTED_LINES_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: TlnQueryService, 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.dontShowReference = true;\n //this.configuration['*']['useExtendedTooltip'] = false;\n }\n super.ngOnInit();\n let tlnQueryService = (this.queryService != null) ? this.queryService : this.localQueryService;\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 { Injectable, EventEmitter } from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { TlnQueryServiceInterface } from './models';\n/**\n * This is the internal query service \n * that communicates with the SPARQL-endpoint.\n * */\n@Injectable()\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\n constructor(private http: HttpClient) { }\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 return this.http.post(this.baseUrl, query, httpOptions); \n }\n\n}\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90bG4tdmlld2VyLW5hdmlnYXRpb24vdGxuLXZpZXdlci1uYXZpZ2F0aW9uLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7R0FDRyxXQUFXO0dBQ1gsWUFBWTtHQUNaLFNBQVM7R0FDVCxVQUFVO0dBQ1YsbUJBQW1CO0FBQ3RCO0FBQ0E7R0FDRyxnQkFBZ0I7Q0FDbEI7QUFDRDtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csZ0JBQWdCO0dBQ2hCLGdCQUFnQjtBQUNuQjtBQUNBO0dBQ0csZUFBZTtBQUNsQiIsImZpbGUiOiJhcHAvdGxuLWVkaXRpb24vdGxuLXZpZXdlci1uYXZpZ2F0aW9uL3Rsbi12aWV3ZXItbmF2aWdhdGlvbi5jb21wb25lbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiI25hdmkge1xuICAgd2lkdGg6IDEwMCU7XG4gICBoZWlnaHQ6IDUwcHg7XG4gICBtYXJnaW46IDA7XG4gICBwYWRkaW5nOiAwO1xuICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5zZWFyY2gge1xuICAgbWFyZ2luLWxlZnQ6IDhweDtcbiB9XG4uem9vbSB7XG4gICBtYXgtd2lkdGg6IDIwcHg7XG59XG4uem9vbS1pbiB7XG4gICBjdXJzb3I6IHpvb20taW47XG59XG4uem9vbS1vdXQge1xuICAgY3Vyc29yOiB6b29tLW91dDtcbn1cbi5tYXQtYnV0dG9uLm1pbi13aWR0aCB7XG4gICBtaW4td2lkdGg6IDEyMHB4O1xuICAgbWF4LXdpZHRoOiAxMjBweDtcbn1cbi5kZWZhdWx0LW1vdXNlIHtcbiAgIGN1cnNvcjogZGVmYXVsdDtcbn1cbiJdfQ== */\"","import { Component, OnInit, Input, ElementRef } from '@angular/core';\nimport { Router, ActivatedRoute, Params } from '@angular/router';\nimport {MatBottomSheet, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport { 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_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, TlnQueryService } 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 styleUrls: ['./tln-viewer-navigation.component.css']\n})\nexport class TlnViewerNavigation 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 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 next_page: NavigationPage;\n navBarOpenState: boolean;\n showArchivalManuscriptUnity: boolean = false;\n dataHandler: DataHandler = new DataHandler(this);\n geneticOrders: TlnTextGeneticOrder[] = [];\n selectedLines: 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 selectedViewOption: { param: TLN_VIEW_OPTION_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\n constructor(el: ElementRef, private bottomSheet: MatBottomSheet, private pageViewService: PageViewService, private localQueryService: TlnQueryService, 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'] );\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 this.pageViewService.reference.subscribe(\n (newReference: Reference) => {\n this.updatePageToReference(newReference)\n }) \n 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 }\n private clearFindText() {\n this.findText = '';\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 if(this.current_manuscript_iri != null){\n //this.dataHandler.debug = true;\n this.dataHandler.conditionalAddHandler(IsReconstructedKonvolut.getQuery(this.current_manuscript_iri),\n 'current_page',{ handler: TlnNavigationPage}, { handler: TlnNavigationPage});\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 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 parentData: ParentInformation = {\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 });\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 \".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 -webkit-text-decoration-color: red;\\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC90bG4tZWRpdGlvbi90b29sdGlwL3Rvb2wtdGlwLmNvbXBvbmVudC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Q0FDQyxrQkFBa0I7Q0FDbEI7MEJBQ3lCO0NBQ3pCLG9CQUFvQjtDQUNwQixZQUFZO0NBQ1osZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixhQUFhO0FBQ2Q7QUFDQTtHQUNHLGNBQWM7QUFDakI7QUFDQTtHQUNHLGVBQWU7QUFDbEI7QUFDQTtHQUNHLDZCQUE2QjtHQUM3QixrQ0FBMEI7V0FBMUIsMEJBQTBCO0FBQzdCO0FBQ0E7R0FDRyxZQUFZO0FBQ2Y7QUFDQTtHQUNHLFlBQVk7R0FDWix1QkFBdUI7R0FDdkIsWUFBWTtBQUNmO0FBQ0E7R0FDRyxZQUFZO0dBQ1osc0JBQXNCO0dBQ3RCLFlBQVk7QUFDZjtBQUNBO0dBQ0csWUFBWTtHQUNaLHVCQUF1QjtHQUN2QixZQUFZO0FBQ2Y7QUFDQTtHQUNHLFlBQVk7R0FDWix1QkFBdUI7R0FDdkIsWUFBWTtBQUNmIiwiZmlsZSI6ImFwcC90bG4tZWRpdGlvbi90b29sdGlwL3Rvb2wtdGlwLmNvbXBvbmVudC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudG9vbHRpcCB7XG4gcG9zaXRpb246IGFic29sdXRlO1xuIC8qY29sb3I6IHdoaXRlO1xuIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyovXG4gYm9yZGVyLXJhZGl1czogIDEwcHg7XG4gcGFkZGluZzogOHB4O1xuIGZvbnQtc2l6ZTogMC44ZW07XG4gb3BhY2l0eTogMC42NTtcbiB6LWluZGV4OiAxMDAwO1xufVxuZGl2IC50ZXh0LCAuZWRpdGVkX3RleHQsIC5vdmVyd3JpdHRlbiB7XG4gICBkaXNwbGF5OiBibG9jaztcbn1cbnNwYW4ge1xuICAgZGlzcGxheTogaW5saW5lO1xufVxuLmRlbGV0ZWQge1xuICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICB0ZXh0LWRlY29yYXRpb24tY29sb3I6IHJlZDtcbn1cbi5ibGFja2ZnIHtcbiAgIGNvbG9yOiBibGFjaztcbn1cbi53b3JkIHsgXG4gICBvcGFjaXR5OiAwLjc7IFxuICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG4gICBjb2xvcjogd2hpdGU7XG59XG4uZm9yZWlnbkhhbmQgeyBcbiAgIG9wYWNpdHk6IDAuNTsgXG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOyBcbiAgIGNvbG9yOiB3aGl0ZTtcbn1cbi5jb250aW51YXRpb24geyBcbiAgIG9wYWNpdHk6IDEuMDsgXG4gICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgXG4gICBjb2xvcjogd2hpdGU7XG59XG4uY29weXJpZ2h0IHsgXG4gICBvcGFjaXR5OiAxLjA7IFxuICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IFxuICAgY29sb3I6IGJsYWNrO1xufVxuXG4iXX0= */\"","import { Component, Input, OnInit, OnChanges, ElementRef, ViewChild} from '@angular/core';\nimport { ConfigurableComponent, PageViewService, TlnQueryService } from '../services';\nimport { Configuration, Continuation, Copyright, 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 { DataHandler } from '../data_handler';\nimport { PositionalStyleMarkup, StyleSheetDef, StandoffMarkupSettings} from '../../lib/ngx-mat-standoff-markup.component';\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 styleUrls: ['./tool-tip.component.css']\n})\nexport class ToolTipComponent extends ConfigurableComponent implements OnInit, OnChanges {\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 /**\n * overwritten word\n **/\n overwrittenWord: TlnOverwrittenStub;\n /**\n * a line continuation\n **/\n continuation: Continuation;\n /**\n * a list of positional style markups.\n **/\n positionalStyleMarkups: PositionalStyleMarkup[] = [];\n continuation_words: TlnPreviewWord[] = [];\n cssDef: StyleSheetDef = { type: 'text', css: '' }\n mySettings = new StandoffMarkupSettings(true, true, false, 1);\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: TlnQueryService) { \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 });\n this.dataHandler.addHandler('overwrittenWord', { 'handler': TlnOverwrittenStub});\n this.dataHandler.addHandler('positionalStyleMarkups', { 'handler': TlnFilteredPositionalStyleMarkup });\n this.dataHandler.addHandler('sourceLineReference', { 'handler': TlnLineReference});\n this.dataHandler.addHandler('continuation_words', { 'handler': TlnPreviewWord});\n this.dataHandler.addHandler('wordStubs', ['earlier_version', 'overwrittenWord', 'positionalStyleMarkups' ]);\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.setContent('word', newWord);this.updateEarlierVersion() }\n );\n this.pageViewService.offHoveredWord.subscribe(\n (newWord: Word) => this.word = null \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 /**\n * reset data\n **/\n private resetData(){\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.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 { 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:///"}