svgomg-ui/index.html

584 lines
23 KiB
HTML

<!doctype html>
<html dropzone>
<head>
<title>SVGOMG - SVGO's Missing GUI</title>
<meta name=theme-color content=#303F9F>
<meta name=viewport content="width=device-width,minimum-scale=1">
<link rel=preload as=script href=js/page.js>
<link rel=preload as=style href=css/all.css>
<style>html,body{height:100%;margin:0;padding:0;overflow:hidden}html{font-family:roboto, sans-serif;-webkit-tap-highlight-color:rgba(0,0,0,0);background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%202%202%22%3E%3Cpath%20d%3D%22M1%202V0h1v1H0v1z%22%20fill-opacity%3D%22.05%22%2F%3E%3C%2Fsvg%3E");background-size:16px 16px;background-color:#f2f2f2;transition:background-color 0.2s ease-in-out}pre,code,kbd,samp,tt{font-family:monospace,monospace;font-size:1em}button::-moz-focus-inner,textarea::-moz-focus-inner{border:0;padding:0}.main-menu{position:absolute;top:0;left:0;bottom:0;right:0;z-index:3;font-family:sans-serif}.main-menu.hide-font{color:transparent}.main-menu.hide-font .menu-footer-notes{color:transparent}.main-menu.use-font{font-family:inherit}.main-menu.hidden{pointer-events:none}.main-menu .menu{position:absolute;top:0;left:0;bottom:0;min-width:264px;width:40%;max-width:340px;background:#fff;box-shadow:3px 0 16px rgba(0,0,0,0.4);will-change:transform;overflow-x:hidden;overflow-y:auto;display:-webkit-flex;display:flex;-webkit-flex-flow:column;flex-flow:column}.main-menu .menu.transition{-webkit-transition:-webkit-transform 0.2s ease-out;transition:transform 0.2s ease-out}.main-menu .menu.hidden{-webkit-transform:translateX(-110%);transform:translateX(-110%)}.main-menu .menu>*{min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.main-menu .overlay{position:absolute;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,0.4);will-change:opacity}.main-menu .overlay.transition{-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.main-menu .overlay.hidden{opacity:0}.main-menu ul{margin:0;padding:0}.main-menu li{display:block;margin:0;padding:0}.main-menu .menu-item{padding:0 16px;width:100%;height:48px;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.main-menu .menu-item:link,.main-menu .menu-item:visited{color:inherit;text-decoration:none}.main-menu .menu-item:focus,.main-menu .menu-item:hover{outline:none;background:rgba(0,0,0,0.1)}.main-menu .menu-item .icon{width:24px;height:24px;opacity:0.54;margin-right:32px;-webkit-flex:none;flex:none}.main-menu .menu-item .spinner{-webkit-flex:none;flex:none;margin:0 0 0 auto}.main-menu .menu-item .menu-item-text{margin-right:28px;overflow:hidden;text-overflow:ellipsis}.main-menu .menu-input{cursor:pointer}.main-menu .menu-input .input-area{position:relative;white-space:nowrap}.main-menu .menu-input .label-txt{position:absolute;left:0;top:0}.main-menu .menu-input textarea,.main-menu .menu-input input{display:block;font:inherit;border:none;background:none;padding:0;margin:0;opacity:0;cursor:inherit;resize:none;width:100%;height:1.3em;overflow:hidden}.main-menu .menu-input textarea:focus,.main-menu .menu-input input:focus{outline:none;opacity:1}.main-menu .menu-input textarea:focus+.label-txt,.main-menu .menu-input input:focus+.label-txt{opacity:0;pointer-events:none}.main-menu .load-file-input{display:none}.menu-footer-notes{padding:0 16px;margin-top:auto;text-align:center;font-size:0.9rem;color:#8E8E8E}.menu-footer-notes a:link,.menu-footer-notes a:visited{color:inherit;text-decoration:underline}.menu-footer-notes a:hover,.menu-footer-notes a:active{color:#000}.preloader{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.7);z-index:3;color:#fff;opacity:0;font-family:sans-serif;display:-webkit-flex;display:flex;-webkit-flex-flow:column;flex-flow:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.preloader.active{opacity:1}.preloader.active .spinner{display:block}.preloader .spinner{display:none;border-color:#fff}.unbutton{display:inline-block;background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer;white-space:nowrap}.toolbar,.main,.drop-overlay{display:none}
/*# sourceMappingURL=head.css.map */</style>
<script>location.port&&"80"!=location.port||"https:"==location.protocol||(location.protocol="https:"),window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","UA-58850134-1","auto"),ga("send","pageview"),window.version="1.12.0"</script>
<link rel=manifest href=manifest.json>
<link rel=apple-touch-icon-precomposed href=imgs/icon.png>
<link rel=icon href=imgs/icon.png>
<meta name=apple-mobile-web-app-capable content=yes>
<meta name=application-name content=SVGOMG>
</head>
<body>
<div class=app-output>
<div class=main-menu>
<div class=overlay></div>
<nav class=menu>
<ul>
<li>
<div tabindex=0 role=button class="load-file unbutton menu-item needsclick">
<svg viewBox="0 0 24 24" class=icon>
<path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z"/>
</svg>
<span class=menu-item-text>Open SVG</span>
</div>
<input type=file class=load-file-input accept=.svg>
</li>
<li>
<label class="menu-input menu-item">
<svg viewBox="0 0 24 24" class=icon>
<path d="M19 2h-4.2C14.4.8 13.3 0 12 0c-1.3 0-2.4.8-2.8 2H5C4 2 3 3 3 4v16c0 1 1 2 2 2h14c1 0 2-1 2-2V4c0-1-1-2-2-2zm-7 0c.6 0 1 .5 1 1s-.5 1-1 1-1-.5-1-1 .5-1 1-1zm7 18H5V4h2v3h10V4h2v16z"/>
</svg>
<div class=input-area>
<textarea class=paste-input></textarea>
<span class=label-txt>Paste markup</span>
</div>
</label>
</li>
<li>
<div tabindex=0 role=button class="load-demo unbutton menu-item">
<svg viewBox="0 0 24 24" class=icon>
<path d="M18.92 6c-.2-.58-.76-1-1.42-1h-11c-.66 0-1.2.42-1.42 1L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-6zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z"/>
</svg>
<span class=menu-item-text>Demo</span>
</div>
</li>
<li>
<a href=https://github.com/jakearchibald/svgomg class=menu-item>
<svg viewBox="0 0 512 512" class=icon>
<path d="M7 266.8c22.6-5.7 53.3-13.4 107-14.8-1.4-3-2.8-6-4-9.2-21-.2-85.4 2.8-107.5 8.2H2c-.6 0-1.3-.4-1.5-1.2-.2-1 .4-1.8 1.3-2 21.8-5.4 84.8-8.4 107-8.3-5-14.8-7.2-31.7-7.2-50.6 0-33.6 10.5-46.2 24.5-64-10.6-38.3 4-64.4 4-64.4s22.5-4.7 65 25.8c23.2-9.8 84.7-10.7 113.8-2.2 18-11.8 50.6-28.5 63.8-23.8 3.6 5.7 11.3 22.5 4.7 59.3 4.5 8 27.7 25.3 27.8 74-.2 18-2 33-5.6 45.8 55.6-.4 88.2 4 110.8 8.3.8.2 1.4 1 1.3 2-.2.7-1 1.3-1.6 1.3h-.5c-22.4-4-55.2-8.7-111-8.2-1 3.3-2 6.4-3.3 9.3 19 .7 71.2 2.8 113.8 15.8 1 .3 1.4 1.2 1 2 0 .8-.7 1.2-1.4 1.2h-.5c-43-13.2-96.5-15-114.2-15.6-15.4 34-47 46.6-98.3 51.8 16.6 10.5 21.3 23.6 21.3 59 0 35.5-.5 40.2-.3 48.4 0 13.4 19.7 19.8 19 24-.7 4.4-16.4 3.7-23.7 1-20.8-7-18.7-24.4-18.7-24.4l-.6-47.4s1.4-25.5-8-25.5V420c0 16.8 11.8 22 11.8 28 0 10.8-21.6-1-28.2-7.6-10-10-9-31.7-8.7-48.8.2-16.4-.2-52.5-.2-52.5l-6.8.3s3 78.7-3.6 93c-8.3 18.4-33.5 24.8-33.5 16.4 0-5.7 6.3-4 9.8-16.5 3-10.8 2-91 2-91s-8.2 4.8-8.2 19.8l-.2 57.8c0 14.8-20.8 23-31 23-5 0-11.3 0-11.3-2.8 0-6.8 19.2-10.8 19.2-25l-.3-43.8s-9.7 1.7-23.4 1.7c-34.6 0-45.6-22.2-50.8-34.6-6.8-16-15.6-23.7-25-29.7-5.7-3.7-7-8-.4-9.4 30.7-5.7 38.5 34.8 59 41.3 14.6 4.6 33.4 2.6 42.7-3.5 1.4-12.3 10.3-23 17.7-28.6-52-5-83-23-99-52-54.4 1.2-85.3 9-108 14.6L3 271.2h-.4c-.8 0-1.5-.5-1.6-1.2-.3-1 .3-1.8 1.2-2l4.8-1.2z"/>
</svg>
<span class=menu-item-text>Contribute</span>
</a>
</li>
<li>
<a href=https://github.com/jakearchibald/svgomg/blob/master/README.md class=menu-item>
<svg viewBox="0 0 24 24" class=icon>
<path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
</svg>
<span class=menu-item-text>About</span>
</a>
</li>
</ul>
<div class=menu-extra></div>
<div class=menu-footer-notes>
<p>
Powered by the incredible
<a href=https://github.com/svg/svgo>SVGO</a>
</p>
</div>
</nav>
</div>
<div class=toolbar>
<div class=menu-toolbar-item>
<button class="unbutton menu-btn">
<svg viewBox="0 0 24 24">
<title>Menu</title>
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</svg>
</button>
</div>
<form class="material-tabs view-toggler">
<label class=material-tab>
<input type=radio name=output value=image checked>
<span class=selected></span>
Image
</label>
<label class=material-tab>
<input type=radio name=output value=code>
<span class=selected></span>
Markup
</label>
</form>
</div>
<div class=main>
<div class=output>
<div class=action-button-container>
<div class=minor-action-container></div>
<div class=results-container></div>
</div>
</div>
<div class=settings>
<div class=results-container-mobile></div>
<div class=settings-scroller>
<section class=global>
<h1 class=settings-sub-heading>Global settings</h1>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=original>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Show original
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=gzip checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Compare gzipped
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=pretty>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Prettify markup
</label>
</div>
<div>
<label class=setting-item-range>
<div class=label-text>Precision</div>
<input type=range min=0 max=8 step=1 value=3 name=floatPrecision>
</label>
</div>
</section>
<section class=plugins>
<h1 class=settings-sub-heading>Features</h1>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeDoctype checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove doctype
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeXMLProcInst checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove XML instructions
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeComments checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove comments
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeMetadata checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove &lt;metadata>
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeXMLNS>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove xmlns
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeEditorsNSData checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove editor data
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=cleanupAttrs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Cleanup attribute whitespace
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=inlineStyles checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Inline styles
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=minifyStyles checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Minify styles
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=convertStyleToAttrs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Style to attributes
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=cleanupIDs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Clean IDs
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeRasterImages>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove raster images
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeUselessDefs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove unused defs
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=cleanupNumericValues checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Round/rewrite numbers
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=cleanupListOfValues>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Round/rewrite number lists
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=convertColors checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Minify colours
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeUnknownsAndDefaults checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove unknowns & defaults
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeNonInheritableGroupAttrs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove unneeded group attrs
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeUselessStrokeAndFill checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove useless stroke & fill
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeViewBox checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove viewBox
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=cleanupEnableBackground checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove/tidy enable-background
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeHiddenElems checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove hidden elements
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeEmptyText checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove empty text
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=convertShapeToPath checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Shapes to (smaller) paths
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=moveElemsAttrsToGroup checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Move attrs to parent group
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=moveGroupAttrsToElems checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Move group attrs to elements
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=collapseGroups checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Collapse useless groups
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=convertPathData checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Round/rewrite paths
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=convertTransform checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Round/rewrite transforms
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeEmptyAttrs checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove empty attrs
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeEmptyContainers checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove empty containers
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=mergePaths checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Merge paths
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeUnusedNS checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove unused namespaces
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=sortAttrs>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Sort attrs
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeTitle checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove &lt;title>
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeDesc checked>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove &lt;desc>
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeDimensions>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Prefer viewBox to width/height
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeStyleElement>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove style elements
</label>
</div>
<div>
<label class=setting-item-toggle>
<input type=checkbox name=removeScriptElement>
<span class=material-switch>
<span class=track></span>
<span class=handle></span>
</span>
Remove script elements
</label>
</div>
</section>
<div class=setting-reset-row>
<button class="unbutton setting-reset">Reset all</button>
</div>
</div>
</div>
</div>
<div class=preloader>
<div class=spinner>
<div class=spinner-container>
<div class=spinner-layer>
<div class="circle-clipper left">
<div class=circle></div>
</div>
<div class=gap-patch>
<div class=circle></div>
</div>
<div class="circle-clipper right">
<div class=circle></div>
</div>
</div>
</div>
</div>
<p>Sorry, wasn't ready…</p>
</div>
<script>
requestAnimationFrame(function() {
requestAnimationFrame(function() {
var l = document.createElement("link");
l.rel = "stylesheet"
l.crossorigin = !0;
l.href = "css/all.css";
document.head.appendChild(l);
var s = document.createElement("script");
s.src = "js/page.js";
document.head.appendChild(s);
})
})
</script>
</div>
</body>
</html>