@sylwellsoftware/fray 0.1.0-alpha.1

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.
Files changed (94) hide show
  1. package/EXPERIMENTAL.md +75 -0
  2. package/LICENSE +55 -0
  3. package/NOTICE +2 -0
  4. package/README.md +521 -0
  5. package/dist/Components/Placeholder.d.ts +14 -0
  6. package/dist/Components/Placeholder.d.ts.map +1 -0
  7. package/dist/Components/component.d.ts +187 -0
  8. package/dist/Components/component.d.ts.map +1 -0
  9. package/dist/Components/controlUtils.d.ts +20 -0
  10. package/dist/Components/controlUtils.d.ts.map +1 -0
  11. package/dist/Components/data/descriptionList.d.ts +21 -0
  12. package/dist/Components/data/descriptionList.d.ts.map +1 -0
  13. package/dist/Components/data/listview/listview.d.ts +39 -0
  14. package/dist/Components/data/listview/listview.d.ts.map +1 -0
  15. package/dist/Components/data/selectionhandler.d.ts +68 -0
  16. package/dist/Components/data/selectionhandler.d.ts.map +1 -0
  17. package/dist/Components/data/table/DataTable.d.ts +72 -0
  18. package/dist/Components/data/table/DataTable.d.ts.map +1 -0
  19. package/dist/Components/data/table/FilterPanel.d.ts +35 -0
  20. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -0
  21. package/dist/Components/data/table/TableHeader.d.ts +21 -0
  22. package/dist/Components/data/table/TableHeader.d.ts.map +1 -0
  23. package/dist/Components/data/table/TableHeaderCell.d.ts +39 -0
  24. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -0
  25. package/dist/Components/data/table/tableQuery.d.ts +25 -0
  26. package/dist/Components/data/table/tableQuery.d.ts.map +1 -0
  27. package/dist/Components/data/treeview/treeitem.d.ts +20 -0
  28. package/dist/Components/data/treeview/treeitem.d.ts.map +1 -0
  29. package/dist/Components/data/treeview/treeview.d.ts +42 -0
  30. package/dist/Components/data/treeview/treeview.d.ts.map +1 -0
  31. package/dist/Components/dialog/dialog.d.ts +37 -0
  32. package/dist/Components/dialog/dialog.d.ts.map +1 -0
  33. package/dist/Components/layout/panel.d.ts +20 -0
  34. package/dist/Components/layout/panel.d.ts.map +1 -0
  35. package/dist/Components/layout/sidebar.d.ts +18 -0
  36. package/dist/Components/layout/sidebar.d.ts.map +1 -0
  37. package/dist/Components/layout/splitView.d.ts +18 -0
  38. package/dist/Components/layout/splitView.d.ts.map +1 -0
  39. package/dist/Components/layout/tabpanel/tab.d.ts +12 -0
  40. package/dist/Components/layout/tabpanel/tab.d.ts.map +1 -0
  41. package/dist/Components/layout/tabpanel/tabline.d.ts +32 -0
  42. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -0
  43. package/dist/Components/layout/tabpanel/tabpanel.d.ts +34 -0
  44. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -0
  45. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +35 -0
  46. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -0
  47. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +12 -0
  48. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -0
  49. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +12 -0
  50. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -0
  51. package/dist/Components/lineinputs/dropdown.d.ts +37 -0
  52. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -0
  53. package/dist/Components/lineinputs/textbox.d.ts +36 -0
  54. package/dist/Components/lineinputs/textbox.d.ts.map +1 -0
  55. package/dist/Components/lineinputs/toggle.d.ts +30 -0
  56. package/dist/Components/lineinputs/toggle.d.ts.map +1 -0
  57. package/dist/Components/menu/button.d.ts +24 -0
  58. package/dist/Components/menu/button.d.ts.map +1 -0
  59. package/dist/Components/menu/toolbar.d.ts +15 -0
  60. package/dist/Components/menu/toolbar.d.ts.map +1 -0
  61. package/dist/Components/status/progressBar.d.ts +21 -0
  62. package/dist/Components/status/progressBar.d.ts.map +1 -0
  63. package/dist/button-BRDkmR1C.js +203 -0
  64. package/dist/button-BRDkmR1C.js.map +1 -0
  65. package/dist/experimental.d.ts +16 -0
  66. package/dist/experimental.d.ts.map +1 -0
  67. package/dist/experimental.js +1361 -0
  68. package/dist/experimental.js.map +1 -0
  69. package/dist/index.d.ts +23 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +1014 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/jsx-dev-runtime-CarwHDyL.js +1155 -0
  74. package/dist/jsx-dev-runtime-CarwHDyL.js.map +1 -0
  75. package/dist/jsx-dev-runtime.d.ts +2 -0
  76. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  77. package/dist/jsx-dev-runtime.js +6 -0
  78. package/dist/jsx-dev-runtime.js.map +1 -0
  79. package/dist/jsx-runtime.d.ts +26 -0
  80. package/dist/jsx-runtime.d.ts.map +1 -0
  81. package/dist/jsx-runtime.js +9 -0
  82. package/dist/jsx-runtime.js.map +1 -0
  83. package/dist/runtime.d.ts +29 -0
  84. package/dist/runtime.d.ts.map +1 -0
  85. package/dist/styling/baseStyleDefinitions.d.ts +154 -0
  86. package/dist/styling/baseStyleDefinitions.d.ts.map +1 -0
  87. package/dist/styling/styleRegistry.d.ts +19 -0
  88. package/dist/styling/styleRegistry.d.ts.map +1 -0
  89. package/dist/util/filterMode.d.ts +13 -0
  90. package/dist/util/filterMode.d.ts.map +1 -0
  91. package/package.json +83 -0
  92. package/themes/README.md +30 -0
  93. package/themes/dark.css +39 -0
  94. package/themes/light.css +39 -0
