Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

SheetMagic - A tool for character sheet creation

1668459933

Edited 1668553461
Hello! I recently started working on a tool (that I call&nbsp; SheetMagic ) for GMs to create their own custom character sheets without coding. I made a proof-of-concept with the Mazes &amp; Minotaurs sheet that was recently posted in the sheet requests thread. The idea is that you load in the character sheet as an image, and then click-and-drag properties onto the sheet. Currently supported properties are: * Rolls * Single-line text * Multi-line text * Numbers * Checkboxes Result: These are the steps to get the HTML/CSS from SheetMagic and loading them into the Roll20&nbsp; Sheet Editor : 1.&nbsp; Open the SheetMagic proof-of-concept 2. In Roll20, open the game and go to Settings -&gt; Game Settings -&gt; Character Sheet Template -&gt; Custom, do NOT check "Legacy Sanitization" 3. In SheetMagic, click "Copy HTML" 4. In Roll20, make sure "HTML Layout" is empty, then paste from the clipboard 5. In SheetMagic, click "Copy CSS" 6. In Roll20, make sure "CSS Styling" is empty, then paste from the clipboard 7. In Roll20, click "Save Changes" Video tutorial (using the Custom Sheet Sandbox):&nbsp; <a href="https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/" rel="nofollow">https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/</a> I'd be very happy if you tried it out! Do you think this a good idea that's worth further work?&nbsp; Feedback, bug reporting and feature requests are much appreciated :)
I will be trying this out for sure, very timely! I'll keep you posted.
1668523608
Loren the GM
Pro
Marketplace Creator
This looks really promising. I'm unable to get it to load an image to start working with. When I visit&nbsp; <a href="https://oskaerik.github.io/sheetmagic/v1/" rel="nofollow">https://oskaerik.github.io/sheetmagic/v1/</a> &nbsp;and input a url, it changes the URL but doesn't load anything different other than the url input field.
1668527586

