@lavalogic/scoria 0.14.0 → 0.14.2

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.
@@ -1,6 +1,6 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts">
3
+ <script lang="ts" generics="CommonDenominator">
4
4
  import HorizontalTabGroupButton from './HorizontalTabGroupButton.svelte';
5
5
  import type { HorizontalTabGroupProps } from './HorizontalTabGroupProps.js';
6
6
  let {
@@ -10,7 +10,7 @@
10
10
  selected,
11
11
  noRadius = false,
12
12
  grow = false
13
- }: HorizontalTabGroupProps = $props();
13
+ }: HorizontalTabGroupProps<CommonDenominator> = $props();
14
14
  </script>
15
15
 
16
16
  <div class="wrapper" class:no-radius={noRadius} class:grow>
@@ -1,4 +1,25 @@
1
1
  import type { HorizontalTabGroupProps } from './HorizontalTabGroupProps.js';
2
- declare const HorizontalTabGroup: import("svelte").Component<HorizontalTabGroupProps<undefined>, {}, "">;
3
- type HorizontalTabGroup = ReturnType<typeof HorizontalTabGroup>;
2
+ declare function $$render<CommonDenominator>(): {
3
+ props: HorizontalTabGroupProps<CommonDenominator>;
4
+ exports: {};
5
+ bindings: "";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<CommonDenominator> {
10
+ props(): ReturnType<typeof $$render<CommonDenominator>>['props'];
11
+ events(): ReturnType<typeof $$render<CommonDenominator>>['events'];
12
+ slots(): ReturnType<typeof $$render<CommonDenominator>>['slots'];
13
+ bindings(): "";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <CommonDenominator>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<CommonDenominator>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<CommonDenominator>['props']>, ReturnType<__sveltets_Render<CommonDenominator>['events']>, ReturnType<__sveltets_Render<CommonDenominator>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<CommonDenominator>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<CommonDenominator>['exports']>;
20
+ <CommonDenominator>(internal: unknown, props: ReturnType<__sveltets_Render<CommonDenominator>['props']> & {}): ReturnType<__sveltets_Render<CommonDenominator>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ declare const HorizontalTabGroup: $$IsomorphicComponent;
24
+ type HorizontalTabGroup<CommonDenominator> = InstanceType<typeof HorizontalTabGroup<CommonDenominator>>;
4
25
  export default HorizontalTabGroup;
@@ -1,6 +1,6 @@
1
1
  <svelte:options runes />
2
2
 
3
- <script lang="ts" generics="Args extends object|undefined">
3
+ <script lang="ts" generics="Args">
4
4
  import { devCatch } from '../Helpers/Helpers.svelte.js';
5
5
  import { Colour } from '../scss/colours.js';
6
6
 
@@ -1,12 +1,12 @@
1
1
  import type { TabGroupButtonProps } from './TabGroupButtonProps.js';
2
- declare function $$render<Args extends object | undefined>(): {
2
+ declare function $$render<Args>(): {
3
3
  props: TabGroupButtonProps<Args>;
4
4
  exports: {};
5
5
  bindings: "";
6
6
  slots: {};
7
7
  events: {};
8
8
  };
9
- declare class __sveltets_Render<Args extends object | undefined> {
9
+ declare class __sveltets_Render<Args> {
10
10
  props(): ReturnType<typeof $$render<Args>>['props'];
11
11
  events(): ReturnType<typeof $$render<Args>>['events'];
12
12
  slots(): ReturnType<typeof $$render<Args>>['slots'];
@@ -14,12 +14,12 @@ declare class __sveltets_Render<Args extends object | undefined> {
14
14
  exports(): {};
15
15
  }
16
16
  interface $$IsomorphicComponent {
17
- new <Args extends object | undefined>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Args>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Args>['props']>, ReturnType<__sveltets_Render<Args>['events']>, ReturnType<__sveltets_Render<Args>['slots']>> & {
17
+ new <Args>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Args>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Args>['props']>, ReturnType<__sveltets_Render<Args>['events']>, ReturnType<__sveltets_Render<Args>['slots']>> & {
18
18
  $$bindings?: ReturnType<__sveltets_Render<Args>['bindings']>;
19
19
  } & ReturnType<__sveltets_Render<Args>['exports']>;
20
- <Args extends object | undefined>(internal: unknown, props: ReturnType<__sveltets_Render<Args>['props']> & {}): ReturnType<__sveltets_Render<Args>['exports']>;
20
+ <Args>(internal: unknown, props: ReturnType<__sveltets_Render<Args>['props']> & {}): ReturnType<__sveltets_Render<Args>['exports']>;
21
21
  z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
22
  }
23
23
  declare const HorizontalTabGroupButton: $$IsomorphicComponent;
24
- type HorizontalTabGroupButton<Args extends object | undefined> = InstanceType<typeof HorizontalTabGroupButton<Args>>;
24
+ type HorizontalTabGroupButton<Args> = InstanceType<typeof HorizontalTabGroupButton<Args>>;
25
25
  export default HorizontalTabGroupButton;
@@ -1,10 +1,10 @@
1
1
  import type { TabOption } from '../Types/Internal/TabOption.js';
2
2
  import type { Snippet } from 'svelte';
3
- export interface HorizontalTabGroupProps<T extends object | undefined = undefined> {
3
+ export interface HorizontalTabGroupProps<CommonDenominator> {
4
4
  name?: string;
5
- tabComponent?: Snippet<[TabOption<T>, boolean]>;
5
+ tabComponent?: Snippet<[TabOption<CommonDenominator>, boolean]>;
6
6
  noRadius?: boolean;
7
7
  grow?: boolean;
8
- options: Array<TabOption<T>>;
9
- selected: TabOption<T> | undefined;
8
+ options: Array<TabOption<CommonDenominator>>;
9
+ selected: TabOption<CommonDenominator> | undefined;
10
10
  }
@@ -54,7 +54,7 @@ export function generateExampleItemColumnDefs(modal) {
54
54
  },
55
55
  getDisplayValue: (item) => item.someSelect,
56
56
  isEditable: () => true
57
- }));
57
+ })).downcast();
58
58
  let defs = $state([
59
59
  expandDef,
60
60
  new ValidityDef({
@@ -170,6 +170,7 @@ export function generateExampleItemColumnDefs(modal) {
170
170
  defaultHidden: true,
171
171
  showTime: true
172
172
  }),
173
+ // altSelectDef,
173
174
  selectDef,
174
175
  new BubbleDef({
175
176
  header: 'Generated Bubble',
@@ -193,3 +194,16 @@ export function generateExampleItemColumnDefs(modal) {
193
194
  }
194
195
  };
195
196
  }
197
+ //sanity check
198
+ // class A<T> {}
199
+ // class B {}
200
+ // class C<T> extends A<T> {}
201
+ // class D extends B {}
202
+ // function asdf() {
203
+ // const x: Array<A<B>> = [];
204
+ // //C extends A, D extends B
205
+ // const y: C<D> = new C();
206
+ // x.push(y); // error
207
+ // const g: A<B> = y; //valid, subtype
208
+ // x.push(g); // no error
209
+ // }
@@ -1,9 +1,10 @@
1
1
  import { ColumnDef, type ColumnDefProps } from '../ColumnDef.svelte.js';
2
2
  import type { AccessorType } from './AccessorType.js';
3
- export interface AccessorDefProps<T extends object, FilterFnType = unknown> extends ColumnDefProps<T, FilterFnType> {
3
+ export interface AccessorDefProps<T extends object, FilterValueType> extends ColumnDefProps<T, FilterValueType> {
4
4
  readonly id: string & keyof T;
5
5
  }
6
- export declare abstract class AccessorDef<T extends object, FilterFnType = unknown> extends ColumnDef<T, FilterFnType> {
6
+ export declare abstract class AccessorDef<T extends object, FilterValueType> extends ColumnDef<T, FilterValueType> {
7
+ constructor(props: AccessorDefProps<T, FilterValueType>);
7
8
  readonly columnType: "Accessor";
8
9
  abstract readonly accessorType: AccessorType;
9
10
  }
@@ -1,5 +1,10 @@
1
1
  import { ColumnType } from '../../ColumnType.js';
2
2
  import { ColumnDef } from '../ColumnDef.svelte.js';
3
3
  export class AccessorDef extends ColumnDef {
4
+ // NOTE: constructor in place to enforce that we're using AccessorDefProps
5
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor
6
+ constructor(props) {
7
+ super(props);
8
+ }
4
9
  columnType = ColumnType.Accessor;
5
10
  }
@@ -1,9 +1,8 @@
1
1
  import type { SelectOption } from '../../../../../../Types/Internal/SelectOption.js';
2
2
  import type { CustomFilterFn } from '../../../Filtering/CustomFilterFn.js';
3
- import type { FilterFn, SelectFilterValueType } from '../../../Filtering/FilterFn.js';
4
- import type { ColumnDefProps } from '../ColumnDef.svelte.js';
5
- import { AccessorDef } from './AccessorDef.svelte.js';
6
- export interface SelectDefProps<T extends object, FilterValueType = unknown> extends ColumnDefProps<T, FilterValueType> {
3
+ import type { FilterFn } from '../../../Filtering/FilterFn.js';
4
+ import { AccessorDef, type AccessorDefProps } from './AccessorDef.svelte.js';
5
+ export interface SelectDefProps<T extends object, FilterValueType> extends AccessorDefProps<T, FilterValueType> {
7
6
  getOptions: () => Array<SelectOption<FilterValueType>> | Promise<Array<SelectOption<FilterValueType>>>;
8
7
  getDisplayValue: (item: T, index: number) => string | null | Promise<string | null>;
9
8
  sortingFn?: (a: T, b: T) => 1 | -1 | 0;
@@ -11,7 +10,7 @@ export interface SelectDefProps<T extends object, FilterValueType = unknown> ext
11
10
  optional?: boolean;
12
11
  clearable?: boolean;
13
12
  }
14
- export declare class SelectDef<T extends object, FilterValueType = SelectFilterValueType<T>> extends AccessorDef<T, FilterValueType> {
13
+ export declare class SelectDef<T extends object, FilterValueType> extends AccessorDef<T, FilterValueType> {
15
14
  constructor(props: SelectDefProps<T, FilterValueType>);
16
15
  readonly accessorType: "Select";
17
16
  private _filterFn;
@@ -61,4 +61,5 @@ export declare abstract class ColumnDef<T extends object, FilterFnType> {
61
61
  readonly resizable: boolean;
62
62
  readonly header: string | Snippet;
63
63
  readonly getOptions?: () => Array<SelectOption<FilterFnType>> | Promise<Array<SelectOption<FilterFnType>>>;
64
+ readonly downcast: () => ColumnDef<T, FilterFnType>;
64
65
  }
@@ -83,4 +83,10 @@ export class ColumnDef {
83
83
  resizable;
84
84
  header;
85
85
  getOptions;
86
+ // HACK: indended to be used as a quick type coercion for lists of ColumnDef<T,unknown>
87
+ // not the best way to solve this problem, but I've wasted enough time on this.
88
+ // eslint-disable-next-line @typescript-eslint/prefer-return-this-type
89
+ downcast = () => {
90
+ return this;
91
+ };
86
92
  }
@@ -1,7 +1,7 @@
1
1
  import type { BoolFilterValueType } from '../../../Filtering/FilterFn.js';
2
2
  import { ColumnType } from '../../ColumnType.js';
3
3
  import { ColumnDef } from '../ColumnDef.svelte.js';
4
- export declare class RowSelectionDef<T extends object> extends ColumnDef<T, BoolFilterValueType> {
4
+ export declare class RowSelectionDef<T extends object, FilterValueType = BoolFilterValueType> extends ColumnDef<T, FilterValueType> {
5
5
  readonly isSelectable: (item: T, index: number) => boolean | Promise<boolean>;
6
6
  readonly columnType: ColumnType;
7
7
  constructor(isSelectable: (item: T, index: number) => boolean | Promise<boolean>);
@@ -6,7 +6,7 @@
6
6
  import type { VerticalTabGroupProps } from './VerticalTabGroupProps.js';
7
7
  </script>
8
8
 
9
- <script lang="ts">
9
+ <script lang="ts" generics="CommonDenominator">
10
10
  let {
11
11
  name,
12
12
  tabs,
@@ -15,7 +15,7 @@
15
15
  noscroll,
16
16
  noTabMessage,
17
17
  nohistory = false
18
- }: VerticalTabGroupProps = $props();
18
+ }: VerticalTabGroupProps<CommonDenominator> = $props();
19
19
 
20
20
  onMount(() => {
21
21
  if (name && !nohistory) {
@@ -1,4 +1,25 @@
1
1
  import type { VerticalTabGroupProps } from './VerticalTabGroupProps.js';
2
- declare const VerticalTabGroup: import("svelte").Component<VerticalTabGroupProps, {}, "">;
3
- type VerticalTabGroup = ReturnType<typeof VerticalTabGroup>;
2
+ declare function $$render<CommonDenominator>(): {
3
+ props: VerticalTabGroupProps<CommonDenominator>;
4
+ exports: {};
5
+ bindings: "";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<CommonDenominator> {
10
+ props(): ReturnType<typeof $$render<CommonDenominator>>['props'];
11
+ events(): ReturnType<typeof $$render<CommonDenominator>>['events'];
12
+ slots(): ReturnType<typeof $$render<CommonDenominator>>['slots'];
13
+ bindings(): "";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <CommonDenominator>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<CommonDenominator>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<CommonDenominator>['props']>, ReturnType<__sveltets_Render<CommonDenominator>['events']>, ReturnType<__sveltets_Render<CommonDenominator>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<CommonDenominator>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<CommonDenominator>['exports']>;
20
+ <CommonDenominator>(internal: unknown, props: ReturnType<__sveltets_Render<CommonDenominator>['props']> & {}): ReturnType<__sveltets_Render<CommonDenominator>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ declare const VerticalTabGroup: $$IsomorphicComponent;
24
+ type VerticalTabGroup<CommonDenominator> = InstanceType<typeof VerticalTabGroup<CommonDenominator>>;
4
25
  export default VerticalTabGroup;
@@ -1,8 +1,8 @@
1
1
  import type { TabOption } from '../Types/Internal/TabOption.js';
2
- export interface VerticalTabGroupProps {
2
+ export interface VerticalTabGroupProps<CommonDenominator> {
3
3
  name?: string;
4
- tabs: Array<TabOption<unknown>>;
5
- selected?: TabOption<unknown>;
4
+ tabs: Array<TabOption<CommonDenominator>>;
5
+ selected?: TabOption<CommonDenominator>;
6
6
  style?: string;
7
7
  noscroll?: boolean;
8
8
  noTabMessage?: string;
@@ -1,7 +1,7 @@
1
1
  export declare const ExampleSelectEnum: {
2
- FirstOption: string;
3
- SecondOption: string;
4
- ThirdOption: string;
5
- FourthOption: string;
2
+ readonly FirstOption: "FirstOption";
3
+ readonly SecondOption: "SecondOption";
4
+ readonly ThirdOption: "ThirdOption";
5
+ readonly FourthOption: "FourthOption";
6
6
  };
7
7
  export type ExampleSelectEnum = (typeof ExampleSelectEnum)[keyof typeof ExampleSelectEnum];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lavalogic/scoria",
3
3
  "description": "Svelte components used for the FloWMS Web Frontend",
4
- "version": "0.14.0",
4
+ "version": "0.14.2",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
7
7
  },