From 8063119d3ee2182a595b2e53ee2bbc557a8a56c3 Mon Sep 17 00:00:00 2001
From: pacien
Date: Wed, 13 May 2020 00:18:46 +0200
Subject: viewer: add plain text file viewer

GitHub: closes #213
---
 viewer/src/components/LdPlainTextViewer.vue | 61 +++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 viewer/src/components/LdPlainTextViewer.vue

(limited to 'viewer/src/components/LdPlainTextViewer.vue')

diff --git a/viewer/src/components/LdPlainTextViewer.vue b/viewer/src/components/LdPlainTextViewer.vue
new file mode 100644
index 0000000..1dbd351
--- /dev/null
+++ b/viewer/src/components/LdPlainTextViewer.vue
@@ -0,0 +1,61 @@
+<!--
+-- ldgallery - A static generator which turns a collection of tagged
+--             pictures into a searchable web gallery.
+--
+-- Copyright (C) 2020  Pacien TRAN-GIRARD
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU Affero General Public License as
+-- published by the Free Software Foundation, either version 3 of the
+-- License, or (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU Affero General Public License for more details.
+--
+-- You should have received a copy of the GNU Affero General Public License
+-- along with this program.  If not, see <https://www.gnu.org/licenses/>.
+-->
+
+<template>
+  <!-- Outer div necessary for the resize handle to appear on Firefox. -->
+  <div :class="$style.content">
+    <!-- Using an iframe here to let the browser deal with content encoding detection. -->
+    <iframe :src="itemResourceUrl()" />
+  </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue } from "vue-property-decorator";
+
+@Component export default class LdPlainTextViewer extends Vue {
+  @Prop({ required: true }) readonly plainTextItem!: Gallery.PlainText;
+
+  itemResourceUrl(): string {
+    return this.$galleryStore.resourceRoot + this.plainTextItem.properties.resource;
+  }
+}
+</script>
+
+<style lang="scss" module>
+.content {
+  margin: auto; // Old-school horizontal centering.
+  width: 100%;
+  height: 100%;
+
+  // Allow the user to adjust the width of the text view for easier column reading.
+  resize: horizontal;
+  max-width: 100%; // Forbid overflow when resizing.
+  overflow: hidden; // Necessary for the resize handle to be shown in Chromium.
+  padding: .5em; // Necessary for the resize handle to be selectable on qutebrowser.
+
+  // Re-normalise page colour.
+  background-color: white;
+
+  & > iframe {
+    width: 100%;
+    height: 100%;
+  }
+}
+</style>
-- 
cgit v1.2.3