Edited 1668527611
Denny Kaye said: I will be trying this out for sure, very timely! I'll keep you posted. Awesome, thanks! :D Loren the GM said: This looks really promising. I'm unable to get it to load an image to start working with. When I visit&nbsp; <a href="https://oskaerik.github.io/sheetmagic/v1/" rel="nofollow">https://oskaerik.github.io/sheetmagic/v1/</a> &nbsp;and input a url, it changes the URL but doesn't load anything different other than the url input field. Interesting! I'll try to fix this asap, can you answer these questions: 1. What browser are you using? 2. Can you share the image URL? 3. Does the proof-of-concept seem to display correctly? I suspect that this is a browser related issue, I've basically only tested it on Chrome so far!
1668530723
Loren the GM
Pro
Marketplace Creator
Interesting! I'll try to fix this asap, can you answer these questions: 1. What browser are you using? 2. Can you share the image URL? 3. Does the proof-of-concept seem to display correctly? I suspect that this is a browser related issue, I've basically only tested it on Chrome so far! I've tried so far on both Chrome and Firefox. I'm on a Mac, if that makes any difference. Proof of concept displays fine. It is any URL that I try. For instance, I try this from a google search&nbsp; <a href="https://koboldpress.com/kpstore/wp-content/uploads/TOHCS1.png" rel="nofollow">https://koboldpress.com/kpstore/wp-content/uploads/TOHCS1.png</a>, &nbsp;this from a google search&nbsp; <a href="https://d1vzi28wh99zvq.cloudfront.net/images/15592/289973.jpg" rel="nofollow">https://d1vzi28wh99zvq.cloudfront.net/images/15592/289973.jpg</a>, &nbsp; or this that I uploaded myself&nbsp; <a href="https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg" rel="nofollow">https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg</a>. Chrome error log (very similar for all files tried) Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'. DevTools failed to load source map: Could not load content for chrome-extension://pgjjikdiikihdfpoppgaidccahalehjh/webspeed.js.map: System error: net::ERR_BLOCKED_BY_CLIENT index.js:138 Loaded state from JSON: {properties: Array(0), imageUrl: '<a href="https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg" rel="nofollow">https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg</a>'} /sheetmagic/v1/#%7B%22properties%22%3A%5B%5D%2C%22imageUrl%22%3A%22https%3A%2F%2Fwww.lorenthegm.com%2Fwp-content%2Fuploads%2F2022%2F11%2FShanty-Hunters-Sheet-V2.jpg%22%7D:1 Access to fetch at '<a href="https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg" rel="nofollow">https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg</a>' from origin '<a href="https://oskaerik.github.io" rel="nofollow">https://oskaerik.github.io</a>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. index.js:267 GET <a href="https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg" rel="nofollow">https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg</a> net::ERR_FAILED 200 setSheetImage @ index.js:267 loadState @ index.js:141 init @ index.js:121 (anonymous) @ index.js:47 postMessage (async) (anonymous) @ VM363 about:srcdoc:1 index.js:267 Uncaught (in promise) TypeError: Failed to fetch at HTMLInputElement.setSheetImage (index.js:267:26) at loadState (index.js:141:18) at init (index.js:121:3) at index.js:47:28 setSheetImage @ index.js:267 loadState @ index.js:141 init @ index.js:121 (anonymous) @ index.js:47 await in (anonymous) (async) loadState @ index.js:141 init @ index.js:121 (anonymous) @ index.js:47 postMessage (async) (anonymous) @ VM363 about:srcdoc:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledCompetitors @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledCompetitors @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledCompetitors @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 N @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledCompetitors @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 B @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 r @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledAdBlockers @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 B @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 r @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledAdBlockers @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 B @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 r @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledAdBlockers @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 B @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 r @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledAdBlockers @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1 inject.bundle.js:1 GET chrome-extension://invalid/ net::ERR_FAILED x @ inject.bundle.js:1 _checkExistence @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 B @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 r @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 l @ vendors.bundle.js:7 h @ vendors.bundle.js:7 d @ vendors.bundle.js:7 l @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromise0 @ vendors.bundle.js:7 S._settlePromises @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.settlePromises @ vendors.bundle.js:7 S._fulfill @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) l @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 S._resolveCallback @ vendors.bundle.js:7 S._settlePromiseFromHandler @ vendors.bundle.js:7 S._settlePromise @ vendors.bundle.js:7 S._settlePromiseCtx @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 Promise.then (async) s @ vendors.bundle.js:7 a.hasDevTools.c.invoke @ vendors.bundle.js:7 S._then @ vendors.bundle.js:7 l._iterate @ vendors.bundle.js:7 e @ vendors.bundle.js:7 l @ vendors.bundle.js:7 p @ vendors.bundle.js:7 t.reduce @ vendors.bundle.js:7 e.each @ vendors.bundle.js:7 isInstalledAdBlockers @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 ae @ inject.bundle.js:1 re @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 q @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 de @ inject.bundle.js:1 le @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 Promise.then (async) je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 u @ inject.bundle.js:1 m @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 setInterval (async) (anonymous) @ inject.bundle.js:1 w @ vendors.bundle.js:7 (anonymous) @ vendors.bundle.js:7 e.&lt;computed&gt; @ vendors.bundle.js:7 je @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 (anonymous) @ inject.bundle.js:1 i @ inject.bundle.js:1 t @ inject.bundle.js:1 o @ inject.bundle.js:1 (anonymous) @ vendors.bundle.js:1
1668532036

Edited 1668532153
Loren the GM &nbsp;said: I've tried so far on both Chrome and Firefox. I'm on a Mac, if that makes any difference. Proof of concept displays fine. It is any URL that I try. For instance, I try this from a google search&nbsp; <a href="https://koboldpress.com/kpstore/wp-content/uploads/TOHCS1.png" rel="nofollow">https://koboldpress.com/kpstore/wp-content/uploads/TOHCS1.png</a>, &nbsp;this from a google search&nbsp; <a href="https://d1vzi28wh99zvq.cloudfront.net/images/15592/289973.jpg" rel="nofollow">https://d1vzi28wh99zvq.cloudfront.net/images/15592/289973.jpg</a>, &nbsp; or this that I uploaded myself&nbsp; <a href="https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg" rel="nofollow">https://www.lorenthegm.com/wp-content/uploads/2022/11/Shanty-Hunters-Sheet-V2.jpg</a>. C Chrome error log (very similar for all files tried) Great, I'll look into this! Just a sanity check, is it the same in a private/incognito browser window? Do you have any browser plugins installed?
1668537146
Loren the GM
Pro
Marketplace Creator
Ur-Dur said: Great, I'll look into this! Just a sanity check, is it the same in a private/incognito browser window? Do you have any browser plugins installed? It happens in both standard and private/incognito. I do have extensions, but they should be off when in incognito mode.
1668537674

