Browse Source

cache svg with element id

ad1992 3 years ago
parent
commit
4e75f10b2c
1 changed files with 23 additions and 16 deletions
  1. 23 16
      src/renderer/renderElement.ts

+ 23 - 16
src/renderer/renderElement.ts

@@ -269,39 +269,46 @@ const drawElementOnCanvas = (
       if (!config) {
       if (!config) {
         break;
         break;
       }
       }
-      if (!customElementImgCache[config.customType]) {
-        const img = document.createElement("img");
-        img.id = config.customType;
-        if (typeof config.svg === "string") {
+      if (typeof config.svg === "string") {
+        if (!customElementImgCache[element.id]) {
+          const img = document.createElement("img");
           img.src = config.svg;
           img.src = config.svg;
-        } else {
-          const svg = config.svg(element);
-          if (svg instanceof Promise) {
-            svg.then((res) => {
+          img.id = element.id;
+          customElementImgCache[img.id] = img;
+        }
+      } else if (typeof config.svg === "function") {
+        const svg = config.svg(element);
+        if (svg instanceof Promise) {
+          svg.then((res) => {
+            if (!customElementImgCache[element.id]) {
+              const img = document.createElement("img");
+              img.id = element.id;
               img.src = res;
               img.src = res;
               customElementImgCache[img.id] = img;
               customElementImgCache[img.id] = img;
-
               context.drawImage(
               context.drawImage(
-                customElementImgCache[config.customType],
+                customElementImgCache[element.id],
                 0,
                 0,
                 0,
                 0,
                 element.width,
                 element.width,
                 element.height,
                 element.height,
               );
               );
-            });
-          } else {
-            img.src = svg;
-          }
+            }
+          });
+        } else if (!customElementImgCache[element.id]) {
+          const img = document.createElement("img");
+          img.id = element.id;
+          img.src = svg;
+          customElementImgCache[img.id] = img;
         }
         }
-        customElementImgCache[img.id] = img;
       }
       }
       context.drawImage(
       context.drawImage(
-        customElementImgCache[config.customType],
+        customElementImgCache[element.id],
         0,
         0,
         0,
         0,
         element.width,
         element.width,
         element.height,
         element.height,
       );
       );
+
       break;
       break;
     }
     }
     default: {
     default: {