From bd870e7251ba1605941f889eb6a42d8b740dbbc4 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 11 Oct 2016 19:29:52 +0200 Subject: [PATCH] Add utils for work with dom file like objects. --- src/uxbox/util/dom/files.cljs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/uxbox/util/dom/files.cljs diff --git a/src/uxbox/util/dom/files.cljs b/src/uxbox/util/dom/files.cljs new file mode 100644 index 000000000..3aac54bf3 --- /dev/null +++ b/src/uxbox/util/dom/files.cljs @@ -0,0 +1,35 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) 2016 Andrey Antukh + +(ns uxbox.util.dom.files + "A interop helpers for work with files." + (:require [beicon.core :as rx] + [cuerdas.core :as str])) + +(defn- read-as-dataurl + [file] + (rx/create + (fn [sick] + (let [fr (js/FileReader.)] + (aset fr "onload" #(sick (rx/end (.-result fr)))) + (.readAsDataURL fr file)) + (constantly nil)))) + +(defn- retrieve-image-size + [data] + (println "data:" data) + (rx/create + (fn [sick] + (let [img (js/Image.)] + (aset img "onload" #(sick (rx/end [(.-width img) (.-height img)]))) + (set! (.-src img) data)) + (constantly nil)))) + +(defn get-image-size + "Get the real image size." + [file] + (->> (read-as-dataurl file) + (rx/flat-map retrieve-image-size)))