/
lean.min.js
109 lines (83 loc) · 9.13 KB
/
lean.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.lean = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
/**
* @name lean.js
* @description microlibrary to import a css, html, or js resource into your project.
* @maintainer sartaj
* @license MIT
*/
"use strict";
var getFileInfo = require('./lib/getFileInfo.js');
var checkExtension = require('./lib/checkExtension.js');
var injectHtml = require('./lib/injectHtml.js');
/**
* @param file {string} - a http file path.
* @returns {string} - returns name of html file as a document create consumable name.
*
* @example
* // injects file if needed and returns DOMNode <todo-widget></todo-widget>
* var name = lean.inject('./widgets/todo-widget.html');
* var todoWidget = document.createElement(name);
* var anotherWayTodoWidget = document.createElement('todo-widget');
*
*/
module.exports.inject = function(path) {
var tagLocation = document.head;
var fileInfo = getFileInfo(path);
checkExtension(fileInfo)
injectHtml(path, tagLocation);
return fileInfo.name;
};
/**
* @param file {string} - a http file path.
* @returns {DOMElement} - HTML Imports return a createdDOM Element the import. This will execute the 'createdCallback' or 'created' function in the Web Component.
*
* @example
* // injects file and returns DOMNode <todo-widget></todo-widget>
* var todoWidget = lean.require('./widgets/todo-widget.html');
* // won't inject file since injected above, and just create new element and require
* var todoWidgetAgain = lean.require('./widgets/todo-widget.html');
*
*/
module.exports.require = function(path) {
var tagLocation = document.head;
var fileInfo = getFileInfo(path);
checkExtension(fileInfo);
console.log(newElement, 'new');
var newElement = document.createElement(fileInfo.name);
if (newElement.constructor === HTMLElement) {
injectHtml(path, tagLocation);
newElement = document.createElement(fileInfo.name);
}
return newElement;
};
},{"./lib/checkExtension.js":2,"./lib/getFileInfo.js":3,"./lib/injectHtml.js":4}],2:[function(require,module,exports){
module.exports = function(fileInfo) {
if(fileInfo.ext !== 'html') {
throw new Error(fileInfo.name + '.' + fileInfo.ext + ' file needs .html extension');
}
}
},{}],3:[function(require,module,exports){
module.exports = function(file) {
var fileInfo = {};
fileInfo.ext = file.split('.');
fileInfo.ext = fileInfo.ext[fileInfo.ext.length - 1];
fileInfo.name = file.split('/');
fileInfo.name = fileInfo.name[fileInfo.name.length - 1];
fileInfo.name = fileInfo.name.slice(0, -1-fileInfo.ext.length);
return fileInfo;
}
},{}],4:[function(require,module,exports){
// Inserts html import into tag location
module.exports = function(file, tagLocation) {
// Create stylesheet link
var link = document.createElement('link');
// Add attributes
link.href = file;
link.rel = 'import';
// Inject script into to document
var doc = tagLocation;
doc.appendChild(link);
}
},{}]},{},[1])(1)
});
//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9jaGVja0V4dGVuc2lvbi5qcyIsImxpYi9nZXRGaWxlSW5mby5qcyIsImxpYi9pbmplY3RIdG1sLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKipcbiAqIEBuYW1lIGxlYW4uanNcbiAqIEBkZXNjcmlwdGlvbiBtaWNyb2xpYnJhcnkgdG8gaW1wb3J0IGEgY3NzLCBodG1sLCBvciBqcyByZXNvdXJjZSBpbnRvIHlvdXIgcHJvamVjdC5cbiAqIEBtYWludGFpbmVyIHNhcnRhalxuICogQGxpY2Vuc2UgTUlUXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBnZXRGaWxlSW5mbyA9IHJlcXVpcmUoJy4vbGliL2dldEZpbGVJbmZvLmpzJyk7XG52YXIgY2hlY2tFeHRlbnNpb24gPSByZXF1aXJlKCcuL2xpYi9jaGVja0V4dGVuc2lvbi5qcycpO1xudmFyIGluamVjdEh0bWwgPSByZXF1aXJlKCcuL2xpYi9pbmplY3RIdG1sLmpzJyk7XG5cbi8qKlxuICogQHBhcmFtIGZpbGUge3N0cmluZ30gLSBhIGh0dHAgZmlsZSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZ30gLSByZXR1cm5zIG5hbWUgb2YgaHRtbCBmaWxlIGFzIGEgZG9jdW1lbnQgY3JlYXRlIGNvbnN1bWFibGUgbmFtZS5cbiAqIFxuICogQGV4YW1wbGVcbiAqIC8vIGluamVjdHMgZmlsZSBpZiBuZWVkZWQgYW5kIHJldHVybnMgRE9NTm9kZSAgPHRvZG8td2lkZ2V0PjwvdG9kby13aWRnZXQ+XG4gKiAgdmFyIG5hbWUgPSBsZWFuLmluamVjdCgnLi93aWRnZXRzL3RvZG8td2lkZ2V0Lmh0bWwnKTtcbiAqICB2YXIgdG9kb1dpZGdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XG4gKiAgdmFyIGFub3RoZXJXYXlUb2RvV2lkZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndG9kby13aWRnZXQnKTtcbiAqIFxuICovXG5tb2R1bGUuZXhwb3J0cy5pbmplY3QgPSBmdW5jdGlvbihwYXRoKSB7XG5cbiAgICB2YXIgdGFnTG9jYXRpb24gPSBkb2N1bWVudC5oZWFkO1xuICAgIHZhciBmaWxlSW5mbyA9IGdldEZpbGVJbmZvKHBhdGgpO1xuICAgIGNoZWNrRXh0ZW5zaW9uKGZpbGVJbmZvKVxuICAgIGluamVjdEh0bWwocGF0aCwgdGFnTG9jYXRpb24pO1xuXG4gICAgcmV0dXJuIGZpbGVJbmZvLm5hbWU7XG5cbn07XG5cblxuLyoqXG4gKiBAcGFyYW0gZmlsZSB7c3RyaW5nfSAtIGEgaHR0cCBmaWxlIHBhdGguXG4gKiBAcmV0dXJucyB7RE9NRWxlbWVudH0gLSBIVE1MIEltcG9ydHMgcmV0dXJuIGEgY3JlYXRlZERPTSBFbGVtZW50IHRoZSBpbXBvcnQuIFRoaXMgd2lsbCBleGVjdXRlIHRoZSAnY3JlYXRlZENhbGxiYWNrJyBvciAnY3JlYXRlZCcgZnVuY3Rpb24gaW4gdGhlIFdlYiBDb21wb25lbnQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiAvLyBpbmplY3RzIGZpbGUgYW5kIHJldHVybnMgRE9NTm9kZSAgPHRvZG8td2lkZ2V0PjwvdG9kby13aWRnZXQ+XG4gKiAgdmFyIHRvZG9XaWRnZXQgPSBsZWFuLnJlcXVpcmUoJy4vd2lkZ2V0cy90b2RvLXdpZGdldC5odG1sJyk7XG4gKiAvLyB3b24ndCBpbmplY3QgZmlsZSBzaW5jZSBpbmplY3RlZCBhYm92ZSwgYW5kIGp1c3QgY3JlYXRlIG5ldyBlbGVtZW50IGFuZCByZXF1aXJlXG4gKiAgdmFyIHRvZG9XaWRnZXRBZ2FpbiA9IGxlYW4ucmVxdWlyZSgnLi93aWRnZXRzL3RvZG8td2lkZ2V0Lmh0bWwnKTtcbiAqIFxuICovXG5tb2R1bGUuZXhwb3J0cy5yZXF1aXJlID0gZnVuY3Rpb24ocGF0aCkge1xuXG4gICAgdmFyIHRhZ0xvY2F0aW9uID0gZG9jdW1lbnQuaGVhZDtcbiAgICB2YXIgZmlsZUluZm8gPSBnZXRGaWxlSW5mbyhwYXRoKTtcblxuICAgIGNoZWNrRXh0ZW5zaW9uKGZpbGVJbmZvKTtcbiAgICBjb25zb2xlLmxvZyhuZXdFbGVtZW50LCAnbmV3Jyk7XG5cbiAgICB2YXIgbmV3RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZmlsZUluZm8ubmFtZSk7XG4gICAgaWYgKG5ld0VsZW1lbnQuY29uc3RydWN0b3IgPT09IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGluamVjdEh0bWwocGF0aCwgdGFnTG9jYXRpb24pO1xuICAgICAgICBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChmaWxlSW5mby5uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3RWxlbWVudDtcblxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZmlsZUluZm8pIHtcblxuICAgIGlmKGZpbGVJbmZvLmV4dCAhPT0gJ2h0bWwnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihmaWxlSW5mby5uYW1lICsgJy4nICsgZmlsZUluZm8uZXh0ICsgJyBmaWxlIG5lZWRzIC5odG1sIGV4dGVuc2lvbicpO1xuICAgIH1cblxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmaWxlKSB7XG5cbiAgICB2YXIgZmlsZUluZm8gPSB7fTtcblxuICAgIGZpbGVJbmZvLmV4dCA9IGZpbGUuc3BsaXQoJy4nKTtcbiAgICBmaWxlSW5mby5leHQgPSBmaWxlSW5mby5leHRbZmlsZUluZm8uZXh0Lmxlbmd0aCAtIDFdO1xuXG4gICAgZmlsZUluZm8ubmFtZSA9IGZpbGUuc3BsaXQoJy8nKTtcbiAgICBmaWxlSW5mby5uYW1lID0gZmlsZUluZm8ubmFtZVtmaWxlSW5mby5uYW1lLmxlbmd0aCAtIDFdO1xuICAgIGZpbGVJbmZvLm5hbWUgPSBmaWxlSW5mby5uYW1lLnNsaWNlKDAsIC0xLWZpbGVJbmZvLmV4dC5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGZpbGVJbmZvO1xuXG59IiwiLy8gSW5zZXJ0cyBodG1sIGltcG9ydCBpbnRvIHRhZyBsb2NhdGlvblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmaWxlLCB0YWdMb2NhdGlvbikge1xuXG4gICAgLy8gQ3JlYXRlIHN0eWxlc2hlZXQgbGlua1xuICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuXG4gICAgLy8gQWRkIGF0dHJpYnV0ZXNcbiAgICBsaW5rLmhyZWYgPSBmaWxlO1xuICAgIGxpbmsucmVsID0gJ2ltcG9ydCc7XG5cbiAgICAvLyBJbmplY3Qgc2NyaXB0IGludG8gdG8gZG9jdW1lbnRcbiAgICB2YXIgZG9jID0gdGFnTG9jYXRpb247XG4gICAgZG9jLmFwcGVuZENoaWxkKGxpbmspO1xuXG59Il19