@@ -0,0 +1,187 @@
1
+ import type { EventBubble, FetchStateValue, ReadableEmitter } from '@sylwellsoftware/glue';
2
+ import { FrayRuntime } from '../runtime.js';
3
+ export declare const Fragment: unique symbol;
4
+ export type Key = string | number;
5
+ export interface ComponentProps {
6
+ key?: Key | null;
7
+ children?: FrayChild | readonly FrayChild[];
8
+ class?: string | null;
9
+ className?: string | null;
10
+ [name: string]: unknown;
11
+ }
12
+ export type Ref<TNode extends Node = Node> = ((value: TNode | null) => void) | {
13
+ current: TNode | null;
14
+ };
15
+ export type FunctionComponent<TProps extends ComponentProps = ComponentProps> = (props: TProps) => FrayChild;
16
+ export type ComponentConstructor<TProps extends ComponentProps = ComponentProps, TInstance extends Component<TProps> = Component<TProps>> = new (props: TProps) => TInstance;
17
+ type ConcreteComponentConstructor = new (...args: never[]) => Component;
18
+ export type VNodeType<TProps extends ComponentProps = ComponentProps> = string | typeof Fragment | ComponentConstructor<TProps> | FunctionComponent<TProps>;
19
+ export interface VNode<TProps extends ComponentProps = ComponentProps> {
20
+ readonly type: string | typeof Fragment | Function;
21
+ readonly key: Key | null;
22
+ readonly props: TProps & {
23
+ children: NormalizedChild[];
24
+ };
25
+ }
26
+ export type FrayChild = string | number | boolean | null | undefined | VNode | Component | ReadableEmitter<FrayChild, unknown> | readonly FrayChild[];
27
+ type NormalizedChild = string | number | VNode | Component | ReadableEmitter<FrayChild, unknown>;
28
+ declare const liveBindingBrand: unique symbol;
29
+ /** Explicitly subscribe a DOM or component property to an emitter's current value. */
30
+ export interface LiveBinding<TValue> {
31
+ readonly emitter: ReadableEmitter<TValue, unknown>;
32
+ readonly [liveBindingBrand]: true;
33
+ }
34
+ /** Minimal writable Glue contract used by native `bind:value` and `bind:checked`. */
35
+ export interface WritableEmitter<TValue, TError = unknown> extends ReadableEmitter<TValue, TError> {
36
+ set(value: TValue, eventOrCause?: unknown): unknown;
37
+ }
38
+ export interface EmitterSnapshot<TValue, TError = unknown> {
39
+ readonly value: TValue;
40
+ readonly fetchState: FetchStateValue;
41
+ readonly error: TError | null;
42
+ }
43
+ export type TemplateProps<TProps extends ComponentProps> = {
44
+ [TName in keyof TProps]: TName extends 'key' | 'children' ? TProps[TName] : TProps[TName] | LiveBinding<Exclude<TProps[TName], undefined>>;
45
+ };
46
+ export type BaseStyleNames = string | readonly string[];
47
+ export type BaseStyles = Readonly<Record<string, BaseStyleNames>> | ReadonlyArray<readonly [string, BaseStyleNames]>;
48
+ export interface ComponentDependency {
49
+ registerStyles(runtime?: FrayRuntime, seen?: Set<ComponentDependency>): void;
50
+ }
51
+ interface Watchable {
52
+ subscribe(listener: (notification: {
53
+ event: EventBubble<unknown> | null;
54
+ }) => void, options?: {
55
+ emitCurrent?: boolean;
56
+ }): () => void;
57
+ }
58
+ /** Mark an emitter as a one-way live value for a DOM or component property. */
59
+ export declare function live<TValue>(emitter: ReadableEmitter<TValue, unknown>): LiveBinding<TValue>;
60
+ /** Build a Fray virtual node. */
61
+ export declare function h<TProps extends ComponentProps = ComponentProps>(type: VNodeType<TProps>, props?: TemplateProps<TProps> | null, ...children: FrayChild[]): VNode<TProps>;
62
+ type LiveValue<TValue> = TValue | LiveBinding<Exclude<TValue, undefined>>;
63
+ type AriaAttributes = {
64
+ [TName in `aria-${string}`]?: LiveValue<string | number | boolean | null | undefined>;
65
+ };
66
+ type DataAttributes = {
67
+ [TName in `data-${string}`]?: LiveValue<string | number | boolean | null | undefined>;
68
+ };
69
+ interface DOMEvents<TElement extends HTMLElement> {
70
+ onClick?: ((event: MouseEvent & {
71
+ currentTarget: TElement;
72
+ }) => void) | undefined;
73
+ onInput?: ((event: InputEvent & {
74
+ currentTarget: TElement;
75
+ }) => void) | undefined;
76
+ onChange?: ((event: Event & {
77
+ currentTarget: TElement;
78
+ }) => void) | undefined;
79
+ onKeyDown?: ((event: KeyboardEvent & {
80
+ currentTarget: TElement;
81
+ }) => void) | undefined;
82
+ onKeyUp?: ((event: KeyboardEvent & {
83
+ currentTarget: TElement;
84
+ }) => void) | undefined;
85
+ onFocus?: ((event: FocusEvent & {
86
+ currentTarget: TElement;
87
+ }) => void) | undefined;
88
+ onBlur?: ((event: FocusEvent & {
89
+ currentTarget: TElement;
90
+ }) => void) | undefined;
91
+ }
92
+ type FrayDOMProps<TElement extends HTMLElement> = Omit<ComponentProps, 'class' | 'className'> & DOMEvents<TElement> & AriaAttributes & DataAttributes & {
93
+ class?: LiveValue<string | undefined>;
94
+ className?: LiveValue<string | undefined>;
95
+ for?: string | undefined;
96
+ htmlFor?: string | undefined;
97
+ ref?: Ref<TElement> | undefined;
98
+ style?: LiveValue<string | Record<string, string | number | null | undefined> | undefined>;
99
+ };
100
+ type LiveDOMProperties<TElement extends HTMLElement> = {
101
+ [TName in keyof Omit<TElement, keyof ComponentProps | 'style' | 'children'>]?: LiveValue<TElement[TName] | undefined>;
102
+ };
103
+ type NativeValueBinding<TElement extends HTMLElement> = TElement extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement ? {
104
+ 'bind:value'?: WritableEmitter<string> | undefined;
105
+ } : {};
106
+ type NativeCheckedBinding<TElement extends HTMLElement> = TElement extends HTMLInputElement ? {
107
+ 'bind:checked'?: WritableEmitter<boolean> | undefined;
108
+ } : {};
109
+ export type FrayIntrinsicElements = {
110
+ [TTag in keyof HTMLElementTagNameMap]: FrayDOMProps<HTMLElementTagNameMap[TTag]> & LiveDOMProperties<HTMLElementTagNameMap[TTag]> & NativeValueBinding<HTMLElementTagNameMap[TTag]> & NativeCheckedBinding<HTMLElementTagNameMap[TTag]>;
111
+ };
112
+ /** Classic JSX type namespace for consumers configured with `jsxFactory: "h"`. */
113
+ export declare namespace h {
114
+ namespace JSX {
115
+ type Element = VNode | Component;
116
+ interface ElementClass extends Component {
117
+ }
118
+ interface ElementAttributesProperty {
119
+ props: {};
120
+ }
121
+ interface ElementChildrenAttribute {
122
+ children: {};
123
+ }
124
+ interface IntrinsicAttributes {
125
+ key?: Key;
126
+ }
127
+ type LibraryManagedAttributes<_TComponent, TProps extends ComponentProps> = TemplateProps<TProps>;
128
+ type IntrinsicElements = FrayIntrinsicElements;
129
+ }
130
+ }
131
+ export declare function css(strings: TemplateStringsArray, ...values: unknown[]): string;
132
+ export declare class Component<TProps extends ComponentProps = ComponentProps> {
133
+ static dependencies: ComponentDependency[];
134
+ static css: string;
135
+ static hostName: string | null;
136
+ static standaloneHostName: string | null;
137
+ static new<TConstructor extends ConcreteComponentConstructor>(this: TConstructor, ...args: ConstructorParameters<TConstructor>): InstanceType<TConstructor>;
138
+ static get baseStyles(): unknown;
139
+ static registerStyles(this: ComponentDependency & {
140
+ css?: string;
141
+ baseStyles?: unknown;
142
+ dependencies?: ComponentDependency[];
143
+ hostName?: string | null;
144
+ standaloneHostName?: string | null;
145
+ }, runtime?: FrayRuntime, seen?: Set<ComponentDependency>): void;
146
+ props: TProps;
147
+ dom: ChildNode | null;
148
+ private initialized;
149
+ private mounted;
150
+ private destroyed;
151
+ private updating;
152
+ private updateRequested;
153
+ private readonly cleanupFunctions;
154
+ private readonly watched;
155
+ private readonly renderReadSubscriptions;
156
+ private collectingRenderReads;
157
+ constructor(props?: TProps);
158
+ /** One-time setup hook. Constructors must not subscribe or render. */
159
+ initialize(): void;
160
+ render(): FrayChild;
161
+ /** Render this component's configured custom host element. */
162
+ protected host(props?: ComponentProps | null, ...children: FrayChild[]): VNode;
163
+ /** JSX component for this instance's runtime-configured custom host. */
164
+ protected readonly Host: (props: ComponentProps) => VNode;
165
+ mount(parent?: ParentNode | null, before?: Node | null): this;
166
+ attachTo(parent: ParentNode): this;
167
+ update(_event?: unknown): this;
168
+ setProps(nextProps: TProps): this;
169
+ afterMount(_dom: ChildNode | null): void;
170
+ afterUpdate(_dom: ChildNode | null): void;
171
+ watch(...observables: Watchable[]): this;
172
+ watchFutureValues(...observables: Watchable[]): this;
173
+ /** Read an emitter during render and rerender when that dependency changes. */
174
+ read<TValue, TError>(emitter: ReadableEmitter<TValue, TError>): TValue;
175
+ /** Read a Glue value, fetch state, and error as one tracked render dependency. */
176
+ snapshot<TValue, TError>(emitter: ReadableEmitter<TValue, TError>): EmitterSnapshot<TValue, TError>;
177
+ onCleanup(cleanup: () => void): () => void;
178
+ listen<TEvent extends Event = Event>(target: EventTarget, type: string, listener: (event: TEvent) => void, options?: boolean | AddEventListenerOptions): this;
179
+ registerChild<TComponent extends Component>(component: TComponent): TComponent;
180
+ destroy(): void;
181
+ onDestroy(): void;
182
+ private trackRenderRead;
183
+ private reconcileRenderReads;
184
+ }
185
+ export declare function isVNode(value: unknown): value is VNode;
186
+ export {};
187
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/Components/component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ReadableEmitter } from '@sylwellsoftware/glue';
2
+ import type { Component, ComponentProps } from './component.js';
3
+ export interface ValueEmitter<TValue> extends ReadableEmitter<TValue, unknown> {
4
+ set(value: TValue, eventOrCause?: unknown): boolean;
5
+ }
6
+ export interface ValueControlProps<TValue> extends ComponentProps {
7
+ valueEmitter?: ValueEmitter<TValue>;
8
+ value?: TValue;
9
+ defaultValue?: TValue;
10
+ initialValue?: TValue;
11
+ }
12
+ export declare function controlId(prefix: string, provided?: string | number | null): string;
13
+ export declare function createValueEmitter<TValue>(component: Component, props: ValueControlProps<TValue>, fallback: TValue, purpose: string): ValueEmitter<TValue>;
14
+ export declare function assertEmitter<TValue = unknown>(value: unknown, name?: string): asserts value is ValueEmitter<TValue>;
15
+ export declare function classNames(...values: unknown[]): string;
16
+ export declare function componentClass(props: Pick<ComponentProps, 'class' | 'className'>): string;
17
+ export declare function invoke<TArguments extends unknown[]>(callback: ((...args: TArguments) => void) | null | undefined, ...args: TArguments): void;
18
+ export declare function assertOptions<TOption>(options: unknown, name?: string): asserts options is TOption[];
19
+ export declare function describeState(value: unknown): string;
20
+ //# sourceMappingURL=controlUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlUtils.d.ts","sourceRoot":"","sources":["../../src/Components/controlUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1E,OAAO,KAAK,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAA;AAE7D,MAAM,WAAW,YAAY,CAAC,MAAM,CAAE,SAAQ,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1E,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CACtD;AAED,MAAM,WAAW,iBAAiB,CAAC,MAAM,CAAE,SAAQ,cAAc;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACxB;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EACrC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAChB,YAAY,CAAC,MAAM,CAAC,CAWtB;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAG,OAAO,EAC1C,KAAK,EAAE,OAAO,EACd,IAAI,SAAY,GACjB,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAQvC;AAED,wBAAgB,UAAU,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAKvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,MAAM,CAEzF;AAED,wBAAgB,MAAM,CAAC,UAAU,SAAS,OAAO,EAAE,EAC/C,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,EAC5D,GAAG,IAAI,EAAE,UAAU,GACpB,IAAI,CAIN;AAED,wBAAgB,aAAa,CAAC,OAAO,EACjC,OAAO,EAAE,OAAO,EAChB,IAAI,SAAY,GACjB,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAE9B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD"}
@@ -0,0 +1,21 @@
1
+ import { Component } from '../component.js';
2
+ import type { ComponentProps, FrayChild } from '../component.js';
3
+ export interface DescriptionItemProps extends ComponentProps {
4
+ term: FrayChild;
5
+ value?: FrayChild;
6
+ }
7
+ /** A term/value group with standards-valid `dl` children. */
8
+ export declare class DescriptionItem extends Component<DescriptionItemProps> {
9
+ render(): FrayChild;
10
+ static css: string;
11
+ }
12
+ export interface DescriptionListProps extends ComponentProps {
13
+ label?: string;
14
+ }
15
+ /** Semantic description-list container for compact record summaries. */
16
+ export declare class DescriptionList extends Component<DescriptionListProps> {
17
+ render(): FrayChild;
18
+ static dependencies: (typeof DescriptionItem)[];
19
+ static css: string;
20
+ }
21
+ //# sourceMappingURL=descriptionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"descriptionList.d.ts","sourceRoot":"","sources":["../../../src/Components/data/descriptionList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAG9D,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACxD,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,6DAA6D;AAC7D,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,MAAM,IAAI,SAAS;IAWnB,MAAM,CAAC,GAAG,SA0BT;CACJ;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wEAAwE;AACxE,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,MAAM,IAAI,SAAS;IAQnB,MAAM,CAAC,YAAY,6BAAoB;IAEvC,MAAM,CAAC,GAAG,SAKT;CACJ"}
@@ -0,0 +1,39 @@
1
+ import type { ReadableEmitter } from '@sylwellsoftware/glue';
2
+ import { Placeholder } from '../../Placeholder.js';
3
+ import { Component } from '../../component.js';
4
+ import type { ComponentProps, FrayChild } from '../../component.js';
5
+ import type { ValueEmitter } from '../../controlUtils.js';
6
+ import type { BaseSelectionHandler, ItemKeyGetter } from '../selectionhandler.js';
7
+ export interface ListViewProps<TItem = unknown> extends ComponentProps {
8
+ items?: readonly TItem[] | ReadableEmitter<readonly TItem[], unknown>;
9
+ selectedItemsEmitter?: ValueEmitter<TItem[]>;
10
+ itemKey?: string | ItemKeyGetter<TItem>;
11
+ multiSelect?: boolean;
12
+ label?: string;
13
+ placeholderCount?: number;
14
+ renderItem?: (item: TItem, index: number) => FrayChild;
15
+ }
16
+ /** Experimental accessible listbox with stable-key selection. */
17
+ export declare class ListView<TItem = unknown> extends Component<ListViewProps<TItem>> {
18
+ readonly itemsEmitter: ReadableEmitter<readonly TItem[], unknown>;
19
+ readonly items$: ReadableEmitter<readonly TItem[], unknown>;
20
+ readonly selectedItemsEmitter: ValueEmitter<TItem[]>;
21
+ readonly selectedItems$: ValueEmitter<TItem[]>;
22
+ readonly getItemKey: ItemKeyGetter<TItem>;
23
+ readonly selectionHandler: BaseSelectionHandler<TItem>;
24
+ private readonly ownedItemsEmitter;
25
+ private readonly ownedSelectedItemsEmitter;
26
+ constructor(props?: ListViewProps<TItem>);
27
+ initialize(): void;
28
+ render(): FrayChild;
29
+ afterUpdate(dom: ChildNode | null): void;
30
+ getSelectedItems(): TItem[];
31
+ getSelectedItemsEmitter(): ValueEmitter<TItem[]>;
32
+ onDestroy(): void;
33
+ static dependencies: (typeof Placeholder)[];
34
+ static hostName: string;
35
+ static standaloneHostName: string;
36
+ static baseStyles: string[][];
37
+ static css: string;
38
+ }
39
+ //# sourceMappingURL=listview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listview.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/listview/listview.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AAKvD,OAAO,KAAK,EACR,oBAAoB,EACpB,aAAa,EAChB,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,cAAc;IAClE,KAAK,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,eAAe,CAAC,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IACrE,oBAAoB,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACvC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;CACzD;AAED,iEAAiE;AACjE,qBAAa,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1E,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IACjE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,SAAS,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;IAC3D,QAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;IACpD,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IACzC,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IACpE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAyB;gBAEvD,KAAK,GAAE,aAAa,CAAC,KAAK,CAAM;IA6B5C,UAAU,IAAI,IAAI;IAIlB,MAAM,IAAI,SAAS;IAyDnB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAOxC,gBAAgB,IAAI,KAAK,EAAE;IAI3B,uBAAuB,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;IAIhD,SAAS,IAAI,IAAI;IAMjB,MAAM,CAAC,YAAY,yBAAgB;IAEnC,OAAgB,QAAQ,SAAc;IACtC,OAAgB,kBAAkB,SAAc;IAEhD,MAAM,CAAC,UAAU,aAGhB;IAED,MAAM,CAAC,GAAG,SAwCT;CACJ"}
@@ -0,0 +1,68 @@
1
+ import type { ValueEmitter } from '../controlUtils.js';
2
+ export type ItemKeyGetter<TItem> = (item: TItem, index: number) => unknown;
3
+ export interface SelectionHandlerConfig<TItem> {
4
+ getItems: () => readonly TItem[];
5
+ getKey?: ItemKeyGetter<TItem>;
6
+ selectedItemsEmitter?: ValueEmitter<TItem[]>;
7
+ owner?: unknown;
8
+ multiSelect?: boolean;
9
+ }
10
+ type SelectionEvent = MouseEvent | KeyboardEvent;
11
+ /**
12
+ * DOM selection behavior backed by an explicit row-data provider.
13
+ *
14
+ * Construction is side-effect free. Row listeners are installed by
15
+ * `rowsUpdated()` and are always released before the next row set is wired.
16
+ */
17
+ export declare class BaseSelectionHandler<TItem = unknown> {
18
+ readonly getItems: () => readonly TItem[];
19
+ readonly getKey: ItemKeyGetter<TItem>;
20
+ readonly selectedItemsEmitter: ValueEmitter<TItem[]>;
21
+ readonly selectedItems$: ValueEmitter<TItem[]>;
22
+ readonly ownsSelectedItemsEmitter: boolean;
23
+ protected rows: HTMLElement[];
24
+ private readonly rowCleanups;
25
+ protected activeIndex: number;
26
+ protected anchorIndex: number | null;
27
+ private dragStartIndex;
28
+ private dragOriginEvent;
29
+ private dragMoved;
30
+ private dragCleanup;
31
+ private suppressNextClick;
32
+ private suppressClickTimer;
33
+ private destroyed;
34
+ private readonly ownedSelectedItemsEmitter;
35
+ constructor({ getItems, getKey, selectedItemsEmitter, owner, }: SelectionHandlerConfig<TItem>);
36
+ rowsUpdated(rows: Iterable<HTMLElement> | ArrayLike<HTMLElement> | null): void;
37
+ private wireRow;
38
+ private handleClick;
39
+ private handleMouseDown;
40
+ private handleMouseEnter;
41
+ private handleKeyDown;
42
+ protected onKeyboardMove(index: number, event: KeyboardEvent): void;
43
+ protected supportsDragSelection(): boolean;
44
+ protected selectDragRange(_startIndex: number, _endIndex: number, _event: MouseEvent): void;
45
+ protected selectIndex(_index: number, _event: SelectionEvent): void;
46
+ protected setSelectedItems(items: TItem[], cause?: string): void;
47
+ getSelectedItems(): TItem[];
48
+ getSelectedItemsEmitter(): ValueEmitter<TItem[]>;
49
+ private reconcileSelectedItems;
50
+ private syncRows;
51
+ private releaseRows;
52
+ private finishDrag;
53
+ private clearClickSuppression;
54
+ destroy(): void;
55
+ }
56
+ export declare class SingleSelectionHandler<TItem = unknown> extends BaseSelectionHandler<TItem> {
57
+ protected selectIndex(index: number): void;
58
+ }
59
+ export declare class MultiSelectionHandler<TItem = unknown> extends BaseSelectionHandler<TItem> {
60
+ protected selectIndex(index: number, event: SelectionEvent): void;
61
+ protected onKeyboardMove(index: number, event: KeyboardEvent): void;
62
+ protected supportsDragSelection(): boolean;
63
+ protected selectDragRange(startIndex: number, endIndex: number, event: MouseEvent): void;
64
+ }
65
+ export declare function createSelectionHandler<TItem>(config: SelectionHandlerConfig<TItem>): BaseSelectionHandler<TItem>;
66
+ export declare function defaultItemKey<TItem>(item: TItem, index: number): unknown;
67
+ export {};
68
+ //# sourceMappingURL=selectionhandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionhandler.d.ts","sourceRoot":"","sources":["../../../src/Components/data/selectionhandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { Emitter } from '@sylwellsoftware/glue';
2
+ import type { FetchLike, QueryHandlerLike, QuerySerializer, ReadableEmitter } from '@sylwellsoftware/glue';
3
+ import { Placeholder } from '../../Placeholder.js';
4
+ import { Component } from '../../component.js';
5
+ import type { ComponentProps, FrayChild } from '../../component.js';
6
+ import type { ValueEmitter } from '../../controlUtils.js';
7
+ import type { CheckboxSymbol } from '../../lineinputs/checkbox/Checkbox.js';
8
+ import type { FilterModeValue } from '../../../util/filterMode.js';
9
+ import type { BaseSelectionHandler, ItemKeyGetter } from '../selectionhandler.js';
10
+ import { TableHeader } from './TableHeader.js';
11
+ import type { TableColumn, TableRow } from './TableHeaderCell.js';
12
+ import type { TableFilters, TableSort } from './tableQuery.js';
13
+ export type TableQueryArguments = {
14
+ sort: TableSort | null;
15
+ filters: TableFilters;
16
+ };
17
+ export type TableQueryInput<TRow extends TableRow = TableRow> = ReadableEmitter<readonly TRow[] | undefined, unknown> & {
18
+ retry?: (cause?: unknown) => unknown;
19
+ dispose?: () => void;
20
+ };
21
+ export interface DataTableProps<TRow extends TableRow = TableRow> extends ComponentProps {
22
+ mode: 'local' | 'remote';
23
+ columns: readonly TableColumn<TRow>[];
24
+ data?: readonly TRow[] | ReadableEmitter<readonly TRow[], unknown>;
25
+ query?: TableQueryInput<TRow>;
26
+ queryHandler?: QueryHandlerLike<TableQueryArguments, readonly TRow[]>;
27
+ queryUrl?: string;
28
+ baseUrl?: string;
29
+ fetch?: FetchLike<readonly TRow[]>;
30
+ serializeQuery?: QuerySerializer<TableQueryArguments>;
31
+ selectedItemsEmitter?: ValueEmitter<TRow[]>;
32
+ rowKey?: Extract<keyof TRow, string> | ItemKeyGetter<TRow>;
33
+ multiSelect?: boolean;
34
+ caption?: FrayChild;
35
+ emptyMessage?: FrayChild;
36
+ placeholderCount?: number;
37
+ filterModes?: readonly CheckboxSymbol<FilterModeValue>[];
38
+ defaultSemanticState?: FilterModeValue;
39
+ onFilterChange?: (filters: TableFilters, event: Event | null) => void;
40
+ }
41
+ /** Experimental table with explicit local and remote data modes. */
42
+ export declare class DataTable<TRow extends TableRow = TableRow> extends Component<DataTableProps<TRow>> {
43
+ readonly columns: readonly TableColumn<TRow>[];
44
+ readonly rowKey: ItemKeyGetter<TRow>;
45
+ readonly sortEmitter: Emitter<TableSort | null>;
46
+ readonly filtersEmitter: Emitter<TableFilters>;
47
+ readonly selectedItemsEmitter: ValueEmitter<TRow[]>;
48
+ readonly selectionHandler: BaseSelectionHandler<TRow>;
49
+ query: TableQueryInput<TRow> | null;
50
+ private dataSource;
51
+ private readonly ownedSelectedItemsEmitter;
52
+ private ownedDataSource;
53
+ private ownsQuery;
54
+ private readonly queryArgs;
55
+ constructor(props: DataTableProps<TRow>);
56
+ initialize(): void;
57
+ private createLocalQuery;
58
+ private createRemoteQuery;
59
+ private createRestHandler;
60
+ render(): FrayChild;
61
+ private renderRow;
62
+ private renderPlaceholders;
63
+ afterUpdate(dom: ChildNode | null): void;
64
+ getSelectedRows(): TRow[];
65
+ getSelectedRowsEmitter(): ValueEmitter<TRow[]>;
66
+ onDestroy(): void;
67
+ static dependencies: (typeof Placeholder | typeof TableHeader)[];
68
+ static hostName: string;
69
+ static standaloneHostName: string;
70
+ static css: string;
71
+ }
72
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/DataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,OAAO,EAKV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EACR,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,eAAe,EAClB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAA;AACzE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAKhE,OAAO,KAAK,EACR,oBAAoB,EACpB,aAAa,EAChB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EAAC,WAAW,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAA;AAE/D,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAE5D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,YAAY,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,IAAI,eAAe,CAC3E,SAAS,IAAI,EAAE,GAAG,SAAS,EAC3B,OAAO,CACV,GAAG;IACA,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,cAAc;IACpF,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,OAAO,EAAE,SAAS,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;IACrC,IAAI,CAAC,EAAE,SAAS,IAAI,EAAE,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IAClE,KAAK,CAAC,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7B,YAAY,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAClC,cAAc,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAA;IACrD,oBAAoB,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1D,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACxE;AAED,oEAAoE;AACpE,qBAAa,SAAS,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CACnD,SAAQ,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC/C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACrD,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAC1C,OAAO,CAAC,UAAU,CAAyD;IAC3E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAwB;IAClE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiE;gBAE/E,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC;IA6BvC,UAAU,IAAI,IAAI;IAOlB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,iBAAiB;IAmBzB,MAAM,IAAI,SAAS;IA4DnB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,kBAAkB;IAa1B,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI;IAOxC,eAAe,IAAI,IAAI,EAAE;IAIzB,sBAAsB,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;IAI9C,SAAS,IAAI,IAAI;IAUjB,MAAM,CAAC,YAAY,8CAA6B;IAEhD,OAAgB,QAAQ,SAAe;IACvC,OAAgB,kBAAkB,SAAe;IAEjD,MAAM,CAAC,GAAG,SAmCT;CACJ"}
@@ -0,0 +1,35 @@
1
+ import type { ReadableEmitter } from '@sylwellsoftware/glue';
2
+ import { Component } from '../../component.js';
3
+ import type { ComponentProps, FrayChild } from '../../component.js';
4
+ import { Checkbox } from '../../lineinputs/checkbox/Checkbox.js';
5
+ import type { CheckboxSymbol } from '../../lineinputs/checkbox/Checkbox.js';
6
+ import type { FilterModeValue } from '../../../util/filterMode.js';
7
+ export type FilterValue = string | number;
8
+ export interface FilterOption {
9
+ value: FilterValue;
10
+ label?: FrayChild;
11
+ }
12
+ export type FilterOptionInput = FilterValue | FilterOption;
13
+ export type FilterOptions = readonly FilterOptionInput[];
14
+ export type FilterOptionsSource = FilterOptions | ReadableEmitter<FilterOptions, unknown>;
15
+ export type FilterSelection = ReadonlyMap<FilterValue, FilterModeValue>;
16
+ export interface FilterPanelProps extends ComponentProps {
17
+ options?: FilterOptionsSource;
18
+ filters?: FilterSelection | readonly (readonly [FilterValue, FilterModeValue])[];
19
+ filterModes?: readonly CheckboxSymbol<FilterModeValue>[];
20
+ defaultSemanticState?: FilterModeValue;
21
+ label?: string;
22
+ onChange?: (filters: Map<FilterValue, FilterModeValue>, event: Event | null) => void;
23
+ }
24
+ /** Experimental filter choices. Option data is always supplied by the caller. */
25
+ export declare class FilterPanel extends Component<FilterPanelProps> {
26
+ readonly optionsEmitter: ReadableEmitter<FilterOptions, unknown> | null;
27
+ constructor(props?: FilterPanelProps);
28
+ initialize(): void;
29
+ render(): FrayChild;
30
+ static dependencies: (typeof Checkbox)[];
31
+ static hostName: string;
32
+ static standaloneHostName: string;
33
+ static css: string;
34
+ }
35
+ //# sourceMappingURL=FilterPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/FilterPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAA;AAE1D,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAuB,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAEvF,OAAO,EAAC,QAAQ,EAAC,MAAM,uCAAuC,CAAA;AAC9D,OAAO,KAAK,EAER,cAAc,EACjB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA;AAEzC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,SAAS,iBAAiB,EAAE,CAAA;AACxD,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;AACzF,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;AAEvE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACpD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAA;IAChF,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACvF;AAED,iFAAiF;AACjF,qBAAa,WAAY,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;gBAE3D,KAAK,GAAE,gBAAqB;IAKxC,UAAU,IAAI,IAAI;IAIlB,MAAM,IAAI,SAAS;IAyDnB,MAAM,CAAC,YAAY,sBAAa;IAEhC,OAAgB,QAAQ,SAAiB;IACzC,OAAgB,kBAAkB,SAAiB;IAEnD,MAAM,CAAC,GAAG,SAiBT;CACJ"}
@@ -0,0 +1,21 @@
1
+ import { Component } from '../../component.js';
2
+ import type { ComponentProps, FrayChild } from '../../component.js';
3
+ import type { ValueEmitter } from '../../controlUtils.js';
4
+ import type { CheckboxSymbol } from '../../lineinputs/checkbox/Checkbox.js';
5
+ import type { FilterModeValue } from '../../../util/filterMode.js';
6
+ import { TableHeaderCell } from './TableHeaderCell.js';
7
+ import type { TableColumn, TableRow } from './TableHeaderCell.js';
8
+ import type { TableFilters, TableSort } from './tableQuery.js';
9
+ export interface TableHeaderProps<TRow extends TableRow = TableRow> extends ComponentProps {
10
+ columns: readonly TableColumn<TRow>[];
11
+ sortEmitter: ValueEmitter<TableSort | null>;
12
+ filtersEmitter: ValueEmitter<TableFilters>;
13
+ filterModes?: readonly CheckboxSymbol<FilterModeValue>[];
14
+ defaultSemanticState?: FilterModeValue;
15
+ onFilterChange?: (filters: TableFilters, event: Event | null) => void;
16
+ }
17
+ export declare class TableHeader<TRow extends TableRow = TableRow> extends Component<TableHeaderProps<TRow>> {
18
+ render(): FrayChild;
19
+ static dependencies: (typeof TableHeaderCell)[];
20
+ }
21
+ //# sourceMappingURL=TableHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHeader.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAA;AACzE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EACR,WAAW,EACX,QAAQ,EACX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAE5D,MAAM,WAAW,gBAAgB,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,cAAc;IACtF,OAAO,EAAE,SAAS,WAAW,CAAC,IAAI,CAAC,EAAE,CAAA;IACrC,WAAW,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3C,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACxE;AAED,qBAAa,WAAW,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CACrD,SAAQ,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,SAAS;IA2BnB,MAAM,CAAC,YAAY,6BAAoB;CAC1C"}
@@ -0,0 +1,39 @@
1
+ import { Component } from '../../component.js';
2
+ import type { ComponentProps, FrayChild } from '../../component.js';
3
+ import type { ValueEmitter } from '../../controlUtils.js';
4
+ import type { CheckboxSymbol } from '../../lineinputs/checkbox/Checkbox.js';
5
+ import type { FilterModeValue } from '../../../util/filterMode.js';
6
+ import { FilterPanel } from './FilterPanel.js';
7
+ import type { FilterOptionsSource, FilterSelection } from './FilterPanel.js';
8
+ import type { TableFilters, TableSort } from './tableQuery.js';
9
+ export type TableRow = Record<string, unknown>;
10
+ export interface TableColumnBase {
11
+ field: string;
12
+ label?: FrayChild;
13
+ sortable?: boolean;
14
+ filterOptions?: FilterOptionsSource;
15
+ }
16
+ export interface TableColumn<TRow extends TableRow = TableRow> extends TableColumnBase {
17
+ field: Extract<keyof TRow, string>;
18
+ render?: (row: TRow, index: number) => FrayChild;
19
+ }
20
+ export interface TableHeaderCellProps extends ComponentProps, TableColumnBase {
21
+ sortEmitter: ValueEmitter<TableSort | null>;
22
+ filtersEmitter: ValueEmitter<TableFilters>;
23
+ filterModes?: readonly CheckboxSymbol<FilterModeValue>[];
24
+ defaultSemanticState?: FilterModeValue;
25
+ onFilterChange?: (filters: TableFilters, event: Event | null) => void;
26
+ }
27
+ export declare class TableHeaderCell extends Component<TableHeaderCellProps> {
28
+ private filterVisible;
29
+ initialize(): void;
30
+ toggleSort(): void;
31
+ toggleFilterPanel(event: MouseEvent): void;
32
+ updateFilters(next: FilterSelection, event: Event | null): void;
33
+ render(): FrayChild;
34
+ private readonly onGlobalClick;
35
+ static dependencies: (typeof FilterPanel)[];
36
+ static baseStyles: (string | string[])[][];
37
+ static css: string;
38
+ }
39
+ //# sourceMappingURL=TableHeaderCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHeaderCell.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/TableHeaderCell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAM,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,oBAAoB,CAAA;AACjE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAA;AACzE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACR,mBAAmB,EACnB,eAAe,EAElB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAA;AAE5D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,mBAAmB,CAAA;CACtC;AAED,MAAM,WAAW,WAAW,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,eAAe;IAClF,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAA;CACnD;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc,EAAE,eAAe;IACzE,WAAW,EAAE,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3C,cAAc,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;IAC1C,WAAW,CAAC,EAAE,SAAS,cAAc,CAAC,eAAe,CAAC,EAAE,CAAA;IACxD,oBAAoB,CAAC,EAAE,eAAe,CAAA;IACtC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;CACxE;AAED,qBAAa,eAAgB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAChE,OAAO,CAAC,aAAa,CAAQ;IAE7B,UAAU,IAAI,IAAI;IAOlB,UAAU,IAAI,IAAI;IAYlB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAM1C,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAQ/D,MAAM,IAAI,SAAS;IA2DnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAQ7B;IAED,MAAM,CAAC,YAAY,yBAAgB;IAEnC,MAAM,CAAC,UAAU,0BAIhB;IAED,MAAM,CAAC,GAAG,SAgBT;CACJ"}
@@ -0,0 +1,25 @@
1
+ import type { UrlLike } from '@sylwellsoftware/glue';
2
+ import type { FilterModeValue } from '../../../util/filterMode.js';
3
+ export interface TableSort {
4
+ field: string;
5
+ direction: 'asc' | 'desc';
6
+ }
7
+ export type TableFilterEntry<TValue = unknown> = readonly [
8
+ value: TValue,
9
+ mode: FilterModeValue
10
+ ];
11
+ export type TableFilters = Record<string, readonly TableFilterEntry[]>;
12
+ export interface TableQueryState {
13
+ sort?: TableSort | null;
14
+ filters?: TableFilters;
15
+ }
16
+ /**
17
+ * Serialize Fray's experimental remote-table wire format.
18
+ *
19
+ * - `sort=field:asc|desc`
20
+ * - repeated `filter=field:mode:JSON(value)` entries
21
+ */
22
+ export declare function serializeTableQuery<TUrl extends UrlLike>(url: TUrl, { sort, filters }?: TableQueryState): TUrl;
23
+ export declare function applyLocalTableState<TRow>(rows: readonly TRow[], sort: TableSort | null, filters: TableFilters): TRow[];
24
+ export declare function assertSort(sort: unknown): asserts sort is TableSort;
25
+ //# sourceMappingURL=tableQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableQuery.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/table/tableQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAA;AAGlD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6BAA6B,CAAA;AAEhE,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IAAI,SAAS;IACtD,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,eAAe;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC,CAAA;AAEtE,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,YAAY,CAAA;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,OAAO,EACpD,GAAG,EAAE,IAAI,EACT,EAAC,IAAW,EAAE,OAAY,EAAC,GAAE,eAAoB,GAClD,IAAI,CAkBN;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EACrC,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,OAAO,EAAE,YAAY,GACtB,IAAI,EAAE,CAQR;AAmBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAOnE"}
@@ -0,0 +1,20 @@
1
+ import { Component } from '../../component.js';
2
+ import type { ComponentProps, FrayChild, Key } from '../../component.js';
3
+ export interface TreeNode<TValue = unknown> {
4
+ id: Key;
5
+ label: FrayChild;
6
+ textValue?: string;
7
+ value?: TValue;
8
+ children?: readonly TreeNode<TValue>[];
9
+ }
10
+ export interface TreeItemProps<TValue = unknown> extends ComponentProps {
11
+ id: Key;
12
+ label: FrayChild;
13
+ textValue?: string;
14
+ value?: TValue;
15
+ }
16
+ /** Declarative tree-node marker consumed by TreeView. */
17
+ export declare class TreeItem<TValue = unknown> extends Component<TreeItemProps<TValue>> {
18
+ render(): FrayChild;
19
+ }
20
+ //# sourceMappingURL=treeitem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeitem.d.ts","sourceRoot":"","sources":["../../../../src/Components/data/treeview/treeitem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAE,GAAG,EAAC,MAAM,oBAAoB,CAAA;AAEtE,MAAM,WAAW,QAAQ,CAAC,MAAM,GAAG,OAAO;IACtC,EAAE,EAAE,GAAG,CAAA;IACP,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,cAAc;IACnE,EAAE,EAAE,GAAG,CAAA;IACP,KAAK,EAAE,SAAS,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,yDAAyD;AACzD,qBAAa,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,IAAI,SAAS;CAGtB"}