tosijs 1.0.8 → 1.0.10

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/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "1.0.8";
1
+ export declare const version = "1.0.10";
@@ -1,5 +1,6 @@
1
- import { XIN_PATH, XIN_VALUE, XIN_SET, XIN_OBSERVE, XIN_BIND } from './metadata';
1
+ import { XIN_PATH, XIN_VALUE, XIN_OBSERVE, XIN_BIND } from './metadata';
2
2
  import { XinStyleRule } from './css-types';
3
+ import { ElementsProxy } from './elements-types';
3
4
  export type AnyFunction = (...args: any[]) => any | Promise<any>;
4
5
  export type XinScalar = string | boolean | number | symbol | AnyFunction;
5
6
  export type XinArray = any[];
@@ -12,14 +13,22 @@ type ProxyObserveFunc = ((path: string) => void);
12
13
  type ProxyBindFunc<T extends Element = Element> = (element: T, binding: XinBinding<T>, options?: XinObject) => VoidFunction;
13
14
  export interface XinProps<T = any> {
14
15
  [XIN_PATH]: string;
16
+ tosiPath: string;
15
17
  [XIN_VALUE]: T;
16
- [XIN_SET]: (value: T) => T;
18
+ tosiValue: T;
17
19
  [XIN_OBSERVE]: ProxyObserveFunc;
20
+ tosiObserve: ProxyObserveFunc;
18
21
  [XIN_BIND]: ProxyBindFunc;
22
+ tosiBind: ProxyBindFunc;
19
23
  }
20
- export type BoxedProxy<T = any> = T extends Array<infer U> ? Array<BoxedProxy<U>> & XinProps<T> : T extends Function ? T & XinProps<Function> : T extends object ? {
24
+ type ListTemplateBuilder<U = any> = (elements: ElementsProxy, item: U) => HTMLElement;
25
+ type ListBinding = [ElementProps, HTMLTemplateElement];
26
+ export interface BoxedArrayProps<U = any> {
27
+ tosiListBinding: (templateBuilder: ListTemplateBuilder<U>, options?: ListBindingOptions) => ListBinding;
28
+ }
29
+ export type BoxedProxy<T = any> = T extends Array<infer U> ? Array<BoxedProxy<U>> & XinProps<T> & BoxedArrayProps<U> : T extends Function ? T & XinProps<Function> : T extends object ? {
21
30
  [K in keyof T]: BoxedProxy<T[K]>;
22
- } & XinProps<T> : T extends string ? String & XinProps<string> : T extends number ? Number & XinProps<number> : T extends boolean ? Boolean & XinProps<boolean> : T;
31
+ } & XinProps<T> : T extends string ? String & XinProps<string> : T extends number ? Number & XinProps<number> : T extends boolean ? Boolean & XinProps<boolean> : T extends undefined | null ? {} & XinProps<T> : T;
23
32
  export type Unboxed<T = any> = T extends String ? string : T extends Number ? number : T extends Boolean ? boolean : T;
24
33
  export type XinProxy<T = any> = T extends Array<infer U> ? Array<XinProxy<U>> : T extends Function ? T : T extends object ? {
25
34
  [K in keyof T]: T[K] extends object ? XinProxy<T[K]> : T[K];
@@ -103,4 +112,18 @@ export type FragmentCreator = (...contents: ElementPart<Element>[]) => DocumentF
103
112
  export type ElementCreator<T = Element> = (...contents: ElementPart<T>[]) => T;
104
113
  export type ContentPart = Element | DocumentFragment | string;
105
114
  export type ContentType = ContentPart | ContentPart[];
115
+ export type ListFilter = (array: any[], needle: any) => any[];
116
+ export interface ListBindingOptions {
117
+ idPath?: string;
118
+ virtual?: {
119
+ height: number;
120
+ width?: number;
121
+ visibleColumns?: number;
122
+ rowChunkSize?: number;
123
+ };
124
+ hiddenProp?: symbol | string;
125
+ visibleProp?: symbol | string;
126
+ filter?: ListFilter;
127
+ needle?: XinTouchableType;
128
+ }
106
129
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tosijs",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "path-based state management for web apps",
5
5
  "source": "src/index.ts",
6
6
  "types": "dist/index.d.ts",