Edited 1668537777
Loren the GM &nbsp;said: Ur-Dur &nbsp;said: Great, I'll look into this! Just a sanity check, is it the same in a private/incognito browser window? Do you have any browser plugins installed? It happens in both standard and private/incognito. I do have extensions, but they should be off when in incognito mode. I couldn't open the images you posted either, and I found the problem! :) The sites that the images are hosted on don't have the proper CORS policy, meaning that they basically block SheetMagic from fetching their images. There's no simple solution to this. The workaround is to upload the images to another site, e.g. <a href="https://imgbb.com/" rel="nofollow">https://imgbb.com/</a> . I uploaded the TOC sheet there: <a href="https://i.ibb.co/tpFTNWv/TOHCS1.png" rel="nofollow">https://i.ibb.co/tpFTNWv/TOHCS1.png</a> And it seems to load fine in SheetMagic: <a href="https://oskaerik.github.io/sheetmagic/v1/#%7B%22properties%22%3A%5B%5D%2C%22imageUrl%22%3A%22https%3A%2F%2Fi.ibb.co%2FtpFTNWv%2FTOHCS1.png%22%7D" rel="nofollow">https://oskaerik.github.io/sheetmagic/v1/#%7B%22properties%22%3A%5B%5D%2C%22imageUrl%22%3A%22https%3A%2F%2Fi.ibb.co%2FtpFTNWv%2FTOHCS1.png%22%7D</a> Hope that works for you!
This seems like a fantastic idea. Is it possible to do a brief video tutorial to walk us through how to setup and use the sheet?&nbsp;
1668547314
Gold
Forum Champion
Hello&nbsp; Ur-Dur , I want to start creating a very-basic Custom Character Sheet that does not have an Image developed yet. Can I still use SheetMagic? Would I be able to "click and drag" Fields onto a blank page? Should I go into Photoshop or similar, and draw a mock-up image first?
1668549951

