mirror of https://github.com/penpot/penpot.git
🐛 Fix problem with plugins content attribute (#7835)
This commit is contained in:
parent
a4e6aa0588
commit
2c3becb408
|
|
@ -87,6 +87,7 @@ example. It's still usable as before, we just removed the example.
|
||||||
- Fix problem with plugins generating code for pages different than current one [Taiga #12312](https://tree.taiga.io/project/penpot/issue/12312)
|
- Fix problem with plugins generating code for pages different than current one [Taiga #12312](https://tree.taiga.io/project/penpot/issue/12312)
|
||||||
- Fix input confirmation behavior is not uniform [Taiga #12294](https://tree.taiga.io/project/penpot/issue/12294)
|
- Fix input confirmation behavior is not uniform [Taiga #12294](https://tree.taiga.io/project/penpot/issue/12294)
|
||||||
- Fix copy/pasting application/transit+json [Taiga #12721](https://tree.taiga.io/project/penpot/issue/12721)
|
- Fix copy/pasting application/transit+json [Taiga #12721](https://tree.taiga.io/project/penpot/issue/12721)
|
||||||
|
- Fix problem with plugins content attribute [Plugins #209](https://github.com/penpot/penpot-plugins/issues/209)
|
||||||
|
|
||||||
## 2.11.1
|
## 2.11.1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,3 +267,4 @@
|
||||||
(-> (stp/convert-to-path shape objects)
|
(-> (stp/convert-to-path shape objects)
|
||||||
(update :content impl/path-data))))
|
(update :content impl/path-data))))
|
||||||
|
|
||||||
|
(dm/export impl/decode-segments)
|
||||||
|
|
|
||||||
|
|
@ -565,6 +565,9 @@
|
||||||
(def check-content
|
(def check-content
|
||||||
(sm/check-fn schema:content))
|
(sm/check-fn schema:content))
|
||||||
|
|
||||||
|
(def decode-segments
|
||||||
|
(sm/lazy-decoder schema:segments sm/json-transformer))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; CONSTRUCTORS & PREDICATES
|
;; CONSTRUCTORS & PREDICATES
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@
|
||||||
(ns app.plugins.parser
|
(ns app.plugins.parser
|
||||||
(:require
|
(:require
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
|
[app.common.json :as json]
|
||||||
|
[app.common.types.path :as path]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[app.util.object :as obj]
|
[app.util.object :as obj]
|
||||||
[cuerdas.core :as str]))
|
[cuerdas.core :as str]))
|
||||||
|
|
@ -514,3 +516,8 @@
|
||||||
(case axis
|
(case axis
|
||||||
"horizontal" :y
|
"horizontal" :y
|
||||||
"vertical" :x))
|
"vertical" :x))
|
||||||
|
|
||||||
|
(defn parse-commands
|
||||||
|
[commands]
|
||||||
|
(-> (json/->clj commands)
|
||||||
|
(path/decode-segments)))
|
||||||
|
|
|
||||||
|
|
@ -1034,8 +1034,8 @@
|
||||||
(fn []
|
(fn []
|
||||||
(let [shape (u/locate-shape file-id page-id id)]
|
(let [shape (u/locate-shape file-id page-id id)]
|
||||||
(cond
|
(cond
|
||||||
(not (cfh/path-shape? shape))
|
(and (not (cfh/path-shape? shape)) (not (cfh/bool-shape? shape)))
|
||||||
(u/display-not-valid :makeMask (:type shape))
|
(u/display-not-valid :toD (:type shape))
|
||||||
|
|
||||||
:else
|
:else
|
||||||
(.toString (:content shape)))))
|
(.toString (:content shape)))))
|
||||||
|
|
@ -1488,13 +1488,37 @@
|
||||||
|
|
||||||
(cond-> (or (cfh/path-shape? data) (cfh/bool-shape? data))
|
(cond-> (or (cfh/path-shape? data) (cfh/bool-shape? data))
|
||||||
(crc/add-properties!
|
(crc/add-properties!
|
||||||
{:name "content"
|
{:name "commands"
|
||||||
|
:get #(-> % u/proxy->shape :content format/format-path-content)
|
||||||
|
:set
|
||||||
|
(fn [_ value]
|
||||||
|
(let [segments (parser/parse-commands value)]
|
||||||
|
(cond
|
||||||
|
(not (r/check-permission plugin-id "content:write"))
|
||||||
|
(u/display-not-valid :content "Plugin doesn't have 'content:write' permission")
|
||||||
|
|
||||||
|
(not (sm/validate path/schema:segments segments))
|
||||||
|
(u/display-not-valid :content segments)
|
||||||
|
|
||||||
|
:else
|
||||||
|
(let [selrect (path/calc-selrect segments)
|
||||||
|
content (path/from-plain segments)
|
||||||
|
points (grc/rect->points selrect)]
|
||||||
|
(st/emit! (dwsh/update-shapes
|
||||||
|
[id]
|
||||||
|
(fn [shape]
|
||||||
|
(-> shape
|
||||||
|
(assoc :content content)
|
||||||
|
(assoc :selrect selrect)
|
||||||
|
(assoc :points points)))))))))}
|
||||||
|
{:name "d"
|
||||||
:get #(-> % u/proxy->shape :content str)
|
:get #(-> % u/proxy->shape :content str)
|
||||||
:set
|
:set
|
||||||
(fn [_ value]
|
(fn [_ value]
|
||||||
(let [segments (if (string? value)
|
(let [segments
|
||||||
(svg.path/parse value)
|
(if (string? value)
|
||||||
value)]
|
(svg.path/parse value)
|
||||||
|
value)]
|
||||||
(cond
|
(cond
|
||||||
(not (r/check-permission plugin-id "content:write"))
|
(not (r/check-permission plugin-id "content:write"))
|
||||||
(u/display-not-valid :content "Plugin doesn't have 'content:write' permission")
|
(u/display-not-valid :content "Plugin doesn't have 'content:write' permission")
|
||||||
|
|
@ -1514,4 +1538,7 @@
|
||||||
(-> shape
|
(-> shape
|
||||||
(assoc :content content)
|
(assoc :content content)
|
||||||
(assoc :selrect selrect)
|
(assoc :selrect selrect)
|
||||||
(assoc :points points)))))))))}))))))
|
(assoc :points points)))))))))}
|
||||||
|
{:name "content"
|
||||||
|
:get #(.-d %)
|
||||||
|
:set (fn [self value] (set! (.-d self) value))}))))))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue