"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* global HTMLImageElement */ /* global HTMLCanvasElement */ /* global SVGElement */ var _getOptionsFromElement = require("./getOptionsFromElement.js"); var _getOptionsFromElement2 = _interopRequireDefault(_getOptionsFromElement); var _renderers = require("../renderers"); var _renderers2 = _interopRequireDefault(_renderers); var _exceptions = require("../exceptions/exceptions.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Takes an element and returns an object with information about how // it should be rendered // This could also return an array with these objects // { // element: The element that the renderer should draw on // renderer: The name of the renderer // afterRender (optional): If something has to done after the renderer // completed, calls afterRender (function) // options (optional): Options that can be defined in the element // } function getRenderProperties(element) { // If the element is a string, query select call again if (typeof element === "string") { return querySelectedRenderProperties(element); } // If element is array. Recursivly call with every object in the array else if (Array.isArray(element)) { var returnArray = []; for (var i = 0; i < element.length; i++) { returnArray.push(getRenderProperties(element[i])); } return returnArray; } // If element, render on canvas and set the uri as src else if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLImageElement) { return newCanvasRenderProperties(element); } // If SVG else if (element && element.nodeName && element.nodeName.toLowerCase() === 'svg' || typeof SVGElement !== 'undefined' && element instanceof SVGElement) { return { element: element, options: (0, _getOptionsFromElement2.default)(element), renderer: _renderers2.default.SVGRenderer }; } // If canvas (in browser) else if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLCanvasElement) { return { element: element, options: (0, _getOptionsFromElement2.default)(element), renderer: _renderers2.default.CanvasRenderer }; } // If canvas (in node) else if (element && element.getContext) { return { element: element, renderer: _renderers2.default.CanvasRenderer }; } else if (element && (typeof element === "undefined" ? "undefined" : _typeof(element)) === 'object' && !element.nodeName) { return { element: element, renderer: _renderers2.default.ObjectRenderer }; } else { throw new _exceptions.InvalidElementException(); } } function querySelectedRenderProperties(string) { var selector = document.querySelectorAll(string); if (selector.length === 0) { return undefined; } else { var returnArray = []; for (var i = 0; i < selector.length; i++) { returnArray.push(getRenderProperties(selector[i])); } return returnArray; } } function newCanvasRenderProperties(imgElement) { var canvas = document.createElement('canvas'); return { element: canvas, options: (0, _getOptionsFromElement2.default)(imgElement), renderer: _renderers2.default.CanvasRenderer, afterRender: function afterRender() { imgElement.setAttribute("src", canvas.toDataURL()); } }; } exports.default = getRenderProperties;