Edited 1668550055
Gold &nbsp;said: Hello&nbsp; Ur-Dur , I want to start creating a very-basic Custom Character Sheet that does not have an Image developed yet. Can I still use SheetMagic? Would I be able to "click and drag" Fields onto a blank page? Should I go into Photoshop or similar, and draw a mock-up image first? Interesting use case! I added a "Non-editable text" property so you can place static text onto the sheet. Would that help? Link to a proof-of-concept Result in Roll20: (it ironically requires a blank image for now, uploaded one here: <a href="https://i.ibb.co/tZNpdDy/blank.png" rel="nofollow">https://i.ibb.co/tZNpdDy/blank.png</a> )
1668553342

Edited 1668554340
Manny L. &nbsp;said: This seems like a fantastic idea. Is it possible to do a brief video tutorial to walk us through how to setup and use the sheet?&nbsp; Thanks for the kind words! :D I made a quick "video tutorial" where I add a couple of fields to a sheet and import it in the Roll20 Sheet Sandbox: <a href="https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/" rel="nofollow">https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/</a> (A finished sheet should be imported in the Sheet Editor instead: <a href="https://wiki.roll20.net/Sheet_Editor" rel="nofollow">https://wiki.roll20.net/Sheet_Editor</a>)
I have tested this out with random sheets I googled &amp; it is excellent. Well done &amp; thank you, Ur-Dur!
Awesome piece of work Ur-Dur! I'm gonna try it out on a little custom game I'm working on.
Ur-Dur said: Manny L. &nbsp;said: This seems like a fantastic idea. Is it possible to do a brief video tutorial to walk us through how to setup and use the sheet?&nbsp; Thanks for the kind words! :D I made a quick "video tutorial" where I add a couple of fields to a sheet and import it in the Roll20 Sheet Sandbox: <a href="https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/" rel="nofollow">https://drive.google.com/file/d/1cLc68zwA7Y72hFLGz9AY5j9l-PQXsopm/</a> (A finished sheet should be imported in the Sheet Editor instead: <a href="https://wiki.roll20.net/Sheet_Editor" rel="nofollow">https://wiki.roll20.net/Sheet_Editor</a> ) Perfect, thanks. I will take a look at this over the weekend as I have a sheet in mind.
1668686391

Edited 1668686514
(Felipe) Boku
Sheet Author
This is such a fantastic idea that i HOPE it could be implemented officially to the website.&nbsp; Definetely gonna give it a try.&nbsp; How much automation do you believe would be possible to add with this system?&nbsp; As for feature requests, since a lot of character sheets have multiple pages, it would be a very good thing to have. Also, any chance of generating Roll Templates in some similar manner? Actually, just the possibility of adding rolls and text through the default template would be amazing! Also, having any kind of support for svg files for the backdrop and maybe a compatibility with the dark mode? Great work, i'll be lurking from the shadows hoping for your success!
1668688927

Edited 1668689178
Thank you all for the kind words! Makes me motivated to keep working on this! :D I just published some improvements. The main new feature is that you can select a bunch of properties and copy them in bulk. Makes it much faster to replicate a group of properties. Quick video demo (for some reason my mouse pointer is a bit offset down-right in the videos, you'll have to use your imagination):&nbsp; <a href="https://drive.google.com/file/d/1GreLjOl-qBIyNn7elTqGyZ7IyGBFtPe4/" rel="nofollow">https://drive.google.com/file/d/1GreLjOl-qBIyNn7elTqGyZ7IyGBFtPe4/</a> Felipe (Boku) &nbsp;said: This is such a fantastic idea that i HOPE it could be implemented officially to the website.&nbsp; Definetely gonna give it a try.&nbsp; How much automation do you believe would be possible to add with this system?&nbsp; As for feature requests, since a lot of character sheets have multiple pages, it would be a very good thing to have. Also, any chance of generating Roll Templates in some similar manner? Actually, just the possibility of adding rolls and text through the default template would be amazing! Also, having any kind of support for svg files for the backdrop and maybe a compatibility with the dark mode? Great work, i'll be lurking from the shadows hoping for your success! The bulk copying should at least make it faster to create sheets. If you have other automation ideas, please share them! :) Roll Templates are supported, create a Roll property and set value e.g. &amp;{template:default} {{name=Dexterity}} {{First=[[1d20+@{dexterity}[dexterity]]]}} {{Second=[[1d20+@{dexterity}[dexterity]]]}} Result: SVGs should also work, just let me know if you have any issues! :) Multiple pages would be cool. My temporary workaround is to just create a big image with the pages stacked top-to-bottom ;)
So, in regards of automation, i was thinking about self calculating values (Skill modifier, for example) that may or may not use the toggles from the checks and stuff like that, and selectable lists as well. Also, it would be cool if the check boxes had multiple "toggles", like, different settings in accord to the how many times you clicked on it. It would be nice to be able to use some unicode symbols for each "level" in it as well. I think this are some of the most common "features" a new character sheet may need, if i remember anything critical i'll let you know! Keep up the good work and thanks for the quick answer!
1668793092

Edited 1668796026
Felipe (Boku) &nbsp;said: So, in regards of automation, i was thinking about self calculating values (Skill modifier, for example) that may or may not use the toggles from the checks and stuff like that, and selectable lists as well. Also, it would be cool if the check boxes had multiple "toggles", like, different settings in accord to the how many times you clicked on it. It would be nice to be able to use some unicode symbols for each "level" in it as well. I think this are some of the most common "features" a new character sheet may need, if i remember anything critical i'll let you know! Keep up the good work and thanks for the quick answer! Great ideas! Regarding self calculating values: I have now added a new property "Auto-calc" where you can write formulas like: (floor(@{might} / 2)) And it will auto calculate that value from the formula. See&nbsp; <a href="https://wiki.roll20.net/Building_Character_Sheets/Auto-Calc" rel="nofollow">https://wiki.roll20.net/Building_Character_Sheets/Auto-Calc</a> &nbsp;for details. Here's a simple example on SheetMagic (Also added a color picker for the sheet's font color) :) Result in Roll20 (I entered 11 and it auto-calcs the bonus to 5): Use roll templates to make it prettier: Furthermore! See this post if you want another example of a "full sheet" built with SheetMagic:&nbsp; <a href="https://app.roll20.net/forum/post/10137951/character-sheet-requests-q3-2021/?pageforid=11192032#post-11192032" rel="nofollow">https://app.roll20.net/forum/post/10137951/character-sheet-requests-q3-2021/?pageforid=11192032#post-11192032</a> This Fabula Ultima sheet has 200+ properties and took me less than an hour to create in SheetMagic. (Copying multiple properties at once for repeated sections is the way to go!)
Has anyone had time to try using SheetMagic for a full sheet yet? I'd love to hear about your experience! (also in PM if you don't feel like posting it here) :)
I played with it and didn't complete a full sheet yet. I will comment that it's immensely useful once it is understood how it works. It took me a bit to figure out that the reccomended 1000px is actually mandatory. If you go over 1000px you will not be able to access the input fields because they will be hidden off-screen. Once I was under 1000px it was quite clear how this functions and easy to utilize.&nbsp;&nbsp;
1669068541

