@twobirds/microcomponents 0.1.19 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["elements.ts"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CACvB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,EACzD,kBAAkB,GAAE,MAAM,EAAO,QA6EjC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAE3E"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+ import { DC, McBase } from './MC.js';
3
+ import { kebabToPascal } from './helpers.js';
4
+ function createNamedClass(name, ClassBody) {
5
+ return Object.defineProperty(ClassBody, 'name', { value: name });
6
+ }
7
+ export function defineCE(tagName, DefinitionClass, observedAttributes = []) {
8
+ if (customElements.get(tagName)) {
9
+ console.warn(`IGNORED: Custom element "${tagName}" is already defined!`);
10
+ return;
11
+ }
12
+ if (!tagName.includes('-')) {
13
+ throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');
14
+ }
15
+ let name = kebabToPascal(tagName);
16
+ if (!(DefinitionClass.prototype instanceof McBase)) {
17
+ customElements.define(tagName, DefinitionClass);
18
+ return;
19
+ }
20
+ customElements.define(tagName, createNamedClass(name, class extends HTMLElement {
21
+ constructor(data) {
22
+ super();
23
+ DC.add(this, name, new DefinitionClass(this, data));
24
+ }
25
+ connectedCallback() {
26
+ this.dispatchEvent(new CustomEvent('_mcConnected'));
27
+ }
28
+ connectedMoveCallback() {
29
+ this.dispatchEvent(new CustomEvent('_mcConnectedMove'));
30
+ }
31
+ disconnectedCallback() {
32
+ this.dispatchEvent(new CustomEvent('_mcDisconnected'));
33
+ }
34
+ adoptedCallback() {
35
+ this.dispatchEvent(new CustomEvent('_mcAdopted'));
36
+ }
37
+ attributeChangedCallback(name, oldValue, newValue) {
38
+ this.dispatchEvent(new CustomEvent('_mcAttributeChanged', { detail: { name, oldValue, newValue } }));
39
+ }
40
+ formResetCallback() {
41
+ this.dispatchEvent(new CustomEvent('_mcFormReset'));
42
+ }
43
+ static get observedAttributes() {
44
+ return observedAttributes;
45
+ }
46
+ }));
47
+ }
48
+ export function getCE(tagName) {
49
+ return customElements.get(tagName);
50
+ }
@@ -0,0 +1 @@
1
+ var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{c:()=>l,t:()=>u});const n=new Function("try {return this===window;}catch(e){ return false;}");function r(t){return t&&t instanceof HTMLElement}function c(t){return"_mc"+t[0].toUpperCase()+t.substring(1)}function o(t,e,n,r=!1){return t.addEventListener(c(e),n,{capture:!1,once:r}),n}class s{stopped=!1;constructor(){}stop(){this.stopped=!0}}class a{_target;constructor(t){var e;this._target=new WeakRef(t||{}),function(t){if(!n()||t.constructor===i)return;const e=t.target;if(e instanceof HTMLElement){let n=t;Object.getOwnPropertyNames(n.constructor.prototype).filter((t=>/^(on[A-Z]|one[A-Z])/.test(t)&&"function"==typeof n.constructor.prototype[t])).forEach((t=>{let r=/^one/.test(t),c=t.replace(/^on[e]{0,1}/,""),s=c.toLowerCase();if("on"+s in e){let r=e=>{n[t](e)};e.addEventListener(s,r)}else o(e,c,(e=>{n[t](e)}),r)}))}}(this),e=this,setTimeout((()=>{e.constructor!==i&&e.trigger("Init")}),0)}get target(){return this._target.deref()}}class i extends a{constructor(t){super(t)}static add(t,e,n={}){return function(t,e,n={}){let r=t;r._mc||(r._mc=new i(t));const c=r._mc;return e.length&&!c[e]&&(c[e]=n,t instanceof HTMLElement&&!t.getAttribute("data-mc")&&t.setAttribute("data-mc","")),r}(t,e,n)}static remove(t,e){!function(t,e){if(!e)return;const n=t?._mc||{};n&&n[e]&&delete n[e],!Object.keys(n).length&&t instanceof HTMLElement&&t.hasAttribute("data-mc")&&t.removeAttribute("data-mc")}(t,e)}off(t,e){!function(t,e,n){t.removeEventListener(c(e),n)}(this.target,t,e)}on(t,e){return o(this.target,t,e)}one(t,e){return function(t,e,n){return o(t,e,n,!0),n}(this.target,t,e)}trigger(t,e={},n="l",r){!function(t,e,n={},r="l",o){const a=/^_mc/.test(e)?e:c(e),i=o||new s,l=new CustomEvent(a,{detail:{data:n,control:i},bubbles:!1});i.stopped||/l/.test(r)&&(t.dispatchEvent(l),l.stopImmediatePropagation(),i.stopped)||/[ud]/.test(r)&&(-1===r.indexOf("l")&&(r+="l"),setTimeout((()=>{if(r.indexOf("u")>-1){let e=t.parentElement?.closest("[data-mc]");e&&e?._mc.trigger(a,n,r,i)}if(r.indexOf("d")>-1){let e=t._mc.children();e&&e.forEach((t=>t.trigger(a,n,r)))}}),0))}(this.target,t,e,n,r)}ancestors(){let t=this?.target,e=[];if(!r(t))return[];for(;t=t.closest("[data-mc]");)t?._mc&&e.push(t?._mc);return e.length?e:null}closest(){let t=this.target;return r(t)&&t.closest("[data-mc]")?._mc||null}children(){let t=this?.target;return r(t)?function(t){const e=Math.random().toString().replace(".",""),n='[data-mc]:not([temp_id="'+e+'"] [data-mc] [data-mc])';t.setAttribute("temp_id",e);const r=[...t.querySelectorAll(n)].filter((t=>!!t._mc)).map((t=>t._mc));return t.removeAttribute("temp_id"),r.length?r:null}(t):null}descendants(){const t=this?.target;if(!r(t))return[];const e=[...t.querySelectorAll("[data-mc]")].filter((t=>!!t._mc)).map((t=>t._mc));return e.length?e:null}}function l(t,e,n=[]){if(customElements.get(t))return void console.warn(`IGNORED: Custom element "${t}" is already defined!`);if(!t.includes("-"))throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');let r=t.split("-").map((t=>t.charAt(0).toUpperCase()+t.slice(1))).join("");e.prototype instanceof a?customElements.define(t,function(t,e){return Object.defineProperty(e,"name",{value:t})}(r,class extends HTMLElement{constructor(t){super(),i.add(this,r,new e(this,t))}connectedCallback(){this.dispatchEvent(new CustomEvent("_mcConnected"))}connectedMoveCallback(){this.dispatchEvent(new CustomEvent("_mcConnectedMove"))}disconnectedCallback(){this.dispatchEvent(new CustomEvent("_mcDisconnected"))}adoptedCallback(){this.dispatchEvent(new CustomEvent("_mcAdopted"))}attributeChangedCallback(t,e,n){this.dispatchEvent(new CustomEvent("_mcAttributeChanged",{detail:{name:t,oldValue:e,newValue:n}}))}formResetCallback(){this.dispatchEvent(new CustomEvent("_mcFormReset"))}static get observedAttributes(){return n}})):customElements.define(t,e)}function u(t){return customElements.get(t)}new Set;var m=e.c,d=e.t;export{m as defineCE,d as getCE};
@@ -0,0 +1,3 @@
1
+ import { LooseObject } from './helpers.js';
2
+ export declare function formValues(targetObject: LooseObject, propertyName: string, dom: HTMLElement | ShadowRoot): void;
3
+ //# sourceMappingURL=formValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formValues.d.ts","sourceRoot":"","sources":["formValues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAsB,MAAM,cAAc,CAAC;AA6L/D,wBAAgB,UAAU,CACzB,YAAY,EAAE,WAAW,EACzB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GAAG,UAAU,QAkB7B"}
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+ import { copyGettersSetters } from './helpers.js';
3
+ import { DC } from './MC.js';
4
+ import { observe } from './observables.js';
5
+ const getInputName = (e) => {
6
+ return e.tagName.toLowerCase();
7
+ };
8
+ class InputBase {
9
+ constructor(e) { }
10
+ }
11
+ class RadioHandler extends InputBase {
12
+ #e;
13
+ constructor(e) {
14
+ super(e);
15
+ this.#e = e;
16
+ }
17
+ get val() {
18
+ let ret = new FormData(this.#e.form).get(this.#e.name);
19
+ return ret;
20
+ }
21
+ set val(value) {
22
+ let arr = [
23
+ ...this.#e.form.querySelectorAll(`input[type="radio"][name="${this.#e.name}"]`),
24
+ ];
25
+ arr.filter((e) => e.getAttribute('value') === value).shift().checked =
26
+ true;
27
+ }
28
+ }
29
+ class CheckboxHandler extends InputBase {
30
+ #e;
31
+ constructor(e) {
32
+ super(e);
33
+ this.#e = e;
34
+ }
35
+ get val() {
36
+ return this.#e.checked;
37
+ }
38
+ set val(value) {
39
+ this.#e.checked = value;
40
+ }
41
+ }
42
+ class InputHandler extends InputBase {
43
+ #e;
44
+ constructor(e) {
45
+ super(e);
46
+ this.#e = e;
47
+ }
48
+ get val() {
49
+ return this.#e.value;
50
+ }
51
+ set val(value) {
52
+ this.#e.value = value;
53
+ }
54
+ }
55
+ class SelectHandler extends InputBase {
56
+ #e;
57
+ #multi = false;
58
+ constructor(e) {
59
+ super(e);
60
+ this.#e = e;
61
+ this.#multi = e.multiple;
62
+ }
63
+ get val() {
64
+ const that = this, ret = [];
65
+ [...that.#e.querySelectorAll('option')]
66
+ .filter((o) => o.selected)
67
+ .forEach((o) => {
68
+ ret.push(o.value);
69
+ });
70
+ if (this.#multi)
71
+ return ret;
72
+ return ret.length ? ret[0] : '';
73
+ }
74
+ set val(value) {
75
+ const that = this;
76
+ value = typeof value === 'string' ? [value] : value;
77
+ [...that.#e.querySelectorAll('option')].forEach((o) => {
78
+ if (value.indexOf(o.value) > -1) {
79
+ o.selected = true;
80
+ }
81
+ else {
82
+ o.selected = false;
83
+ }
84
+ });
85
+ }
86
+ }
87
+ class TextAreaHandler extends InputBase {
88
+ #e;
89
+ constructor(e) {
90
+ super(e);
91
+ this.#e = e;
92
+ }
93
+ get val() {
94
+ return this.#e.value || '';
95
+ }
96
+ set val(value) {
97
+ this.#e.value = value;
98
+ }
99
+ }
100
+ const getInputHandlers = (e) => {
101
+ let inputList = [...(e || document).querySelectorAll('input,select,textarea')], handlers = {};
102
+ inputList.forEach((input) => {
103
+ const name = input.getAttribute('name');
104
+ if (name) {
105
+ let handler = false;
106
+ switch (getInputName(input)) {
107
+ case 'input':
108
+ switch (input.type) {
109
+ case 'radio':
110
+ handler = new RadioHandler(input);
111
+ break;
112
+ case 'checkbox':
113
+ handler = new CheckboxHandler(input);
114
+ break;
115
+ default:
116
+ handler = new InputHandler(input);
117
+ }
118
+ break;
119
+ case 'select':
120
+ handler = new SelectHandler(input);
121
+ break;
122
+ case 'textarea':
123
+ handler = new TextAreaHandler(input);
124
+ break;
125
+ default:
126
+ console.warn('handler missing:', name, 'for', input.tagName.toLowerCase(), input);
127
+ break;
128
+ }
129
+ if (handler) {
130
+ DC.add(input, name, handler);
131
+ Object.defineProperty(handlers, name, {
132
+ enumerable: true,
133
+ configurable: true,
134
+ get: () => {
135
+ return handler.val;
136
+ },
137
+ set: (value) => {
138
+ if (handler.val !== value) {
139
+ handler.val = value;
140
+ }
141
+ },
142
+ });
143
+ }
144
+ }
145
+ });
146
+ return handlers;
147
+ };
148
+ export function formValues(targetObject, propertyName, dom) {
149
+ let handlers = getInputHandlers(dom);
150
+ targetObject[propertyName] = Object.assign({}, handlers);
151
+ observe(targetObject, propertyName);
152
+ copyGettersSetters(handlers, targetObject[propertyName]);
153
+ [...dom.querySelectorAll('input, textarea, select')].forEach((input) => {
154
+ input.addEventListener('input', (ev) => {
155
+ targetObject[propertyName].notify();
156
+ });
157
+ });
158
+ }
@@ -0,0 +1 @@
1
+ var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function r(t){let e={};return[...Object.keys(t)].sort().forEach((n=>{var s;(s=t[n])&&s.constructor&&s.constructor===Object?e[n]=r(t[n]):e[n]=t[n]})),e}function n(t,e=!0){let s={};return[...Object.getOwnPropertyNames(t)].forEach((e=>{if(t[e]instanceof Object){const r=n(t[e],!1);s[e]={};for(const t in r)s[e+"."+t]=r[t]}else s[e]=t[e]})),e?r(s):s}function s(t,e){const r=Object.getOwnPropertyDescriptors(t);for(const[t,n]of Object.entries(r))("get"in n||"set"in n)&&Object.defineProperty(e,t,n)}t.d(e,{R:()=>S});const a=new Function("try {return this===window;}catch(e){ return false;}");function c(t){return t&&t instanceof HTMLElement}function o(t){return"_mc"+t[0].toUpperCase()+t.substring(1)}function l(t,e,r,n=!1){return t.addEventListener(o(e),r,{capture:!1,once:n}),r}class i{stopped=!1;constructor(){}stop(){this.stopped=!0}}function u(t,e,r={},n="l",s){const a=/^_mc/.test(e)?e:o(e),c=s||new i,l=new CustomEvent(a,{detail:{data:r,control:c},bubbles:!1});c.stopped||/l/.test(n)&&(t.dispatchEvent(l),l.stopImmediatePropagation(),c.stopped)||/[ud]/.test(n)&&(-1===n.indexOf("l")&&(n+="l"),setTimeout((()=>{if(n.indexOf("u")>-1){let e=t.parentElement?.closest("[data-mc]");e&&e?._mc.trigger(a,r,n,c)}if(n.indexOf("d")>-1){let e=t._mc.children();e&&e.forEach((t=>t.trigger(a,r,n)))}}),0))}class f{_target;constructor(t){var e;this._target=new WeakRef(t||{}),function(t){if(!a()||t.constructor===h)return;const e=t.target;if(e instanceof HTMLElement){let r=t;Object.getOwnPropertyNames(r.constructor.prototype).filter((t=>/^(on[A-Z]|one[A-Z])/.test(t)&&"function"==typeof r.constructor.prototype[t])).forEach((t=>{let n=/^one/.test(t),s=t.replace(/^on[e]{0,1}/,""),a=s.toLowerCase();if("on"+a in e){let n=e=>{r[t](e)};e.addEventListener(a,n)}else l(e,s,(e=>{r[t](e)}),n)}))}}(this),e=this,setTimeout((()=>{e.constructor!==h&&e.trigger("Init")}),0)}get target(){return this._target.deref()}}class h extends f{constructor(t){super(t)}static add(t,e,r={}){return function(t,e,r={}){let n=t;n._mc||(n._mc=new h(t));const s=n._mc;return e.length&&!s[e]&&(s[e]=r,t instanceof HTMLElement&&!t.getAttribute("data-mc")&&t.setAttribute("data-mc","")),n}(t,e,r)}static remove(t,e){!function(t,e){if(!e)return;const r=t?._mc||{};r&&r[e]&&delete r[e],!Object.keys(r).length&&t instanceof HTMLElement&&t.hasAttribute("data-mc")&&t.removeAttribute("data-mc")}(t,e)}off(t,e){!function(t,e,r){t.removeEventListener(o(e),r)}(this.target,t,e)}on(t,e){return l(this.target,t,e)}one(t,e){return function(t,e,r){return l(t,e,r,!0),r}(this.target,t,e)}trigger(t,e={},r="l",n){u(this.target,t,e,r,n)}ancestors(){let t=this?.target,e=[];if(!c(t))return[];for(;t=t.closest("[data-mc]");)t?._mc&&e.push(t?._mc);return e.length?e:null}closest(){let t=this.target;return c(t)&&t.closest("[data-mc]")?._mc||null}children(){let t=this?.target;return c(t)?function(t){const e=Math.random().toString().replace(".",""),r='[data-mc]:not([temp_id="'+e+'"] [data-mc] [data-mc])';t.setAttribute("temp_id",e);const n=[...t.querySelectorAll(r)].filter((t=>!!t._mc)).map((t=>t._mc));return t.removeAttribute("temp_id"),n.length?n:null}(t):null}descendants(){const t=this?.target;if(!c(t))return[];const e=[...t.querySelectorAll("[data-mc]")].filter((t=>!!t._mc)).map((t=>t._mc));return e.length?e:null}}function d(t){return null!=t&&"object"==typeof t}function p(t){let e=new Set,r=/\{[^\{\}]*\}/g;return(t.getAttributeNames?t.getAttributeNames():[]).filter((e=>t.getAttribute(e)?.match(r))).forEach((e=>{let n=new Set(t.getAttribute(e)?.match(r));n.forEach((t=>n.add(t.replace(/[\{\}]/g,""))))})),[...t.childNodes].filter((t=>3===t.nodeType&&(t.nodeValue||"").match(r))).forEach((t=>{(t.nodeValue||"").match(r).forEach((t=>{e.add(t.replace(/[\{\}]/g,""))}))})),[...e].map((t=>t.replace(/[\{\}]/g,"")))}new Set;const m=[HTMLInputElement,HTMLSelectElement,HTMLTextAreaElement];class g extends h{data={};oldDisplay="";constructor(t){super(t),p(t).forEach((t=>this.data[t]="")),v(this),this.#t()}#t(){let t=this.target,e=!1;(t.getAttributeNames?t.getAttributeNames():[]).filter((e=>t.getAttribute(e)?.match(/\{[^\{\}]*\}/g))).forEach((e=>{let r=new Set(t.getAttribute(e)?.match(/\{[^\{\}]*\}/g));var n;this.data.observe((n=t.getAttribute(e),s=>{let a=n;r.forEach((t=>{a=a.replace(t,s[t.replace(/[\{\}]/g,"")])})),t.setAttribute(e,a)}))})),[...t.childNodes].filter((t=>3===t.nodeType&&(t.nodeValue||"").match(/\{[^\{\}]*\}/g))).forEach((r=>{e=!0;let n=new Set(r.nodeValue.match(/\{[^\{\}]*\}/g));this.data.observe((e=>s=>{let a=e;n.forEach((t=>{a=a.replace(t,s[t.replace(/[\{\}]/g,"")])})),this.oldDisplay?t.style=this.oldDisplay:t.removeAttribute("style"),delete this.oldDisplay,r.nodeValue=a})(r.nodeValue)),this.oldDisplay=t.getAttribute("style")||"",e&&!m.includes(t.constructor)&&"FIELDSET"!==t.tagName&&(t.style.display="none")}))}onData(t){let e={};Object.keys(t.detail.data).forEach((r=>{this.data.hasOwnProperty(r)&&(e[r]=t.detail.data[r])})),JSON.stringify(e)!==JSON.stringify(this.data)&&Object.assign(this.data,e)}}const b={};function y(t){let e=t.constructor.name;return b[e]||function(t){const e=t.constructor,r=e.name;let s=class extends e{#e=!0;#r=[];constructor(t){super(t),this.constructor.callbacks=[],d(t)&&Object.getOwnPropertyNames(t).forEach((e=>{this[e]=t[e]}))}get callbacks(){return this.#r}set callbacks(t){this.#r=t}observe(t){return this.#r.push(t),this}bind(t){if(d(this.valueOf())){!function(t){var e;(e=t,[e].concat([...e.querySelectorAll("*")]).filter((t=>!!p(t).length)).filter((t=>"STYLE"!==t?.tagName)).reverse()).forEach((t=>{t?._mc?._placeholders||h.add(t,"_placeholders",new g(t))}))}(t);const e=[t,...t.querySelectorAll("[data-mc]")].filter((t=>!!t?._mc?._placeholders)),r=function(t){let r=n(t);e.forEach((t=>{t&&u(t,"data",r)}))};this.#r.push(r),this.notify()}else console.warn("IGNORED - cannot bind a non-Object to the dom, IS:",typeof this.valueOf(),this);return this}notify(t){let e=d(this.valueOf())&&this.valueOf()instanceof Array==0?structuredClone(Object.assign({},this)):this.valueOf();return void 0!==t&&(this.#e=t),this.#e&&this.#r.forEach((t=>{t(e)})),this}};return b[r]=s,s}(t)}const v=(t,e)=>((e?[e]:[...Object.getOwnPropertyNames(t)]).forEach((e=>{if(t.hasOwnProperty(e)&&"function"!=typeof t[e]&&!t?.[e]?.constructor?.prototype?.observe){if("_"===e[0]||void 0===t?.[e])return t;let r=t[e],a=new(y(r))(r),c=function(){let t;return()=>{clearTimeout(t),t=setTimeout((function(){!function(){a.notify()}(...arguments)}),0)}}();Object.defineProperty(t,e,{enumerable:!0,get(){if(d(a.valueOf())){let t=structuredClone(Object.assign({},a));setTimeout((function(){var e,r;e=structuredClone(Object.assign({},a)),r=t,JSON.stringify(n(e))!==JSON.stringify(n(r))&&c()}),0)}return a},set(t){if(typeof t==typeof a.valueOf())if(d(a.valueOf())&&a.valueOf()instanceof Array==0)void 0===a?.constructor?.prototype?.observe&&(a=new(y(t))(structuredClone(Object.assign({},t))),s(t,a)),Object.assign(a,t),a.notify();else{let e=a.valueOf(),r=a.callbacks;t!==e&&(a=new(y(t))(t),a.callbacks=r,c())}else console.warn("IGNORED - cannot change observable types, IS:",typeof a.valueOf(),a,"- CANNOT BECOME:",typeof t)}}),t[e]=r}})),t);class O{constructor(t){}}class E extends O{#n;constructor(t){super(t),this.#n=t}get val(){return new FormData(this.#n.form).get(this.#n.name)}set val(t){[...this.#n.form.querySelectorAll(`input[type="radio"][name="${this.#n.name}"]`)].filter((e=>e.getAttribute("value")===t)).shift().checked=!0}}class w extends O{#n;constructor(t){super(t),this.#n=t}get val(){return this.#n.checked}set val(t){this.#n.checked=t}}class A extends O{#n;constructor(t){super(t),this.#n=t}get val(){return this.#n.value}set val(t){this.#n.value=t}}class _ extends O{#n;#s=!1;constructor(t){super(t),this.#n=t,this.#s=t.multiple}get val(){const t=[];return[...this.#n.querySelectorAll("option")].filter((t=>t.selected)).forEach((e=>{t.push(e.value)})),this.#s?t:t.length?t[0]:""}set val(t){t="string"==typeof t?[t]:t,[...this.#n.querySelectorAll("option")].forEach((e=>{t.indexOf(e.value)>-1?e.selected=!0:e.selected=!1}))}}class k extends O{#n;constructor(t){super(t),this.#n=t}get val(){return this.#n.value||""}set val(t){this.#n.value=t}}const j=t=>{let e=[...(t||document).querySelectorAll("input,select,textarea")],r={};return e.forEach((t=>{const e=t.getAttribute("name");if(e){let n=!1;switch((t=>t.tagName.toLowerCase())(t)){case"input":switch(t.type){case"radio":n=new E(t);break;case"checkbox":n=new w(t);break;default:n=new A(t)}break;case"select":n=new _(t);break;case"textarea":n=new k(t);break;default:console.warn("handler missing:",e,"for",t.tagName.toLowerCase(),t)}n&&(h.add(t,e,n),Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:()=>n.val,set:t=>{n.val!==t&&(n.val=t)}}))}})),r};function S(t,e,r){let n=j(r);t[e]=Object.assign({},n),v(t,e),s(n,t[e]),[...r.querySelectorAll("input, textarea, select")].forEach((r=>{r.addEventListener("input",(r=>{t[e].notify()}))}))}var N=e.R;export{N as formValues};
@@ -0,0 +1,14 @@
1
+ export interface LooseObject {
2
+ [key: string | symbol]: any;
3
+ }
4
+ export declare function isNativeObject(value: any): boolean;
5
+ export declare function sortObject(o: LooseObject): LooseObject;
6
+ export declare function flattenObject(o: LooseObject, doSort?: boolean): LooseObject;
7
+ export declare function deepEqual(o1: LooseObject, o2: LooseObject): boolean;
8
+ export declare function nameSpace(ns: string | string[], obj?: LooseObject): any;
9
+ export declare function parse(what: string | object | any[], parseThis: object): any;
10
+ export declare function kebabToPascal(str: string): string;
11
+ export declare function debounce(func: Function, milliseconds: number): Function;
12
+ export declare function htmlToElements(html: string): HTMLElement[];
13
+ export declare function copyGettersSetters(source: LooseObject, target: LooseObject): void;
14
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["helpers.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAatD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,GAAE,OAAc,GAAG,WAAW,CAgBjF;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAEnE;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,GAAE,WAAgB,GAAG,GAAG,CAW3E;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,OAsCrE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UAKxC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,CASvE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAU1D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,QAO1E"}
@@ -0,0 +1,111 @@
1
+ 'use strict';
2
+ export function isNativeObject(value) {
3
+ return value && value['constructor'] && value.constructor === Object;
4
+ }
5
+ export function sortObject(o) {
6
+ let result = {}, keys = [...Object.keys(o)].sort();
7
+ keys.forEach((key) => {
8
+ if (isNativeObject(o[key])) {
9
+ result[key] = sortObject(o[key]);
10
+ }
11
+ else {
12
+ result[key] = o[key];
13
+ }
14
+ });
15
+ return result;
16
+ }
17
+ export function flattenObject(o, doSort = true) {
18
+ let result = {};
19
+ [...Object.getOwnPropertyNames(o)].forEach((propName) => {
20
+ if (o[propName] instanceof Object) {
21
+ const temp = flattenObject(o[propName], false);
22
+ result[propName] = {};
23
+ for (const j in temp) {
24
+ result[propName + '.' + j] = temp[j];
25
+ }
26
+ }
27
+ else {
28
+ result[propName] = o[propName];
29
+ }
30
+ });
31
+ return doSort ? sortObject(result) : result;
32
+ }
33
+ export function deepEqual(o1, o2) {
34
+ return JSON.stringify(flattenObject(o1)) === JSON.stringify(flattenObject(o2));
35
+ }
36
+ export function nameSpace(ns, obj = {}) {
37
+ let nsa = ns.constructor === String ? ns.split('.') : ns;
38
+ if (!obj || !nsa[0] || !obj[nsa[0]]) {
39
+ console.warn('ns', nsa[0], 'not in', obj);
40
+ return;
41
+ }
42
+ if (obj[nsa[0]].constructor === Object && nsa.length > 1) {
43
+ return nameSpace(nsa.splice(1), obj[nsa[0]]);
44
+ }
45
+ return obj[nsa[0]];
46
+ }
47
+ export function parse(what, parseThis) {
48
+ var args = Array.from(arguments);
49
+ if (args.length > 2) {
50
+ while (args.length > 1) {
51
+ args[0] = parse(args[0], args[1]);
52
+ args.splice(1, 1);
53
+ }
54
+ return args[0];
55
+ }
56
+ if (typeof what === 'string') {
57
+ what.match(/\{[^\{\}]*\}/g)?.forEach(function (pPropname) {
58
+ var propname = pPropname.substring(1, pPropname.length - 1), value = nameSpace(propname, parseThis);
59
+ if (typeof value !== 'undefined') {
60
+ what = what.replace(pPropname, value);
61
+ }
62
+ });
63
+ }
64
+ else if (isNativeObject(what)) {
65
+ switch (what.constructor) {
66
+ case Object:
67
+ Object.keys(what).forEach(function (pKey) {
68
+ if (what.hasOwnProperty(pKey)) {
69
+ what[pKey] = parse(what[pKey], parseThis);
70
+ }
71
+ });
72
+ break;
73
+ case Array:
74
+ what.forEach(function (pValue, pKey, original) {
75
+ original[pKey] = parse(what[pKey], parseThis);
76
+ });
77
+ break;
78
+ }
79
+ }
80
+ return what;
81
+ }
82
+ export function kebabToPascal(str) {
83
+ return str
84
+ .split('-')
85
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
86
+ .join('');
87
+ }
88
+ export function debounce(func, milliseconds) {
89
+ let timeout;
90
+ return () => {
91
+ clearTimeout(timeout);
92
+ timeout = setTimeout(function () {
93
+ func(...arguments);
94
+ }, milliseconds);
95
+ };
96
+ }
97
+ export function htmlToElements(html) {
98
+ let template = document.createElement('template');
99
+ html = html.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi, '<$1$2></$1>');
100
+ template.innerHTML = html;
101
+ template.content.normalize();
102
+ return Array.from(template.content.childNodes);
103
+ }
104
+ export function copyGettersSetters(source, target) {
105
+ const descriptors = Object.getOwnPropertyDescriptors(source);
106
+ for (const [key, descriptor] of Object.entries(descriptors)) {
107
+ if ('get' in descriptor || 'set' in descriptor) {
108
+ Object.defineProperty(target, key, descriptor);
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,6 @@
1
+ export * from './helpers.js';
2
+ export * from './MC.js';
3
+ export * from './elements.js';
4
+ export * from './observables.js';
5
+ export * from './formValues.js';
6
+ //# sourceMappingURL=microcomponents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microcomponents.d.ts","sourceRoot":"","sources":["microcomponents.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ export * from './helpers.js';
3
+ export * from './MC.js';
4
+ export * from './elements.js';
5
+ export * from './observables.js';
6
+ export * from './formValues.js';
@@ -0,0 +1 @@
1
+ var t={d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};function n(t){return t&&t.constructor&&t.constructor===Object}function r(t){let e={};return[...Object.keys(t)].sort().forEach((a=>{n(t[a])?e[a]=r(t[a]):e[a]=t[a]})),e}function a(t,e=!0){let n={};return[...Object.getOwnPropertyNames(t)].forEach((e=>{if(t[e]instanceof Object){const r=a(t[e],!1);n[e]={};for(const t in r)n[e+"."+t]=r[t]}else n[e]=t[e]})),e?r(n):n}function s(t,e){return JSON.stringify(a(t))===JSON.stringify(a(e))}function c(t,e={}){let n=t.constructor===String?t.split("."):t;if(e&&n[0]&&e[n[0]])return e[n[0]].constructor===Object&&n.length>1?c(n.splice(1),e[n[0]]):e[n[0]];console.warn("ns",n[0],"not in",e)}function o(t,e){var r=Array.from(arguments);if(r.length>2){for(;r.length>1;)r[0]=o(r[0],r[1]),r.splice(1,1);return r[0]}if("string"==typeof t)t.match(/\{[^\{\}]*\}/g)?.forEach((function(n){var r=c(n.substring(1,n.length-1),e);void 0!==r&&(t=t.replace(n,r))}));else if(n(t))switch(t.constructor){case Object:Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(t[n]=o(t[n],e))}));break;case Array:t.forEach((function(n,r,a){a[r]=o(t[r],e)}))}return t}function i(t){return t.split("-").map((t=>t.charAt(0).toUpperCase()+t.slice(1))).join("")}function l(t,e){let n;return()=>{clearTimeout(n),n=setTimeout((function(){t(...arguments)}),e)}}function u(t){let e=document.createElement("template");return t=t.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi,"<$1$2></$1>"),e.innerHTML=t,e.content.normalize(),Array.from(e.content.childNodes)}function d(t,e){const n=Object.getOwnPropertyDescriptors(t);for(const[t,r]of Object.entries(n))("get"in r||"set"in r)&&Object.defineProperty(e,t,r)}t.d(e,{DC:()=>w,MC:()=>O,Oc:()=>E,E_:()=>N,IT:()=>d,sg:()=>l,bD:()=>s,c2:()=>T,YO:()=>a,Rc:()=>G,tn:()=>L,qS:()=>u,nz:()=>n,TK:()=>i,k5:()=>c,lB:()=>I,AU:()=>p,on:()=>g,xH:()=>b,qg:()=>o,mf:()=>r,hZ:()=>v});const f=new Function("try {return this===window;}catch(e){ return false;}");function h(t){return t&&t instanceof HTMLElement}function m(t){return"_mc"+t[0].toUpperCase()+t.substring(1)}function p(t,e,n){t.removeEventListener(m(e),n)}function g(t,e,n,r=!1){return t.addEventListener(m(e),n,{capture:!1,once:r}),n}function b(t,e,n){return g(t,e,n,!0),n}class y{stopped=!1;constructor(){}stop(){this.stopped=!0}}function v(t,e,n={},r="l",a){const s=/^_mc/.test(e)?e:m(e),c=a||new y,o=new CustomEvent(s,{detail:{data:n,control:c},bubbles:!1});c.stopped||/l/.test(r)&&(t.dispatchEvent(o),o.stopImmediatePropagation(),c.stopped)||/[ud]/.test(r)&&(-1===r.indexOf("l")&&(r+="l"),setTimeout((()=>{if(r.indexOf("u")>-1){let e=t.parentElement?.closest("[data-mc]");e&&e?._mc.trigger(s,n,r,c)}if(r.indexOf("d")>-1){let e=t._mc.children();e&&e.forEach((t=>t.trigger(s,n,r)))}}),0))}class E{_target;constructor(t){var e;this._target=new WeakRef(t||{}),function(t){if(!f()||t.constructor===w)return;const e=t.target;if(e instanceof HTMLElement){let n=t;Object.getOwnPropertyNames(n.constructor.prototype).filter((t=>/^(on[A-Z]|one[A-Z])/.test(t)&&"function"==typeof n.constructor.prototype[t])).forEach((t=>{let r=/^one/.test(t),a=t.replace(/^on[e]{0,1}/,""),s=a.toLowerCase();if("on"+s in e){let r=e=>{n[t](e)};e.addEventListener(s,r)}else g(e,a,(e=>{n[t](e)}),r)}))}}(this),e=this,setTimeout((()=>{e.constructor!==w&&e.trigger("Init")}),0)}get target(){return this._target.deref()}}class O extends E{constructor(t){super(t)}}class w extends E{constructor(t){super(t)}static add(t,e,n={}){return function(t,e,n={}){let r=t;r._mc||(r._mc=new w(t));const a=r._mc;return e.length&&!a[e]&&(a[e]=n,t instanceof HTMLElement&&!t.getAttribute("data-mc")&&t.setAttribute("data-mc","")),r}(t,e,n)}static remove(t,e){!function(t,e){if(!e)return;const n=t?._mc||{};n&&n[e]&&delete n[e],!Object.keys(n).length&&t instanceof HTMLElement&&t.hasAttribute("data-mc")&&t.removeAttribute("data-mc")}(t,e)}off(t,e){p(this.target,t,e)}on(t,e){return g(this.target,t,e)}one(t,e){return b(this.target,t,e)}trigger(t,e={},n="l",r){v(this.target,t,e,n,r)}ancestors(){let t=this?.target,e=[];if(!h(t))return[];for(;t=t.closest("[data-mc]");)t?._mc&&e.push(t?._mc);return e.length?e:null}closest(){let t=this.target;return h(t)&&t.closest("[data-mc]")?._mc||null}children(){let t=this?.target;return h(t)?function(t){const e=Math.random().toString().replace(".",""),n='[data-mc]:not([temp_id="'+e+'"] [data-mc] [data-mc])';t.setAttribute("temp_id",e);const r=[...t.querySelectorAll(n)].filter((t=>!!t._mc)).map((t=>t._mc));return t.removeAttribute("temp_id"),r.length?r:null}(t):null}descendants(){const t=this?.target;if(!h(t))return[];const e=[...t.querySelectorAll("[data-mc]")].filter((t=>!!t._mc)).map((t=>t._mc));return e.length?e:null}}const A=new Set;function C(t){return()=>{const e=Array.from(document.querySelectorAll(`[data-mc*="${t}"]`)).filter((t=>t instanceof HTMLElement));if(0===e.length)return;const n=customElements.get(t);e.forEach((e=>{try{w.add(e,n.name,new n(e))}catch(t){if(!n.create)throw`Class ${n.name} doesn't have a callable constructor AND class doesn't have a static .create() method.`;{let t=n.create(e);t.setAttribute("data-mc",e.getAttribute("data-mc")),e.replaceWith(t),e=t}}const r=e.getAttribute("data-mc").split(" ").filter((e=>e!==t&&""!==e)).join(" ").trim();e.setAttribute("data-mc",r)}))}}function k(t){if(A.has(t))return;A.add(t);const e="./"+t.split("-").join("/")+".js",n=document.createElement("script");n.setAttribute("src",e),n.setAttribute("blocking","render"),n.async=!0,n.setAttribute("type","module"),n.setAttribute("data-name",t),n.setAttribute("loading",""),customElements.whenDefined(t).then(C(t)),n.addEventListener("load",(e=>{A.delete(t),document.head.querySelector(`script[data-name="${t}"]`)?.remove()})),n.addEventListener("error",(t=>{console.error("could not load DC code from",e)})),document.head.append(n)}function j(){[...document.querySelectorAll(":not(:defined)")].filter((t=>!!t&&!customElements.get(t.tagName.toLowerCase())&&!A.has(t.tagName.toLowerCase()))).forEach((t=>{k(t.tagName.toLowerCase())})),[...document.querySelectorAll('[data-mc]:not([data-mc=""]')].filter((t=>!!t)).forEach((t=>{const e=t.getAttribute("data-mc")?.split(" ").filter((t=>""!==t));e?.forEach((t=>{const e=customElements.get(t);A.has(t)||e?e&&C(t)():k(t)}))}))}let _=!1,S=null;function N(t=!0){return t?(_=t,S=new MutationObserver(j),setTimeout((()=>{S.observe(document.body,{childList:!0,subtree:!0}),j()}),5),window.autoload=window.autoload||N,_):(S?.disconnect(),S=null,_)}function T(t,e,n=[]){if(customElements.get(t))return void console.warn(`IGNORED: Custom element "${t}" is already defined!`);if(!t.includes("-"))throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');let r=i(t);e.prototype instanceof E?customElements.define(t,function(t,e){return Object.defineProperty(e,"name",{value:t})}(r,class extends HTMLElement{constructor(t){super(),w.add(this,r,new e(this,t))}connectedCallback(){this.dispatchEvent(new CustomEvent("_mcConnected"))}connectedMoveCallback(){this.dispatchEvent(new CustomEvent("_mcConnectedMove"))}disconnectedCallback(){this.dispatchEvent(new CustomEvent("_mcDisconnected"))}adoptedCallback(){this.dispatchEvent(new CustomEvent("_mcAdopted"))}attributeChangedCallback(t,e,n){this.dispatchEvent(new CustomEvent("_mcAttributeChanged",{detail:{name:t,oldValue:e,newValue:n}}))}formResetCallback(){this.dispatchEvent(new CustomEvent("_mcFormReset"))}static get observedAttributes(){return n}})):customElements.define(t,e)}function L(t){return customElements.get(t)}function x(t){return null!=t&&"object"==typeof t}function D(t){let e=new Set,n=/\{[^\{\}]*\}/g;return(t.getAttributeNames?t.getAttributeNames():[]).filter((e=>t.getAttribute(e)?.match(n))).forEach((e=>{let r=new Set(t.getAttribute(e)?.match(n));r.forEach((t=>r.add(t.replace(/[\{\}]/g,""))))})),[...t.childNodes].filter((t=>3===t.nodeType&&(t.nodeValue||"").match(n))).forEach((t=>{(t.nodeValue||"").match(n).forEach((t=>{e.add(t.replace(/[\{\}]/g,""))}))})),[...e].map((t=>t.replace(/[\{\}]/g,"")))}N.state=A;const M=[HTMLInputElement,HTMLSelectElement,HTMLTextAreaElement];class q extends w{data={};oldDisplay="";constructor(t){super(t),D(t).forEach((t=>this.data[t]="")),I(this),this.#t()}#t(){let t=this.target,e=!1;(t.getAttributeNames?t.getAttributeNames():[]).filter((e=>t.getAttribute(e)?.match(/\{[^\{\}]*\}/g))).forEach((e=>{let n=new Set(t.getAttribute(e)?.match(/\{[^\{\}]*\}/g));var r;this.data.observe((r=t.getAttribute(e),a=>{let s=r;n.forEach((t=>{s=s.replace(t,a[t.replace(/[\{\}]/g,"")])})),t.setAttribute(e,s)}))})),[...t.childNodes].filter((t=>3===t.nodeType&&(t.nodeValue||"").match(/\{[^\{\}]*\}/g))).forEach((n=>{e=!0;let r=new Set(n.nodeValue.match(/\{[^\{\}]*\}/g));this.data.observe((e=>a=>{let s=e;r.forEach((t=>{s=s.replace(t,a[t.replace(/[\{\}]/g,"")])})),this.oldDisplay?t.style=this.oldDisplay:t.removeAttribute("style"),delete this.oldDisplay,n.nodeValue=s})(n.nodeValue)),this.oldDisplay=t.getAttribute("style")||"",e&&!M.includes(t.constructor)&&"FIELDSET"!==t.tagName&&(t.style.display="none")}))}onData(t){let e={};Object.keys(t.detail.data).forEach((n=>{this.data.hasOwnProperty(n)&&(e[n]=t.detail.data[n])})),JSON.stringify(e)!==JSON.stringify(this.data)&&Object.assign(this.data,e)}}const P={};function H(t){let e=t.constructor.name;return P[e]||function(t){const e=t.constructor,n=e.name;let r=class extends e{#e=!0;#n=[];constructor(t){super(t),this.constructor.callbacks=[],x(t)&&Object.getOwnPropertyNames(t).forEach((e=>{this[e]=t[e]}))}get callbacks(){return this.#n}set callbacks(t){this.#n=t}observe(t){return this.#n.push(t),this}bind(t){if(x(this.valueOf())){!function(t){var e;(e=t,[e].concat([...e.querySelectorAll("*")]).filter((t=>!!D(t).length)).filter((t=>"STYLE"!==t?.tagName)).reverse()).forEach((t=>{t?._mc?._placeholders||w.add(t,"_placeholders",new q(t))}))}(t);const e=[t,...t.querySelectorAll("[data-mc]")].filter((t=>!!t?._mc?._placeholders)),n=function(t){let n=a(t);e.forEach((t=>{t&&v(t,"data",n)}))};this.#n.push(n),this.notify()}else console.warn("IGNORED - cannot bind a non-Object to the dom, IS:",typeof this.valueOf(),this);return this}notify(t){let e=x(this.valueOf())&&this.valueOf()instanceof Array==0?structuredClone(Object.assign({},this)):this.valueOf();return void 0!==t&&(this.#e=t),this.#e&&this.#n.forEach((t=>{t(e)})),this}};return P[n]=r,r}(t)}const I=(t,e)=>((e?[e]:[...Object.getOwnPropertyNames(t)]).forEach((e=>{if(t.hasOwnProperty(e)&&"function"!=typeof t[e]&&!t?.[e]?.constructor?.prototype?.observe){if("_"===e[0]||void 0===t?.[e])return t;let n=t[e],r=new(H(n))(n),a=l((function(){r.notify()}),0);Object.defineProperty(t,e,{enumerable:!0,get(){if(x(r.valueOf())){let t=structuredClone(Object.assign({},r));setTimeout((function(){s(structuredClone(Object.assign({},r)),t)||a()}),0)}return r},set(t){if(typeof t==typeof r.valueOf())if(x(r.valueOf())&&r.valueOf()instanceof Array==0)void 0===r?.constructor?.prototype?.observe&&(r=new(H(t))(structuredClone(Object.assign({},t))),d(t,r)),Object.assign(r,t),r.notify();else{let e=r.valueOf(),n=r.callbacks;t!==e&&(r=new(H(t))(t),r.callbacks=n,a())}else console.warn("IGNORED - cannot change observable types, IS:",typeof r.valueOf(),r,"- CANNOT BECOME:",typeof t)}}),t[e]=n}})),t);class V{constructor(t){}}class R extends V{#r;constructor(t){super(t),this.#r=t}get val(){return new FormData(this.#r.form).get(this.#r.name)}set val(t){[...this.#r.form.querySelectorAll(`input[type="radio"][name="${this.#r.name}"]`)].filter((e=>e.getAttribute("value")===t)).shift().checked=!0}}class $ extends V{#r;constructor(t){super(t),this.#r=t}get val(){return this.#r.checked}set val(t){this.#r.checked=t}}class Z extends V{#r;constructor(t){super(t),this.#r=t}get val(){return this.#r.value}set val(t){this.#r.value=t}}class z extends V{#r;#a=!1;constructor(t){super(t),this.#r=t,this.#a=t.multiple}get val(){const t=[];return[...this.#r.querySelectorAll("option")].filter((t=>t.selected)).forEach((e=>{t.push(e.value)})),this.#a?t:t.length?t[0]:""}set val(t){t="string"==typeof t?[t]:t,[...this.#r.querySelectorAll("option")].forEach((e=>{t.indexOf(e.value)>-1?e.selected=!0:e.selected=!1}))}}class B extends V{#r;constructor(t){super(t),this.#r=t}get val(){return this.#r.value||""}set val(t){this.#r.value=t}}const F=t=>{let e=[...(t||document).querySelectorAll("input,select,textarea")],n={};return e.forEach((t=>{const e=t.getAttribute("name");if(e){let r=!1;switch((t=>t.tagName.toLowerCase())(t)){case"input":switch(t.type){case"radio":r=new R(t);break;case"checkbox":r=new $(t);break;default:r=new Z(t)}break;case"select":r=new z(t);break;case"textarea":r=new B(t);break;default:console.warn("handler missing:",e,"for",t.tagName.toLowerCase(),t)}r&&(w.add(t,e,r),Object.defineProperty(n,e,{enumerable:!0,configurable:!0,get:()=>r.val,set:t=>{r.val!==t&&(r.val=t)}}))}})),n};function G(t,e,n){let r=F(n);t[e]=Object.assign({},r),I(t,e),d(r,t[e]),[...n.querySelectorAll("input, textarea, select")].forEach((n=>{n.addEventListener("input",(n=>{t[e].notify()}))}))}var J=e.DC,U=e.MC,Y=e.Oc,K=e.E_,W=e.IT,Q=e.sg,X=e.bD,tt=e.c2,et=e.YO,nt=e.Rc,rt=e.tn,at=e.qS,st=e.nz,ct=e.TK,ot=e.k5,it=e.lB,lt=e.AU,ut=e.on,dt=e.xH,ft=e.qg,ht=e.mf,mt=e.hZ;export{J as DC,U as MC,Y as McBase,K as autoload,W as copyGettersSetters,Q as debounce,X as deepEqual,tt as defineCE,et as flattenObject,nt as formValues,rt as getCE,at as htmlToElements,st as isNativeObject,ct as kebabToPascal,ot as nameSpace,it as observe,lt as off,ut as on,dt as one,ft as parse,ht as sortObject,mt as trigger};
@@ -0,0 +1,11 @@
1
+ import { LooseObject } from './helpers.js';
2
+ type Callback = (value: any) => void;
3
+ export type Observable = {
4
+ observe: (cb: Callback) => void;
5
+ notify: () => void;
6
+ bind: (target: HTMLElement | DocumentFragment | ShadowRoot) => void;
7
+ callbacks: Array<Function>;
8
+ };
9
+ export declare const observe: (target: LooseObject, propertyName?: string) => LooseObject;
10
+ export {};
11
+ //# sourceMappingURL=observables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observables.d.ts","sourceRoot":"","sources":["observables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA0D,MAAM,cAAc,CAAC;AAQnG,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;AAiJrC,MAAM,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,GAAG,UAAU,KAAK,IAAI,CAAC;IACpE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;CAC3B,CAAC;AAsGF,eAAO,MAAM,OAAO,WAAY,WAAW,iBAAiB,MAAM,KAAG,WA2EpE,CAAC"}