mirror of
https://github.com/penpot/penpot.git
synced 2026-04-25 19:28:12 +00:00
38 lines
1.2 KiB
Clojure
38 lines
1.2 KiB
Clojure
;; 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) KALEIDOS INC
|
|
|
|
(ns app.plugins.image-data
|
|
(:require
|
|
[app.common.data.macros :as dm]
|
|
[app.config :as cf]
|
|
[app.util.http :as http]
|
|
[app.util.object :as obj]
|
|
[beicon.v2.core :as rx]))
|
|
|
|
(defn create-image-data
|
|
[{:keys [name width height mtype id keep-aspect-ratio] :as entry}]
|
|
(obj/reify {:name "ImageData"}
|
|
:name {:get (constantly name)}
|
|
:width {:get (constantly width)}
|
|
:height {:get (constantly height)}
|
|
:mtype {:get (constantly mtype)}
|
|
:id {:get #(when id (dm/str id))}
|
|
:keepAspectRatio {:get (constantly keep-aspect-ratio)}
|
|
|
|
:data
|
|
(fn []
|
|
(let [url (cf/resolve-file-media entry)]
|
|
(js/Promise.
|
|
(fn [resolve reject]
|
|
(->> (http/send!
|
|
{:method :get
|
|
:uri url
|
|
:response-type :blob})
|
|
(rx/map :body)
|
|
(rx/mapcat #(.arrayBuffer %))
|
|
(rx/map #(js/Uint8Array. %))
|
|
(rx/subs! resolve reject))))))))
|