Edited 1669068583
ST Carcass &nbsp;said: I played with it and didn't complete a full sheet yet. I will comment that it's immensely useful once it is understood how it works. It took me a bit to figure out that the reccomended 1000px is actually mandatory. If you go over 1000px you will not be able to access the input fields because they will be hidden off-screen. Once I was under 1000px it was quite clear how this functions and easy to utilize.&nbsp;&nbsp; Great input, glad to hear that you've tried it! &nbsp;As a temporary workaround if the sidebar does not fit, you could try using the browser's zoom out feature, it might help a bit at least. :)
1669186393

Edited 1669186411
(Felipe) Boku
Sheet Author
So, some feedback now that I and a friend started using your tool.&nbsp; As it is right now, it's very hard to be precise and keep things lined. The duplication tool really does help with creating a lot of repeating spaces, but it also reveals the problem i pointed easily, as bigger unaligned blocks are easier to spot. It would be amazing if we could set some kind of grid/constraint to where the blocks get positioned, as well as being able to move and scale them after the first interaction. In this same direction, some tool like the windows "magnifying glass" would definetely be helpful in the same circumstances. The page also updates everytime a property field is updated in any way. Working of longer sheets make it pop to the top every time and it's actually quite a bother. As soon as we are able to test the results i'll give more feedbacks!
1669187503

Edited 1669187534
Felipe (Boku) &nbsp;said: So, some feedback now that I and a friend started using your tool.&nbsp; As it is right now, it's very hard to be precise and keep things lined. The duplication tool really does help with creating a lot of repeating spaces, but it also reveals the problem i pointed easily, as bigger unaligned blocks are easier to spot. It would be amazing if we could set some kind of grid/constraint to where the blocks get positioned, as well as being able to move and scale them after the first interaction. In this same direction, some tool like the windows "magnifying glass" would definetely be helpful in the same circumstances. The page also updates everytime a property field is updated in any way. Working of longer sheets make it pop to the top every time and it's actually quite a bother. As soon as we are able to test the results i'll give more feedbacks! Thanks for the feedback, really cool that you've tried it out! I agree with everything you write, this is the same experience I've had when creating sheets with many properties. I'm currently planning a SheetMagic v2 where I'll significantly improve the user experience. I've been experimenting with snapping into place/guide lines, as well as selecting groups of properties and moving/resizing.&nbsp; Sneak peek:
V2 is looking good, and as promised, i'm coming back with some extra feedbacks. As it is right now, we can't use symbols in the names of the properties, and this doesn't allow you to create a "HP and HP max" that can be linked correctly in the token, for example. In the documentation, it's a thing about setting a "hp" and "hp_max", with "_max" being the modifier that set the attribute as its maximum value.
Felipe (Boku) said: V2 is looking good, and as promised, i'm coming back with some extra feedbacks. As it is right now, we can't use symbols in the names of the properties, and this doesn't allow you to create a "HP and HP max" that can be linked correctly in the token, for example. In the documentation, it's a thing about setting a "hp" and "hp_max", with "_max" being the modifier that set the attribute as its maximum value. Interesting, I didn't know about the _max modifier. I'm allowing underscores in property names now. Let me know if there are any other symbols you need! :) (If the behavior hasn't changed for you, try doing a hard refresh CTRL+F5 to get the newest code)
Ok, so that's probably the reason why the resulting css changed so much. I don't know what may have caused the problem, but seeing that you updated the code, it seem feasible to think something change and it may be the cause. Before and After: &nbsp; But the update will streamline the sheet creation, so thanks for the quick update!
1669246967
Croco
Sheet Author
I'm working on this sheet together with Boku, and man, really. Thank you Ur-Dur
1669267139

Edited 1669267245
Felipe (Boku) &nbsp;said: Ok, so that's probably the reason why the resulting css changed so much. I don't know what may have caused the problem, but seeing that you updated the code, it seem feasible to think something change and it may be the cause. Before and After: &nbsp; But the update will streamline the sheet creation, so thanks for the quick update! The second image contains the HTML, please try copying the CSS again (it should not have changed). :) I've noticed that writing to the clipboard is not 100% reliable, I might go for "Download HTML/CSS" buttons in v2 instead. Croco &nbsp;said: I'm working on this sheet together with Boku, and man, really. Thank you Ur-Dur I'm glad you find it useful! :D
Ur-Dur said: Felipe (Boku) &nbsp;said: Ok, so that's probably the reason why the resulting css changed so much. I don't know what may have caused the problem, but seeing that you updated the code, it seem feasible to think something change and it may be the cause. Before and After: &nbsp; But the update will streamline the sheet creation, so thanks for the quick update! The second image contains the HTML, please try copying the CSS again (it should not have changed). :) I've noticed that writing to the clipboard is not 100% reliable, I might go for "Download HTML/CSS" buttons in v2 instead. Croco &nbsp;said: I'm working on this sheet together with Boku, and man, really. Thank you Ur-Dur I'm glad you find it useful! :D I just found that out, and i tried to test it some times, and both buttons are giving outputting the same code. So, my bad for a wrong feedback, i had 100% not noticed by the time, but now i really tried some times and it's just outputting the HTML in both buttons. And yeah, i agree that a download button instead could be way more reliable.
1669269048

