Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

elastic-svg

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

elastic-svg - npm Package Compare versions

Comparing version 0.1.0 to 0.1.1

examples/iframes/elasticC.html

242

dist/elasticSVG.js

@@ -1,89 +0,5 @@

var elasticSVG =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./index.js");
/******/ })
/************************************************************************/
/******/ ({
var elasticSVG;elasticSVG =
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({

@@ -94,13 +10,20 @@ /***/ "./index.js":

\******************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return elasticSVG; });
// v0.0.8
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ elasticSVG)
/* harmony export */ });
// v0.1.1
function elasticSVG(selector, opts) {
opts = opts || {}; // containing DOM element, which defaults to body
opts = opts || {};
var hasWidth = opts.hasOwnProperty("width");
var hasHeight = opts.hasOwnProperty("height");
var hasAspect = opts.hasOwnProperty("aspect"); // containing DOM element, which defaults to body
var parent = document.querySelectorAll(selector || "body");
if (selector instanceof Element) {
var parent = selector;
} else {
var parent = document.querySelectorAll(selector || "body");
}

@@ -112,22 +35,43 @@ if (!parent || !parent.length) {

parent = parent[0]; // you can specify a width if you like, or we'll snap to size of container
parent = parent[0];
var initialWidth = parent.clientWidth; // you can specify a width if you like, or we'll snap to size of container
var base = {
width: typeof opts.width !== "undefined" ? opts.width : parent.clientWidth,
width: null,
height: null,
aspect: null,
scale: 1
}; // we need to remember the original width for scaling purposes
base.original_width = base.width; // you can either specify the height or the aspect ratio. If neither is specified, refaults to roughly the golden ratio
// you can either specify the height and width, which will computed the aspect ration, or one of these and the aspect ratio.
// If neither is specified, defaults to roughly the golden ratio
// specifying the height keeps the svg at a standard height and only resizes the width
// specifying the aspect ratio resizes both
if (typeof opts.height !== "undefined") {
if (hasWidth && hasHeight) {
if (hasAspect) {
console.log("Overriding aspect ratio since both `width` and `height` are specified");
opts.aspect = opts.height / opts.width;
}
base.width = opts.width;
base.height = opts.height;
base.aspect = base.height / base.width;
} else {
opts.aspect = typeof opts.aspect !== "undefined" ? opts.aspect : 0.618;
base.height = base.width * opts.aspect;
} // create a new SVG element
// if has neither an aspect or BOTH a width and height, default to approximately the golden ratio
opts.aspect = opts.aspect || 0.618;
if (hasWidth && !hasHeight) {
base.width = opts.width;
base.height = base.width * opts.aspect;
} else if (hasHeight) {
base.height = opts.height;
base.width = base.height / opts.aspect;
} else {
// if only has aspect
base.width = initialWidth;
base.height = base.width * opts.aspect;
}
}
base.original_width = base.width; // create a new SVG element
var xmlns = "http://www.w3.org/2000/svg";

@@ -145,7 +89,9 @@ var svg = document.createElementNS(xmlns, "svg");

function resize() {
console.log("resizing base");
var hasWidth = opts.hasOwnProperty("width");
var hasHeight = opts.hasOwnProperty("height");
var hasAspect = opts.hasOwnProperty("aspect");
base.width = parent.clientWidth;
svg.setAttributeNS(null, "width", base.width); // only resize the height if aspect was specified instead of height
svg.setAttributeNS(null, "width", base.width); // if `height` is not specified, resize it to the aspect ratio
if (opts.aspect) {
if (!hasHeight) {
base.height = base.width * opts.aspect;

@@ -155,2 +101,3 @@ svg.setAttributeNS(null, "height", base.height);

base.aspect = base.height / base.width;
base.scale = base.width / base.original_width; // optional callback

@@ -165,4 +112,5 @@

resize();
});
resize(); // call this on load since sometimes the initial conditions are wider than container
}); // manually trigger a page resize and run the resize function once
window.dispatchEvent(new Event('resize')); // resize(); // call this on load since sometimes the initial conditions are wider than container
// methods

@@ -179,3 +127,15 @@

};
/*
base.changeWidth = function(width) {
base.width = width;
if (opts.aspect) {
opts.aspect = base.height / base.width;
} else {
opts.width = width;
}
svg.setAttributeNS(null, "width", base.width);
}
*/
base.changeHeight = function (height) {

@@ -203,3 +163,63 @@ base.height = height;

/******/ })["default"];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lbGFzdGljU1ZHL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2VsYXN0aWNTVkcvLi9pbmRleC5qcyJdLCJuYW1lcyI6WyJlbGFzdGljU1ZHIiwic2VsZWN0b3IiLCJvcHRzIiwicGFyZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiY29uc29sZSIsImxvZyIsImJhc2UiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwic2NhbGUiLCJvcmlnaW5hbF93aWR0aCIsImhlaWdodCIsImFzcGVjdCIsInhtbG5zIiwic3ZnIiwiY3JlYXRlRWxlbWVudE5TIiwic2V0QXR0cmlidXRlTlMiLCJhcHBlbmRDaGlsZCIsInJlc2l6ZSIsIm9uUmVzaXplIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInNldFJlc2l6ZSIsImYiLCJjaGFuZ2VBc3BlY3QiLCJjaGFuZ2VIZWlnaHQiLCJ0cmlnZ2VyUmVzaXplIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0RBQTBDLGdDQUFnQztBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUF3RCxrQkFBa0I7QUFDMUU7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQXlDLGlDQUFpQztBQUMxRSx3SEFBZ0gsbUJBQW1CLEVBQUU7QUFDckk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xGQTtBQUFBO0FBQUE7QUFFZSxTQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUE4QkMsSUFBOUIsRUFBb0M7QUFDbERBLE1BQUksR0FBR0EsSUFBSSxJQUFJLEVBQWYsQ0FEa0QsQ0FHbEQ7O0FBQ0EsTUFBSUMsTUFBTSxHQUFHQyxRQUFRLENBQUNDLGdCQUFULENBQTBCSixRQUFRLElBQUksTUFBdEMsQ0FBYjs7QUFFQSxNQUFJLENBQUNFLE1BQUQsSUFBVyxDQUFDQSxNQUFNLENBQUNHLE1BQXZCLEVBQStCO0FBQzlCQyxXQUFPLENBQUNDLEdBQVIsQ0FBWSxnRUFBZ0VQLFFBQWhFLEdBQTJFLEdBQXZGO0FBQ0E7QUFDQTs7QUFFREUsUUFBTSxHQUFHQSxNQUFNLENBQUMsQ0FBRCxDQUFmLENBWGtELENBYWxEOztBQUNBLE1BQUlNLElBQUksR0FBRztBQUNWQyxTQUFLLEVBQUUsT0FBT1IsSUFBSSxDQUFDUSxLQUFaLEtBQXNCLFdBQXRCLEdBQW9DUixJQUFJLENBQUNRLEtBQXpDLEdBQWlEUCxNQUFNLENBQUNRLFdBRHJEO0FBRVZDLFNBQUssRUFBRTtBQUZHLEdBQVgsQ0Fka0QsQ0FtQmxEOztBQUNBSCxNQUFJLENBQUNJLGNBQUwsR0FBc0JKLElBQUksQ0FBQ0MsS0FBM0IsQ0FwQmtELENBc0JsRDtBQUNBO0FBQ0E7O0FBQ0csTUFBSSxPQUFPUixJQUFJLENBQUNZLE1BQVosS0FBdUIsV0FBM0IsRUFBd0M7QUFDdkNMLFFBQUksQ0FBQ0ssTUFBTCxHQUFjWixJQUFJLENBQUNZLE1BQW5CO0FBQ0FMLFFBQUksQ0FBQ00sTUFBTCxHQUFjTixJQUFJLENBQUNLLE1BQUwsR0FBY0wsSUFBSSxDQUFDQyxLQUFqQztBQUNBLEdBSEQsTUFHTztBQUNOUixRQUFJLENBQUNhLE1BQUwsR0FBYyxPQUFPYixJQUFJLENBQUNhLE1BQVosS0FBdUIsV0FBdkIsR0FBcUNiLElBQUksQ0FBQ2EsTUFBMUMsR0FBbUQsS0FBakU7QUFDSE4sUUFBSSxDQUFDSyxNQUFMLEdBQWNMLElBQUksQ0FBQ0MsS0FBTCxHQUFhUixJQUFJLENBQUNhLE1BQWhDO0FBQ0csR0EvQjhDLENBaUNsRDs7O0FBQ0csTUFBSUMsS0FBSyxHQUFHLDRCQUFaO0FBQ0EsTUFBSUMsR0FBRyxHQUFHYixRQUFRLENBQUNjLGVBQVQsQ0FBeUJGLEtBQXpCLEVBQWdDLEtBQWhDLENBQVY7QUFDSEMsS0FBRyxDQUFDRSxjQUFKLENBQW1CLElBQW5CLEVBQXlCLE9BQXpCLEVBQWtDVixJQUFJLENBQUNDLEtBQXZDO0FBQ0FPLEtBQUcsQ0FBQ0UsY0FBSixDQUFtQixJQUFuQixFQUF5QixRQUF6QixFQUFtQ1YsSUFBSSxDQUFDSyxNQUF4QztBQUNBWCxRQUFNLENBQUNpQixXQUFQLENBQW1CSCxHQUFuQixFQXRDa0QsQ0F3Q2xEOztBQUNHLE1BQUlmLElBQUksQ0FBQ21CLE1BQUwsSUFBZW5CLElBQUksQ0FBQ21CLE1BQUwsSUFBZSxNQUFsQyxFQUEwQztBQUM1Q0osT0FBRyxDQUFDRSxjQUFKLENBQW1CLElBQW5CLEVBQXlCLFNBQXpCLEVBQW9DLFNBQVNWLElBQUksQ0FBQ0MsS0FBZCxHQUFzQixHQUF0QixHQUE0QkQsSUFBSSxDQUFDSyxNQUFyRTtBQUNHLEdBM0M4QyxDQTZDbEQ7OztBQUNBLFdBQVNPLE1BQVQsR0FBa0I7QUFDakJkLFdBQU8sQ0FBQ0MsR0FBUixDQUFZLGVBQVo7QUFDQUMsUUFBSSxDQUFDQyxLQUFMLEdBQWFQLE1BQU0sQ0FBQ1EsV0FBcEI7QUFDQU0sT0FBRyxDQUFDRSxjQUFKLENBQW1CLElBQW5CLEVBQXlCLE9BQXpCLEVBQWtDVixJQUFJLENBQUNDLEtBQXZDLEVBSGlCLENBS2pCOztBQUNBLFFBQUlSLElBQUksQ0FBQ2EsTUFBVCxFQUFpQjtBQUNiTixVQUFJLENBQUNLLE1BQUwsR0FBY0wsSUFBSSxDQUFDQyxLQUFMLEdBQWFSLElBQUksQ0FBQ2EsTUFBaEM7QUFDSEUsU0FBRyxDQUFDRSxjQUFKLENBQW1CLElBQW5CLEVBQXlCLFFBQXpCLEVBQW1DVixJQUFJLENBQUNLLE1BQXhDO0FBQ0E7O0FBRUVMLFFBQUksQ0FBQ0csS0FBTCxHQUFhSCxJQUFJLENBQUNDLEtBQUwsR0FBYUQsSUFBSSxDQUFDSSxjQUEvQixDQVhjLENBYWpCOztBQUNBLFFBQUlYLElBQUksQ0FBQ29CLFFBQVQsRUFBbUI7QUFDbEJwQixVQUFJLENBQUNvQixRQUFMLENBQWNiLElBQUksQ0FBQ0MsS0FBbkIsRUFBMEJELElBQUksQ0FBQ0ssTUFBL0IsRUFBdUNMLElBQUksQ0FBQ0csS0FBNUMsRUFBbURLLEdBQW5EO0FBQ0E7QUFDRDs7QUFFRE0sUUFBTSxDQUFDQyxnQkFBUCxDQUF3QixRQUF4QixFQUFrQyxZQUFXO0FBQzVDSCxVQUFNO0FBQ04sR0FGRDtBQUlBQSxRQUFNLEdBckU0QyxDQXFFeEM7QUFFVjs7QUFDQVosTUFBSSxDQUFDZ0IsU0FBTCxHQUFpQixVQUFTQyxDQUFULEVBQVk7QUFDNUJ4QixRQUFJLENBQUNvQixRQUFMLEdBQWdCSSxDQUFoQjtBQUNBLEdBRkQ7O0FBSUFqQixNQUFJLENBQUNrQixZQUFMLEdBQW9CLFVBQVNaLE1BQVQsRUFBaUI7QUFDcENiLFFBQUksQ0FBQ2EsTUFBTCxHQUFjQSxNQUFkO0FBQ0FOLFFBQUksQ0FBQ0ssTUFBTCxHQUFjTCxJQUFJLENBQUNDLEtBQUwsR0FBYVIsSUFBSSxDQUFDYSxNQUFoQztBQUNBRSxPQUFHLENBQUNFLGNBQUosQ0FBbUIsSUFBbkIsRUFBeUIsUUFBekIsRUFBbUNWLElBQUksQ0FBQ0ssTUFBeEM7QUFDQSxHQUpEOztBQU1BTCxNQUFJLENBQUNtQixZQUFMLEdBQW9CLFVBQVNkLE1BQVQsRUFBaUI7QUFDakNMLFFBQUksQ0FBQ0ssTUFBTCxHQUFjQSxNQUFkOztBQUNBLFFBQUlaLElBQUksQ0FBQ2EsTUFBVCxFQUFpQjtBQUNoQmIsVUFBSSxDQUFDYSxNQUFMLEdBQWNOLElBQUksQ0FBQ0ssTUFBTCxHQUFjTCxJQUFJLENBQUNDLEtBQWpDO0FBQ0EsS0FGRCxNQUVPO0FBQ05SLFVBQUksQ0FBQ1ksTUFBTCxHQUFjQSxNQUFkO0FBQ0E7O0FBQ0pHLE9BQUcsQ0FBQ0UsY0FBSixDQUFtQixJQUFuQixFQUF5QixRQUF6QixFQUFtQ1YsSUFBSSxDQUFDSyxNQUF4QztBQUNBLEdBUkQ7O0FBVUFMLE1BQUksQ0FBQ29CLGFBQUwsR0FBcUIsWUFBVztBQUMvQlIsVUFBTTtBQUNOLEdBRkQ7O0FBSUFaLE1BQUksQ0FBQ1EsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBT1IsSUFBUDtBQUNBLEMiLCJmaWxlIjoiZWxhc3RpY1NWRy5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vaW5kZXguanNcIik7XG4iLCIvLyB2MC4wLjhcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWxhc3RpY1NWRyhzZWxlY3Rvciwgb3B0cykge1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHQvLyBjb250YWluaW5nIERPTSBlbGVtZW50LCB3aGljaCBkZWZhdWx0cyB0byBib2R5XG5cdHZhciBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yIHx8IFwiYm9keVwiKTtcblxuXHRpZiAoIXBhcmVudCB8fCAhcGFyZW50Lmxlbmd0aCkge1xuXHRcdGNvbnNvbGUubG9nKFwiQ291bGRuJ3QgZmluZCBhIHBhcmVudCBmb3IgZWxhc3RpY1NWRyBtYWtpbmcgdGhlIHNlbGVjdG9yICdcIiArIHNlbGVjdG9yICsgXCInXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHBhcmVudCA9IHBhcmVudFswXTtcblxuXHQvLyB5b3UgY2FuIHNwZWNpZnkgYSB3aWR0aCBpZiB5b3UgbGlrZSwgb3Igd2UnbGwgc25hcCB0byBzaXplIG9mIGNvbnRhaW5lclxuXHR2YXIgYmFzZSA9IHtcblx0XHR3aWR0aDogdHlwZW9mIG9wdHMud2lkdGggIT09IFwidW5kZWZpbmVkXCIgPyBvcHRzLndpZHRoIDogcGFyZW50LmNsaWVudFdpZHRoLFxuXHRcdHNjYWxlOiAxXG5cdH07XG5cblx0Ly8gd2UgbmVlZCB0byByZW1lbWJlciB0aGUgb3JpZ2luYWwgd2lkdGggZm9yIHNjYWxpbmcgcHVycG9zZXNcblx0YmFzZS5vcmlnaW5hbF93aWR0aCA9IGJhc2Uud2lkdGg7XG5cblx0Ly8geW91IGNhbiBlaXRoZXIgc3BlY2lmeSB0aGUgaGVpZ2h0IG9yIHRoZSBhc3BlY3QgcmF0aW8uIElmIG5laXRoZXIgaXMgc3BlY2lmaWVkLCByZWZhdWx0cyB0byByb3VnaGx5IHRoZSBnb2xkZW4gcmF0aW9cblx0Ly8gc3BlY2lmeWluZyB0aGUgaGVpZ2h0IGtlZXBzIHRoZSBzdmcgYXQgYSBzdGFuZGFyZCBoZWlnaHQgYW5kIG9ubHkgcmVzaXplcyB0aGUgd2lkdGhcblx0Ly8gc3BlY2lmeWluZyB0aGUgYXNwZWN0IHJhdGlvIHJlc2l6ZXMgYm90aFxuICAgIGlmICh0eXBlb2Ygb3B0cy5oZWlnaHQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBcdGJhc2UuaGVpZ2h0ID0gb3B0cy5oZWlnaHQ7XG4gICAgXHRiYXNlLmFzcGVjdCA9IGJhc2UuaGVpZ2h0IC8gYmFzZS53aWR0aDtcbiAgICB9IGVsc2Uge1xuXHQgICAgb3B0cy5hc3BlY3QgPSB0eXBlb2Ygb3B0cy5hc3BlY3QgIT09IFwidW5kZWZpbmVkXCIgPyBvcHRzLmFzcGVjdCA6IDAuNjE4O1xuXHRcdGJhc2UuaGVpZ2h0ID0gYmFzZS53aWR0aCAqIG9wdHMuYXNwZWN0O1xuICAgIH1cblxuXHQvLyBjcmVhdGUgYSBuZXcgU1ZHIGVsZW1lbnRcbiAgICB2YXIgeG1sbnMgPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7XG4gICAgdmFyIHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4bWxucywgXCJzdmdcIik7XG5cdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIGJhc2Uud2lkdGgpO1xuXHRzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJoZWlnaHRcIiwgYmFzZS5oZWlnaHQpO1xuXHRwYXJlbnQuYXBwZW5kQ2hpbGQoc3ZnKTtcblx0XG5cdC8vIHNldHRpbmcgcmVzaXplIHRvIFwiYXV0b1wiIHNldHMgdGhlIHZpZXdwb3J0IHRvIHRoZSBvcmlnaW5hbCB3aWR0aCBhbmQgaGVpZ2h0IHNvIHRoYXQgdGhlIFNWRyBhbHdheXMgc2NhbGVzXG4gICAgaWYgKG9wdHMucmVzaXplICYmIG9wdHMucmVzaXplID09IFwiYXV0b1wiKSB7XG5cdFx0c3ZnLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwidmlld0JveFwiLCBcIjAgMCBcIiArIGJhc2Uud2lkdGggKyBcIiBcIiArIGJhc2UuaGVpZ2h0KTtcbiAgICB9XG5cblx0Ly8gZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyByZXNpemVzXHRcdFxuXHRmdW5jdGlvbiByZXNpemUoKSB7IFxuXHRcdGNvbnNvbGUubG9nKFwicmVzaXppbmcgYmFzZVwiKTtcblx0XHRiYXNlLndpZHRoID0gcGFyZW50LmNsaWVudFdpZHRoO1xuXHRcdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIGJhc2Uud2lkdGgpO1xuXG5cdFx0Ly8gb25seSByZXNpemUgdGhlIGhlaWdodCBpZiBhc3BlY3Qgd2FzIHNwZWNpZmllZCBpbnN0ZWFkIG9mIGhlaWdodFxuXHRcdGlmIChvcHRzLmFzcGVjdCkge1xuXHRcdCAgICBiYXNlLmhlaWdodCA9IGJhc2Uud2lkdGggKiBvcHRzLmFzcGVjdDtcblx0XHRcdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImhlaWdodFwiLCBiYXNlLmhlaWdodCk7XG5cdFx0fVxuXG5cdCAgICBiYXNlLnNjYWxlID0gYmFzZS53aWR0aCAvIGJhc2Uub3JpZ2luYWxfd2lkdGg7XG5cblx0XHQvLyBvcHRpb25hbCBjYWxsYmFja1xuXHRcdGlmIChvcHRzLm9uUmVzaXplKSB7XG5cdFx0XHRvcHRzLm9uUmVzaXplKGJhc2Uud2lkdGgsIGJhc2UuaGVpZ2h0LCBiYXNlLnNjYWxlLCBzdmcpO1xuXHRcdH1cblx0fVxuXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGZ1bmN0aW9uKCkge1xuXHRcdHJlc2l6ZSgpO1xuXHR9KTtcblxuXHRyZXNpemUoKTsgLy8gY2FsbCB0aGlzIG9uIGxvYWQgc2luY2Ugc29tZXRpbWVzIHRoZSBpbml0aWFsIGNvbmRpdGlvbnMgYXJlIHdpZGVyIHRoYW4gY29udGFpbmVyXG5cblx0Ly8gbWV0aG9kc1xuXHRiYXNlLnNldFJlc2l6ZSA9IGZ1bmN0aW9uKGYpIHtcblx0XHRvcHRzLm9uUmVzaXplID0gZjtcblx0fVxuXG5cdGJhc2UuY2hhbmdlQXNwZWN0ID0gZnVuY3Rpb24oYXNwZWN0KSB7XG5cdFx0b3B0cy5hc3BlY3QgPSBhc3BlY3Q7XG5cdFx0YmFzZS5oZWlnaHQgPSBiYXNlLndpZHRoICogb3B0cy5hc3BlY3Q7XG5cdFx0c3ZnLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIGJhc2UuaGVpZ2h0KTtcblx0fVxuXG5cdGJhc2UuY2hhbmdlSGVpZ2h0ID0gZnVuY3Rpb24oaGVpZ2h0KSB7XG4gICAgXHRiYXNlLmhlaWdodCA9IGhlaWdodDtcbiAgICBcdGlmIChvcHRzLmFzcGVjdCkge1xuXHQgICAgXHRvcHRzLmFzcGVjdCA9IGJhc2UuaGVpZ2h0IC8gYmFzZS53aWR0aDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICBcdG9wdHMuaGVpZ2h0ID0gaGVpZ2h0O1xuXHQgICAgfVxuXHRcdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcImhlaWdodFwiLCBiYXNlLmhlaWdodCk7XG5cdH1cblxuXHRiYXNlLnRyaWdnZXJSZXNpemUgPSBmdW5jdGlvbigpIHtcblx0XHRyZXNpemUoKTtcblx0fVxuXG5cdGJhc2Uuc3ZnID0gc3ZnO1xuXHRyZXR1cm4gYmFzZTtcbn0iXSwic291cmNlUm9vdCI6IiJ9
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(__webpack_module_cache__[moduleId]) {
/******/ return __webpack_module_cache__[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/************************************************************************/
/******/ // module exports must be returned from runtime so entry inlining is disabled
/******/ // startup
/******/ // Load entry module and return exports
/******/ return __webpack_require__("./index.js");
/******/ })()
.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lbGFzdGljU1ZHLy4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWxhc3RpY1NWRy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lbGFzdGljU1ZHL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9lbGFzdGljU1ZHL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWxhc3RpY1NWRy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2VsYXN0aWNTVkcvd2VicGFjay9zdGFydHVwIl0sIm5hbWVzIjpbImVsYXN0aWNTVkciLCJzZWxlY3RvciIsIm9wdHMiLCJoYXNXaWR0aCIsImhhc093blByb3BlcnR5IiwiaGFzSGVpZ2h0IiwiaGFzQXNwZWN0IiwiRWxlbWVudCIsInBhcmVudCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvbnNvbGUiLCJsb2ciLCJpbml0aWFsV2lkdGgiLCJjbGllbnRXaWR0aCIsImJhc2UiLCJ3aWR0aCIsImhlaWdodCIsImFzcGVjdCIsInNjYWxlIiwib3JpZ2luYWxfd2lkdGgiLCJ4bWxucyIsInN2ZyIsImNyZWF0ZUVsZW1lbnROUyIsInNldEF0dHJpYnV0ZU5TIiwiYXBwZW5kQ2hpbGQiLCJyZXNpemUiLCJvblJlc2l6ZSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJkaXNwYXRjaEV2ZW50IiwiRXZlbnQiLCJzZXRSZXNpemUiLCJmIiwiY2hhbmdlQXNwZWN0IiwiY2hhbmdlSGVpZ2h0IiwidHJpZ2dlclJlc2l6ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFFZSxTQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUE4QkMsSUFBOUIsRUFBb0M7QUFDbERBLE1BQUksR0FBR0EsSUFBSSxJQUFJLEVBQWY7QUFFQSxNQUFJ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bUIsSUFBbkIsRUFBeUIsUUFBekIsRUFBbUNULElBQUksQ0FBQ0UsTUFBeEM7QUFDQSxHQVJEOztBQVVBRixNQUFJLENBQUNxQixhQUFMLEdBQXFCLFlBQVc7QUFDL0JWLFVBQU07QUFDTixHQUZEOztBQUlBWCxNQUFJLENBQUNPLEdBQUwsR0FBV0EsR0FBWDtBQUNBLFNBQU9QLElBQVA7QUFDQSxDOzs7Ozs7VUN0SkQ7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDckJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0Esd0NBQXdDLHlDQUF5QztXQUNqRjtXQUNBO1dBQ0EsRTs7Ozs7V0NQQSx3Rjs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSxzREFBc0Qsa0JBQWtCO1dBQ3hFO1dBQ0EsK0NBQStDLGNBQWM7V0FDN0QsRTs7OztVQ05BO1VBQ0E7VUFDQTtVQUNBIiwiZmlsZSI6ImVsYXN0aWNTVkcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB2MC4xLjFcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZWxhc3RpY1NWRyhzZWxlY3Rvciwgb3B0cykge1xuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHRsZXQgaGFzV2lkdGggPSBvcHRzLmhhc093blByb3BlcnR5KFwid2lkdGhcIik7XG5cdGxldCBoYXNIZWlnaHQgPSBvcHRzLmhhc093blByb3BlcnR5KFwiaGVpZ2h0XCIpO1xuXHRsZXQgaGFzQXNwZWN0ID0gb3B0cy5oYXNPd25Qcm9wZXJ0eShcImFzcGVjdFwiKTtcblxuXHQvLyBjb250YWluaW5nIERPTSBlbGVtZW50LCB3aGljaCBkZWZhdWx0cyB0byBib2R5XG5cblx0aWYgKHNlbGVjdG9yIGluc3RhbmNlb2YgRWxlbWVudCkge1xuXHRcdHZhciBwYXJlbnQgPSBzZWxlY3Rvcjtcblx0fSBlbHNlIHtcblx0XHR2YXIgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvciB8fCBcImJvZHlcIik7XG5cdH1cblxuXHRpZiAoIXBhcmVudCB8fCAhcGFyZW50Lmxlbmd0aCkge1xuXHRcdGNvbnNvbGUubG9nKFwiQ291bGRuJ3QgZmluZCBhIHBhcmVudCBmb3IgZWxhc3RpY1NWRyBtYWtpbmcgdGhlIHNlbGVjdG9yICdcIiArIHNlbGVjdG9yICsgXCInXCIpO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHBhcmVudCA9IHBhcmVudFswXTtcblxuXHRsZXQgaW5pdGlhbFdpZHRoID0gcGFyZW50LmNsaWVudFdpZHRoO1xuXG5cdC8vIHlvdSBjYW4gc3BlY2lmeSBhIHdpZHRoIGlmIHlvdSBsaWtlLCBvciB3ZSdsbCBzbmFwIHRvIHNpemUgb2YgY29udGFpbmVyXG5cdHZhciBiYXNlID0ge1xuXHRcdHdpZHRoOiBudWxsLFxuXHRcdGhlaWdodDogbnVsbCxcblx0XHRhc3BlY3Q6IG51bGwsXG5cdFx0c2NhbGU6IDFcblx0fTtcblxuXHQvLyB3ZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBvcmlnaW5hbCB3aWR0aCBmb3Igc2NhbGluZyBwdXJwb3Nlc1xuXG5cdC8vIHlvdSBjYW4gZWl0aGVyIHNwZWNpZnkgdGhlIGhlaWdodCBhbmQgd2lkdGgsIHdoaWNoIHdpbGwgY29tcHV0ZWQgdGhlIGFzcGVjdCByYXRpb24sIG9yIG9uZSBvZiB0aGVzZSBhbmQgdGhlIGFzcGVjdCByYXRpby5cblx0Ly8gSWYgbmVpdGhlciBpcyBzcGVjaWZpZWQsIGRlZmF1bHRzIHRvIHJvdWdobHkgdGhlIGdvbGRlbiByYXRpb1xuXHQvLyBzcGVjaWZ5aW5nIHRoZSBoZWlnaHQga2VlcHMgdGhlIHN2ZyBhdCBhIHN0YW5kYXJkIGhlaWdodCBhbmQgb25seSByZXNpemVzIHRoZSB3aWR0aFxuXHQvLyBzcGVjaWZ5aW5nIHRoZSBhc3BlY3QgcmF0aW8gcmVzaXplcyBib3RoXG5cblx0aWYgKGhhc1dpZHRoICYmIGhhc0hlaWdodCkge1xuXHRcdGlmIChoYXNBc3BlY3QpIHtcblx0XHRcdGNvbnNvbGUubG9nKFwiT3ZlcnJpZGluZyBhc3BlY3QgcmF0aW8gc2luY2UgYm90aCBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBhcmUgc3BlY2lmaWVkXCIpO1xuXHRcdFx0b3B0cy5hc3BlY3QgPSBvcHRzLmhlaWdodCAvIG9wdHMud2lkdGg7XG5cdFx0fVxuXHRcdGJhc2Uud2lkdGggPSBvcHRzLndpZHRoOyBcblx0XHRiYXNlLmhlaWdodCA9IG9wdHMuaGVpZ2h0OyBcblx0fSBlbHNlIHsgLy8gaWYgaGFzIG5laXRoZXIgYW4gYXNwZWN0IG9yIEJPVEggYSB3aWR0aCBhbmQgaGVpZ2h0LCBkZWZhdWx0IHRvIGFwcHJveGltYXRlbHkgdGhlIGdvbGRlbiByYXRpb1xuXHQgICAgb3B0cy5hc3BlY3QgPSBvcHRzLmFzcGVjdCB8fCAwLjYxODtcblxuXHRcdGlmIChoYXNXaWR0aCAmJiAhaGFzSGVpZ2h0KSB7XG5cdFx0XHRiYXNlLndpZHRoID0gb3B0cy53aWR0aDsgXG5cdFx0XHRiYXNlLmhlaWdodCA9IGJhc2Uud2lkdGggKiBvcHRzLmFzcGVjdDtcblx0XHR9IGVsc2UgaWYgKGhhc0hlaWdodCkge1xuXHRcdFx0YmFzZS5oZWlnaHQgPSBvcHRzLmhlaWdodDtcblx0XHRcdGJhc2Uud2lkdGggPSBiYXNlLmhlaWdodCAvIG9wdHMuYXNwZWN0O1xuXHRcdH0gZWxzZSB7IC8vIGlmIG9ubHkgaGFzIGFzcGVjdFxuXHRcdFx0YmFzZS53aWR0aCA9IGluaXRpYWxXaWR0aDtcblx0XHRcdGJhc2UuaGVpZ2h0ID0gYmFzZS53aWR0aCAqIG9wdHMuYXNwZWN0O1xuXHRcdH1cblx0fVxuXG5cdGJhc2Uub3JpZ2luYWxfd2lkdGggPSBiYXNlLndpZHRoO1xuXG5cblx0Ly8gY3JlYXRlIGEgbmV3IFNWRyBlbGVtZW50XG4gICAgdmFyIHhtbG5zID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIHZhciBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeG1sbnMsIFwic3ZnXCIpO1xuXHRzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJ3aWR0aFwiLCBiYXNlLndpZHRoKTtcblx0c3ZnLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIGJhc2UuaGVpZ2h0KTtcblx0cGFyZW50LmFwcGVuZENoaWxkKHN2Zyk7XG5cdFxuXHQvLyBzZXR0aW5nIHJlc2l6ZSB0byBcImF1dG9cIiBzZXRzIHRoZSB2aWV3cG9ydCB0byB0aGUgb3JpZ2luYWwgd2lkdGggYW5kIGhlaWdodCBzbyB0aGF0IHRoZSBTVkcgYWx3YXlzIHNjYWxlc1xuICAgIGlmIChvcHRzLnJlc2l6ZSAmJiBvcHRzLnJlc2l6ZSA9PSBcImF1dG9cIikge1xuXHRcdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcInZpZXdCb3hcIiwgXCIwIDAgXCIgKyBiYXNlLndpZHRoICsgXCIgXCIgKyBiYXNlLmhlaWdodCk7XG4gICAgfVxuXG5cdC8vIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSB3aW5kb3cgcmVzaXplc1x0XHRcblx0ZnVuY3Rpb24gcmVzaXplKCkgeyBcblx0XHRsZXQgaGFzV2lkdGggPSBvcHRzLmhhc093blByb3BlcnR5KFwid2lkdGhcIik7XG5cdFx0bGV0IGhhc0hlaWdodCA9IG9wdHMuaGFzT3duUHJvcGVydHkoXCJoZWlnaHRcIik7XG5cdFx0bGV0IGhhc0FzcGVjdCA9IG9wdHMuaGFzT3duUHJvcGVydHkoXCJhc3BlY3RcIik7XG5cblx0XHRiYXNlLndpZHRoID0gcGFyZW50LmNsaWVudFdpZHRoO1xuXHRcdHN2Zy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBcIndpZHRoXCIsIGJhc2Uud2lkdGgpO1xuXHRcdFxuXHRcdC8vIGlmIGBoZWlnaHRgIGlzIG5vdCBzcGVjaWZpZWQsIHJlc2l6ZSBpdCB0byB0aGUgYXNwZWN0IHJhdGlvXG5cdFx0aWYgKCFoYXNIZWlnaHQpIHtcblx0XHRcdGJhc2UuaGVpZ2h0ID0gYmFzZS53aWR0aCAqIG9wdHMuYXNwZWN0O1xuXHRcdFx0c3ZnLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwiaGVpZ2h0XCIsIGJhc2UuaGVpZ2h0KTtcdFx0XHRcdFxuXHRcdH1cblxuXHRcdGJhc2UuYXNwZWN0ID0gYmFzZS5oZWlnaHQgLyBiYXNlLndpZHRoO1xuXHQgICAgYmFzZS5zY2FsZSA9IGJhc2Uud2lkdGggLyBiYXNlLm9yaWdpbmFsX3dpZHRoO1xuXG5cdFx0Ly8gb3B0aW9uYWwgY2FsbGJhY2tcblx0XHRpZiAob3B0cy5vblJlc2l6ZSkge1xuXHRcdFx0b3B0cy5vblJlc2l6ZShiYXNlLndpZHRoLCBiYXNlLmhlaWdodCwgYmFzZS5zY2FsZSwgc3ZnKTtcblx0XHR9XG5cdH1cblxuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBmdW5jdGlvbigpIHtcblx0XHRyZXNpemUoKTtcblx0fSk7XG5cblx0Ly8gbWFudWFsbHkgdHJpZ2dlciBhIHBhZ2UgcmVzaXplIGFuZCBydW4gdGhlIHJlc2l6ZSBmdW5jdGlvbiBvbmNlXG5cdHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuXG5cdC8vIHJlc2l6ZSgpOyAvLyBjYWxsIHRoaXMgb24gbG9hZCBzaW5jZSBzb21ldGltZXMgdGhlIGluaXRpYWwgY29uZGl0aW9ucyBhcmUgd2lkZXIgdGhhbiBjb250YWluZXJcblxuXHQvLyBtZXRob2RzXG5cdGJhc2Uuc2V0UmVzaXplID0gZnVuY3Rpb24oZikge1xuXHRcdG9wdHMub25SZXNpemUgPSBmO1xuXHR9XG5cblx0YmFzZS5jaGFuZ2VBc3BlY3QgPSBmdW5jdGlvbihhc3BlY3QpIHtcblx0XHRvcHRzLmFzcGVjdCA9IGFzcGVjdDtcblx0XHRiYXNlLmhlaWdodCA9IGJhc2Uud2lkdGggKiBvcHRzLmFzcGVjdDtcblx0XHRzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJoZWlnaHRcIiwgYmFzZS5oZWlnaHQpO1xuXHR9XG5cblx0Lypcblx0YmFzZS5jaGFuZ2VXaWR0aCA9IGZ1bmN0aW9uKHdpZHRoKSB7XG4gICAgXHRiYXNlLndpZHRoID0gd2lkdGg7XG4gICAgXHRpZiAob3B0cy5hc3BlY3QpIHtcblx0ICAgIFx0b3B0cy5hc3BlY3QgPSBiYXNlLmhlaWdodCAvIGJhc2Uud2lkdGg7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgXHRvcHRzLndpZHRoID0gd2lkdGg7XG5cdCAgICB9XG5cdFx0c3ZnLnNldEF0dHJpYnV0ZU5TKG51bGwsIFwid2lkdGhcIiwgYmFzZS53aWR0aCk7XG5cdH1cblx0Ki9cblxuXHRiYXNlLmNoYW5nZUhlaWdodCA9IGZ1bmN0aW9uKGhlaWdodCkge1xuICAgIFx0YmFzZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgXHRpZiAob3B0cy5hc3BlY3QpIHtcblx0ICAgIFx0b3B0cy5hc3BlY3QgPSBiYXNlLmhlaWdodCAvIGJhc2Uud2lkdGg7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgXHRvcHRzLmhlaWdodCA9IGhlaWdodDtcblx0ICAgIH1cblx0XHRzdmcuc2V0QXR0cmlidXRlTlMobnVsbCwgXCJoZWlnaHRcIiwgYmFzZS5oZWlnaHQpO1xuXHR9XG5cblx0YmFzZS50cmlnZ2VyUmVzaXplID0gZnVuY3Rpb24oKSB7XG5cdFx0cmVzaXplKCk7XG5cdH1cblxuXHRiYXNlLnN2ZyA9IHN2Zztcblx0cmV0dXJuIGJhc2U7XG59IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0aWYoX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSkge1xuXHRcdHJldHVybiBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLy8gbW9kdWxlIGV4cG9ydHMgbXVzdCBiZSByZXR1cm5lZCBmcm9tIHJ1bnRpbWUgc28gZW50cnkgaW5saW5pbmcgaXMgZGlzYWJsZWRcbi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xucmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oXCIuL2luZGV4LmpzXCIpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

