From 90cab6f8b2706b702cc406a133adfef38f9b839a Mon Sep 17 00:00:00 2001 From: makearmy Date: Wed, 15 Oct 2025 20:29:50 -0400 Subject: [PATCH] Vendor SVGnest assets; remove stale submodule gitlink --- .gitignore | 1 + public/svgnest | 1 - public/svgnest/LICENSE.txt | 21 + public/svgnest/favicon16.gif | Bin 0 -> 1465 bytes public/svgnest/favicon32.gif | Bin 0 -> 2015 bytes public/svgnest/font/fonts/LatoLatin-Bold.eot | Bin 0 -> 68209 bytes public/svgnest/font/fonts/LatoLatin-Bold.ttf | Bin 0 -> 146156 bytes public/svgnest/font/fonts/LatoLatin-Bold.woff | Bin 0 -> 72376 bytes .../svgnest/font/fonts/LatoLatin-Bold.woff2 | Bin 0 -> 44380 bytes .../font/fonts/LatoLatin-BoldItalic.eot | Bin 0 -> 69528 bytes .../font/fonts/LatoLatin-BoldItalic.ttf | Bin 0 -> 149756 bytes .../font/fonts/LatoLatin-BoldItalic.woff | Bin 0 -> 73700 bytes .../font/fonts/LatoLatin-BoldItalic.woff2 | Bin 0 -> 45036 bytes public/svgnest/font/fonts/LatoLatin-Light.eot | Bin 0 -> 67508 bytes public/svgnest/font/fonts/LatoLatin-Light.ttf | Bin 0 -> 151856 bytes .../svgnest/font/fonts/LatoLatin-Light.woff | Bin 0 -> 72604 bytes .../svgnest/font/fonts/LatoLatin-Light.woff2 | Bin 0 -> 43468 bytes .../svgnest/font/fonts/LatoLatin-Regular.eot | Bin 0 -> 68135 bytes .../svgnest/font/fonts/LatoLatin-Regular.ttf | Bin 0 -> 148540 bytes .../svgnest/font/fonts/LatoLatin-Regular.woff | Bin 0 -> 72456 bytes .../font/fonts/LatoLatin-Regular.woff2 | Bin 0 -> 43760 bytes public/svgnest/font/generator_config.txt | 5 + public/svgnest/font/lato-hai-demo.html | 612 +++ public/svgnest/font/lato-hai-webfont.eot | Bin 0 -> 26454 bytes public/svgnest/font/lato-hai-webfont.svg | 4241 +++++++++++++++++ public/svgnest/font/lato-hai-webfont.ttf | Bin 0 -> 55640 bytes public/svgnest/font/lato-hai-webfont.woff | Bin 0 -> 29808 bytes public/svgnest/font/lato-lig-demo.html | 612 +++ public/svgnest/font/lato-lig-webfont.eot | Bin 0 -> 27423 bytes public/svgnest/font/lato-lig-webfont.svg | 4241 +++++++++++++++++ public/svgnest/font/lato-lig-webfont.ttf | Bin 0 -> 56692 bytes public/svgnest/font/lato-lig-webfont.woff | Bin 0 -> 31024 bytes public/svgnest/font/latolatinfonts.css | 35 + .../svgnest/font/specimen_files/easytabs.js | 7 + .../font/specimen_files/grid_12-825-55-15.css | 129 + .../specimen_files/specimen_stylesheet.css | 396 ++ public/svgnest/font/stylesheet.css | 30 + public/svgnest/img/background.png | Bin 0 -> 18777 bytes public/svgnest/img/close.svg | 13 + public/svgnest/img/code.svg | 21 + public/svgnest/img/download.svg | 1 + public/svgnest/img/logo.svg | 46 + public/svgnest/img/settings.svg | 1 + public/svgnest/img/spin.svg | 1 + public/svgnest/img/start.svg | 1 + public/svgnest/img/upload.svg | 1 + public/svgnest/img/zoomin.svg | 5 + public/svgnest/img/zoomout.svg | 4 + public/svgnest/index.html | 912 ++++ public/svgnest/index.html.bak | 914 ++++ public/svgnest/readme.md | 114 + public/svgnest/style.css | 628 +++ public/svgnest/style.css.bak | 584 +++ public/svgnest/svgnest.js | 988 ++++ public/svgnest/svgparser.js | 793 +++ public/svgnest/util/clipper.js | 244 + public/svgnest/util/domparser.js | 37 + public/svgnest/util/eval.js | 11 + public/svgnest/util/filesaver.js | 188 + public/svgnest/util/geometryutil.js | 1891 ++++++++ public/svgnest/util/json.js | 1 + public/svgnest/util/matrix.js | 156 + public/svgnest/util/parallel.js | 386 ++ public/svgnest/util/pathsegpolyfill.js | 849 ++++ public/svgnest/util/placementworker.js | 297 ++ 65 files changed, 19417 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 160000 public/svgnest create mode 100644 public/svgnest/LICENSE.txt create mode 100644 public/svgnest/favicon16.gif create mode 100644 public/svgnest/favicon32.gif create mode 100644 public/svgnest/font/fonts/LatoLatin-Bold.eot create mode 100644 public/svgnest/font/fonts/LatoLatin-Bold.ttf create mode 100644 public/svgnest/font/fonts/LatoLatin-Bold.woff create mode 100644 public/svgnest/font/fonts/LatoLatin-Bold.woff2 create mode 100644 public/svgnest/font/fonts/LatoLatin-BoldItalic.eot create mode 100644 public/svgnest/font/fonts/LatoLatin-BoldItalic.ttf create mode 100644 public/svgnest/font/fonts/LatoLatin-BoldItalic.woff create mode 100644 public/svgnest/font/fonts/LatoLatin-BoldItalic.woff2 create mode 100644 public/svgnest/font/fonts/LatoLatin-Light.eot create mode 100644 public/svgnest/font/fonts/LatoLatin-Light.ttf create mode 100644 public/svgnest/font/fonts/LatoLatin-Light.woff create mode 100644 public/svgnest/font/fonts/LatoLatin-Light.woff2 create mode 100644 public/svgnest/font/fonts/LatoLatin-Regular.eot create mode 100644 public/svgnest/font/fonts/LatoLatin-Regular.ttf create mode 100644 public/svgnest/font/fonts/LatoLatin-Regular.woff create mode 100644 public/svgnest/font/fonts/LatoLatin-Regular.woff2 create mode 100644 public/svgnest/font/generator_config.txt create mode 100644 public/svgnest/font/lato-hai-demo.html create mode 100644 public/svgnest/font/lato-hai-webfont.eot create mode 100644 public/svgnest/font/lato-hai-webfont.svg create mode 100644 public/svgnest/font/lato-hai-webfont.ttf create mode 100644 public/svgnest/font/lato-hai-webfont.woff create mode 100644 public/svgnest/font/lato-lig-demo.html create mode 100644 public/svgnest/font/lato-lig-webfont.eot create mode 100644 public/svgnest/font/lato-lig-webfont.svg create mode 100644 public/svgnest/font/lato-lig-webfont.ttf create mode 100644 public/svgnest/font/lato-lig-webfont.woff create mode 100644 public/svgnest/font/latolatinfonts.css create mode 100644 public/svgnest/font/specimen_files/easytabs.js create mode 100644 public/svgnest/font/specimen_files/grid_12-825-55-15.css create mode 100644 public/svgnest/font/specimen_files/specimen_stylesheet.css create mode 100644 public/svgnest/font/stylesheet.css create mode 100644 public/svgnest/img/background.png create mode 100644 public/svgnest/img/close.svg create mode 100644 public/svgnest/img/code.svg create mode 100644 public/svgnest/img/download.svg create mode 100644 public/svgnest/img/logo.svg create mode 100644 public/svgnest/img/settings.svg create mode 100644 public/svgnest/img/spin.svg create mode 100644 public/svgnest/img/start.svg create mode 100644 public/svgnest/img/upload.svg create mode 100644 public/svgnest/img/zoomin.svg create mode 100644 public/svgnest/img/zoomout.svg create mode 100644 public/svgnest/index.html create mode 100644 public/svgnest/index.html.bak create mode 100644 public/svgnest/readme.md create mode 100644 public/svgnest/style.css create mode 100644 public/svgnest/style.css.bak create mode 100644 public/svgnest/svgnest.js create mode 100644 public/svgnest/svgparser.js create mode 100644 public/svgnest/util/clipper.js create mode 100644 public/svgnest/util/domparser.js create mode 100644 public/svgnest/util/eval.js create mode 100644 public/svgnest/util/filesaver.js create mode 100644 public/svgnest/util/geometryutil.js create mode 100644 public/svgnest/util/json.js create mode 100644 public/svgnest/util/matrix.js create mode 100644 public/svgnest/util/parallel.js create mode 100644 public/svgnest/util/pathsegpolyfill.js create mode 100644 public/svgnest/util/placementworker.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..60492e63 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +!public/svgnest/** diff --git a/public/svgnest b/public/svgnest deleted file mode 160000 index 1248dc21..00000000 --- a/public/svgnest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1248dc21efd3f90d1aa52ba5785e27e5217ed2c9 diff --git a/public/svgnest/LICENSE.txt b/public/svgnest/LICENSE.txt new file mode 100644 index 00000000..885e0602 --- /dev/null +++ b/public/svgnest/LICENSE.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Jack Qiao + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/public/svgnest/favicon16.gif b/public/svgnest/favicon16.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfe824bb5cb7a4908b743b14ede9300db3825a21 GIT binary patch literal 1465 zcmZ?wbhEHb6krfwxN5_|u-3}V>e_G96!V;*iRMRQ;gT;{4L0$o&6x?oc#Hm*w=oo!a zZ`!zF{kpYlR+RDqy+ozi$!1g&)~L}K^~ lof$cV7}zYhE?cH}voLV-vkM!WS%v$!@GLO(@^)mf1^}0?8a4m` literal 0 HcmV?d00001 diff --git a/public/svgnest/favicon32.gif b/public/svgnest/favicon32.gif new file mode 100644 index 0000000000000000000000000000000000000000..b4144128e5171fbbe8c5911d92164ec872cf7efe GIT binary patch literal 2015 zcmZ?wbhEHbRA5kGc$UHtzboeNzrVew+9#js&D)n@yV?8apC6xpeq4BAh0E3;tIghP zuP?oJ|3>7_h-0@;mK|vf-<=w?EB@BQ+Y2tvu-oEOa-=?CSFF?4z+HDX#q5l{{PJAg z@s1<6j{o}m^Zoa?1^cs-cgMx-jC%X+^}ZViKYV}p>BonA?{9zn@qXTgXZ*S&an0EB`iD#c4d2aP@Ki-(UJKkffzvC94{?naT zUtPTW?$-6!m%?_01#Sxt-X79-s-x*x?UKuLJhu8ZAFD0ipZn>@$L^D@Mf-Dd_htBP z3kuv86uUFpezW(p&yOdc>3R6!-lQ`<&ptn?K3rC`Kl}ds+Yvh=qIX7io@n;l7Wn-0 zQ|B!{-dh9ww*|Ru@eSG@^5V-=%gtW@|Nnpd_%Q>uf#QGe2;Tq&m&B4pAZ=q`QIMFN zom!%hl$xHIXRGvn_kJaX%oJOta8q9c-vZ~}1OnC3`ysn+mIn z+=ATHl0=1y+?>2(s|s7C#FYG`R4X7GB&@Hb09I0xZL8!6l28EI>6~Abs$i;TrkiYF zX0Bjvsb^?vZf;_(qhMrUXsT~utZ!_fYh-L?Vqj%rqyPmhm3bwJ6}oxF$}kgLQj3#|G7CyF z^YauyCMG83mzLNn0bL65LT&-v*t}vruy^#5^Kf+_U%#ji9s7p}Uv zBq$Z(UaSTehg24%>IbD3=a&{GrvjBLgRCmBaxO|uEXgkl$N@Uj$6r zjQ{`r{qy_R&mZ5vef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po z(!~qs&z(JU`qar2$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5Ze zMTG_VdAT{+S(zE>X{jm6Nr?&Zaj`McQIQehVWAb+Zk7=h z>1GvUVG(2P77>-1GDS$5D@jsViY<9vGMkjJWD=LO(2{08!6aS@+4bwxwdLitOWR%#yU%ao;=JBDCkp)5Pb@jO*l* zSk}K6EZ{8?Tzh9mb<(H3RzU~uug;TZI~#BzLCUm+E0*;|o6?O&HZHe`D;3zBcgmR_ z*`o2u=`n+$xnICxg=I{VY$8Ss+}{p$&d?7(Vz5x~fog-nQ>&B(2_9!!iad`r7ziYE zNHA!wQ!=%1JfmnRb!utPBE!>*1fqGf1e#YkXlKR#Kl0{+#?zczMQmIun-V5;Nyw}3 zh!tIQb%8c_mrRiGL}g(gVWYZ^k4Z-j8eO|qe!QT>#=|9ieZ$rnNgqD3?rRfNvYdXX znL{V3N5X~Y;M#}Hiejlt6xrD0_VORN$2U2eN2E4+TZdv$-dpA6DWAh`L6i{&h{lRj%Ccv>Z7PxJ1t*@n4iV?9IgcoxG`=Vk zz{K;Uv0%D(Q|;u_dV3QdG;$qX5x`V+QfIM}=CTEgxU>%*G4htt-Tp+WQ*}niLQeI0 X4N6^;mq;{qDD_w{bxv+%V6X-NF})C$ literal 0 HcmV?d00001 diff --git a/public/svgnest/font/fonts/LatoLatin-Bold.eot b/public/svgnest/font/fonts/LatoLatin-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..d90b47b81e535e7980997fe57ac261509eca9964 GIT binary patch literal 68209 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