nine-9 1.11.2 → 1.12.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  一个轻量、高性能、类型安全的 Vanilla DOM 响应式 UI 框架。
4
4
 
5
5
  融合了 Vue 模板指令和 React Hooks 的优点,取两者之长。
6
- 同时运行及其轻量,甚至打包后可以用于 **UserScript**。
6
+ 同时运行及其轻量,甚至打包后🉑以用于 **UserScript**。
7
7
 
8
8
  ## 特性
9
9
 
@@ -13,7 +13,7 @@
13
13
  - **轻量级** - 无依赖,打包后体积小巧
14
14
  - **链式 API** - 流畅的 DOM 操作
15
15
  - **Vue 风格指令** - 熟悉的 v-if、v-for 模式
16
- - **JSX 风格表达式** - 响应式表达式可以放在模板任意位置
16
+ - **JSX 风格表达式** - 响应式表达式🉑以放在模板任意位置
17
17
  - **数据同步系统** - 使用完全基于表达式的语法实现数据实时响应
18
18
 
19
19
  ## 安装
@@ -48,8 +48,8 @@ export default createComponent({
48
48
  transform: typed<string[]>(), //将输入的参数进行标准化,typed()函数不进行任何处理,只是类型投射
49
49
  required: true, //参数是否必填
50
50
  shadow: ["OptionA", "OptionB", "OptionC"], //默认值
51
- downloadable: true, //是否可下载,即上游组件向下游传递值
52
- uploadable: false //是否可上传,即下游组件向上游传递值
51
+ downloadable: true, //是否🉑下载,即上游组件向下游传递值
52
+ uploadable: false //是否🉑上传,即下游组件向上游传递值
53
53
  },
54
54
  value: {
55
55
  transform: Number,
@@ -108,7 +108,7 @@ export default createComponent({
108
108
  tree("div")
109
109
  .class("flexdown")
110
110
  .append(
111
- $(sync(() => //只要包装器返回的数据可以被渲染,就可以通过$函数进行引用
111
+ $(sync(() => //只要包装器返回的数据🉑以被渲染,就🉑以通过$函数进行引用
112
112
  props.items.get().map((label, index) =>
113
113
  tree("span")
114
114
  .class("item")
@@ -143,9 +143,9 @@ export default createComponent({
143
143
 
144
144
  欢迎提交Issue和Pull Request!
145
145
 
146
- ## 许可证
146
+ ## 许🉑证
147
147
 
148
- 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件
148
+ 本项目采用 MIT 许🉑证 - 详见 [LICENSE](LICENSE) 文件
149
149
 
150
150
  ## 联系方式
151
151
 
package/dist/index.d.ts CHANGED
@@ -4,8 +4,13 @@ interface SubcriberCallback<T extends unknown[], R> {
4
4
  (...data: T): R;
5
5
  }
6
6
  declare class EventSubcriber<T extends unknown[], R = void> {
7
+ parent?: EventSubcriber<T, R>;
8
+ bubbleable: boolean;
7
9
  private subcribers;
8
10
  private emitting;
11
+ constructor(config?: {
12
+ bubbleable?: boolean;
13
+ }, parent?: EventSubcriber<T, R>);
9
14
  subcribe(callback: SubcriberCallback<T, R>, once?: boolean): void;
10
15
  emit(...data: T): R[] | void;
11
16
  }
@@ -42,7 +47,7 @@ declare function wrap<T>(initialState: T, wrapperOptions?: Partial<Wrapper<T>>):
42
47
 
43
48
  declare function sync<R>(effectRenderer: () => R, dependencies?: unknown[]): Wrapper<R>;
44
49
 
45
- declare function when(condition: Wrapper<boolean> | (() => boolean), tree: () => SourceTree, dependencies?: unknown[]): Wrapper<SourceTree[]>;
50
+ declare function when(condition: boolean | Wrapper<boolean> | (() => boolean), tree: () => SourceTree, dependencies?: unknown[]): Wrapper<SourceTree[]>;
46
51
 
47
52
  interface HostTreeHooks {
48
53
  treeUpdated: [newTrees: HostTree[], oldTrees: HostTree[]];
@@ -51,17 +56,29 @@ interface HostTreeHooks {
51
56
  $preventEvent: [ObjectToEntryUnion<SupportedEventHandlerMap>, boolean | void];
52
57
  }
53
58
  type HostTreeHookStore = {
54
- [K in keyof HostTreeHooks as K extends `$${infer R}` ? R : K]: K extends `$${string}` ? HostTreeHooks[K] extends [infer E extends unknown[], infer R] ? EventSubcriber<E, R> : EventSubcriber<HostTreeHooks[K]> : EventSubcriber<HostTreeHooks[K]>;
59
+ readonly [K in keyof HostTreeHooks as K extends `$${infer R}` ? R : K]: K extends `$${string}` ? HostTreeHooks[K] extends [infer E extends unknown[], infer R] ? EventSubcriber<E, R> : EventSubcriber<HostTreeHooks[K]> : EventSubcriber<HostTreeHooks[K]>;
60
+ };
61
+ interface HostTreeAddEventListener<E extends SupportedHTMLElements> {
62
+ <K extends keyof SupportedEventHandlerMap>(key: K, handler: SupportedEventHandlerMap[K], options?: AddEventListenerOptions): HostTree<E>;
63
+ (key: string, handler: (...args: unknown[]) => unknown, options?: AddEventListenerOptions): HostTree<E>;
64
+ }
65
+ type HostTreeOnMethod<E extends SupportedHTMLElements> = HostTreeAddEventListener<E> & {
66
+ prevent: HostTreeAddEventListener<E> & {
67
+ stop: HostTreeAddEventListener<E>;
68
+ };
69
+ stop: HostTreeAddEventListener<E> & {
70
+ prevent: HostTreeAddEventListener<E>;
71
+ };
55
72
  };
56
73
  type HostTree<E extends SupportedHTMLElements = SupportedHTMLElements, T = HTMLElementTagNameMap[E], A = SupportedHTMLRawAttributes[E]> = {
57
74
  [K in string & keyof A as KebabToCamel<K>]-?: (data: A[K] | Wrapper<A[K]>) => HostTree<E>;
58
75
  } & {
59
- element: T;
60
- hooks: HostTreeHookStore;
76
+ readonly element: T;
77
+ readonly hooks: HostTreeHookStore;
61
78
  append(...children: (RawSourceTree | HostTree | RawSourceTree[] | HostTree[] | (RawSourceTree | HostTree)[] | Wrapper<HostTree> | Wrapper<RawSourceTree> | Wrapper<RawSourceTree | HostTree> | Wrapper<(RawSourceTree | HostTree)[]> | Wrapper<RawSourceTree | RawSourceTree[]>)[]): HostTree<E>;
62
79
  use(styleSet: StyleSet | Wrapper<StyleSet>): HostTree<E>;
63
- on<K extends keyof SupportedEventHandlerMap>(key: K, handler: SupportedEventHandlerMap[K], options?: AddEventListenerOptions): HostTree<E>;
64
- on(key: string, handler: (...args: unknown[]) => unknown, options?: AddEventListenerOptions): HostTree<E>;
80
+ data(datasets: Record<string, string | Wrapper<string>>): HostTree<E>;
81
+ on: HostTreeOnMethod<E>;
65
82
  };
66
83
  declare function tree<E extends SupportedHTMLElements>(data: E | Node): HostTree<E, HTMLElementTagNameMap[E], SupportedHTMLRawAttributes[E]>;
67
84
 
@@ -75,13 +92,15 @@ type SupportedEventHandlerMap = {
75
92
  [K in VueEventAttributes as HTMLEventName<K>]: (event: Events[K]) => void;
76
93
  };
77
94
 
78
- declare function camelToHyphen<T extends string>(str: T): T;
79
- declare function hyphenToCamel<T extends string>(str: T): T;
80
-
81
95
  declare function typedIsArray<T>(arr: unknown[]): arr is T[];
82
96
  declare function putIntoArray<T>(data: T): PutIntoIterable<T>;
83
97
  declare function createArray<T>(length: number, filler: () => T): T[];
84
98
 
99
+ declare function camelToHyphen<T extends string>(str: T): T;
100
+ declare function hyphenToCamel<T extends string>(str: T): T;
101
+
102
+ declare function duplicateObject<T>(target: T, hash?: WeakMap<WeakKey, any>): T;
103
+
85
104
  interface PropertyTransformer<I, O> {
86
105
  (data: I): O;
87
106
  }
@@ -155,6 +174,7 @@ interface ComponentOption<P extends ComponentPropertyStore, E extends ComponentE
155
174
  events?: E;
156
175
  styles?: StyleSet[];
157
176
  slots?: S;
177
+ uuid?: string;
158
178
  }
159
179
  type ComponentInstance<E extends ComponentEventStore = ComponentEventStore> = {
160
180
  mount(to: string | HTMLElement): void;
@@ -177,47 +197,40 @@ declare function flagment<T extends string>(uuid: T): `nine_${string}`;
177
197
  declare function attachUUID(root: Node, uuid: string): Node;
178
198
  declare function createComponent<P extends ComponentPropertyStore, E extends EventDescriptor, S extends SlotDescriptor>(options: ComponentOption<P, E[], S[]>, internalRenderer: ComponentInternalRender<P, E[], S[]>): Component<P, E[], S[]>;
179
199
 
180
- declare namespace logo {
200
+ type FlagMap<T> = {
201
+ [K in typeof HOST_TREE]: HostTree;
202
+ } & {
203
+ [K in typeof COMPONENT_INSTANCE]: ComponentInstance;
204
+ } & {
205
+ [K in typeof WRAPPER]: Wrapper<T>;
206
+ };
207
+ declare const HOST_TREE: unique symbol;
208
+ declare const COMPONENT_INSTANCE: unique symbol;
209
+ declare const WRAPPER: unique symbol;
210
+ declare function attachFlag<T extends object, F extends keyof FlagMap<unknown>>(data: T, flag: F): T & { [K in F]: true; };
211
+ declare function matchFlag<T, K extends keyof FlagMap<T>>(data: unknown, flag: K): data is FlagMap<T>[K];
212
+
213
+ declare class ValidationFailed extends Error {
214
+ }
215
+ declare class MissingError extends Error {
216
+ }
217
+ declare class ConflictionError extends Error {
218
+ }
219
+ declare class AccessError extends Error {
220
+ }
221
+ declare class BrokenRendererError extends Error {
222
+ }
223
+
224
+ declare namespace _9 {
225
+ export { };
226
+ }
227
+
228
+ declare namespace Nine_9 {
181
229
  export { };
182
230
  }
183
231
 
184
- declare const index_logo: typeof logo;
185
232
  declare namespace index {
186
- export { index_logo as logo };
187
- }
188
-
189
- declare const _default: {
190
- Counter: Component<{
191
- value: {
192
- validate: (number: unknown) => boolean;
193
- transform: NumberConstructor;
194
- required: false;
195
- shadow: number;
196
- downloadable: true;
197
- uploadable: true;
198
- };
199
- }, (EventDescriptor<string, "up"> | EventDescriptor<number, "down">)[], SlotDescriptor[]>;
200
- Selector: Component<{
201
- items: {
202
- validate: (arg: any) => arg is any[];
203
- transform: PropertyTransformer<unknown, string[]>;
204
- required: true;
205
- shadow: string[];
206
- downloadable: true;
207
- uploadable: false;
208
- };
209
- value: {
210
- transform: NumberConstructor;
211
- uploadable: true;
212
- required: true;
213
- };
214
- }, (EventDescriptor<number, "select"> | EventDescriptor<boolean, "toggleState">)[], {
215
- template: string;
216
- required?: boolean | undefined;
217
- defaultValue?: SourceTree;
218
- name: "title";
219
- }[]>;
220
- ObjectWatcher: Component<ComponentPropertyStore, EventDescriptor[], SlotDescriptor[]>;
221
- };
233
+ export { _9 as logo, Nine_9 as logoTitle };
234
+ }
222
235
 
223
- export { $, type Component, type ComponentEventStore, type ComponentInstance, type ComponentInternalRender, type ComponentOption, type ComponentPropertyStore, type ComponentRenderEntry, type ComponentSlotStore, type EmptyValue, type EventDescriptor, type EventOptions, EventSubcriber, type HostTree, type HostTreeHookStore, type HostTreeHooks, type KebabToCamel, 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, type Valueof, type Wrapper, index as assets, attachUUID, camelToHyphen, createArray, createComponent, defineEvent, defineSlot, defineTemplate, _default as examples, flagment, hostdown, hyphenToCamel, normalizePropertyDescriptor, normalizeRenderer, normalizeWrap, putIntoArray, render, renderSlots, styleSet, sync, tree, typed, typedIsArray, validateStore, when, wrap };
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 };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var V=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var U=(e,t)=>{for(var n in t)V(e,n,{get:t[n],enumerable:!0})},de=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ue(t))!ce.call(e,s)&&s!==n&&V(e,s,{get:()=>t[s],enumerable:!(r=le(t,s))||r.enumerable});return e};var fe=e=>de(V({},"__esModule",{value:!0}),e);var ve={};U(ve,{$:()=>F,EventSubcriber:()=>v,assets:()=>ee,attachUUID:()=>j,camelToHyphen:()=>P,createArray:()=>z,createComponent:()=>h,defineEvent:()=>R,defineSlot:()=>Q,defineTemplate:()=>g,examples:()=>ie,flagment:()=>X,hostdown:()=>G,hyphenToCamel:()=>me,normalizePropertyDescriptor:()=>$,normalizeRenderer:()=>oe,normalizeWrap:()=>N,putIntoArray:()=>q,render:()=>D,renderSlots:()=>Z,styleSet:()=>w,sync:()=>b,tree:()=>l,typed:()=>B,typedIsArray:()=>Te,validateStore:()=>J,when:()=>W,wrap:()=>E});module.exports=fe(ve);var v=class{subcribers=[];emitting=!1;subcribe(t,n=!1){this.subcribers.push({callback:t,once:n})}emit(...t){if(this.emitting)return;this.emitting=!0;let n=[];for(let r of this.subcribers)n.push(r.callback(...t));return this.emitting=!1,n}};function P(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function me(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}function g(){return null}function Te(e){return Array.isArray(e)}function q(e){return[...Array.isArray(e)?e:[e]]}function z(e,t){return new Array(Math.max(e,0)).fill(0).map(t)}function w(e){let t={},n=new Proxy({rules:t,selector:e,apply(r){let s=document.createElement("style");document.head.appendChild(s),s.textContent=`${this.selectorString(r)}{${this.ruleString()}}`},ruleString(){return Object.entries(t).map(([r,s])=>`${P(String(r))}:${s};`).join("")},selectorString(r){return(this.selector||"")+(r||"")||"*"}},{get(r,s,o){return Reflect.has(r,s)?Reflect.get(r,s,o):p=>(t[s]=String(p),n)}});return n}var K=Symbol("HostTreeFlag"),_=Symbol("ComponentInstanceFlag"),S=Symbol("WrapperFlag");function k(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 l(e){let t=typeof e=="string"?document.createElement(e):e,n={treeUpdated:new v,attributeUpdated:new v,initialized:new v,preventEvent:new v},r=new Proxy(k({element:t,hooks:n,append(...s){for(let o of s)if(f(o,S)){let p=[],a=new Comment("Tree anchor");t.appendChild(a);let i=u=>{let c=[...Array.isArray(u)?u:[u]].reverse(),m=[];for(let x of c){let d=D(x);m.push(d),t.insertBefore(d.element,a.nextSibling)}for(let x of p)x.element.remove();n.treeUpdated.emit(m,p),p=m};o.event.subcribe(i),i(o.get())}else{let p=o;for(let a of q(p))t.appendChild(D(a).element)}return r},use(s){if(t instanceof HTMLElement){let o=p=>{for(let[a,i]of Object.entries(p))t.style.setProperty(P(String(a)),i)};f(s,S)?(s.event.subcribe(p=>o(p.rules)),o(s.get().rules)):o(s.rules)}return r},on(s,o,p){return t instanceof EventTarget&&t.addEventListener(s,a=>{let i=n.preventEvent.emit(s,o);i&&!i.some(Boolean)&&o(a)},p),r}},K),{get(s,o,p){return Reflect.has(s,o)?Reflect.get(s,o,p):a=>{let i=(u,c)=>{Object.hasOwn(t,o)&&(t[o]=u),t instanceof Element&&t.setAttribute(P(o),String(u)),n.attributeUpdated.emit(o,u,c)};return f(a,S)?(a.event.subcribe(i),i(a.get(),a.get())):i(a,a),r}}});return Promise.resolve().then(()=>n.initialized.emit(r)),r}var A=class extends Error{},C=class extends Error{},M=class extends Error{},O=class extends Error{},I=class extends Error{};var Se=[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),te={validate:Array.isArray,duplicate:e=>[...e],patch(e,t,n){let{proxy:r,revoke:s}=Proxy.revocable(e,{get(o,p,a){if(Se.includes(p)){let i=Reflect.get(o,p,a);return typeof i=="function"?(...u)=>{t(o);let c=i.call(o,...u);return n(o),c}:Reflect.get(o,p,a)}else return Reflect.get(o,p,a)},set(o,p,a,i){if(Reflect.get(o,p,i)!==a){t(o);let c=Reflect.set(o,p,a,i);return n(o),c}return Reflect.set(o,p,a,i)}});return{data:r,revoke:s}}};function H(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((s,o)=>{r.set(H(o,t),H(s,t))}),r}if(e instanceof Set){let r=new Set;return t.set(e,r),e.forEach(s=>{r.add(H(s,t))}),r}let n=Array.isArray(e)?[]:Object.create(Object.getPrototypeOf(e));return t.set(e,n),Reflect.ownKeys(e).forEach(r=>{n[r]=H(e[r],t)}),typeof e=="function"?e:n}var re={validate(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)},duplicate:H,patch(e,t,n){let{proxy:r,revoke:s}=Proxy.revocable(e,{set(o,p,a,i){if(Reflect.get(o,p,i)!==a){t(o);let c=Reflect.set(o,p,a,i);return n(o),c}return Reflect.set(o,p,a,i)},deleteProperty(o,p){if(Reflect.has(o,p)){t(o);let a=Reflect.deleteProperty(o,p);return n(o),a}return Reflect.deleteProperty(o,p)},defineProperty(o,p,a){let i=Reflect.getOwnPropertyDescriptor(o,p);if(!i||"value"in a&&i.value!==a.value||"get"in a&&i.get!==a.get||"set"in a&&i.set!==a.set||"enumerable"in a&&i.enumerable!==a.enumerable||"configurable"in a&&i.configurable!==a.configurable||"writable"in a&&i.writable!==a.writable){t(o);let c=Reflect.defineProperty(o,p,a);return n(o),c}return Reflect.defineProperty(o,p,a)}});return{data:r,revoke:s}}};var ne=[te,re];function N(e){return f(e,S)?e:E(e)}function E(e,t){let n=new v,r=i=>{let u=null,c=null;for(let m of ne)if(m.validate(e)){u=m;break}if(u){let m=null,{data:x,revoke:d}=u.patch(i,T=>(u&&(m=u.duplicate(T)),m),T=>{if(!m)throw new O("StructWatcher updated a new data before snapshotting.");s.event.emit(T,m)},s);return c=d,{data:x,tryRevokeOld:(T,y)=>{if(u.validate(y)&&c)return y=u.duplicate(y),c(y),[r(T).data,y,!0];{let{data:L}=r(T);return[L,y,!0]}}}}else return{data:i,tryRevokeOld:(m,x)=>[m,x,!1]}},s=k({get(){return p},set(i){if(p!==i){let[u,c]=a(i,p);p=u,this.event.emit(u,c)}},updateOnly(){this.event.emit(this.get(),this.get())},event:n},S),o=r(e),p=o.data,a=o.tryRevokeOld;return{...s,...t??{}}}function b(e,t=[]){let n=E(e()),r=()=>{let s=e();n.get()!==s&&n.set(s)};for(let s of t)f(s,S)&&s.event.subcribe(r);return n}function W(e,t,n=[]){return b(()=>{let r;return typeof e=="function"?r=e():r=e.get(),[r?t():null]},[...n,...f(e,S)?[e]:[]])}function B(){return e=>e}function $(e){return Object.assign({validate:()=>!0,transform:t=>t,shadow:null,required:!1,downloadable:!0,uploadable:!1},e)}function J(e){for(let t in e){let n=e[t];if(n.shadow){if(n.required)throw new M(`The required property ${t} can't have a shadow.`);if(n.validate&&!n.validate(n.shadow))throw new A(`The shadow of ${t} can't pass the validation.`)}}}function G(e,t){e||(e={});let n={};for(let r in t){let s=$(t[r]),o=a=>{if(f(n[r],S))n[r].set(a);else{let i=E(a);n[r]=i,i.event.subcribe(u=>{if(!(!f(e[r],S)||!f(n[r],S))&&n[r].get()!==e[r].get()){if(!s.uploadable)throw new O(`Property ${r} isn't uploadable but being set.`);e[r].set(u)}})}},p=(a,i)=>{if(!i&&!s.downloadable){console.warn(`Property ${r} isn't downloadable but being emitted.`);return}if(!s.validate(a))throw new A(`The input value of ${r} can't pass the validation.`);o(s.transform(a))};if(!Object.hasOwn(e,r)){if(s.required)throw new C(`Missing a required property ${r}.`);o(s.shadow);continue}f(e[r],S)?(e[r].event.subcribe(a=>p(a,!1)),p(e[r].get(),!0)):p(e[r],!0)}return n}function oe(e){return t=>N(e(N(t)))}function Z(e,t){if(!t)return{};let n=e;return Object.fromEntries(t.map(r=>{if(r.required&&(!n||!Object.hasOwn(n,r.name)))throw new C(`Missing a required slot ${r.name}.`);return n?[r.name,oe(n[r.name])]:[r.name,()=>null]}))}function Q(e,t){return{name:e,...t}}function R(e,t){return{name:e,...t??{}}}function D(e){let t;if(e instanceof Node)t=l(e);else if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint")t=l(new Text(String(e)));else if(f(e,_))t=e.$;else if(e==null)t=l(new Comment("Empty tree context"));else if(f(e,K))t=e;else throw new I(`Failed to render ${e} into a Node.`);return t}function F(e){return e}function X(e){return`nine_${e.replaceAll("-","_")}`}function j(e,t){for(let n of[e,...e.childNodes])n instanceof HTMLElement&&(n.dataset[X(t)]="true"),n!==e&&n.childNodes.length>0&&j(n,t);return e}function h(e,t){J(e.props??{});let n=Object.fromEntries(Object.entries(e.props??{}).map(([p,a])=>[p,$(a)])),r=crypto.randomUUID(),s=X(r);if(e.styles)for(let p of e.styles)p.apply(`[data-${s}="true"]`);return Object.assign((p,a)=>{let i=!1,u=[],c=()=>{i&&(u.forEach(([d,T,y])=>x.element.dispatchEvent(new CustomEvent(d,{detail:T,bubbles:y.bubbleable,cancelable:!1}))),u=[])},m=t(G(p,n),Z(a,e.slots),(d,T)=>{let y=e.events?.find(L=>L.name===d);if(!y)throw new TypeError(`No events named ${d} to emit.`);u.push([d,T,y]),c()}),x=D(m);return j(x.element,r),x.hooks.treeUpdated.subcribe(d=>d.forEach(T=>j(T.element,r))),i=!0,c(),k({mount(d){let T=typeof d=="string"?[...document.querySelectorAll(d)]:[d];for(let y of T)y.appendChild(x.element)},on(d,T){return x.on(d,y=>y instanceof CustomEvent?T(y.detail):null),this},$:x},_)},{props:n,events:e.events})}var ee={};U(ee,{logo:()=>Y});var Y={};U(Y,{default:()=>be});var be='data:image/svg+xml,<svg width="337" height="395" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><filter id="fx0" x="-10%" y="-10%" width="120%" height="120%" filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse"><feComponentTransfer color-interpolation-filters="sRGB"><feFuncR type="discrete" tableValues="1 1"/><feFuncG type="discrete" tableValues="0.752941 0.752941"/><feFuncB type="discrete" tableValues="0 0"/><feFuncA type="linear" slope="0.4" intercept="0"/></feComponentTransfer><feGaussianBlur stdDeviation="0 0"/></filter><clipPath id="clip1"><rect x="119" y="90" width="93" height="142"/></clipPath></defs><g transform="translate(-119 -128)"><g clip-path="url(%23clip1)" filter="url(%23fx0)" transform="translate(125 135)"><g><path d="M37.352-111.688C33.9173-107.395 32.2-101.261 32.2-93.288 32.2-85.4373 33.9173-79.5493 37.352-75.624 40.7867-71.6987 45.5093-69.736 51.52-69.736 60.5973-69.736 68.08-74.6427 73.968-84.456 71.76-107.027 63.9707-118.312 50.6-118.312 45.3253-118.312 40.9093-116.104 37.352-111.688ZM84.088-16.008C74.0293-3.61867 61.5787 2.576 46.736 2.576 32.016 2.576 21.5893-0.797334 15.456-7.544 13.3707-9.26133 11.96-8.34133 11.224-4.784 10.12-10.1813 11.96-15.5787 16.744-20.976 21.528-26.496 25.944-27.4773 29.992-23.92 31.832-20.976 36.9227-19.504 45.264-19.504 53.6053-19.504 60.352-23.0613 65.504-30.176 70.7787-37.4133 73.4773-45.8773 73.6-55.568 73.8453-58.6347 75.1333-60.1067 77.464-59.984 75.3787-63.4187 72.128-63.296 67.712-59.616 63.4187-56.0587 58.7573-53.2987 53.728-51.336 53.6053-50.7227 51.152-50.416 46.368-50.416 34.592-50.416 25.1467-54.0347 18.032-61.272 10.9173-68.632 7.36-79.1813 7.36-92.92 7.36-106.781 11.4693-117.883 19.688-126.224 28.0293-134.565 38.2107-138.736 50.232-138.736 64.216-138.736 75.8693-133.032 85.192-121.624 94.5147-110.339 99.176-93.0427 99.176-69.736 99.176-46.4293 94.1467-28.52 84.088-16.008Z" fill="%23ED7D31" transform="translate(111.796 229)"/></g></g><text fill="%23ED7D31" font-family="Swei Fist Sans CJK JP,Swei Fist Sans CJK JP_MSFontService,sans-serif" font-weight="700" font-size="184" transform="translate(229.799 357)">9</text></g></svg>';var ae=h({props:{value:{validate:Number.isInteger,transform:Number,required:!1,shadow:0,downloadable:!0,uploadable:!0}},events:[R("up",{template:g(),bubbleable:!0}),R("down",{template:g(),bubbleable:!0})]},(e,t,n)=>{let r=b(()=>e.value.get()*2,[e.value]);return r.event.subcribe(console.log),n("down",0),n("up",""),l("div").use(w().fontSize("20px").padding("10px")).append("\u6572\u6728\u9C7C",l("br"),l("button").on("click",()=>e.value.set(e.value.get()+1)).append("\u70B9\u51FB\u52A0\u4E00"),l("button").on("click",()=>e.value.set(e.value.get()-1)).append("\u70B9\u51FB\u51CF\u4E00"),l("br"),"\u5F53\u524D\u503C\uFF1A",e.value,"\u53CC\u500D\u503C\uFF1A",r,b(()=>z(r.get(),()=>l("div").append("\u4F60\u70B9\u4E86\u4E00\u4E0B")),[r]),W(()=>e.value.get()>10,()=>l("p").append("count > 10 \u65F6\u663E\u793A"),[e.value]))});var pe=h({props:{items:{validate:Array.isArray,transform:B(),required:!0,shadow:["OptionA","OptionB","OptionC"],downloadable:!0,uploadable:!1},value:{transform:Number,uploadable:!0,required:!0}},events:[R("select",{template:g()}),R("toggleState",{template:g()})],styles:[w(".item").backgroundColor("blue").color("white"),w(".flexdown").display("flex").flexDirection("column")],slots:[Q("title",{template:g(),required:!1})]},(e,t,n)=>{let r=E(!1),s=b(()=>e.items.get()[e.value.get()],[e.items,e.value]),o=p=>{e.value.set(p),r.set(!1),n("select",e.value.get())};return r.event.subcribe(p=>{n("toggleState",p)}),l("div").class("flexdown").ariaAtomic("false").append(l("span").class("item").use(w().backgroundColor("red")).append(l("div").append(s),t.title(s)).on("click",()=>r.set(!r.get())),W(r,()=>l("div").class("flexdown").append(b(()=>e.items.get().map((p,a)=>l("span").class("item").append(p).on("click",()=>o(a))),[e.items]))))});var se=h({},()=>{let e=E({count:0,label:"hello",enabled:!0}),t=b(()=>JSON.stringify(e.get()),[e]),n=b(()=>Object.keys(e.get()).join(", "),[e]),r=()=>{e.get().count+=1},s=()=>{e.get().enabled=!e.get().enabled},o=()=>{e.get().label=`label-${e.get().count}`},p=()=>{delete e.get().label},a=()=>{Object.defineProperty(e.get(),"extra",{value:`extra-${Date.now()}`,configurable:!0,enumerable:!0,writable:!0})};return l("div").use(w().padding("10px").border("1px solid #ddd").fontFamily("monospace")).append(l("h3").append("Object Watcher Test"),l("div").append("keys: ",n),l("div").append("json: ",t),l("div").use(w().display("flex").gap("6px").marginTop("8px").flexWrap("wrap")).append(l("button").append("count++").on("click",r),l("button").append("toggle enabled").on("click",s),l("button").append("rename label").on("click",o),l("button").append("delete label").on("click",p),l("button").append("define extra").on("click",a)))});var ie={Counter:ae,Selector:pe,ObjectWatcher:se};window.__ENV_9__?.mode==="development"&&console.warn("[Nine-9] Initialized in development mode.");0&&(module.exports={$,EventSubcriber,assets,attachUUID,camelToHyphen,createArray,createComponent,defineEvent,defineSlot,defineTemplate,examples,flagment,hostdown,hyphenToCamel,normalizePropertyDescriptor,normalizeRenderer,normalizeWrap,putIntoArray,render,renderSlots,styleSet,sync,tree,typed,typedIsArray,validateStore,when,wrap});
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});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nine-9",
3
- "version": "1.11.2",
3
+ "version": "1.12.0",
4
4
  "description": "一个轻量、高性能、类型安全的 Vanilla DOM 响应式 UI 框架。",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",