@@ -1,1 +0,1 @@

var elasticSVG=function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},i.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=0)}([function(t,e,i){"use strict";function n(t,e){e=e||{};var i=document.querySelectorAll(t||"body");if(i&&i.length){i=i[0];var n={width:void 0!==e.width?e.width:i.clientWidth,scale:1};n.original_width=n.width,void 0!==e.height?(n.height=e.height,n.aspect=n.height/n.width):(e.aspect=void 0!==e.aspect?e.aspect:.618,n.height=n.width*e.aspect);var r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttributeNS(null,"width",n.width),r.setAttributeNS(null,"height",n.height),i.appendChild(r),e.resize&&"auto"==e.resize&&r.setAttributeNS(null,"viewBox","0 0 "+n.width+" "+n.height),window.addEventListener("resize",function(){o()}),o(),n.setResize=function(t){e.onResize=t},n.changeAspect=function(t){e.aspect=t,n.height=n.width*e.aspect,r.setAttributeNS(null,"height",n.height)},n.changeHeight=function(t){n.height=t,e.aspect?e.aspect=n.height/n.width:e.height=t,r.setAttributeNS(null,"height",n.height)},n.triggerResize=function(){o()},n.svg=r,n}function o(){console.log("resizing base"),n.width=i.clientWidth,r.setAttributeNS(null,"width",n.width),e.aspect&&(n.height=n.width*e.aspect,r.setAttributeNS(null,"height",n.height)),n.scale=n.width/n.original_width,e.onResize&&e.onResize(n.width,n.height,n.scale,r)}console.log("Couldn't find a parent for elasticSVG making the selector '"+t+"'")}i.r(e),i.d(e,"default",function(){return n})}]).default;
var elasticSVG;elasticSVG=(()=>{"use strict";var t={89:(t,e,i)=>{function h(t,e){var i=(e=e||{}).hasOwnProperty("width"),h=e.hasOwnProperty("height"),n=e.hasOwnProperty("aspect");if(t instanceof Element)var r=t;else r=document.querySelectorAll(t||"body");if(r&&r.length){var s=(r=r[0]).clientWidth,a={width:null,height:null,aspect:null,scale:1};i&&h?(n&&(console.log("Overriding aspect ratio since both `width` and `height` are specified"),e.aspect=e.height/e.width),a.width=e.width,a.height=e.height):(e.aspect=e.aspect||.618,i&&!h?(a.width=e.width,a.height=a.width*e.aspect):h?(a.height=e.height,a.width=a.height/e.aspect):(a.width=s,a.height=a.width*e.aspect)),a.original_width=a.width;var o=document.createElementNS("http://www.w3.org/2000/svg","svg");return o.setAttributeNS(null,"width",a.width),o.setAttributeNS(null,"height",a.height),r.appendChild(o),e.resize&&"auto"==e.resize&&o.setAttributeNS(null,"viewBox","0 0 "+a.width+" "+a.height),window.addEventListener("resize",(function(){c()})),window.dispatchEvent(new Event("resize")),a.setResize=function(t){e.onResize=t},a.changeAspect=function(t){e.aspect=t,a.height=a.width*e.aspect,o.setAttributeNS(null,"height",a.height)},a.changeHeight=function(t){a.height=t,e.aspect?e.aspect=a.height/a.width:e.height=t,o.setAttributeNS(null,"height",a.height)},a.triggerResize=function(){c()},a.svg=o,a}function c(){e.hasOwnProperty("width");var t=e.hasOwnProperty("height");e.hasOwnProperty("aspect"),a.width=r.clientWidth,o.setAttributeNS(null,"width",a.width),t||(a.height=a.width*e.aspect,o.setAttributeNS(null,"height",a.height)),a.aspect=a.height/a.width,a.scale=a.width/a.original_width,e.onResize&&e.onResize(a.width,a.height,a.scale,o)}console.log("Couldn't find a parent for elasticSVG making the selector '"+t+"'")}i.d(e,{default:()=>h})}},e={};function i(h){if(e[h])return e[h].exports;var n=e[h]={exports:{}};return t[h](n,n.exports,i),n.exports}return i.d=(t,e)=>{for(var h in e)i.o(e,h)&&!i.o(t,h)&&Object.defineProperty(t,h,{enumerable:!0,get:e[h]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i(89)})().default;

@@ -1,2 +0,2 @@

// v0.0.8
// v0.1.1

@@ -6,5 +6,14 @@ export default function elasticSVG(selector, opts) {

let hasWidth = opts.hasOwnProperty("width");
let hasHeight = opts.hasOwnProperty("height");
let hasAspect = opts.hasOwnProperty("aspect");
// containing DOM element, which defaults to body
var parent = document.querySelectorAll(selector || "body");
if (selector instanceof Element) {
var parent = selector;
} else {
var parent = document.querySelectorAll(selector || "body");
}
if (!parent || !parent.length) {

@@ -17,5 +26,9 @@ console.log("Couldn't find a parent for elasticSVG making the selector '" + selector + "'");

let initialWidth = parent.clientWidth;
// you can specify a width if you like, or we'll snap to size of container
var base = {
width: typeof opts.width !== "undefined" ? opts.width : parent.clientWidth,
width: null,
height: null,
aspect: null,
scale: 1

@@ -25,15 +38,33 @@ };

// we need to remember the original width for scaling purposes
base.original_width = base.width;
// you can either specify the height or the aspect ratio. If neither is specified, refaults to roughly the golden ratio
// you can either specify the height and width, which will computed the aspect ration, or one of these and the aspect ratio.
// If neither is specified, defaults to roughly the golden ratio
// specifying the height keeps the svg at a standard height and only resizes the width
// specifying the aspect ratio resizes both
if (typeof opts.height !== "undefined") {
base.height = opts.height;
base.aspect = base.height / base.width;
} else {
opts.aspect = typeof opts.aspect !== "undefined" ? opts.aspect : 0.618;
base.height = base.width * opts.aspect;
}
if (hasWidth && hasHeight) {
if (hasAspect) {
console.log("Overriding aspect ratio since both `width` and `height` are specified");
opts.aspect = opts.height / opts.width;
}
base.width = opts.width;
base.height = opts.height;
} else { // if has neither an aspect or BOTH a width and height, default to approximately the golden ratio
opts.aspect = opts.aspect || 0.618;
if (hasWidth && !hasHeight) {
base.width = opts.width;
base.height = base.width * opts.aspect;
} else if (hasHeight) {
base.height = opts.height;
base.width = base.height / opts.aspect;
} else { // if only has aspect
base.width = initialWidth;
base.height = base.width * opts.aspect;
}
}
base.original_width = base.width;
// create a new SVG element

@@ -53,11 +84,16 @@ var xmlns = "http://www.w3.org/2000/svg";

function resize() {
let hasWidth = opts.hasOwnProperty("width");
let hasHeight = opts.hasOwnProperty("height");
let hasAspect = opts.hasOwnProperty("aspect");
base.width = parent.clientWidth;
svg.setAttributeNS(null, "width", base.width);
// only resize the height if aspect was specified instead of height
if (opts.aspect) {
base.height = base.width * opts.aspect;
svg.setAttributeNS(null, "height", base.height);
// if `height` is not specified, resize it to the aspect ratio
if (!hasHeight) {
base.height = base.width * opts.aspect;
svg.setAttributeNS(null, "height", base.height);
}
base.aspect = base.height / base.width;
base.scale = base.width / base.original_width;

@@ -75,4 +111,7 @@

resize(); // call this on load since sometimes the initial conditions are wider than container
// manually trigger a page resize and run the resize function once
window.dispatchEvent(new Event('resize'));
// resize(); // call this on load since sometimes the initial conditions are wider than container
// methods

@@ -79,0 +118,0 @@ base.setResize = function(f) {

{
"name": "elastic-svg",
"version": "0.1.0",
"version": "0.1.1",
"description": "Responsive SVGs with no dependencies",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"build": "bundle-module --entry=./index.js --name=elasticSVG --env=browser --output_dir=./dist",
"minify": "bundle-module --entry=./index.js --name=elasticSVG --env=browser --output_dir=./dist --min",
"watch": "bundle-module --entry=./index.js --name=elasticSVG --env=browser --output_dir=./dist --watch"
},

@@ -9,0 +11,0 @@ "repository": {

# Elastic SVG elements
=======
v0.1.0
v0.1.1

@@ -37,2 +37,3 @@ Scalable Vector Graphics are one of the Web's most triumphant technologies, but they're not as responsive as they might be. This is a very lightweight, dependency-free library that generates `svg` elements that fit to their container and scale <em>or don't scale</em> as desired.

| -------- | ----------- |
| `selector` | The CSS3 query selector or HTML element in which to create the `<svg>` |
| `width` | The initial width of the SVG. Defaults to width of parent |

@@ -58,2 +59,3 @@ | `height` | The initial height of the SVG. Defaults to the aspect ratio. |

## Change log
+ *v0.1.1*: Allowing for elements as well as selectors
+ *v0.1.0*: Removing an annoying console log

@@ -60,0 +62,0 @@ + *v0.0.8*: Made an ES6 module and created `./dist` from external packager

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc