From 438c14d29d5a14e252ebdf24b5f010c6528def1d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 18 Jan 2022 10:58:45 +0100 Subject: [PATCH 1/9] :arrow_up: Update exporter dependencies. --- exporter/deps.edn | 4 +- exporter/package.json | 14 +-- exporter/yarn.lock | 284 +++++++++++++++++++++--------------------- 3 files changed, 154 insertions(+), 148 deletions(-) diff --git a/exporter/deps.edn b/exporter/deps.edn index 328023c7c..ee277baf7 100644 --- a/exporter/deps.edn +++ b/exporter/deps.edn @@ -3,7 +3,7 @@ {penpot/common {:local/root "../common"} binaryage/devtools {:mvn/version "RELEASE"} metosin/reitit-core {:mvn/version "0.5.13"} - lambdaisland/glogi {:mvn/version "1.0.106"} + com.lambdaisland/glogi {:mvn/version "1.1.144"} funcool/beicon {:mvn/version "2021.07.05-1"} } :aliases @@ -14,7 +14,7 @@ :dev {:extra-deps - {thheller/shadow-cljs {:mvn/version "2.15.10"}}} + {thheller/shadow-cljs {:mvn/version "2.16.12"}}} :shadow-cljs {:main-opts ["-m" "shadow.cljs.devtools.cli"]} diff --git a/exporter/package.json b/exporter/package.json index 5f70a41b7..ce3a25a14 100644 --- a/exporter/package.json +++ b/exporter/package.json @@ -9,20 +9,20 @@ "author": "UXBOX LABS SL", "license": "SEE LICENSE IN ", "dependencies": { - "@sentry/node": "^6.13.1", - "@sentry/tracing": "^6.13.1", + "@sentry/node": "^6.16.1", + "@sentry/tracing": "^6.16.1", "cookies": "^0.8.0", "generic-pool": "^3.8.2", "inflation": "^2.0.0", "jszip": "^3.7.0", - "luxon": "^2.0.1", - "puppeteer-core": "^10.1.0", - "raw-body": "^2.4.1", + "luxon": "^2.3.0", + "puppeteer-core": "^13.1.1", + "raw-body": "^2.4.2", "xml-js": "^1.6.11", "xregexp": "^5.0.2" }, "devDependencies": { - "shadow-cljs": "^2.15.10", - "source-map-support": "^0.5.20" + "shadow-cljs": "^2.16.12", + "source-map-support": "^0.5.21" } } diff --git a/exporter/yarn.lock b/exporter/yarn.lock index a671fedf5..1774a5a14 100644 --- a/exporter/yarn.lock +++ b/exporter/yarn.lock @@ -10,72 +10,72 @@ core-js-pure "^3.16.0" regenerator-runtime "^0.13.4" -"@sentry/core@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.13.1.tgz#158cb7391c1aed4083fe12f40a3aecc951e3d354" - integrity sha512-IGitAHYtsDPhPPcSTDqL/NMOwTbrqPezQOo4rlU1p1lpyZKSKrgzn/8LCrb+eRV2ffaio6+3kwqjCN2SvU8S7A== +"@sentry/core@6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.16.1.tgz#d9f7a75f641acaddf21b6aafa7a32e142f68f17c" + integrity sha512-UFI0264CPUc5cR1zJH+S2UPOANpm6dLJOnsvnIGTjsrwzR0h8Hdl6rC2R/GPq+WNbnipo9hkiIwDlqbqvIU5vw== dependencies: - "@sentry/hub" "6.13.1" - "@sentry/minimal" "6.13.1" - "@sentry/types" "6.13.1" - "@sentry/utils" "6.13.1" + "@sentry/hub" "6.16.1" + "@sentry/minimal" "6.16.1" + "@sentry/types" "6.16.1" + "@sentry/utils" "6.16.1" tslib "^1.9.3" -"@sentry/hub@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.13.1.tgz#587227fa502e3ed699878ac903f2a5100849cb00" - integrity sha512-O7bR5suyVNTNyr6tm0IjhZ7NvxSHIbHoy5KYbVv05HQ/DmvAbYWq4dtOMvYQuuTD9krGkZdwPg4Gm6KnFaKqoQ== +"@sentry/hub@6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.16.1.tgz#526e19db51f4412da8634734044c605b936a7b80" + integrity sha512-4PGtg6AfpqMkreTpL7ymDeQ/U1uXv03bKUuFdtsSTn/FRf9TLS4JB0KuTZCxfp1IRgAA+iFg6B784dDkT8R9eg== dependencies: - "@sentry/types" "6.13.1" - "@sentry/utils" "6.13.1" + "@sentry/types" "6.16.1" + "@sentry/utils" "6.16.1" tslib "^1.9.3" -"@sentry/minimal@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.13.1.tgz#86865cc0d6090d9c8be2c44ec7f14a9c66910e7d" - integrity sha512-waRLPRFT1G95LsklH25LvfJy4vSe54PPRSeAGNPa4xVLCP56CnbNXGEXGDyPUewtqESwVpRG6GPL1QRV67IixA== +"@sentry/minimal@6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.16.1.tgz#6a9506a92623d2ff1fc17d60989688323326772e" + integrity sha512-dq+mI1EQIvUM+zJtGCVgH3/B3Sbx4hKlGf2Usovm9KoqWYA+QpfVBholYDe/H2RXgO7LFEefDLvOdHDkqeJoyA== dependencies: - "@sentry/hub" "6.13.1" - "@sentry/types" "6.13.1" + "@sentry/hub" "6.16.1" + "@sentry/types" "6.16.1" tslib "^1.9.3" -"@sentry/node@^6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.13.1.tgz#9b76d5746a6e851a11bcdc25097177cbb28fcc82" - integrity sha512-uSAsRPGeTNb6pEzHQ4/RkaylO95f6SmS1yzMizlMkgZq5qPDkmKgN+sZ04g58XlZ6nDKTxYoLSZsfxdaIZNTcw== +"@sentry/node@^6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.16.1.tgz#d92916da3e95d23e1ada274e97d6bf369e74ac51" + integrity sha512-SeDDoug2kUxeF1D7JGPa3h5EXxKtmA01mITBPYx5xbJ0sMksnv5I5bC1SJ8arRRzq6+W1C4IEeDBQtrVCk6ixA== dependencies: - "@sentry/core" "6.13.1" - "@sentry/hub" "6.13.1" - "@sentry/tracing" "6.13.1" - "@sentry/types" "6.13.1" - "@sentry/utils" "6.13.1" + "@sentry/core" "6.16.1" + "@sentry/hub" "6.16.1" + "@sentry/tracing" "6.16.1" + "@sentry/types" "6.16.1" + "@sentry/utils" "6.16.1" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@6.13.1", "@sentry/tracing@^6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.13.1.tgz#eec84740a2566132c14c151e855f2a8a2dac3716" - integrity sha512-UF0yHtWXi5SfDa5oKCSw463P3AyAf635w6zFMiLV6kt8DDjnOwJRcT7dekRIU8F4Du+2nWJFPoXsmt1sablycw== +"@sentry/tracing@6.16.1", "@sentry/tracing@^6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.16.1.tgz#32fba3e07748e9a955055afd559a65996acb7d71" + integrity sha512-MPSbqXX59P+OEeST+U2V/8Hu/8QjpTUxTNeNyTHWIbbchdcMMjDbXTS3etCgajZR6Ro+DHElOz5cdSxH6IBGlA== dependencies: - "@sentry/hub" "6.13.1" - "@sentry/minimal" "6.13.1" - "@sentry/types" "6.13.1" - "@sentry/utils" "6.13.1" + "@sentry/hub" "6.16.1" + "@sentry/minimal" "6.16.1" + "@sentry/types" "6.16.1" + "@sentry/utils" "6.16.1" tslib "^1.9.3" -"@sentry/types@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.13.1.tgz#650e5e5fe4aa415987e14cfa2ca03e5d5eb3e347" - integrity sha512-dYm8qv/O6QhOCmWi5rlJBX9rjEqvnjnZH1zqhQCWhMmF9aYS151Y41P1C0TS0o17Z0ClonLiYMG1J+zE/Pmtqg== +"@sentry/types@6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.16.1.tgz#4917607115b30315757c2cf84f80bac5100b8ac0" + integrity sha512-Wh354g30UsJ5kYJbercektGX4ZMc9MHU++1NjeN2bTMnbofEcpUDWIiKeulZEY65IC1iU+1zRQQgtYO+/hgCUQ== -"@sentry/utils@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.13.1.tgz#5c974c4235615ac50caed2b25c30b33a6a234425" - integrity sha512-qFDup/nBj2u2rAcQADFG3njVYUCo4XOQkCT7XdA5Flg1a++r6tIBdjiRyyjb8nqwHZ/OQsKr/V/EQaJiW29ETA== +"@sentry/utils@6.16.1": + version "6.16.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.16.1.tgz#1b9e14c2831b6e8b816f7021b9876133bf2be008" + integrity sha512-7ngq/i4R8JZitJo9Sl8PDnjSbDehOxgr1vsoMmerIsyRZ651C/8B+jVkMhaAPgSdyJ0AlE3O7DKKTP1FXFw9qw== dependencies: - "@sentry/types" "6.13.1" + "@sentry/types" "6.16.1" tslib "^1.9.3" "@types/node@*": @@ -255,10 +255,10 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" + integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== chownr@^1.1.1: version "1.1.4" @@ -359,20 +359,13 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -debug@4, debug@^4.1.1: +debug@4, debug@4.3.2, debug@^4.1.1: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -391,10 +384,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -devtools-protocol@0.0.901419: - version "0.0.901419" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.901419.tgz#79b5459c48fe7e1c5563c02bd72f8fec3e0cebcd" - integrity sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ== +devtools-protocol@0.0.948846: + version "0.0.948846" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.948846.tgz#bff47e2d1dba060130fa40ed2e5f78b916ba285f" + integrity sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ== diffie-hellman@^5.0.0: version "5.0.3" @@ -529,16 +522,16 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -http-errors@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" inherits "2.0.4" - setprototypeof "1.1.1" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" https-browserify@^1.0.0: version "1.0.0" @@ -644,10 +637,10 @@ lru_map@^0.3.3: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= -luxon@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.0.2.tgz#11f2cd4a11655fdf92e076b5782d7ede5bcdd133" - integrity sha512-ZRioYLCgRHrtTORaZX1mx+jtxKtKuI5ZDvHNAmqpUzGqSrR+tL4FVLn/CUGMA3h0+AKD1MAxGI5GnCqR5txNqg== +luxon@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.3.0.tgz#bf16a7e642513c2a20a6230a6a41b0ab446d0045" + integrity sha512-gv6jZCV+gGIrVKhO90yrsn8qXPKD8HYZJtrUDSfEbow8Tkw84T9OnCyJhWvnJIaIF/tBuiAjZuQHUt1LddX2mg== md5.js@^1.3.4: version "1.3.5" @@ -683,27 +676,22 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" + integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + dependencies: + whatwg-url "^5.0.0" node-libs-browser@^2.2.1: version "2.2.1" @@ -834,10 +822,10 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" - integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg== +progress@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== proxy-from-env@1.1.0: version "1.1.0" @@ -874,23 +862,23 @@ punycode@^1.2.4: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -puppeteer-core@^10.1.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-10.2.0.tgz#8d6606cf345fc0e421bc0612055579ea53234111" - integrity sha512-c1COxSnfynsE6Mtt+dW0t3TITjF9Ku4dnJbFMDDVhLQuMTYSpz4rkSP37qvzcSo3k02/Ac3GYWk0/ncp6DKZNA== +puppeteer-core@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-13.1.1.tgz#bd07b225732210c570fb8af1ff959bb91806dbdc" + integrity sha512-pXVcEFv5wgayHtwl5WBB8dyFHkdA7eLcAUuF9cprsoJQVU1sgA32OCfmXqNfvcej85Y5ceAcin09c8qLopdkfQ== dependencies: - debug "4.3.1" - devtools-protocol "0.0.901419" + debug "4.3.2" + devtools-protocol "0.0.948846" extract-zip "2.0.1" https-proxy-agent "5.0.0" - node-fetch "2.6.1" + node-fetch "2.6.5" pkg-dir "4.2.0" - progress "2.0.1" + progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" - tar-fs "2.0.0" - unbzip2-stream "1.3.3" - ws "7.4.6" + tar-fs "2.1.1" + unbzip2-stream "1.4.3" + ws "8.2.3" querystring-es3@^0.2.0: version "0.2.1" @@ -917,13 +905,13 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -raw-body@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== +raw-body@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" + integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== dependencies: - bytes "3.1.0" - http-errors "1.7.3" + bytes "3.1.1" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -1004,10 +992,10 @@ setimmediate@^1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" @@ -1022,10 +1010,10 @@ shadow-cljs-jar@1.3.2: resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b" integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg== -shadow-cljs@^2.15.10: - version "2.15.10" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.15.10.tgz#b1df65a51707a7c34dad2c788a12edeb41e0321c" - integrity sha512-r02f7pvZefiaATt3k7oAb8PNQKaA67iFoowS88Jaf8IClRQL3plBazkDAUWX5yQd9QfT4WhGr6kP0GTzTidQSg== +shadow-cljs@^2.16.12: + version "2.16.12" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.16.12.tgz#8757b3079dadfff15ca09192f81eb69b5d25266d" + integrity sha512-6JqOhN5X3n0IkxA/gSUcZ1lImwcW1LmpgzlaBDOC/u/pIysdNm0tiOxpOTEnExl9nKZBS/EYS7bXIIInywPJUA== dependencies: node-libs-browser "^2.2.1" readline-sync "^1.4.7" @@ -1041,10 +1029,10 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.20: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@^0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -1097,17 +1085,17 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -tar-fs@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.0.0.tgz#677700fc0c8b337a78bee3623fdc235f21d7afad" - integrity sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA== +tar-fs@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== dependencies: chownr "^1.1.1" - mkdirp "^0.5.1" + mkdirp-classic "^0.5.2" pump "^3.0.0" - tar-stream "^2.0.0" + tar-stream "^2.1.4" -tar-stream@^2.0.0: +tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== @@ -1135,10 +1123,15 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= tslib@^1.9.3: version "1.14.1" @@ -1155,10 +1148,10 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= -unbzip2-stream@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== +unbzip2-stream@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== dependencies: buffer "^5.2.1" through "^2.3.8" @@ -1200,6 +1193,19 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -1212,10 +1218,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.2.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" + integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== ws@^7.4.6: version "7.5.3" From 374bba763b076b65ef36773cbdde19110839daac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 21 Jan 2022 15:26:40 +0100 Subject: [PATCH 2/9] :bug: Fix edit blur attributes for multiselection --- CHANGES.md | 1 + .../app/main/ui/workspace/sidebar/options/shapes/multiple.cljs | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 1ef7929b0..dc366100a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -70,6 +70,7 @@ - Show correctly group types label in handoff [Taiga #2482](https://tree.taiga.io/project/penpot/issue/2482) - Display view mode buttons always centered in viewer [#Taiga 2466](https://tree.taiga.io/project/penpot/issue/2466) - Fix default profile image generation issue [Taiga #2601](https://tree.taiga.io/project/penpot/issue/2601) +- Fix edit blur attributes for multiselection [Taiga #2625](https://tree.taiga.io/project/penpot/issue/2625) ### :arrow_up: Deps updates diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs index d434c0949..a0d695221 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs @@ -222,7 +222,6 @@ blur-ids blur-values stroke-ids stroke-values text-ids text-values] - (mf/use-memo (mf/deps objects-no-measures) (fn [] @@ -233,7 +232,7 @@ (get-attrs shapes objects-no-measures :constraint) (get-attrs shapes objects-no-measures :fill) (get-attrs shapes objects-no-measures :shadow) - (get-attrs shapes objects-no-measures :shadow) + (get-attrs shapes objects-no-measures :blur) (get-attrs shapes objects-no-measures :stroke) (get-attrs shapes objects-no-measures :text)])))] From c3e37b0e047b56c6d31496c1af5bcf3cd6d43dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 21 Jan 2022 16:35:30 +0100 Subject: [PATCH 3/9] :bug: Fix auto hide header in viewer full screen --- CHANGES.md | 1 + frontend/resources/styles/main/layouts/viewer.scss | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index dc366100a..03db0201a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -71,6 +71,7 @@ - Display view mode buttons always centered in viewer [#Taiga 2466](https://tree.taiga.io/project/penpot/issue/2466) - Fix default profile image generation issue [Taiga #2601](https://tree.taiga.io/project/penpot/issue/2601) - Fix edit blur attributes for multiselection [Taiga #2625](https://tree.taiga.io/project/penpot/issue/2625) +- Fix auto hide header in viewer full screen [Taiga #2632](https://tree.taiga.io/project/penpot/issue/2632) ### :arrow_up: Deps updates diff --git a/frontend/resources/styles/main/layouts/viewer.scss b/frontend/resources/styles/main/layouts/viewer.scss index f935a0f8d..f1ad747b6 100644 --- a/frontend/resources/styles/main/layouts/viewer.scss +++ b/frontend/resources/styles/main/layouts/viewer.scss @@ -15,7 +15,7 @@ } } -.fullscreen .viewer-layout:not(.force-visible) { +.fullscreen.viewer-layout:not(.force-visible) { & .viewer-header { width: 100%; position: fixed; From b4bf6b9235a369f601f11a6b2cc454a357999d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 21 Jan 2022 17:00:51 +0100 Subject: [PATCH 4/9] :bug: Fix zoom in/out after fit or fill in viewer --- CHANGES.md | 1 + frontend/src/app/main/data/viewer.cljs | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 03db0201a..e783fd565 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -72,6 +72,7 @@ - Fix default profile image generation issue [Taiga #2601](https://tree.taiga.io/project/penpot/issue/2601) - Fix edit blur attributes for multiselection [Taiga #2625](https://tree.taiga.io/project/penpot/issue/2625) - Fix auto hide header in viewer full screen [Taiga #2632](https://tree.taiga.io/project/penpot/issue/2632) +- Fix zoom in/out after fit or fill [Taiga #2630](https://tree.taiga.io/project/penpot/issue/2630) ### :arrow_up: Deps updates diff --git a/frontend/src/app/main/data/viewer.cljs b/frontend/src/app/main/data/viewer.cljs index 33690b5c0..1adedc3ff 100644 --- a/frontend/src/app/main/data/viewer.cljs +++ b/frontend/src/app/main/data/viewer.cljs @@ -190,19 +190,21 @@ (ptk/reify ::increase-zoom ptk/UpdateEvent (update [_ state] - (let [increase #(nth c/zoom-levels - (+ (d/index-of c/zoom-levels %) 1) - (last c/zoom-levels))] - (update-in state [:viewer-local :zoom] (fnil increase 1)))))) + (let [increase (fn [zoom] + (d/seek #(> % zoom) + c/zoom-levels + zoom))] + (update-in state [:viewer-local :zoom] increase))))) (def decrease-zoom (ptk/reify ::decrease-zoom ptk/UpdateEvent (update [_ state] - (let [decrease #(nth c/zoom-levels - (- (d/index-of c/zoom-levels %) 1) - (first c/zoom-levels))] - (update-in state [:viewer-local :zoom] (fnil decrease 1)))))) + (let [decrease (fn [zoom] + (d/seek #(< % zoom) + (reverse c/zoom-levels) + zoom))] + (update-in state [:viewer-local :zoom] decrease))))) (def reset-zoom (ptk/reify ::reset-zoom From 20baf0272620c437442eacbbaee1b6606236f890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Mon, 24 Jan 2022 12:00:55 +0100 Subject: [PATCH 5/9] :bug: Normalize zoom levels in workspace and viewer --- CHANGES.md | 1 + frontend/src/app/main/constants.cljs | 7 --- frontend/src/app/main/data/viewer.cljs | 15 ++--- frontend/src/app/main/data/workspace.cljs | 75 +++++++++++------------ 4 files changed, 42 insertions(+), 56 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index e783fd565..6f8c4e8b5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -73,6 +73,7 @@ - Fix edit blur attributes for multiselection [Taiga #2625](https://tree.taiga.io/project/penpot/issue/2625) - Fix auto hide header in viewer full screen [Taiga #2632](https://tree.taiga.io/project/penpot/issue/2632) - Fix zoom in/out after fit or fill [Taiga #2630](https://tree.taiga.io/project/penpot/issue/2630) +- Normalize zoom levels in workspace and viewer [Taiga #2631](https://tree.taiga.io/project/penpot/issue/2631) ### :arrow_up: Deps updates diff --git a/frontend/src/app/main/constants.cljs b/frontend/src/app/main/constants.cljs index 84393c171..8247b9296 100644 --- a/frontend/src/app/main/constants.cljs +++ b/frontend/src/app/main/constants.cljs @@ -23,10 +23,3 @@ :grid-alignment true :background "var(--color-white)"}) -(def zoom-levels - [0.01 0.03 0.05 0.07 0.09 0.10 0.11 0.13 0.15 0.18 - 0.20 0.21 0.22 0.23 0.24 0.25 0.27 0.28 0.30 0.32 0.34 - 0.36 0.38 0.40 0.42 0.44 0.46 0.48 0.50 0.54 0.57 0.60 - 0.63 0.66 0.69 0.73 0.77 0.81 0.85 0.90 0.95 1.00 1.05 - 1.10 1.15 1.21 1.27 1.33 1.40 1.47 1.54 1.62 1.70 1.78 - 1.87 1.96 2.00 2.16 2.27 2.38 2.50 2.62 2.75 2.88 3.00]) diff --git a/frontend/src/app/main/data/viewer.cljs b/frontend/src/app/main/data/viewer.cljs index 1adedc3ff..6ff221239 100644 --- a/frontend/src/app/main/data/viewer.cljs +++ b/frontend/src/app/main/data/viewer.cljs @@ -11,7 +11,6 @@ [app.common.spec :as us] [app.common.types.interactions :as cti] [app.common.uuid :as uuid] - [app.main.constants :as c] [app.main.data.comments :as dcm] [app.main.data.fonts :as df] [app.main.repo :as rp] @@ -190,21 +189,15 @@ (ptk/reify ::increase-zoom ptk/UpdateEvent (update [_ state] - (let [increase (fn [zoom] - (d/seek #(> % zoom) - c/zoom-levels - zoom))] - (update-in state [:viewer-local :zoom] increase))))) + (let [increase #(min (* % 1.3) 200)] + (update-in state [:viewer-local :zoom] (fnil increase 1)))))) (def decrease-zoom (ptk/reify ::decrease-zoom ptk/UpdateEvent (update [_ state] - (let [decrease (fn [zoom] - (d/seek #(< % zoom) - (reverse c/zoom-levels) - zoom))] - (update-in state [:viewer-local :zoom] decrease))))) + (let [decrease #(max (/ % 1.3) 0.01)] + (update-in state [:viewer-local :zoom] (fnil decrease 1)))))) (def reset-zoom (ptk/reify ::reset-zoom diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index d11e75f37..292693c6a 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -413,6 +413,43 @@ ;; Workspace State Manipulation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; --- Toggle layout flag + +(defn toggle-layout-flags + [& flags] + (ptk/reify ::toggle-layout-flags + ptk/UpdateEvent + (update [_ state] + (update state :workspace-layout + (fn [stored] + (reduce (fn [flags flag] + (if (contains? flags flag) + (disj flags flag) + (conj flags flag))) + stored + (d/concat-set flags))))))) + +;; --- Set element options mode + +(defn set-options-mode + [mode] + (us/assert ::options-mode mode) + (ptk/reify ::set-options-mode + ptk/UpdateEvent + (update [_ state] + (assoc-in state [:workspace-local :options-mode] mode)))) + +;; --- Tooltip + +(defn assign-cursor-tooltip + [content] + (ptk/reify ::assign-cursor-tooltip + ptk/UpdateEvent + (update [_ state] + (if (string? content) + (assoc-in state [:workspace-local :tooltip] content) + (assoc-in state [:workspace-local :tooltip] nil))))) + ;; --- Viewport Sizing (declare increase-zoom) @@ -552,44 +589,6 @@ (-> state (update :workspace-local dissoc :zooming))))) - -;; --- Toggle layout flag - -(defn toggle-layout-flags - [& flags] - (ptk/reify ::toggle-layout-flags - ptk/UpdateEvent - (update [_ state] - (update state :workspace-layout - (fn [stored] - (reduce (fn [flags flag] - (if (contains? flags flag) - (disj flags flag) - (conj flags flag))) - stored - (d/concat-set flags))))))) - -;; --- Set element options mode - -(defn set-options-mode - [mode] - (us/assert ::options-mode mode) - (ptk/reify ::set-options-mode - ptk/UpdateEvent - (update [_ state] - (assoc-in state [:workspace-local :options-mode] mode)))) - -;; --- Tooltip - -(defn assign-cursor-tooltip - [content] - (ptk/reify ::assign-cursor-tooltip - ptk/UpdateEvent - (update [_ state] - (if (string? content) - (assoc-in state [:workspace-local :tooltip] content) - (assoc-in state [:workspace-local :tooltip] nil))))) - ;; --- Zoom Management (defn- impl-update-zoom From 6410bcf3c8ad070782763954bc390c7b00ae977f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 24 Jan 2022 15:13:02 +0100 Subject: [PATCH 6/9] :sparkles: Minor change on debug endpoint. --- backend/src/app/http/debug.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/app/http/debug.clj b/backend/src/app/http/debug.clj index 9b74ad43c..39e597343 100644 --- a/backend/src/app/http/debug.clj +++ b/backend/src/app/http/debug.clj @@ -89,9 +89,9 @@ data (some-> params :file :tempfile fs/slurp-bytes blob/decode)] (if (and data project-id) - (do + (let [fname (str "imported-file-" (dt/now))] (m.files/create-file pool {:id (uuid/next) - :name "imported-file" + :name fname :project-id project-id :profile-id profile-id :data data}) From 9e062759458530443cd04df1fbaecfde2e067df2 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 24 Jan 2022 15:41:44 +0100 Subject: [PATCH 7/9] :bug: Prevent exception on broken path. --- .gitignore | 6 ++++-- backend/src/app/srepl/main.clj | 11 ++++++----- frontend/src/app/main/ui/shapes/path.cljs | 16 ++++++++++++++-- .../app/main/ui/workspace/viewport/outline.cljs | 5 ++++- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index d11830e81..f34bc1676 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ figwheel_server.log -*jar +*.penpot +*.jar *-init.clj .lein-deps-sum .lein-failures @@ -9,9 +10,10 @@ figwheel_server.log .nrepl-port .cpcache .rebel_readline_history +node_modules +/clj-profiler/ /vendor/**/target /cd.md -node_modules /backend/target/ /backend/resources/public/media /backend/resources/public/assets diff --git a/backend/src/app/srepl/main.clj b/backend/src/app/srepl/main.clj index 6e9fc80d6..19274cfb2 100644 --- a/backend/src/app/srepl/main.clj +++ b/backend/src/app/srepl/main.clj @@ -2,9 +2,10 @@ "A main namespace for server repl." #_:clj-kondo/ignore (:require + [app.common.data :as d] [app.common.pages :as cp] - [app.common.uuid :as uuid] [app.common.pages.migrations :as pmg] + [app.common.uuid :as uuid] [app.config :as cfg] [app.db :as db] [app.db.sql :as sql] @@ -12,12 +13,12 @@ [app.rpc.queries.profile :as prof] [app.srepl.dev :as dev] [app.util.blob :as blob] - [cuerdas.core :as str] - [clojure.pprint :refer [pprint]])) + [clojure.pprint :refer [pprint]] + [cuerdas.core :as str])) (defn update-file - ([id f] (update-file id f false)) - ([id f save?] + ([system id f] (update-file system id f false)) + ([system id f save?] (db/with-atomic [conn (:app.db/pool system)] (let [file (db/get-by-id conn :file id {:for-update true}) file (-> file diff --git a/frontend/src/app/main/ui/shapes/path.cljs b/frontend/src/app/main/ui/shapes/path.cljs index 8c2decdc6..e62fb46e8 100644 --- a/frontend/src/app/main/ui/shapes/path.cljs +++ b/frontend/src/app/main/ui/shapes/path.cljs @@ -6,6 +6,7 @@ (ns app.main.ui.shapes.path (:require + [app.common.logging :as log] [app.main.ui.shapes.attrs :as attrs] [app.main.ui.shapes.custom-stroke :refer [shape-custom-stroke]] [app.util.object :as obj] @@ -19,10 +20,21 @@ [props] (let [shape (unchecked-get props "shape") content (:content shape) - pdata (mf/use-memo (mf/deps content) #(upf/format-path content)) + pdata (mf/use-memo + (mf/deps content) + (fn [] + (try + (upf/format-path content) + (catch :default e + (log/error :hint "unexpected error on formating path" + :shape-name (:name shape) + :shape-id (:id shape) + :cause e) + "")))) + props (-> (attrs/extract-style-attrs shape) (obj/merge! #js {:d pdata}))] + [:& shape-custom-stroke {:shape shape} [:> :path props]])) - diff --git a/frontend/src/app/main/ui/workspace/viewport/outline.cljs b/frontend/src/app/main/ui/workspace/viewport/outline.cljs index 44d644f6b..d4c41ad5d 100644 --- a/frontend/src/app/main/ui/workspace/viewport/outline.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/outline.cljs @@ -6,6 +6,7 @@ (ns app.main.ui.workspace.viewport.outline (:require + [app.common.exceptions :as ex] [app.common.geom.shapes :as gsh] [app.common.pages :as cp] [app.main.refs :as refs] @@ -27,7 +28,9 @@ path-data (mf/use-memo (mf/deps shape) - #(when path? (upf/format-path (:content shape)))) + #(when path? + (or (ex/ignoring (upf/format-path (:content shape))) + ""))) {:keys [x y width height selrect]} shape From bc04a0b9f0b1ee436ec557721e73019db385f6db Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 21 Jan 2022 14:47:22 +0100 Subject: [PATCH 8/9] :bug: Fix incorrect behavior of trim-file-data. --- backend/src/app/rpc/queries/files.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/app/rpc/queries/files.clj b/backend/src/app/rpc/queries/files.clj index ea6832aa2..8e22f6637 100644 --- a/backend/src/app/rpc/queries/files.clj +++ b/backend/src/app/rpc/queries/files.clj @@ -251,7 +251,7 @@ (-> file (update :data assoc :pages-index {page-id page}) - (assoc :pages [page-id])))) + (update :data assoc :pages [page-id])))) (declare strip-frames-with-thumbnails) From 3d6c9032739b442a3e6e2244f10e4d835579909a Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 21 Jan 2022 14:48:33 +0100 Subject: [PATCH 9/9] :zap: Improve path rendering performance. --- common/src/app/common/geom/shapes/path.cljc | 19 +-- .../app/common/geom/shapes/transforms.cljc | 13 +- common/src/app/common/path/commands.cljc | 4 +- frontend/src/app/main/ui/shapes/path.cljs | 23 ++- frontend/src/app/util/path/format.cljs | 144 +++++++++--------- 5 files changed, 101 insertions(+), 102 deletions(-) diff --git a/common/src/app/common/geom/shapes/path.cljc b/common/src/app/common/geom/shapes/path.cljc index b9fc403ba..38d2e5680 100644 --- a/common/src/app/common/geom/shapes/path.cljc +++ b/common/src/app/common/geom/shapes/path.cljc @@ -376,19 +376,20 @@ set-tr (fn [params px py] - (assoc params - px (+ (get params px) dx) - py (+ (get params py) dy))) + (-> params + (update px + dx) + (update py + dy))) transform-params - (fn [params] + (fn [{:keys [x c1x c2x] :as params}] (cond-> params - (contains? params :x) (set-tr :x :y) - (contains? params :c1x) (set-tr :c1x :c1y) - (contains? params :c2x) (set-tr :c2x :c2y)))] + (some? x) (set-tr :x :y) + (some? c1x) (set-tr :c1x :c1y) + (some? c2x) (set-tr :c2x :c2y)))] - (->> content - (mapv #(d/update-when % :params transform-params))))) + (into [] + (map #(update % :params transform-params)) + content))) (defn transform-content [content transform] diff --git a/common/src/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc index 56010f196..bfacc7298 100644 --- a/common/src/app/common/geom/shapes/transforms.cljc +++ b/common/src/app/common/geom/shapes/transforms.cljc @@ -42,9 +42,9 @@ (defn move "Move the shape relatively to its current position applying the provided delta." - [shape {dx :x dy :y}] - (let [dx (d/check-num dx) - dy (d/check-num dy) + [{:keys [type] :as shape} {dx :x dy :y}] + (let [dx (d/check-num dx) + dy (d/check-num dy) move-vec (gpt/point dx dy)] (-> shape @@ -52,11 +52,8 @@ (update :points move-points move-vec) (d/update-when :x + dx) (d/update-when :y + dy) - (cond-> (= :bool (:type shape)) - (update :bool-content gpa/move-content move-vec)) - (cond-> (= :path (:type shape)) - (update :content gpa/move-content move-vec))))) - + (cond-> (= :bool type) (update :bool-content gpa/move-content move-vec)) + (cond-> (= :path type) (update :content gpa/move-content move-vec))))) ;; --- Absolute Movement diff --git a/common/src/app/common/path/commands.cljc b/common/src/app/common/path/commands.cljc index d787c2457..a79b34676 100644 --- a/common/src/app/common/path/commands.cljc +++ b/common/src/app/common/path/commands.cljc @@ -17,8 +17,8 @@ (command->point command)))) ([command] - (when-not (nil? command) - (let [{{:keys [x y]} :params} command] + (when command + (let [{:keys [x y]} (:params command)] (gpt/point x y))))) diff --git a/frontend/src/app/main/ui/shapes/path.cljs b/frontend/src/app/main/ui/shapes/path.cljs index e62fb46e8..36155fc7e 100644 --- a/frontend/src/app/main/ui/shapes/path.cljs +++ b/frontend/src/app/main/ui/shapes/path.cljs @@ -20,21 +20,18 @@ [props] (let [shape (unchecked-get props "shape") content (:content shape) - pdata (mf/use-memo - (mf/deps content) - (fn [] - (try - (upf/format-path content) - (catch :default e - (log/error :hint "unexpected error on formating path" - :shape-name (:name shape) - :shape-id (:id shape) - :cause e) - "")))) + pdata (mf/with-memo [content] + (try + (upf/format-path content) + (catch :default e + (log/error :hint "unexpected error on formating path" + :shape-name (:name shape) + :shape-id (:id shape) + :cause e) + ""))) props (-> (attrs/extract-style-attrs shape) - (obj/merge! - #js {:d pdata}))] + (obj/set! "d" pdata))] [:& shape-custom-stroke {:shape shape} [:> :path props]])) diff --git a/frontend/src/app/util/path/format.cljs b/frontend/src/app/util/path/format.cljs index 80b1f9214..30c274547 100644 --- a/frontend/src/app/util/path/format.cljs +++ b/frontend/src/app/util/path/format.cljs @@ -8,88 +8,92 @@ (:require [app.common.path.commands :as upc] [app.common.path.subpaths :refer [pt=]] - [cuerdas.core :as str])) + [app.util.array :as arr])) -(defn command->param-list [command] - (let [params (:params command)] - (case (:command command) - (:move-to :line-to :smooth-quadratic-bezier-curve-to) - (str (:x params) "," - (:y params)) +(defn- join-params + ([a] + (js* "\"\"+~{}" a)) + ([a b] + (js* "\"\"+~{}+\",\"+~{}" a b)) + ([a b c] + (js* "\"\"+~{}+\",\"+~{}+\",\"+~{}" a b c)) + ([a b c d] + (js* "\"\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}" a b c d)) + ([a b c d e] + (js* "\"\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}" a b c d e)) + ([a b c d e f] + (js* "\"\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}" a b c d e f)) + ([a b c d e f g] + (js* "\"\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}+\",\"+~{}" a b c d e f g))) - :close-path - "" +(defn- translate-params + [command {:keys [x y] :as params}] + (case command + (:move-to :line-to :smooth-quadratic-bezier-curve-to) + (join-params x y) - (:line-to-horizontal :line-to-vertical) - (str (:value params)) + :close-path + "" - :curve-to - (str (:c1x params) "," - (:c1y params) "," - (:c2x params) "," - (:c2y params) "," - (:x params) "," - (:y params)) + (:line-to-horizontal :line-to-vertical) + (:value params) - (:smooth-curve-to :quadratic-bezier-curve-to) - (str (:cx params) "," - (:cy params) "," - (:x params) "," - (:y params)) + :curve-to + (let [{:keys [c1x c1y c2x c2y]} params] + (join-params c1x c1y c2x c2y x y)) - :elliptical-arc - (str (:rx params) "," - (:ry params) "," - (:x-axis-rotation params) "," - (:large-arc-flag params) "," - (:sweep-flag params) "," - (:x params) "," - (:y params)) + (:smooth-curve-to :quadratic-bezier-curve-to) + (let [{:keys [cx cy]} params] + (join-params cx cy x y)) - ""))) + :elliptical-arc + (let [{:keys [rx ry x-axis-rotation large-arc-flag sweep-flag]} params] + (join-params rx ry x-axis-rotation large-arc-flag sweep-flag x y)) -(defn command->string [{:keys [command relative] :as entry}] - (let [command-str (case command - :move-to "M" - :close-path "Z" - :line-to "L" - :line-to-horizontal "H" - :line-to-vertical "V" - :curve-to "C" - :smooth-curve-to "S" - :quadratic-bezier-curve-to "Q" - :smooth-quadratic-bezier-curve-to "T" - :elliptical-arc "A" - "") - command-str (if relative (str/lower command-str) command-str) - param-list (command->param-list entry)] - (str command-str param-list))) + "")) + +(defn- translate-command + [cname] + (case cname + :move-to "M" + :close-path "Z" + :line-to "L" + :line-to-horizontal "H" + :line-to-vertical "V" + :curve-to "C" + :smooth-curve-to "S" + :quadratic-bezier-curve-to "Q" + :smooth-quadratic-bezier-curve-to "T" + :elliptical-arc "A" + "")) -(defn set-point - [command point] - (-> command - (assoc-in [:params :x] (:x point)) - (assoc-in [:params :y] (:y point)))) +(defn- command->string + [{:keys [command relative params]}] + (let [cmd (cond-> (translate-command command) + relative (.toLowerCase)) + prm (translate-params command params)] + (js* "~{} + ~{}" cmd prm))) + +(defn- set-point + [command {:keys [x y]}] + (update command :params assoc :x x :y y)) (defn format-path [content] - (with-out-str - (loop [last-move nil - current (first content) - content (rest content)] + (let [result (make-array (count content))] + (reduce (fn [last-move current] + (let [point (upc/command->point current) + current-move? (= :move-to (:command current)) + last-move (if current-move? point last-move)] - (when (some? current) - (let [point (upc/command->point current) - current-move? (= :move-to (:command current)) - last-move (if current-move? point last-move)] + (if (and (not current-move?) (pt= last-move point)) + (arr/conj! result (command->string (set-point current last-move))) + (arr/conj! result (command->string current))) - (if (and (not current-move?) (pt= last-move point)) - (print (command->string (set-point current last-move))) - (print (command->string current))) + (when (and (not current-move?) (pt= last-move point)) + (arr/conj! result "Z")) - (when (and (not current-move?) (pt= last-move point)) - (print "Z")) - - (recur last-move - (first content) - (rest content))))))) + last-move)) + nil + content) + (.join ^js result "")))