diff --git a/.gitignore b/.gitignore index 60561d6bcf..15e8533e3f 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ /frontend/package-lock.json /frontend/resources/fonts/experiments /frontend/resources/public/* +/frontend/src/app/render_wasm/api/shared.js /frontend/storybook-static/ /frontend/target/ /frontend/test-results/ diff --git a/common/src/app/common/types/path.cljc b/common/src/app/common/types/path.cljc index be0e15b1aa..67d8031efb 100644 --- a/common/src/app/common/types/path.cljc +++ b/common/src/app/common/types/path.cljc @@ -190,10 +190,14 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defn get-points - "Returns points for the given segment, faster version of - the `content->points`." + "Returns points for the given content. Accepts PathData instances or + plain segment vectors. Returns nil for nil content." [content] - (some-> content segment/get-points)) + (when (some? content) + (let [content (if (impl/path-data? content) + content + (impl/path-data content))] + (segment/get-points content)))) (defn calc-selrect "Calculate selrect from a content. The content can be in a PathData diff --git a/common/src/app/common/types/path/impl.cljc b/common/src/app/common/types/path/impl.cljc index 8b2ed4a315..959a11bf6f 100644 --- a/common/src/app/common/types/path/impl.cljc +++ b/common/src/app/common/types/path/impl.cljc @@ -52,14 +52,15 @@ [target key & expr] (if (:ns &env) (let [target (with-meta target {:tag 'js})] - `(let [~'cache (.-cache ~target) - ~'result (.get ~'cache ~key)] - (if ~'result - (do - ~'result) - (let [~'result (do ~@expr)] - (.set ~'cache ~key ~'result) - ~'result)))) + `(let [~'cache (.-cache ~target)] + (if (some? ~'cache) + (let [~'result (.get ~'cache ~key)] + (if ~'result + ~'result + (let [~'result (do ~@expr)] + (.set ~'cache ~key ~'result) + ~'result))) + (do ~@expr)))) `(do ~@expr))) (defn- impl-transform-segment diff --git a/common/test/common_tests/types/path_data_test.cljc b/common/test/common_tests/types/path_data_test.cljc index 5e6298191e..672df228d8 100644 --- a/common/test/common_tests/types/path_data_test.cljc +++ b/common/test/common_tests/types/path_data_test.cljc @@ -279,6 +279,12 @@ (t/is (some? points)) (t/is (= 3 (count points)))))) +(t/deftest path-get-points-plain-vector-safe + (t/testing "path/get-points does not throw for plain vector content" + (let [points (path/get-points sample-content)] + (t/is (some? points)) + (t/is (= 3 (count points)))))) + (defn calculate-extremities "Calculate extremities for the provided content. A legacy implementation used mainly as reference for testing" diff --git a/docs/_includes/layouts/base.njk b/docs/_includes/layouts/base.njk index a4ecabe2e7..8bc9f9f663 100644 --- a/docs/_includes/layouts/base.njk +++ b/docs/_includes/layouts/base.njk @@ -70,9 +70,11 @@