nine-9 1.12.0 → 1.14.0

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.
package/dist/index.d.ts CHANGED
@@ -47,7 +47,42 @@ declare function wrap<T>(initialState: T, wrapperOptions?: Partial<Wrapper<T>>):
47
47
 
48
48
  declare function sync<R>(effectRenderer: () => R, dependencies?: unknown[]): Wrapper<R>;
49
49
 
50
- declare function when(condition: boolean | Wrapper<boolean> | (() => boolean), tree: () => SourceTree, dependencies?: unknown[]): Wrapper<SourceTree[]>;
50
+ declare function when(condition: boolean | Wrapper<boolean> | (() => boolean), tree: () => SourceTree, dependencies?: unknown[], elseTree?: () => SourceTree): Wrapper<SourceTree[]>;
51
+
52
+ interface RevokeOldDataMethod<T> {
53
+ (oldState: T): void;
54
+ }
55
+ interface ValidateMethod<T> {
56
+ (data: unknown): data is T;
57
+ }
58
+ interface StructWatcher<T> {
59
+ validate: ValidateMethod<T>;
60
+ duplicate(data: T): T;
61
+ patch(data: T, snapshot: (currentState: T) => T, update: (newState: T) => void, wrapper: Wrapper<T>): {
62
+ data: T;
63
+ revoke: RevokeOldDataMethod<T>;
64
+ };
65
+ }
66
+ declare function defineWatcher<T>(watcher: StructWatcher<T>): StructWatcher<T>;
67
+
68
+ declare const arrayModifiableActions: string[];
69
+ declare const _default$2: StructWatcher<any[]>;
70
+
71
+ declare const array_arrayModifiableActions: typeof arrayModifiableActions;
72
+ declare namespace array {
73
+ export { array_arrayModifiableActions as arrayModifiableActions, _default$2 as default };
74
+ }
75
+
76
+ declare const _default$1: StructWatcher<Record<PropertyKey, unknown>>;
77
+
78
+ declare namespace object {
79
+ export { _default$1 as default };
80
+ }
81
+
82
+ declare const _default: {
83
+ array: typeof array;
84
+ object: typeof object;
85
+ };
51
86
 