Edited 1669269148
Felipe (Boku) &nbsp;said: I just found that out, and i tried to test it some times, and both buttons are giving outputting the same code. So, my bad for a wrong feedback, i had 100% not noticed by the time, but now i really tried some times and it's just outputting the HTML in both buttons. And yeah, i agree that a download button instead could be way more reliable. Yeah that's not acceptable. I've changed it to download buttons now ;) Try a hard refresh and you should see "Download HTML"/"Download CSS". Let me know if you experience any issues!
1669876007

Edited 1669916531
Do you have Patreon? I need you take my money for this! Edit of edit : nevermind got it on mine&nbsp;
Hey! I was using SheetMagic to create a Fabula Ultima sheet, but after some trouble scrolled down to the comments to see if anyone was having the same problems I was having, and realized you were working on a Fabula Ultima sheet as well. If you have it finished, could you maybe share the HTML/CSS code? Or could you give me some place easier to contact you with regards to questions/problems I have?
Lax said: Hey! I was using SheetMagic to create a Fabula Ultima sheet, but after some trouble scrolled down to the comments to see if anyone was having the same problems I was having, and realized you were working on a Fabula Ultima sheet as well. If you have it finished, could you maybe share the HTML/CSS code? Or could you give me some place easier to contact you with regards to questions/problems I have? Try this: 1. Open this Fabula Ultima sheet on SheetMagic &nbsp;(it's a bit rough around the edges, but should get the job done) 2. Click "Download HTML" and "Download CSS" 3. Import these files in a custom sheet sandbox Hopefully that should get you started. :) If you have any questions, shoot!
Ike the Knife said: Do you have Patreon? I need you take my money for this! Edit of edit : nevermind got it on mine&nbsp; I'm glad you like it! Donations are welcome, added a link on SheetMagic . :)
1671643370

Edited 1671643386
I started today to try and adapt an an old Italian NEXUS rpg and boy! SheetMagic is really&nbsp; making it a lot simpler! Thank you very much!
1671644332

Edited 1671644390
Matteo il Fabbro &nbsp;said: I started today to try and adapt an an old Italian NEXUS rpg and boy! SheetMagic is really&nbsp; making it a lot simpler! Thank you very much! That's awesome, I'm glad you like it! Happy holidays! :D
ok...tried this and my brain shorted out lol..math is not my thing. Don't spose i could con someone into doing this one up for me? Probably not im sure but i had to try.