ソースを参照

add: 添加入口文件

liutian 1 年間 前
コミット
c72465ada8
1 ファイル変更93 行追加0 行削除
  1. 93 0
      packages/core/webviewer.js

+ 93 - 0
packages/core/webviewer.js

@@ -0,0 +1,93 @@
+const ComPDFKitViewer = {
+  init (options, element, optionsUrl) {
+    return new Promise((resolve) => {
+      element.addEventListener("ready", function ready () {
+        element.removeEventListener('ready', ready)
+        const iframeWindow = element.querySelector('iframe').contentWindow
+
+        Promise.resolve().then(function() {
+          resolve({
+            docViewer: iframeWindow.instance
+          })
+        })
+
+      })
+      const viewer = new Viewer(options, element, optionsUrl)
+    })
+  }
+}
+class Viewer {
+  constructor (options, element, optionsUrl) {
+    this.instance = null
+    this.initialDoc = options.initialDoc || null
+    this.element = element
+    element.addEventListener("ready", (function ready() {
+      element.removeEventListener("ready", ready)
+    }))
+    this.create()
+  }
+
+  _createEvent (e, t) {
+    let n;
+    try {
+      n = new CustomEvent(e, {
+          detail: t,
+          bubbles: true,
+          cancelable: true
+      })
+    } catch (o) {
+        (n = document.createEvent("Event")).initEvent(e, true, true),
+        n.detail = t
+    }
+    return n
+  }
+
+  create() {
+    if (this.initialDoc) {
+      this.initialDoc = encodeURIComponent(this.initialDoc)
+      this._create()
+    } else {
+      this._create()
+    }
+  }
+
+  _create () {
+    if (!this._trigger) {
+      this._trigger = function(e, t) {
+        var n = this._createEvent(e, t);
+        this.element.dispatchEvent(n)
+      }
+    }
+    this.createViewer()
+  }
+
+  createViewer () {
+    const self = this
+    let webviewerUrl = './webviewer/index.html'
+    if (this.initialDoc) {
+      webviewerUrl += "#d=\"".concat(decodeURIComponent(this.initialDoc)).concat("\"")
+    }
+    const iframe = document.createElement("iframe")
+    iframe.id = "webviewer-".concat(this.id)
+    iframe.src = webviewerUrl
+    iframe.title = "webviewer"
+    iframe.frameBorder = 0
+    iframe.width = "100%"
+    iframe.height = "100%"
+    iframe.setAttribute("allowfullscreen", true)
+    iframe.setAttribute("webkitallowfullscreen", true)
+    iframe.setAttribute("mozallowfullscreen", true)
+    this.iframe = iframe
+    this.options?.backgroundColor && iframe.setAttribute("data-bgcolor", this.options.backgroundColor),
+    this.options?.assetPath && iframe.setAttribute("data-assetpath", encodeURIComponent(this.options.assetPath)),
+    this.loadListener = function() {
+      var $iframe = self.iframe;
+      self.instance = $iframe.contentWindow.instance;
+      self._trigger("ready");
+    },
+    iframe.addEventListener("load", this.loadListener),
+    this.element.appendChild(iframe)
+  }
+}
+
+export default ComPDFKitViewer