{"version":3,"file":"imm_elem_auto.mjs","sources":["../../code/imm_utils.mjs","../../code/imm_dom_core.mjs","../../code/imm_pxy.mjs","../../code/imm_elem_core.mjs","../../code/imm_elem.mjs","../../code/beta/imm_elem_auto.mjs"],"sourcesContent":["export const\n _I_ = x=>x,\n _dash_name = s => s?.replace(/_/g, '-'),\n _prop_name = s => s?.replace(/-/g, '_'),\n _pairs = o => Object.entries(o),\n _is_obj = a => 'object' === typeof a && null !== a,\n _is_iter = a => _is_obj(a) && Symbol.iterator in a,\n _is_attr_dict = a => _is_obj(a)\n && !a.nodeType && !a.toDOM\n && !_is_iter(a)\n\nexport const\n _imm_cp = (tgt, src, key) =>\n Object.assign(tgt, key ? {[key]:src} : src),\n _ce = /* #__PURE__ */ _I_(customElements),\n\n _el_on = (el, ...z) => ( el.addEventListener(...z), el ),\n _el_get = (el,k) => (k=el.getAttribute(k), ''==k || k),\n _el_has = (el,k) => el.hasAttribute(k),\n _el_set = (el,k,v) => (\n (null == v || false === v\n ? el.removeAttribute(k) // false or nullish is semantically removeAttribute()\n : _is_obj(v) == {style: 1}[k] ? _imm_cp(el[k], v) // use object assign for known keys: style; note true==1 but false!=undefined\n : el.setAttribute(k, true === v ? '' : v)\n ), 1)\n\n","import {\n _dash_name, _pairs,\n _is_attr_dict, _is_iter,\n _el_set, _el_on, _imm_cp\n} from './imm_utils.mjs'\nexport {\n _imm_cp\n} from './imm_utils.mjs'\n\n\n// complex expressions to avoid 'if', 'else', and 'return' keywords\nconst\n // .reduce(_imm_aop, el) interpretation of imm attribute dictionary semantics\n _imm_aop = (el,[k,v],k0,attrs) => (\n k0 = k[0]\n , (\n '$' === k0 // children to prepend\n ? (attrs.z ||= []).push(v)\n\n : '=' === k0 // direct property assignment\n ? _imm_cp(el, v, k.split('=')[1])\n\n : '@' === k0 // hook callback\n ? v(el, k)\n\n : v?.call // event handlers\n ? _el_on(el, k, v, v.opt)\n\n : _el_set(el, _dash_name(k), v) // attribute values\n ), el),\n\n // .flatMap(_imm_cf) interpretation of imm child elements and iterables\n _imm_cf = c => (\n // allow opt-in coersion\n c &&= c.toDOM?.(c) || c.valueOf(c),\n\n null == c ? [] // filter nullish\n\n : c.nodeType ? [c] // pass-through nodes\n\n : _is_iter(c) ? _imm_b(c) // recursively reduce arrays and iterables\n\n : ''+c ) // otherwise force toString()\n\n\n\nexport function imm(el, ...args) {\n let len=args.length, attrs=args[0]\n\n if (0 < len && el?.nodeType) {\n if (_is_attr_dict(attrs)) {\n // replace attrs with null in args\n 1 === len ? args = null : args[0] = null\n\n attrs = _pairs(attrs)\n attrs.reduce(_imm_aop, el)\n\n // prepend children found in attrs.z\n attrs.z && el.prepend(... _imm_b(attrs.z))\n }\n\n // append arguments as children\n args && el.append(... _imm_b(args))\n }\n return el\n}\n\n\nexport const\n // clear all inner content (text and html)\n _imm0 = el => (el.textContent = '', el),\n imm_set = (el, ...args) => imm(_imm0(el), ...args),\n\n _imm_b = iterable => [... iterable].flatMap(_imm_cf)\n\n","import {_I_, _dash_name, _prop_name, _el_get, _el_has, _el_set} from './imm_utils.mjs'\n\n\nconst _imm_pxy_gset = /* #__PURE__ */ _I_({\n get: (fn,k) => fn(k),\n set: (fn,k,v) => (fn(k,v), 1),\n})\nexport const imm_pxy_gset = fn =>\n new Proxy(fn, _imm_pxy_gset)\n\n\nconst _imm_pxy = /* #__PURE__ */ _I_({\n get(tag_fn, key, ns) {\n let r = tag_fn[key]\n if (undefined === r && /[a-z]/.test(key))\n ns[key] = r = tag_fn\n .bind(null, _dash_name(key))\n return r }})\n\nexport const imm_pxy_tag = (tag_fn, kw=tag_fn) =>\n ({ __proto__: new Proxy(tag_fn, _imm_pxy), ... kw })\n\nconst\n _imm_pxy_attr = /* #__PURE__ */ _I_({\n // use k.trim to avoid Symbols\n get: ({$},k) => k.trim && (_el_get($, _dash_name(k)) || _el_get($, k)),\n has: ({$},k) => k.trim && (_el_has($, _dash_name(k)) || _el_has($, k)),\n set: ({$},k,v) => _el_set($, _dash_name(k), v),\n deleteProperty: ({$},k) => _el_set($, _dash_name(k)) || _el_set($, k),\n\n // update the proxy for each attribute to leverage default implementation of getOwnPropertyDescriptor()\n ownKeys: pxy => pxy.$.getAttributeNames().map(k => (k=_prop_name(k), pxy[k] = k)),\n })\n\nexport const imm_pxy_attr = el =>\n new Proxy({$:el}, _imm_pxy_attr)\n\nexport const with_ns_attr = ImmKlass =>\n class extends ImmKlass {\n get _ns_() { return imm_pxy_attr(this) }\n }\n\n\nexport function imm_pxy_css(css_style) {\n let _css_prop = css_style.getPropertyValue.bind(css_style)\n return imm_pxy_gset(k => _css_prop(_dash_name(k))) }\n\n","import { _el_set, _dash_name, _ce } from './imm_utils.mjs'\nimport { _imm_cp } from './imm_dom_core.mjs'\nimport { with_ns_attr } from './imm_pxy.mjs'\n\n\nconst _subclass_unless = (klass, args) =>\n true === args[0] ? (args.shift(), klass)\n : class extends klass {}\n\nexport const\n imm_ac_on = el =>\n (old, value, attr) =>\n _el_set(el, attr, value),\n\n imm_when = tag_name =>\n _ce.whenDefined(tag_name)\n .then(el => el || _ce.get(tag_name)),\n\n imm_mixin = (klass, ... args) => (\n klass = _subclass_unless(klass, args),\n _imm_cp(klass.prototype, args[0]),\n _imm_cp(klass, args[1]))\n\n\nexport {imm_define as imm_define_when}\nexport async function imm_define(klass, tag, ...when) {\n for (let k of when)\n if (k) await k.trim ? _ce.whenDefined(k) : k\n _ce.define(_dash_name(tag), klass, tag.options)\n return klass\n}\n\nexport function imm_observe(klass, ...attrs) {\n klass = _subclass_unless(klass, attrs)\n klass.observedAttributes = attrs\n .flat(9).map(_dash_name)\n .concat(klass.observedAttributes||[])\n return klass\n}\n\n\nexport class Imm0 extends HTMLElement {\n static with(...args) {\n return imm_mixin(this, ...args)\n }\n static observe(...attrs) {\n return imm_observe(this, ...attrs)\n }\n static define(...args) {\n imm_define(this, ...args)\n return this\n }\n\n\n // _wc_(el, op, v) {} -- use static _wc_ to setup\n static _wc_(fnop, adapt) {\n return this.with(\n { _wc_: (self, op, v) => fnop[op]?.(self, v) },\n adapt && { adapt })\n }\n\n connectedCallback() { this._wc_(this, 'c') }\n disconnectedCallback() { this._wc_(this, '') }\n attributeChangedCallback(attr_name, v_old, v_new) {\n // look for an '^attr_name' method on this.\n // If exists, call it with attribute change details.\n if (false !== this['^'+attr_name]?.(v_old, v_new, attr_name)) {\n // if not false, call _wc_ attribute changed callback for update or _refresh_ semantics\n this._wc_(this, 'ac', [attr_name, v_old, v_new])\n }\n }\n}\n\n\nexport class ImmCore extends /* #__PURE__ */ with_ns_attr(Imm0) {\n static dom(dfn, proto_, kw) {\n if (proto_)\n kw = {...kw, ... (\n 'object' === typeof proto_ ? proto_\n : this.adapt(proto_) )}\n\n if (dfn.trim) dfn = [dfn] // if string, make array\n return this // klass\n .with( kw ) // subclass\n .define(...dfn) // imm_define_when\n }\n}\n\n","import { _imm0, _imm_b, _imm_cp } from './imm_dom_core.mjs'\nimport { ImmCore } from './imm_elem_core.mjs'\nexport { ImmCore } from './imm_elem_core.mjs'\n\n\nexport class ImmElem\n extends /* #__PURE__ */\n ImmCore._wc_({ // ImmElem web component double dispatch\n c: o => o._render_(true), // -- connectedCallback()\n\n // look for an '^attr_name' method on self. If exists, call it with attribute change details.\n ac: (o,v) => o._refresh_(), // -- attributeChangedCallback()\n\n '': o => o._stop_(), // -- disconnectedCallback()\n\n r: async o => (await o)._render_(), // debounce _refresh_/_render_ for ImmElem\n }, z => ({render:z}))\n{\n // init(/* ns, el, tgt */) { /* return _tgt_ (optional) */ }\n // render(/* ns, el, tgt */) { /* return element to _show_() onto _tgt_ */ }\n // render0(/* ns, el, tgt */) { /* called on first render ; return element to _show_() onto _tgt_ */\n // render0$(/* ns, el, tgt */) { /* called on reconnected render ; return element to _show_() onto _tgt_ */\n\n static elem(dfn, proto_) {\n return this.dom(dfn, proto_, {_tgt_: 0})\n }\n\n //--------------------------------------\n // web component composed implementation\n\n constructor() {\n super()\n this._init_tgt_(this._tgt_)\n _imm_cp(this, this._bind_(this))\n this.init?.(... this._z_)\n }\n\n _init_tgt_(_tgt_) {\n _tgt_ ||= 0 !== _tgt_ ? this\n : this.attachShadow({mode: 'open'})\n\n let _z_ = [\n this._ns_, // _z_[0] : attribute proxy namespace\n this, // _z_[1] : this/self\n _tgt_, // _z_[2] : _tgt_ shadowRoot or element this/self\n -1, // _z_[3] : _refresh_ block, set to -1 'before' connectedCallback\n ]\n Object.defineProperties(this, {\n _tgt_: {\n get: () => _z_[2],\n set: _tgt_ => {\n // append the new target node if not attached\n _tgt_.parentNode || _z_[2].append(_tgt_)\n _z_[2] = _tgt_\n },\n },\n _z_: {value: _z_},\n })\n }\n\n _render_(is_reconnect) {\n let node, _z_=this._z_,\n fn_render = is_reconnect && this.render0 || this.render$ || this.render\n if (is_reconnect) this.render0 = this.render0$\n _z_[3] = 0 // clear _refresh_ block\n node = fn_render?.apply(this, _z_)\n this._show_(node)\n }\n\n _stop_() {\n this._z_[3] = 1 // set _refresh_ block to 1 'after' disconnectedCallback\n let fn = this.render$\n if (fn) {\n delete this.render$\n if (fn.stop) fn.stop()\n }\n }\n\n _show_(node, retain) {\n let [t] = typeof node, _tgt_ = this._tgt_\n return (\n // on bool, refresh when true\n 'b'==t ? node && this._refresh_()\n\n // on nullish; clear for null, or noop on undefined\n : null == node ? 'o'==t && _imm0(_tgt_)\n\n // on Promises\n : node.then?.(retain ? this._add_ : this._show_)\n\n // otherwise use DOM _tgt_.append with _imm_b for iterables\n || (retain ? _tgt_ : _imm0(_tgt_))\n .append(... _imm_b([node]))\n )\n }\n\n _bind_(self) {\n // bind ._show_, ._add_, and ._refresh_ as closures\n let {_wc_, _z_} = self, _show_ = self._show_.bind(self)\n return ({\n _show_,\n _add_: node => _show_(node, 1),\n _refresh_: p => p?.then?.(self._refresh_)\n || (_z_[3] ||= _wc_(self, 'r')) // _debounce _refresh_ via Promise\n })\n }\n}\n\nexport default ImmElem\n","import {ImmElem} from '../imm_elem.mjs'\n\nexport function _imm_attr_spy(klass, fn_target) {\n // Proxy spy to find observed attributes\n let attrs = new Set()\n let spy = new Proxy({}, {get(t,n) { attrs.add(n) }})\n fn_target(spy)\n return klass.observe(klass, ... attrs)\n}\n\nexport class ImmAuto extends ImmElem {\n static _imm_cfn(proto, fn_v) {\n super._imm_cfn(proto, fn_v)\n return _imm_attr_spy(this, proto.render)\n }\n}\n\nexport default ImmAuto\n"],"names":[],"mappings":"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"}