52
87
  interface HostTreeHooks {
53
88
  treeUpdated: [newTrees: HostTree[], oldTrees: HostTree[]];
@@ -99,7 +134,7 @@ declare function createArray<T>(length: number, filler: () => T): T[];
99
134
  declare function camelToHyphen<T extends string>(str: T): T;
100
135
  declare function hyphenToCamel<T extends string>(str: T): T;
101
136
 
102
- declare function duplicateObject<T>(target: T, hash?: WeakMap<WeakKey, any>): T;
137
+ declare function duplicateObject<T>(target: T, duplicator?: (data: unknown) => boolean, hash?: WeakMap<WeakKey, any>): T;
103
138
 
104
139
  interface PropertyTransformer<I, O> {
105
140
  (data: I): O;
@@ -233,4 +268,4 @@ declare namespace index {
233
268
  export { _9 as logo, Nine_9 as logoTitle };
234
269
  }
235
270
 
236
- export { $, AccessError, BrokenRendererError, COMPONENT_INSTANCE, type Component, type ComponentEventStore, type ComponentInstance, type ComponentInternalRender, type ComponentOption, type ComponentPropertyStore, type ComponentRenderEntry, type ComponentSlotStore, ConflictionError, type EmptyValue, type EventDescriptor, type EventOptions, EventSubcriber, HOST_TREE, type HostTree, type HostTreeAddEventListener, type HostTreeHookStore, type HostTreeHooks, type HostTreeOnMethod, type KebabToCamel, MissingError, type Normalize, type ObjectToEntryUnion, type PropertyDescriptor, type PropertyInputDict, type PropertyOutputDict, type PropertyTransformer, type PutIntoIterable, type RawSourceTree, type SlotDescriptor, type SlotInput, type SlotInputDict, type SlotOptions, type SlotOutput, type SlotOutputDict, type SourceTree, type StyleSet, type SupportedEventHandlerMap, type SupportedHTMLElements, type SupportedHTMLRawAttributes, ValidationFailed, type Valueof, WRAPPER, type Wrapper, index as assets, attachFlag, attachUUID, camelToHyphen, createArray, createComponent, defineEvent, defineSlot, defineTemplate, duplicateObject, flagment, hostdown, hyphenToCamel, matchFlag, normalizePropertyDescriptor, normalizeRenderer, normalizeWrap, putIntoArray, render, renderSlots, styleSet, sync, tree, typed, typedIsArray, validateStore, when, wrap };
271
+ export { $, AccessError, BrokenRendererError, COMPONENT_INSTANCE, type Component, type ComponentEventStore, type ComponentInstance, type ComponentInternalRender, type ComponentOption, type ComponentPropertyStore, type ComponentRenderEntry, type ComponentSlotStore, ConflictionError, type EmptyValue, type EventDescriptor, type EventOptions, EventSubcriber, HOST_TREE, type HostTree, type HostTreeAddEventListener, type HostTreeHookStore, type HostTreeHooks, type HostTreeOnMethod, type KebabToCamel, MissingError, type Normalize, type ObjectToEntryUnion, type PropertyDescriptor, type PropertyInputDict, type PropertyOutputDict, type PropertyTransformer, type PutIntoIterable, type RawSourceTree, type RevokeOldDataMethod, type SlotDescriptor, type SlotInput, type SlotInputDict, type SlotOptions, type SlotOutput, type SlotOutputDict, type SourceTree, type StructWatcher, type StyleSet, type SupportedEventHandlerMap, type SupportedHTMLElements, type SupportedHTMLRawAttributes, type ValidateMethod, ValidationFailed, type Valueof, WRAPPER, type Wrapper, index as assets, attachFlag, attachUUID, camelToHyphen, createArray, createComponent, defineEvent, defineSlot, defineTemplate, defineWatcher, duplicateObject, flagment, hostdown, hyphenToCamel, matchFlag, normalizePropertyDescriptor, normalizeRenderer, normalizeWrap, putIntoArray, render, renderSlots, _default as structWatchers, styleSet, sync, tree, typed, typedIsArray, validateStore, when, wrap };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var N=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var A=(e,t)=>{for(var o in t)N(e,o,{get:t[o],enumerable:!0})},te=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Y(t))!ee.call(e,a)&&a!==o&&N(e,a,{get:()=>t[a],enumerable:!(r=X(t,a))||r.enumerable});return e};var re=e=>te(N({},"__esModule",{value:!0}),e);var Ee={};A(Ee,{$:()=>me,AccessError:()=>v,BrokenRendererError:()=>M,COMPONENT_INSTANCE:()=>W,ConflictionError:()=>C,EventSubcriber:()=>x,HOST_TREE:()=>R,MissingError:()=>w,ValidationFailed:()=>h,WRAPPER:()=>f,assets:()=>_,attachFlag:()=>E,attachUUID:()=>I,camelToHyphen:()=>b,createArray:()=>ne,createComponent:()=>Te,defineEvent:()=>fe,defineSlot:()=>de,defineTemplate:()=>se,duplicateObject:()=>L,flagment:()=>V,hostdown:()=>U,hyphenToCamel:()=>pe,matchFlag:()=>u,normalizePropertyDescriptor:()=>K,normalizeRenderer:()=>J,normalizeWrap:()=>D,putIntoArray:()=>F,render:()=>k,renderSlots:()=>Z,styleSet:()=>ae,sync:()=>j,tree:()=>O,typed:()=>ce,typedIsArray:()=>oe,validateStore:()=>$,when:()=>ue,wrap:()=>g});module.exports=re(Ee);var x=class{parent;bubbleable;subcribers=[];emitting=!1;constructor(t,o){this.parent=o,this.bubbleable=t?.bubbleable??!1}subcribe(t,o=!1){this.subcribers.push({callback:t,once:o})}emit(...t){if(this.emitting)return;this.emitting=!0;let o=[];for(let r of this.subcribers)o.push(r.callback(...t));return this.bubbleable&&this.parent&&this.parent.emit(...t),this.emitting=!1,o}};var R=Symbol("HostTreeFlag"),W=Symbol("ComponentInstanceFlag"),f=Symbol("WrapperFlag");function E(e,t){return Object.assign(e,{[t]:!0})}function u(e,t){return e!=null&&typeof e=="object"&&Object.hasOwn(e,t)&&e[t]===!0}function oe(e){return Array.isArray(e)}function F(e){return[...Array.isArray(e)?e:[e]]}function ne(e,t){return new Array(Math.max(e,0)).fill(0).map(t)}function b(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function pe(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}function L(e,t=new WeakMap){if(e===null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(e instanceof Map){let r=new Map;return t.set(e,r),e.forEach((a,n)=>{r.set(L(n,t),L(a,t))}),r}if(e instanceof Set){let r=new Set;return t.set(e,r),e.forEach(a=>{r.add(L(a,t))}),r}let o=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return t.set(e,o),Reflect.ownKeys(e).forEach(r=>{o[r]=L(e[r],t)}),typeof e=="function"?e:o}function se(){return null}function ae(e){let t={},o=new Proxy({rules:t,selector:e,apply(r){let a=document.createElement("style");document.head.appendChild(a),a.textContent=`${this.selectorString(r)}{${this.ruleString()}}`},ruleString(){return Object.entries(t).map(([r,a])=>`${b(String(r))}:${a};`).join("")},selectorString(r){return(this.selector||"")+(r||"")||"*"}},{get(r,a,n){return Reflect.has(r,a)?Reflect.get(r,a,n):s=>(t[a]=String(s),o)}});return o}function H(e,t,o,r,a){return(n,s,p)=>(e instanceof EventTarget&&e.addEventListener(n,i=>{if(i instanceof CustomEvent)return;o&&i.preventDefault(),r&&i.stopPropagation();let l=a.preventEvent.emit(n,s);l&&!l.some(Boolean)&&s(i)},p),t)}function O(e){let t=typeof e=="string"?document.createElement(e):e,o={treeUpdated:new x({bubbleable:!0}),attributeUpdated:new x,initialized:new x,preventEvent:new x},r=new Proxy(E({element:t,hooks:o,append(...a){for(let n of a)if(u(n,f)){let s=[],p=new Comment("Tree anchor");t.appendChild(p);let i=l=>{let c=[...Array.isArray(l)?l:[l]].reverse(),m=[];for(let S of c){let d=k(S);d.hooks.treeUpdated.parent=o.treeUpdated,m.push(d),t.insertBefore(d.element,p.nextSibling)}for(let S of s)S.element.remove();o.treeUpdated.emit(m,s),s=m};n.event.subcribe(i),i(n.get())}else{let s=n,p=[];for(let i of F(s)){let l=u(i,R)?i:k(i);l.hooks.treeUpdated.parent=o.treeUpdated,t.appendChild(l.element),p.push(l)}o.treeUpdated.emit(p,[])}return r},use(a){if(t instanceof HTMLElement){let n=s=>{for(let[p,i]of Object.entries(s))t.style.setProperty(b(String(p)),i)};u(a,f)?(a.event.subcribe(s=>n(s.rules)),n(a.get().rules)):n(a.rules)}return r},data(a){if(t instanceof HTMLElement){for(let[n,s]of Object.entries(a)){let p=i=>t.dataset[n]=i;u(s,f)?(s.event.subcribe(p),p(s.get())):p(s)}return r}}},R),{get(a,n,s){return Reflect.has(a,n)?Reflect.get(a,n,s):p=>{let i=(l,c)=>{Object.hasOwn(t,n)&&(t[n]=l),t instanceof Element&&t.setAttribute(b(n),String(l)),o.attributeUpdated.emit(n,l,c)};return u(p,f)?(p.event.subcribe(i),i(p.get(),p.get())):i(p,p),r}}});return r.on=Object.assign(H(t,r,!1,!1,o),{stop:Object.assign(H(t,r,!1,!0,o),{prevent:H(t,r,!0,!0,o)}),prevent:Object.assign(H(t,r,!0,!1,o),{stop:H(t,r,!0,!0,o)})}),Promise.resolve().then(()=>o.initialized.emit(r)),r}var h=class extends Error{},w=class extends Error{},C=class extends Error{},v=class extends Error{},M=class extends Error{};var le=[Array.prototype.push,Array.prototype.pop,Array.prototype.shift,Array.prototype.unshift,Array.prototype.splice,Array.prototype.sort,Array.prototype.reverse,Array.prototype.fill,Array.prototype.copyWithin].map(e=>e.name),B={validate:Array.isArray,duplicate:e=>[...e],patch(e,t,o){let{proxy:r,revoke:a}=Proxy.revocable(e,{get(n,s,p){if(le.includes(s)){let i=Reflect.get(n,s,p);return typeof i=="function"?(...l)=>{t(n);let c=i.call(n,...l);return o(n),c}:Reflect.get(n,s,p)}else return Reflect.get(n,s,p)},set(n,s,p,i){if(Reflect.get(n,s,i)!==p){t(n);let c=Reflect.set(n,s,p,i);return o(n),c}return Reflect.set(n,s,p,i)}});return{data:r,revoke:a}}};var Q={validate(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)},duplicate:L,patch(e,t,o){let{proxy:r,revoke:a}=Proxy.revocable(e,{set(n,s,p,i){if(Reflect.get(n,s,i)!==p){t(n);let c=Reflect.set(n,s,p,i);return o(n),c}return Reflect.set(n,s,p,i)},deleteProperty(n,s){if(Reflect.has(n,s)){t(n);let p=Reflect.deleteProperty(n,s);return o(n),p}return Reflect.deleteProperty(n,s)},defineProperty(n,s,p){let i=Reflect.getOwnPropertyDescriptor(n,s);if(!i||"value"in p&&i.value!==p.value||"get"in p&&i.get!==p.get||"set"in p&&i.set!==p.set||"enumerable"in p&&i.enumerable!==p.enumerable||"configurable"in p&&i.configurable!==p.configurable||"writable"in p&&i.writable!==p.writable){t(n);let c=Reflect.defineProperty(n,s,p);return o(n),c}return Reflect.defineProperty(n,s,p)}});return{data:r,revoke:a}}};var G=[B,Q];function D(e){return u(e,f)?e:g(e)}function g(e,t){let o=new x,r=i=>{let l=null,c=null;for(let m of G)if(m.validate(e)){l=m;break}if(l){let m=null,{data:S,revoke:d}=l.patch(i,T=>(l&&(m=l.duplicate(T)),m),T=>{if(!m)throw new v("StructWatcher updated a new data before snapshotting.");a.event.emit(T,m)},a);return c=d,{data:S,tryRevokeOld:(T,y)=>{if(l.validate(y)&&c)return y=l.duplicate(y),c(y),[r(T).data,y,!0];{let{data:P}=r(T);return[P,y,!0]}}}}else return{data:i,tryRevokeOld:(m,S)=>[m,S,!1]}},a=E({get(){return s},set(i){if(s!==i){let[l,c]=p(i,s);s=l,this.event.emit(l,c)}},updateOnly(){this.event.emit(this.get(),this.get())},event:o},f),n=r(e),s=n.data,p=n.tryRevokeOld;return{...a,...t??{}}}function j(e,t=[]){let o=g(e()),r=()=>{let a=e();o.get()!==a&&o.set(a)};for(let a of t)u(a,f)&&a.event.subcribe(r);return o}function ue(e,t,o=[]){return j(()=>{let r;return typeof e=="function"?r=e():typeof e=="boolean"?r=e:r=e.get(),[r?t():null]},[...o,...u(e,f)?[e]:[]])}function ce(){return e=>e}function K(e){return Object.assign({validate:()=>!0,transform:t=>t,shadow:null,required:!1,downloadable:!0,uploadable:!1},e)}function $(e){for(let t in e){let o=e[t];if(o.shadow){if(o.required)throw new C(`The required property ${t} can't have a shadow.`);if(o.validate&&!o.validate(o.shadow))throw new h(`The shadow of ${t} can't pass the validation.`)}}}function U(e,t){e||(e={});let o={};for(let r in t){let a=K(t[r]),n=p=>{if(u(o[r],f))o[r].set(p);else{let i=g(p);o[r]=i,i.event.subcribe(l=>{if(!(!u(e[r],f)||!u(o[r],f))&&o[r].get()!==e[r].get()){if(!a.uploadable)throw new v(`Property ${r} isn't uploadable but being set.`);e[r].set(l)}})}},s=(p,i)=>{if(!i&&!a.downloadable){console.warn(`Property ${r} isn't downloadable but being emitted.`);return}if(!a.validate(p))throw new h(`The input value of ${r} can't pass the validation.`);n(a.transform(p))};if(!Object.hasOwn(e,r)){if(a.required)throw new w(`Missing a required property ${r}.`);n(a.shadow);continue}u(e[r],f)?(e[r].event.subcribe(p=>s(p,!1)),s(e[r].get(),!0)):s(e[r],!0)}return o}function J(e){return t=>D(e(D(t)))}function Z(e,t){if(!t)return{};let o=e;return Object.fromEntries(t.map(r=>{if(r.required&&(!o||!Object.hasOwn(o,r.name)))throw new w(`Missing a required slot ${r.name}.`);return!o||!o[r.name]?[r.name,()=>null]:[r.name,J(o[r.name])]}))}function de(e,t){return{name:e,...t}}function fe(e,t){return{name:e,...t??{}}}function k(e){let t;if(e instanceof Node)t=O(e);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")t=O(new Text(String(e)));else if(u(e,W))t=e.$;else if(e==null)t=O(new Comment("Empty tree context"));else if(u(e,R))t=e;else throw new M(`Failed to render ${e} into a Node.`);return t}function me(e){return e}function V(e){return`nine_${e.replaceAll("-","_")}`}function I(e,t){for(let o of[e,...e.childNodes])o instanceof HTMLElement&&(o.dataset[V(t)]="true"),o!==e&&o.childNodes.length>0&&I(o,t);return e}function Te(e,t){$(e.props??{});let o=Object.fromEntries(Object.entries(e.props??{}).map(([s,p])=>[s,K(p)])),r=b(e.uuid||crypto.randomUUID()),a=V(r);if(e.styles)for(let s of e.styles)s.apply(`[data-${a}="true"]`);return Object.assign((s,p)=>{let i=!1,l=[],c=()=>{if(i)for(;l.length>0;){let d=l.shift();if(!d)return;let[T,y,P]=d;S.element.dispatchEvent(new CustomEvent(T,{detail:y,bubbles:P.bubbleable,cancelable:!1}))}},m=t(U(s,o),Z(p,e.slots),(d,T)=>{let y=e.events?.find(P=>P.name===d);if(!y)throw new TypeError(`No events named ${d} to emit.`);l.push([d,T,y]),c()}),S=k(m);return I(S.element,r),S.hooks.treeUpdated.subcribe(d=>{for(let T of d)I(T.element,r)}),i=!0,c(),E({mount(d){let T=typeof d=="string"?[...document.querySelectorAll(d)]:[d];for(let y of T)y.appendChild(S.element)},on(d,T){return S.on(d,y=>y instanceof CustomEvent?T(y.detail):null),this},$:S},W)},{props:o,events:e.events})}var _={};A(_,{logo:()=>q,logoTitle:()=>z});var q={};A(q,{default:()=>Se});var Se='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="20" height="17" viewBox="0 0 20 17"><g><path d="M4.4589844,10.628906L0.38085938,8.0917969L0.38085938,7.125L4.4589844,4.4941406L4.4589844,5.8769531L1.4179688,7.5585938L4.4589844,9.2929688L4.4589844,10.628906ZM9.7089844,12L9.7089844,10.447266L10.681641,10.447266L10.681641,5.7773438L9.7089844,5.7773438L9.7089844,4.2246094L11.71875,4.2246094L13.271484,5.7773438L13.271484,10.447266L11.71875,12L9.7089844,12ZM7.3125,9.09375L5.7539062,7.5351562L5.7539062,5.7773438L7.3125,4.2246094L9.3105469,4.2246094L9.3105469,5.7773438L8.34375,5.7773438L8.34375,7.5351562L10.283203,7.5351562L10.283203,9.09375L7.3125,9.09375ZM7.3125,12L5.7539062,10.447266L5.7539062,9.9257812L8.34375,9.9257812L8.34375,10.447266L9.3105469,10.447266L9.3105469,12L7.3125,12ZM18.703125,8.0917969L14.613281,10.628906L14.613281,9.2988281L17.660156,7.5644531L14.613281,5.8769531L14.613281,4.4941406L18.703125,7.125L18.703125,8.0917969Z" fill="%23FF7700" fill-opacity="1"/></g></svg>';var z={};A(z,{default:()=>be});var be='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="51" height="17" viewBox="0 0 51 17"><g><path d="M4.4589844,10.628906L0.38085938,8.0917969L0.38085938,7.125L4.4589844,4.4941406L4.4589844,5.8769531L1.4179688,7.5585938L4.4589844,9.2929688L4.4589844,10.628906Z" fill="%23FF9232" fill-opacity="1"/><path d="M10.517578,12L5.8066406,4.2246094L8.5429688,4.2246094L13.271484,12L10.517578,12ZM13.271484,11.261719L11.015625,7.546875L11.015625,4.2246094L13.271484,4.2246094L13.271484,11.261719ZM5.8066406,12L5.8066406,4.9628906L8.0625,8.6601562L8.0625,12L5.8066406,12ZM14.513672,5.0039062L14.513672,3.3515625L17.109375,3.3515625L17.109375,5.0039062L14.513672,5.0039062ZM14.513672,12L14.513672,5.7773438L17.109375,5.7773438L17.109375,12L14.513672,12ZM22.482422,12L22.482422,7.3300781L21.369141,7.3300781L21.369141,6.6503906L22.236328,5.7773438L23.677734,5.7773438L25.078125,7.1777344L25.078125,12L22.482422,12ZM18.333984,12L18.333984,5.7773438L20.947266,5.7773438L20.947266,12L18.333984,12ZM27.779297,12L26.226562,10.447266L26.226562,7.3300781L27.779297,5.7773438L28.816406,5.7773438L28.816406,12L27.779297,12ZM29.226562,9.5039062L29.226562,8.4199219L30.591797,8.4199219L30.591797,7.3300781L29.226562,7.3300781L29.226562,5.7773438L31.423828,5.7773438L32.976562,7.3300781L32.976562,9.5039062L29.226562,9.5039062ZM29.226562,12L29.226562,10.546875L32.707031,10.546875L32.707031,11.220703L31.933594,12L29.226562,12ZM41.162109,12L41.162109,10.447266L42.134766,10.447266L42.134766,5.7773438L41.162109,5.7773438L41.162109,4.2246094L43.171875,4.2246094L44.724609,5.7773438L44.724609,10.447266L43.171875,12L41.162109,12ZM38.765625,9.09375L37.207031,7.5351562L37.207031,5.7773438L38.765625,4.2246094L40.763672,4.2246094L40.763672,5.7773438L39.796875,5.7773438L39.796875,7.5351562L41.736328,7.5351562L41.736328,9.09375L38.765625,9.09375ZM38.765625,12L37.207031,10.447266L37.207031,9.9257812L39.796875,9.9257812L39.796875,10.447266L40.763672,10.447266L40.763672,12L38.765625,12Z" fill="%23FF7700" fill-opacity="1"/><path d="M50.15625,8.0917969L46.066406,10.628906L46.066406,9.2988281L49.113281,7.5644531L46.066406,5.8769531L46.066406,4.4941406L50.15625,7.125L50.15625,8.0917969Z" fill="%23FF9232" fill-opacity="1"/></g></svg>';window.__ENV_9__?.mode==="development"&&console.warn("[Nine-9] Initialized in development mode.");0&&(module.exports={$,AccessError,BrokenRendererError,COMPONENT_INSTANCE,ConflictionError,EventSubcriber,HOST_TREE,MissingError,ValidationFailed,WRAPPER,assets,attachFlag,attachUUID,camelToHyphen,createArray,createComponent,defineEvent,defineSlot,defineTemplate,duplicateObject,flagment,hostdown,hyphenToCamel,matchFlag,normalizePropertyDescriptor,normalizeRenderer,normalizeWrap,putIntoArray,render,renderSlots,styleSet,sync,tree,typed,typedIsArray,validateStore,when,wrap});
1
+ "use strict";var F=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var R=(e,t)=>{for(var r in t)F(e,r,{get:t[r],enumerable:!0})},oe=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of re(t))!ne.call(e,o)&&o!==r&&F(e,o,{get:()=>t[o],enumerable:!(n=te(t,o))||n.enumerable});return e};var se=e=>oe(F({},"__esModule",{value:!0}),e);var we={};R(we,{$:()=>ye,AccessError:()=>C,BrokenRendererError:()=>W,COMPONENT_INSTANCE:()=>D,ConflictionError:()=>O,EventSubcriber:()=>b,HOST_TREE:()=>h,MissingError:()=>w,ValidationFailed:()=>g,WRAPPER:()=>m,assets:()=>J,attachFlag:()=>L,attachUUID:()=>N,camelToHyphen:()=>E,createArray:()=>ae,createComponent:()=>xe,defineEvent:()=>Se,defineSlot:()=>Te,defineTemplate:()=>le,defineWatcher:()=>$,duplicateObject:()=>v,flagment:()=>B,hostdown:()=>z,hyphenToCamel:()=>ie,matchFlag:()=>f,normalizePropertyDescriptor:()=>I,normalizeRenderer:()=>Y,normalizeWrap:()=>A,putIntoArray:()=>j,render:()=>k,renderSlots:()=>_,structWatchers:()=>K,styleSet:()=>ue,sync:()=>Z,tree:()=>M,typed:()=>me,typedIsArray:()=>pe,validateStore:()=>q,when:()=>de,wrap:()=>P});module.exports=se(we);var b=class{parent;bubbleable;subcribers=[];emitting=!1;constructor(t,r){this.parent=r,this.bubbleable=t?.bubbleable??!1}subcribe(t,r=!1){this.subcribers.push({callback:t,once:r})}emit(...t){if(this.emitting)return;this.emitting=!0;let r=[];for(let n of this.subcribers)r.push(n.callback(...t));return this.bubbleable&&this.parent&&this.parent.emit(...t),this.emitting=!1,r}};var h=Symbol("HostTreeFlag"),D=Symbol("ComponentInstanceFlag"),m=Symbol("WrapperFlag");function L(e,t){return Object.assign(e,{[t]:!0})}function f(e,t){return e!=null&&typeof e=="object"&&Object.hasOwn(e,t)&&e[t]===!0}function pe(e){return Array.isArray(e)}function j(e){return[...Array.isArray(e)?e:[e]]}function ae(e,t){return new Array(Math.max(e,0)).fill(0).map(t)}function E(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function ie(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}function v(e,t,r=new WeakMap){if(t&&typeof t=="function"&&!t(e)||e===null||typeof e!="object")return e;if(r.has(e))return r.get(e);if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(e instanceof Map){let o=new Map;return r.set(e,o),e.forEach((p,a)=>{o.set(v(a,t,r),v(p,t,r))}),o}if(e instanceof Set){let o=new Set;return r.set(e,o),e.forEach(p=>{o.add(v(p,t,r))}),o}let n=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return r.set(e,n),Reflect.ownKeys(e).forEach(o=>{n[o]=v(e[o],t,r)}),typeof e=="function"?e:n}function le(){return null}function ue(e){let t={},r=new Proxy({rules:t,selector:e,apply(n){let o=document.createElement("style");document.head.appendChild(o),o.textContent=`${this.selectorString(n)}{${this.ruleString()}}`},ruleString(){return Object.entries(t).map(([n,o])=>`${E(String(n))}:${o};`).join("")},selectorString(n){return(this.selector||"")+(n||"")||"*"}},{get(n,o,p){return Reflect.has(n,o)?Reflect.get(n,o,p):a=>(t[o]=String(a),r)}});return r}function H(e,t,r,n,o){return(p,a,s)=>(e instanceof EventTarget&&e.addEventListener(p,i=>{if(i instanceof CustomEvent)return;r&&i.preventDefault(),n&&i.stopPropagation();let l=o.preventEvent.emit(p,a);l&&!l.some(Boolean)&&a(i)},s),t)}function M(e){let t=typeof e=="string"?document.createElement(e):e,r={treeUpdated:new b({bubbleable:!0}),attributeUpdated:new b,initialized:new b,preventEvent:new b},n=new Proxy(L({element:t,hooks:r,append(...o){for(let p of o)if(f(p,m)){let a=[],s=new Comment("Tree anchor");t.appendChild(s);let i=l=>{let u=[...Array.isArray(l)?l:[l]].reverse(),S=[];for(let d of u){let c=k(d);c.hooks.treeUpdated.parent=r.treeUpdated,S.push(c),t.insertBefore(c.element,s.nextSibling)}for(let d of a)d.element.remove();r.treeUpdated.emit(S,a),a=S};p.event.subcribe(i),i(p.get())}else{let a=p,s=[];for(let i of j(a)){let l=f(i,h)?i:k(i);l.hooks.treeUpdated.parent=r.treeUpdated,t.appendChild(l.element),s.push(l)}r.treeUpdated.emit(s,[])}return n},use(o){if(t instanceof HTMLElement){let p=a=>{for(let[s,i]of Object.entries(a))t.style.setProperty(E(String(s)),i)};f(o,m)?(o.event.subcribe(a=>p(a.rules)),p(o.get().rules)):p(o.rules)}return n},data(o){if(t instanceof HTMLElement){for(let[p,a]of Object.entries(o)){let s=i=>t.dataset[p]=i;f(a,m)?(a.event.subcribe(s),s(a.get())):s(a)}return n}}},h),{get(o,p,a){return Reflect.has(o,p)?Reflect.get(o,p,a):s=>{let i=(l,u)=>{t[p]=l,t instanceof Element&&t.setAttribute(E(p),String(l)),r.attributeUpdated.emit(p,l,u)};return f(s,m)?(s.event.subcribe(i),i(s.get(),s.get())):i(s,s),n}}});return n.on=Object.assign(H(t,n,!1,!1,r),{stop:Object.assign(H(t,n,!1,!0,r),{prevent:H(t,n,!0,!0,r)}),prevent:Object.assign(H(t,n,!0,!1,r),{stop:H(t,n,!0,!0,r)})}),Promise.resolve().then(()=>r.initialized.emit(n)),n}var g=class extends Error{},w=class extends Error{},O=class extends Error{},C=class extends Error{},W=class extends Error{};var U={};R(U,{arrayModifiableActions:()=>X,default:()=>ce});function $(e){return e}var X=["push","pop","shift","unshift","splice","sort","reverse","fill"],ce={validate:Array.isArray,duplicate:e=>[...e],patch(e,t,r){let{proxy:n,revoke:o}=Proxy.revocable(e,{get(p,a,s){if(X.includes(a)){let i=Reflect.get(p,a,s);return typeof i=="function"?(...l)=>{t(p);let u=i.call(p,...l);return r(p),u}:Reflect.get(p,a,s)}else return Reflect.get(p,a,s)},set(p,a,s,i){if(Reflect.get(p,a,i)!==s){t(p);let u=Reflect.set(p,a,s,i);return r(p),u}return Reflect.set(p,a,s,i)}});return{data:n,revoke:o}}};var V={};R(V,{default:()=>fe});var fe={validate(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)},duplicate:e=>v(e,t=>!f(t,m)),patch(e,t,r){let{proxy:n,revoke:o}=Proxy.revocable(e,{set(p,a,s,i){if(Reflect.get(p,a,i)!==s){t(p);let u=Reflect.set(p,a,s,i);return r(p),u}return Reflect.set(p,a,s,i)},deleteProperty(p,a){if(Reflect.has(p,a)){t(p);let s=Reflect.deleteProperty(p,a);return r(p),s}return Reflect.deleteProperty(p,a)},defineProperty(p,a,s){let i=Reflect.getOwnPropertyDescriptor(p,a);if(!i||"value"in s&&i.value!==s.value||"get"in s&&i.get!==s.get||"set"in s&&i.set!==s.set||"enumerable"in s&&i.enumerable!==s.enumerable||"configurable"in s&&i.configurable!==s.configurable||"writable"in s&&i.writable!==s.writable){t(p);let u=Reflect.defineProperty(p,a,s);return r(p),u}return Reflect.defineProperty(p,a,s)}});return{data:n,revoke:o}}};var K={array:U,object:V};function A(e){return f(e,m)?e:P(e)}function P(e,t){let r=new b,n=(l,u)=>{try{return l(u)}catch(S){console.warn("Failed to validate data:",S)}},o=l=>{let u=null,S=null;for(let d of Object.values(K).map(c=>c.default))if(n(d.validate,e)){u=d;break}if(u){let d=null,{data:c,revoke:y}=u.patch(l,T=>(u&&(d=u.duplicate(T)),d),T=>{if(!d)throw new C("StructWatcher updated a new data before snapshotting.");p.event.emit(T,d)},p);return S=y,{data:c,tryRevokeOld:(T,x)=>{if(n(u.validate,x)&&S)return x=u.duplicate(x),S(x),[o(T).data,x,!0];{let{data:ee}=o(T);return[ee,x,!0]}}}}else return{data:l,tryRevokeOld:(d,c)=>[d,c,!1]}},p=L({get(){return s},set(l){if(s!==l){let[u,S]=i(l,s);s=u,this.event.emit(u,S)}},updateOnly(){this.event.emit(this.get(),this.get())},event:r},m),a=o(e),s=a.data,i=a.tryRevokeOld;return{...p,...t??{}}}function Z(e,t=[]){let r=P(e()),n=()=>{let o=e();r.get()!==o&&r.set(o)};for(let o of t)f(o,m)&&o.event.subcribe(n);return r}function de(e,t,r=[],n=()=>null){return Z(()=>{let o;return typeof e=="function"?o=e():typeof e=="boolean"?o=e:o=e.get(),[o?t():n()]},[...r,...f(e,m)?[e]:[]])}function me(){return e=>e}function I(e){return Object.assign({validate:()=>!0,transform:t=>t,shadow:null,required:!1,downloadable:!0,uploadable:!1},e)}function q(e){for(let t in e){let r=e[t];if(r.shadow){if(r.required)throw new O(`The required property ${t} can't have a shadow.`);if(r.validate&&!r.validate(r.shadow))throw new g(`The shadow of ${t} can't pass the validation.`)}}}function z(e,t){e||(e={});let r={};for(let n in t){let o=I(t[n]),p=s=>{if(f(r[n],m))r[n].set(s);else{let i=P(s);r[n]=i,i.event.subcribe(l=>{!f(e[n],m)||!f(r[n],m)||r[n].get()!==e[n].get()&&o.uploadable&&e[n].set(l)})}},a=(s,i)=>{if(!i&&!o.downloadable){console.warn(`Property ${n} isn't downloadable but being emitted.`);return}if(!o.validate(s))throw new g(`The input value of ${n} can't pass the validation.`);p(o.transform(s))};if(!Object.hasOwn(e,n)){if(o.required)throw new w(`Missing a required property ${n}.`);p(o.shadow);continue}f(e[n],m)?(e[n].event.subcribe(s=>a(s,!1)),a(e[n].get(),!0)):a(e[n],!0)}return r}function Y(e){return t=>A(e(A(t)))}function _(e,t){if(!t)return{};let r=e;return Object.fromEntries(t.map(n=>{if(n.required&&(!r||!Object.hasOwn(r,n.name)))throw new w(`Missing a required slot ${n.name}.`);return!r||!r[n.name]?[n.name,()=>null]:[n.name,Y(r[n.name])]}))}function Te(e,t){return{name:e,...t}}function Se(e,t){return{name:e,...t??{}}}function k(e){let t;if(e instanceof Node)t=M(e);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")t=M(new Text(String(e)));else if(f(e,D))t=e.$;else if(e==null)t=M(new Comment("Empty tree context"));else if(f(e,h))t=e;else throw new W(`Failed to render ${e} into a Node.`);return t}function ye(e){return e}function B(e){return`nine_${e.replaceAll("-","_")}`}function N(e,t){for(let r of[e,...e.childNodes])r instanceof HTMLElement&&(r.dataset[B(t)]="true"),r!==e&&r.childNodes.length>0&&N(r,t);return e}function xe(e,t){q(e.props??{});let r=Object.fromEntries(Object.entries(e.props??{}).map(([a,s])=>[a,I(s)])),n=E(e.uuid||crypto.randomUUID()),o=B(n);if(e.styles)for(let a of e.styles)a.apply(`[data-${o}="true"]`);return Object.assign((a,s)=>{let i=!1,l=[],u=()=>{if(i)for(;l.length>0;){let c=l.shift();if(!c)return;let[y,T,x]=c;d.element.dispatchEvent(new CustomEvent(y,{detail:T,bubbles:x.bubbleable,cancelable:!1}))}},S=t(z(a,r),_(s,e.slots),(c,y)=>{let T=e.events?.find(x=>x.name===c);if(!T)throw new TypeError(`No events named ${c} to emit.`);l.push([c,y,T]),u()}),d=k(S);return N(d.element,n),d.hooks.treeUpdated.subcribe(c=>{for(let y of c)N(y.element,n)}),i=!0,u(),L({mount(c){let y=typeof c=="string"?[...document.querySelectorAll(c)]:[c];for(let T of y)T.appendChild(d.element)},on(c,y){return d.element.addEventListener(c,T=>T instanceof CustomEvent?y(T.detail):null),this},$:d},D)},{props:r,events:e.events})}var J={};R(J,{logo:()=>Q,logoTitle:()=>G});var Q={};R(Q,{default:()=>Ee});var Ee='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="20" height="17" viewBox="0 0 20 17"><g><path d="M4.4589844,10.628906L0.38085938,8.0917969L0.38085938,7.125L4.4589844,4.4941406L4.4589844,5.8769531L1.4179688,7.5585938L4.4589844,9.2929688L4.4589844,10.628906ZM9.7089844,12L9.7089844,10.447266L10.681641,10.447266L10.681641,5.7773438L9.7089844,5.7773438L9.7089844,4.2246094L11.71875,4.2246094L13.271484,5.7773438L13.271484,10.447266L11.71875,12L9.7089844,12ZM7.3125,9.09375L5.7539062,7.5351562L5.7539062,5.7773438L7.3125,4.2246094L9.3105469,4.2246094L9.3105469,5.7773438L8.34375,5.7773438L8.34375,7.5351562L10.283203,7.5351562L10.283203,9.09375L7.3125,9.09375ZM7.3125,12L5.7539062,10.447266L5.7539062,9.9257812L8.34375,9.9257812L8.34375,10.447266L9.3105469,10.447266L9.3105469,12L7.3125,12ZM18.703125,8.0917969L14.613281,10.628906L14.613281,9.2988281L17.660156,7.5644531L14.613281,5.8769531L14.613281,4.4941406L18.703125,7.125L18.703125,8.0917969Z" fill="%23FF7700" fill-opacity="1"/></g></svg>';var G={};R(G,{default:()=>ve});var ve='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="51" height="17" viewBox="0 0 51 17"><g><path d="M4.4589844,10.628906L0.38085938,8.0917969L0.38085938,7.125L4.4589844,4.4941406L4.4589844,5.8769531L1.4179688,7.5585938L4.4589844,9.2929688L4.4589844,10.628906Z" fill="%23FF9232" fill-opacity="1"/><path d="M10.517578,12L5.8066406,4.2246094L8.5429688,4.2246094L13.271484,12L10.517578,12ZM13.271484,11.261719L11.015625,7.546875L11.015625,4.2246094L13.271484,4.2246094L13.271484,11.261719ZM5.8066406,12L5.8066406,4.9628906L8.0625,8.6601562L8.0625,12L5.8066406,12ZM14.513672,5.0039062L14.513672,3.3515625L17.109375,3.3515625L17.109375,5.0039062L14.513672,5.0039062ZM14.513672,12L14.513672,5.7773438L17.109375,5.7773438L17.109375,12L14.513672,12ZM22.482422,12L22.482422,7.3300781L21.369141,7.3300781L21.369141,6.6503906L22.236328,5.7773438L23.677734,5.7773438L25.078125,7.1777344L25.078125,12L22.482422,12ZM18.333984,12L18.333984,5.7773438L20.947266,5.7773438L20.947266,12L18.333984,12ZM27.779297,12L26.226562,10.447266L26.226562,7.3300781L27.779297,5.7773438L28.816406,5.7773438L28.816406,12L27.779297,12ZM29.226562,9.5039062L29.226562,8.4199219L30.591797,8.4199219L30.591797,7.3300781L29.226562,7.3300781L29.226562,5.7773438L31.423828,5.7773438L32.976562,7.3300781L32.976562,9.5039062L29.226562,9.5039062ZM29.226562,12L29.226562,10.546875L32.707031,10.546875L32.707031,11.220703L31.933594,12L29.226562,12ZM41.162109,12L41.162109,10.447266L42.134766,10.447266L42.134766,5.7773438L41.162109,5.7773438L41.162109,4.2246094L43.171875,4.2246094L44.724609,5.7773438L44.724609,10.447266L43.171875,12L41.162109,12ZM38.765625,9.09375L37.207031,7.5351562L37.207031,5.7773438L38.765625,4.2246094L40.763672,4.2246094L40.763672,5.7773438L39.796875,5.7773438L39.796875,7.5351562L41.736328,7.5351562L41.736328,9.09375L38.765625,9.09375ZM38.765625,12L37.207031,10.447266L37.207031,9.9257812L39.796875,9.9257812L39.796875,10.447266L40.763672,10.447266L40.763672,12L38.765625,12Z" fill="%23FF7700" fill-opacity="1"/><path d="M50.15625,8.0917969L46.066406,10.628906L46.066406,9.2988281L49.113281,7.5644531L46.066406,5.8769531L46.066406,4.4941406L50.15625,7.125L50.15625,8.0917969Z" fill="%23FF9232" fill-opacity="1"/></g></svg>';window.__ENV_9__?.mode==="development"&&console.warn("[Nine-9] Initialized in development mode.");0&&(module.exports={$,AccessError,BrokenRendererError,COMPONENT_INSTANCE,ConflictionError,EventSubcriber,HOST_TREE,MissingError,ValidationFailed,WRAPPER,assets,attachFlag,attachUUID,camelToHyphen,createArray,createComponent,defineEvent,defineSlot,defineTemplate,defineWatcher,duplicateObject,flagment,hostdown,hyphenToCamel,matchFlag,normalizePropertyDescriptor,normalizeRenderer,normalizeWrap,putIntoArray,render,renderSlots,structWatchers,styleSet,sync,tree,typed,typedIsArray,validateStore,when,wrap});
package/package.json CHANGED
@@ -1,45 +1,45 @@
1
- {
2
- "name": "nine-9",
3
- "version": "1.12.0",
4
- "description": "一个轻量、高性能、类型安全的 Vanilla DOM 响应式 UI 框架。",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "dist"
9
- ],
10
- "readme": "readme.md",
11
- "repository": {
12
- "type": "git",
13
- "url": "https://github.com/Rundll86/nine.git"
14
- },
15
- "homepage": "https://github.com/Rundll86/nine#readme",
16
- "keywords": [
17
- "ui",
18
- "framework",
19
- "vanilla",
20
- "reactive"
21
- ],
22
- "scripts": {
23
- "dev": "tsup --watch --env.NODE_ENV development",
24
- "build": "tsup --env.NODE_ENV production",
25
- "lint": "run-s lint:*",
26
- "lint:es": "eslint . --fix",
27
- "lint:type": "tsc --noEmit",
28
- "prepublishOnly": "run-s build"
29
- },
30
- "license": "MIT",
31
- "packageManager": "pnpm@10.28.2",
32
- "devDependencies": {
33
- "@eslint/js": "^10.0.1",
34
- "@turbowarp/types": "^0.0.14",
35
- "@vue/runtime-dom": "^3.5.29",
36
- "cross-env": "^10.1.0",
37
- "eslint": "^10.0.2",
38
- "globals": "^17.3.0",
39
- "jiti": "^2.6.1",
40
- "npm-run-all": "^4.1.5",
41
- "tsup": "^8.5.1",
42
- "typescript": "^5.9.3",
43
- "typescript-eslint": "^8.56.1"
44
- }
1
+ {
2
+ "name": "nine-9",
3
+ "version": "1.14.0",
4
+ "description": "一个轻量、高性能、类型安全的 Vanilla DOM 响应式 UI 框架。",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "readme": "readme.md",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/Rundll86/nine.git"
14
+ },
15
+ "homepage": "https://github.com/Rundll86/nine#readme",
16
+ "keywords": [
17
+ "ui",
18
+ "framework",
19
+ "vanilla",
20
+ "reactive"
21
+ ],
22
+ "scripts": {
23
+ "dev": "tsup --watch --env.NODE_ENV development",
24
+ "build": "tsup --env.NODE_ENV production",
25
+ "lint": "run-s lint:*",
26
+ "lint:es": "eslint . --fix",
27
+ "lint:type": "tsc --noEmit",
28
+ "prepublishOnly": "run-s build"
29
+ },
30
+ "license": "MIT",
31
+ "packageManager": "pnpm@10.28.2",
32
+ "devDependencies": {
33
+ "@eslint/js": "^10.0.1",
34
+ "@types/node": "^25.3.3",
35
+ "@vue/runtime-dom": "^3.5.29",
36
+ "cross-env": "^10.1.0",
37
+ "eslint": "^10.0.2",
38
+ "globals": "^17.3.0",
39
+ "jiti": "^2.6.1",
40
+ "npm-run-all": "^4.1.5",
41
+ "tsup": "^8.5.1",
42
+ "typescript": "^5.9.3",
43
+ "typescript-eslint": "^8.56.1"
44
+ }
45
45
  }