fwebc.js

Toy framework for learning web components
git clone git://git.finwo.net/lib/fwebc.js
Log | Files | Refs | README

commit 1ea6c4a895d67d3418cc22ee9f1479120facae9d
parent 47d8d390c8be58595446d5de4b213af20290dcfc
Author: finwo <finwo@pm.me>
Date:   Thu, 29 Oct 2020 12:06:27 +0100

Added minified version

Diffstat:
M.npmignore | 1+
Afwebc.min.js | 1+
Aminify.sh | 3+++
Mpackage.json | 1+
4 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/.npmignore b/.npmignore @@ -2,3 +2,4 @@ .github/ .gtm/ test/ +/minify.sh diff --git a/fwebc.min.js b/fwebc.min.js @@ -0,0 +1 @@ +(e=>{"object"==typeof module&&"exports"in module?module.exports=e({fetch:require("node-fetch")}):"object"==typeof window&&(window.fwebc=e({fetch:window.fetch}))})(({fetch:e})=>{const t={},n=[],o={ext:"tag",base:"/partial"},r=t.util={isObject:e=>null!==e&&("object"==typeof e&&!Array.isArray(e)),observable(e,t,n=""){if(Object(e)!==e)throw new Error(`Object is not an object, got: ${e}`);if("function"!=typeof t)throw new Error(`Callback is not a function, got: ${t}`);for(const o of Object.keys(e))Object(e[o])===e[o]&&(e[o]=r.observable(e[o],t,`${n}${o}.`));return new Proxy(e,{set(e,o,s,i){if(e[o]===s)return;let c=o in e?"update":"add";const l={name:o,type:c,object:e};return"update"==c&&(l.oldValue=e[o]),e[o]=Object(s)===s?r.observable(s,t,`${n}${o}.`):s,t([l]),!0},deleteProperty(e,n,o){if(!(n in e))return;const r={name:n,type:"delete",object:e,oldValue:e[n]};return delete e[n],t([r]),!0}})}};return t.cfg=(e=>{Object.assign(o,e)}),t.install=(e=>{"function"==typeof e&&n.push(e)}),t.uninstall=(e=>{const t=n.indexOf(e);~t&&n.splice(t,1)}),t.register=((e,o)=>{if(window.customElements.get(e))return;let s=document.createElement("template");s.innerHTML=o,s.content.firstChild instanceof HTMLTemplateElement&&(s=s.content.firstChild);let i="";for(const e of[...s.content.children])e instanceof HTMLScriptElement&&(i+=e.innerHTML,s.content.removeChild(e));s=s.innerHTML,window.customElements.define(e,class extends HTMLElement{constructor(){super(),this.state={},this.root=this.attachShadow({mode:"open"});for(const e of n)e(this);new Function(i).call(this),this.dependencies&&dependencies.forEach(t.load),this.state=r.observable(this.state,this.render.bind(this)),this.render()}render(){const e=new Function(...Object.keys(this.state),"return `"+s.replace(/`/g,"\\`")+"`;");try{this.root.innerHTML=e(...Object.values(this.state))}catch(e){console.error(e)}}})}),t.load=(n=>{e(`${o.base}/${n}.${o.ext}`).then(e=>e.text()).then(e=>{t.register(n,e)})}),t}); diff --git a/minify.sh b/minify.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# npm install -g uglify-es +uglifyjs --compress --mangle < fwebc.js > fwebc.min.js diff --git a/package.json b/package.json @@ -3,6 +3,7 @@ "version": "0.3.0", "description": "", "main": "fwebc.js", + "unpkg": "fwebc.min.js", "scripts": { "test": "echo \"Error: no test specified\"", "postpublish": "PACKAGE_VERSION=$(cat package.json | grep \\\"version\\\" | head -1 | awk -F: '{print $2}' | sed 's/[\",]//g' | tr -d '[[:space:]]') && npm deprecate \"fwebc@<${PACKAGE_VERSION}\" \"Rolling release, please update to ${PACKAGE_VERSION}\""