Compare commits

..

57 Commits

Author SHA1 Message Date
Alejandro Alonso
2ded3211b5 🐛 Fix using cache on first zoom after pan 2025-12-30 09:49:12 +01:00
Alejandro Alonso
0bcec53ad3 🐛 Detecting situations where WebGL context is lost or no WebGL support 2025-12-30 09:47:48 +01:00
Alejandro Alonso
5e8d46e47b 🎉 Resize cache only when required 2025-12-30 09:47:48 +01:00
Alejandro Alonso
cc43f4c1af 🐛 Fix resize cache memory leak 2025-12-30 09:47:48 +01:00
alonso.torres
032c2c5edb 🐛 Fix problem when changing colors with multiple fonts 2025-12-30 09:47:48 +01:00
Alejandro Alonso
8df488d0b7 🐛 Fix object added in different page (#7988) 2025-12-30 09:47:48 +01:00
Alejandro Alonso
44df4aca48 🐛 Fix unmasking shapes (#7989) 2025-12-30 09:47:48 +01:00
Alonso Torres
c7b47f5d98 🐛 Fix font weight token (#7991) 2025-12-30 09:47:48 +01:00
Alejandro Alonso
1e2f87e8f7 🐛 Fix comment bubbles (#7990) 2025-12-30 09:47:48 +01:00
Belén Albeza
6586ab79e6 🐛 Fix text editor not getting focus back after font variant change 2025-12-30 09:47:48 +01:00
alonso.torres
5497fa2a66 🐛 Fix problems with alignments and margins 2025-12-30 09:47:48 +01:00
alonso.torres
afa43e35f4 🐛 Fix problem with flex fill size distribution 2025-12-30 09:47:48 +01:00
alonso.torres
33b8d4b04b 🐛 Fix problem with reflow layout 2025-12-30 09:47:48 +01:00
Alejandro Alonso
e9fd384d94 🐛 Fix too many active WEBGL contexts 2025-12-30 09:47:48 +01:00
alonso.torres
5561946a0a 🐛 Fix problem with border radius to path 2025-12-30 09:47:48 +01:00
Belén Albeza
153452a40c ♻️ Make SerializableResult to depend on From traits 2025-12-30 09:47:48 +01:00
alonso.torres
66aea88457 Calculate position data in wasm 2025-12-30 09:47:47 +01:00
Elena Torro
3493429b4e 🐛 Set layout data from set-object 2025-12-30 09:47:47 +01:00
Alejandro Alonso
886614ecab 🐛 Fix svg extract ids 2025-12-30 09:47:47 +01:00
Belén Albeza
fd9b4431f3 🐛 Fix text selection not being restore if it was only 1 word 2025-12-30 09:47:47 +01:00
Belén Albeza
38ffc809f2 🔧 Add formatting rules to the TextEditor 2025-12-30 09:47:47 +01:00
Alejandro Alonso
9b9dd57050 🎉 Improve svg import 2025-12-30 09:47:47 +01:00
Aitor Moreno
f4f3d9d8c3 🐛 Fix font-variant-id mixed value 2025-12-30 09:47:47 +01:00
Elena Torro
6eeec08331 🔧 Log performance when building using profile-macros 2025-12-30 09:47:47 +01:00
Elena Torro
b5da73f957 🔧 Rebuild indices on zoom change, not pan 2025-12-30 09:47:47 +01:00
Elena Torro
3fc6a70da6 🔧 Skip slow operations on fast render 2025-12-30 09:47:47 +01:00
Elena Torro
f3a442cf24 🔧 Support variants interactivity on the new render's UI 2025-12-30 09:47:47 +01:00
Elena Torro
cae9afc5b7 🐛 Fix default case on vertical align 2025-12-30 09:47:47 +01:00
Elena Torro
084c5141a2 🔧 Fix line height calculation 2025-12-30 09:47:47 +01:00
alonso.torres
422be8f4f5 🐛 Fix problem when exporting texts 2025-12-30 09:47:47 +01:00
Belén Albeza
28682e4c5c 🐛 Fix internal error while importing a library 2025-12-30 09:47:47 +01:00
Elena Torro
ecc63e5cec 🔧 Update rendering settings to smooth render 2025-12-30 09:47:47 +01:00
Aitor Moreno
be7d91a5c4 🐛 Fix applyStylesTo entire selection 2025-12-30 09:47:47 +01:00
Elena Torro
b2736be858 🐛 Fix italic variant 2025-12-30 09:47:47 +01:00
Elena Torro
3f4b7c5fcc 🐛 Do not merge fill styles 2025-12-30 09:47:47 +01:00
Elena Torro
f23724ddfe 🐛 Fix selectAll on mixed span styles 2025-12-30 09:47:47 +01:00
Elena Torro
bfb6d63a6d 🐛 Fix merge fill styles when there are multiple fills 2025-12-30 09:47:47 +01:00
alonso.torres
0fadcde413 🐛 Fix race condition with fix fonts patch 2025-12-30 09:47:47 +01:00
alonso.torres
95bf311c24 🐛 Fix race condition with text and type 2025-12-30 09:47:47 +01:00
alonso.torres
cbba2c6de1 🐛 Fix problem with boolean shapes updates 2025-12-30 09:47:45 +01:00
Belén Albeza
d4e09280ca 🐛 Fix viewport not being fully drawn on first load until a mouse hover 2025-12-30 09:46:48 +01:00
alonso.torres
307920168a 🐛 Fix problem with reordering layers 2025-12-30 09:46:48 +01:00
alonso.torres
5cbed12763 🐛 Fix outline with single click text creation 2025-12-30 09:46:48 +01:00
Elena Torro
bcbbbd0d5d 🐛 Fix create empty text on click regression 2025-12-30 09:46:48 +01:00
Aitor Moreno
4e33112e2c 🐛 Fix letter spacing applied to paragraph 2025-12-30 09:46:48 +01:00
alonso.torres
0349cc1859 🐛 Fix visual feedback on padding/margin/gaps modified 2025-12-30 09:46:48 +01:00
Aitor Moreno
922587bc9e Add text editor v2 integration tests 2025-12-30 09:46:48 +01:00
Elena Torro
d545de17a6 🔧 Normalize font attributes to support old formats 2025-12-30 09:46:48 +01:00
Alejandro Alonso
d30579aedb 🐛 Fix nested shadows clipping 2025-12-30 09:46:48 +01:00
alonso.torres
5db9b173c4 🐛 Fix problem with auto-size and element margins 2025-12-30 09:46:48 +01:00
alonso.torres
851d7d414a 🐛 Fix problem with grid layout editor 2025-12-30 09:46:48 +01:00
alonso.torres
af5b672c3e 🐛 Fix problems with flex layout in new render 2025-12-30 09:46:48 +01:00
alonso.torres
ce8aeb7028 🐛 Fix crash when cleanup 2025-12-30 09:46:48 +01:00
alonso.torres
b023184394 🐛 Fix problem with change gap/margin/padding 2025-12-30 09:46:48 +01:00
Belén Albeza
6ddce5bcba 🐛 Fix mismatch between fonts for rendered and selected text when no fallback fonts apply 2025-12-30 09:46:48 +01:00
Belén Albeza
d9680ea159 Fix playwright tests 2025-12-30 09:46:48 +01:00
Belén Albeza
56e956644c 🔧 Update google fonts list 2025-12-30 09:46:47 +01:00
4 changed files with 48 additions and 64 deletions

View File

@@ -1,14 +0,0 @@
name: _STAGING RENDER
on:
schedule:
- cron: '36 5-20 * * 1-5'
jobs:
build-bundle:
uses: ./.github/workflows/build-bundle.yml
secrets: inherit
with:
gh_ref: "staging-render"
build_wasm: "yes"
build_storybook: "yes"

View File

@@ -759,8 +759,13 @@
(h/call wasm/internal-module "_clear_shape_layout"))
(defn- set-shape-layout
[shape]
[shape objects]
(clear-layout)
(when (or (ctl/any-layout? shape)
(ctl/any-layout-immediate-child? objects shape)
(has-any-layout-prop? shape))
(set-layout-data shape))
(when (ctl/flex-layout? shape)
(set-flex-layout shape))
@@ -911,7 +916,7 @@
(perf/end-measure "set-view-box::zoom")))))
(defn set-object
[shape]
[objects shape]
(perf/begin-measure "set-object")
(let [shape (svg-filters/apply-svg-derived shape)
id (dm/get-prop shape :id)
@@ -976,7 +981,7 @@
(when (= type :text)
(set-shape-grow-type grow-type))
(set-shape-layout shape)
(set-shape-layout shape objects)
(set-shape-selrect selrect)
(let [pending_thumbnails (into [] (concat
@@ -1030,7 +1035,7 @@
(defn process-object
[shape]
(let [{:keys [thumbnails full]} (set-object shape)]
(let [{:keys [thumbnails full]} (set-object [] shape)]
(process-pending [shape] thumbnails full noop-fn)))
(defn set-objects
@@ -1045,7 +1050,7 @@
(loop [index 0 thumbnails-acc [] full-acc []]
(if (< index total-shapes)
(let [shape (nth shapes index)
{:keys [thumbnails full]} (set-object shape)]
{:keys [thumbnails full]} (set-object objects shape)]
(recur (inc index)
(into thumbnails-acc thumbnails)
(into full-acc full)))

View File

@@ -354,32 +354,32 @@
:is-fallback true}))
(def noto-fonts
{:japanese {:font-id "gfont-noto-sans-jp" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:chinese {:font-id "gfont-noto-sans-sc" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:korean {:font-id "gfont-noto-sans-kr" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:arabic {:font-id "gfont-noto-sans-arabic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:cyrillic {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:greek {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:hebrew {:font-id "gfont-noto-sans-hebrew" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:thai {:font-id "gfont-noto-sans-thai" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:devanagari {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:tamil {:font-id "gfont-noto-sans-tamil" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:latin-ext {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:vietnamese {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:armenian {:font-id "gfont-noto-sans-armenian" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:bengali {:font-id "gfont-noto-sans-bengali" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:cherokee {:font-id "gfont-noto-sans-cherokee" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:ethiopic {:font-id "gfont-noto-sans-ethiopic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:georgian {:font-id "gfont-noto-sans-georgian" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:gujarati {:font-id "gfont-noto-sans-gujarati" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:gurmukhi {:font-id "gfont-noto-sans-gurmukhi" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:khmer {:font-id "gfont-noto-sans-khmer" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:lao {:font-id "gfont-noto-sans-lao" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:malayalam {:font-id "gfont-noto-sans-malayalam" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:myanmar {:font-id "gfont-noto-sans-myanmar" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:sinhala {:font-id "gfont-noto-sans-sinhala" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:telugu {:font-id "gfont-noto-sans-telugu" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:tibetan {:font-id "gfont-noto-serif-tibetan" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
{:japanese {:font-id "gfont-noto-sans-jp" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:chinese {:font-id "gfont-noto-sans-sc" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:korean {:font-id "gfont-noto-sans-kr" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:arabic {:font-id "gfont-noto-sans-arabic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:cyrillic {:font-id "gfont-noto-sans-cyrillic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:greek {:font-id "gfont-noto-sans-greek" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:hebrew {:font-id "gfont-noto-sans-hebrew" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:thai {:font-id "gfont-noto-sans-thai" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:devanagari {:font-id "gfont-noto-sans-devanagari" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:tamil {:font-id "gfont-noto-sans-tamil" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:latin-ext {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:vietnamese {:font-id "gfont-noto-sans" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:armenian {:font-id "gfont-noto-sans-armenian" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:bengali {:font-id "gfont-noto-sans-bengali" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:cherokee {:font-id "gfont-noto-sans-cherokee" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:ethiopic {:font-id "gfont-noto-sans-ethiopic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:georgian {:font-id "gfont-noto-sans-georgian" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:gujarati {:font-id "gfont-noto-sans-gujarati" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:gurmukhi {:font-id "gfont-noto-sans-gurmukhi" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:khmer {:font-id "gfont-noto-sans-khmer" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:lao {:font-id "gfont-noto-sans-lao" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:malayalam {:font-id "gfont-noto-sans-malayalam" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:myanmar {:font-id "gfont-noto-sans-myanmar" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:sinhala {:font-id "gfont-noto-sans-sinhala" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:telugu {:font-id "gfont-noto-sans-telugu" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:tibetan {:font-id "gfont-noto-sans-tibetan" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:javanese {:font-id "gfont-noto-sans-javanese" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:kannada {:font-id "gfont-noto-sans-kannada" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:oriya {:font-id "gfont-noto-sans-oriya" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
@@ -399,8 +399,8 @@
:bamum {:font-id "gfont-noto-sans-bamum" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:meroitic {:font-id "gfont-noto-sans-meroitic" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:symbols {:font-id "gfont-noto-sans-symbols" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:symbols-2 {:font-id "gfont-noto-sans-symbols-2" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:music {:font-id "gfont-noto-music" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}})
:symbols-2 {:font-id "gfont-noto-sans-symbols-2" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}
:music {:font-id "gfont-noto-music" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}})
(defn add-noto-fonts [fonts languages]
(reduce (fn [acc lang]

View File

@@ -280,18 +280,8 @@
:layout-grid-cells
(api/set-grid-layout-cells v)
:layout
(do
(api/clear-layout)
(cond
(ctl/grid-layout? shape)
(api/set-grid-layout shape)
(ctl/flex-layout? shape)
(api/set-flex-layout shape))
(api/set-layout-data shape))
(:layout-flex-dir
(:layout
:layout-flex-dir
:layout-gap-type
:layout-gap
:layout-align-items
@@ -301,12 +291,15 @@
:layout-wrap-type
:layout-padding-type
:layout-padding)
(cond
(ctl/grid-layout? shape)
(api/set-grid-layout-data shape)
(do
(api/clear-layout)
(cond
(ctl/grid-layout? shape)
(api/set-grid-layout-data shape)
(ctl/flex-layout? shape)
(api/set-flex-layout shape))
(ctl/flex-layout? shape)
(api/set-flex-layout shape))
(api/set-layout-data shape))
;; Property not in WASM
nil))))