@swan-io/lake 7.0.1 → 7.0.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swan-io/lake",
3
- "version": "7.0.1",
3
+ "version": "7.0.3",
4
4
  "engines": {
5
5
  "node": ">=18.0.0",
6
6
  "yarn": "^1.22.0"
@@ -26,10 +26,11 @@
26
26
  ],
27
27
  "license": "MIT",
28
28
  "dependencies": {
29
- "@react-three/drei": "^9.99.4",
30
- "@react-three/fiber": "^8.15.16",
31
- "@swan-io/boxed": "^2.1.0-beta",
32
- "@swan-io/chicane": "^2.0.0-rc.0",
29
+ "@react-three/drei": "^9.102.3",
30
+ "@react-three/fiber": "^8.15.19",
31
+ "@swan-io/boxed": "^2.1.0",
32
+ "@swan-io/chicane": "^2.0.0-rc.1",
33
+ "@swan-io/use-form": "^2.0.0-rc.2",
33
34
  "dayjs": "^1.11.10",
34
35
  "polished": "^4.3.1",
35
36
  "prism-react-renderer": "^2.3.1",
@@ -37,21 +38,20 @@
37
38
  "react-atomic-state": "^2.0.0",
38
39
  "react-dom": "^18.2.0",
39
40
  "react-native-web": "^0.19.10",
40
- "@swan-io/use-form": "^2.0.0-rc.2",
41
41
  "rifm": "^0.12.1",
42
- "three": "^0.161.0",
42
+ "three": "^0.162.0",
43
43
  "ts-dedent": "^2.2.0",
44
44
  "ts-pattern": "^5.0.8",
45
45
  "urql": "^4.0.6",
46
46
  "uuid": "^9.0.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@types/react": "^18.2.60",
50
- "@types/react-dom": "^18.2.19",
49
+ "@types/react": "^18.2.65",
50
+ "@types/react-dom": "^18.2.21",
51
51
  "@types/react-native": "^0.72.8",
52
- "@types/three": "^0.161.2",
52
+ "@types/three": "^0.162.0",
53
53
  "@types/uuid": "^9.0.8",
54
54
  "jsdom": "^24.0.0",
55
- "type-fest": "^4.10.3"
55
+ "type-fest": "^4.12.0"
56
56
  }
57
57
  }
@@ -60,5 +60,5 @@ type FiltersStackProps<Definition extends FiltersDefinition, State extends Filte
60
60
  onChangeOpened: (value: (keyof Definition)[]) => void;
61
61
  onChangeFilters: (value: State) => void;
62
62
  };
63
- export declare const FiltersStack: <T extends FiltersDefinition>({ filters, openedFilters, definition, onChangeOpened, onChangeFilters, }: FiltersStackProps<T, { [KeyType_2 in keyof { [K in keyof T]: ExtractFilterValue<T[K]> extends infer T_1 ? { [KeyType_1 in keyof T_1]: ExtractFilterValue<T[K]>[KeyType_1]; } : never; }]: { [K in keyof T]: ExtractFilterValue<T[K]> extends infer T_1 ? { [KeyType_1 in keyof T_1]: ExtractFilterValue<T[K]>[KeyType_1]; } : never; }[KeyType_2]; }>) => import("react/jsx-runtime").JSX.Element | null;
63
+ export declare const FiltersStack: <T extends FiltersDefinition>({ filters, openedFilters, definition, onChangeOpened, onChangeFilters, }: FiltersStackProps<T>) => import("react/jsx-runtime").JSX.Element | null;
64
64
  export {};
@@ -26,7 +26,7 @@ export declare const SimpleTitleCell: ({ isHighlighted, text, tooltip, }: {
26
26
  hideArrow?: boolean | undefined;
27
27
  onHide?: (() => void) | undefined;
28
28
  onShow?: (() => void) | undefined;
29
- placement: "left" | "right" | "center";
29
+ placement?: "left" | "right" | "center" | undefined;
30
30
  width?: number | undefined;
31
31
  togglableOnFocus?: boolean | undefined;
32
32
  containerStyle?: import("react-native").StyleProp<import("react-native").ViewStyle>;
@@ -53,7 +53,7 @@ export declare const CopyableRegularTextCell: ({ variant, text, textToCopy, copy
53
53
  hideArrow?: boolean | undefined;
54
54
  onHide?: (() => void) | undefined;
55
55
  onShow?: (() => void) | undefined;
56
- placement: "left" | "right" | "center";
56
+ placement?: "left" | "right" | "center" | undefined;
57
57
  width?: number | undefined;
58
58
  togglableOnFocus?: boolean | undefined;
59
59
  containerStyle?: import("react-native").StyleProp<import("react-native").ViewStyle>;
@@ -84,7 +84,7 @@ export declare const LinkCell: ({ children, external, onPress, variant, tooltip,
84
84
  hideArrow?: boolean | undefined;
85
85
  onHide?: (() => void) | undefined;
86
86
  onShow?: (() => void) | undefined;
87
- placement: "left" | "right" | "center";
87
+ placement?: "left" | "right" | "center" | undefined;
88
88
  width?: number | undefined;
89
89
  togglableOnFocus?: boolean | undefined;
90
90
  containerStyle?: import("react-native").StyleProp<import("react-native").ViewStyle>;
@@ -29,6 +29,6 @@ export type LakeComboboxRef = {
29
29
  };
30
30
  declare const LakeComboboxWithRef: <I>({ inputRef, value, items, itemHeight, nbItemsDisplayed, ListFooterComponent, onChange, onValueChange, onSelectItem, renderItem, keyExtractor, icon, placeholder, disabled, emptyResultText, readOnly, id, error, hideErrors, }: LakeComboboxProps<I>, forwardedRef: ForwardedRef<LakeComboboxRef>) => import("react/jsx-runtime").JSX.Element;
31
31
  export declare const LakeCombobox: <I>(props: LakeComboboxProps<I> & {
32
- ref?: RefObject<LakeComboboxRef> | undefined;
32
+ ref?: RefObject<LakeComboboxRef>;
33
33
  }) => ReturnType<typeof LakeComboboxWithRef>;
34
34
  export {};
@@ -33,6 +33,6 @@ export type SelectProps<V> = {
33
33
  };
34
34
  declare const LakeSelectWithRef: <V>({ title, items, valueStyle, size, color, disabled, mode, placeholder, readOnly, id, matchReferenceWidth, value, error, hideErrors, icon, onValueChange, disabledItems, PopoverFooter, style, }: SelectProps<V>, forwardedRef: ForwardedRef<View>) => import("react/jsx-runtime").JSX.Element;
35
35
  export declare const LakeSelect: <I>(props: SelectProps<I> & {
36
- ref?: ForwardedRef<View> | undefined;
36
+ ref?: ForwardedRef<View>;
37
37
  }) => ReturnType<typeof LakeSelectWithRef>;
38
38
  export {};
@@ -181,7 +181,7 @@ export declare const LakeTagInput: import("react").ForwardRefExoticComponent<{
181
181
  "aria-rowspan"?: number | undefined;
182
182
  "aria-setsize"?: number | undefined;
183
183
  "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
184
- clearButtonMode?: "always" | "never" | "while-editing" | "unless-editing" | undefined;
184
+ clearButtonMode?: "never" | "while-editing" | "unless-editing" | "always" | undefined;
185
185
  clearTextOnFocus?: boolean | undefined;
186
186
  dataDetectorTypes?: import("react-native").DataDetectorTypes | import("react-native").DataDetectorTypes[] | undefined;
187
187
  enablesReturnKeyAutomatically?: boolean | undefined;
@@ -24,7 +24,7 @@ export declare const LakeText: import("react").ForwardRefExoticComponent<TextPro
24
24
  hideArrow?: boolean | undefined;
25
25
  onHide?: (() => void) | undefined;
26
26
  onShow?: (() => void) | undefined;
27
- placement: "left" | "right" | "center";
27
+ placement?: "left" | "right" | "center" | undefined;
28
28
  width?: number | undefined;
29
29
  togglableOnFocus?: boolean | undefined;
30
30
  containerStyle?: import("react-native").StyleProp<import("react-native").ViewStyle>;
@@ -195,7 +195,7 @@ export declare const LakeTextInput: import("react").ForwardRefExoticComponent<{
195
195
  "aria-rowspan"?: number | undefined;
196
196
  "aria-setsize"?: number | undefined;
197
197
  "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
198
- clearButtonMode?: "always" | "never" | "while-editing" | "unless-editing" | undefined;
198
+ clearButtonMode?: "never" | "while-editing" | "unless-editing" | "always" | undefined;
199
199
  clearTextOnFocus?: boolean | undefined;
200
200
  dataDetectorTypes?: import("react-native").DataDetectorTypes | import("react-native").DataDetectorTypes[] | undefined;
201
201
  enablesReturnKeyAutomatically?: boolean | undefined;
@@ -8,7 +8,7 @@ type Props = {
8
8
  hideArrow?: boolean;
9
9
  onHide?: () => void;
10
10
  onShow?: () => void;
11
- placement: "left" | "right" | "center";
11
+ placement?: "left" | "right" | "center";
12
12
  width?: number;
13
13
  togglableOnFocus?: boolean;
14
14
  containerStyle?: ViewProps["style"];
@@ -310,7 +310,7 @@ export declare const PressableTextInput: FC<{
310
310
  "aria-rowspan"?: number | undefined;
311
311
  "aria-setsize"?: number | undefined;
312
312
  "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
313
- clearButtonMode?: "always" | "never" | "while-editing" | "unless-editing" | undefined;
313
+ clearButtonMode?: "never" | "while-editing" | "unless-editing" | "always" | undefined;
314
314
  clearTextOnFocus?: boolean | undefined;
315
315
  dataDetectorTypes?: import("react-native").DataDetectorTypes | import("react-native").DataDetectorTypes[] | undefined;
316
316
  enablesReturnKeyAutomatically?: boolean | undefined;
@@ -1,6 +1,7 @@
1
1
  import { Option } from "@swan-io/boxed";
2
2
  import { useCallback, useEffect, useRef, useState } from "react";
3
3
  import { match } from "ts-pattern";
4
+ const MAX_OFFSET_FOR_CENTER_PLACEMENT = 100;
4
5
  export const useContextualLayer = ({ placement, visible, matchReferenceWidth = false, matchReferenceMinWidth = false, referenceRef: externalReferenceRef, }) => {
5
6
  const referenceRef = useRef(null);
6
7
  const usedRef = externalReferenceRef !== null && externalReferenceRef !== void 0 ? externalReferenceRef : referenceRef;
@@ -19,7 +20,12 @@ export const useContextualLayer = ({ placement, visible, matchReferenceWidth = f
19
20
  const availableSpaceAfter = viewportWidth - rect.right;
20
21
  const height = rect.bottom - rect.top;
21
22
  const width = rect.right - rect.left;
22
- const inferedPlacement = placement !== null && placement !== void 0 ? placement : (availableSpaceBefore > availableSpaceAfter ? "right" : "left");
23
+ const isCenteredEnough = Math.abs(availableSpaceBefore - availableSpaceAfter) < MAX_OFFSET_FOR_CENTER_PLACEMENT;
24
+ const inferedPlacement = placement !== null && placement !== void 0 ? placement : (isCenteredEnough
25
+ ? "center"
26
+ : availableSpaceBefore > availableSpaceAfter
27
+ ? "right"
28
+ : "left");
23
29
  const verticalPosition = availableSpaceAbove > availableSpaceBelow
24
30
  ? {
25
31
  maxHeight: availableSpaceAbove,
@@ -4,4 +4,4 @@ export declare const last: <T>(array: readonly T[]) => T | undefined;
4
4
  export declare const partition: <T>(array: T[], predicate: (value: T) => boolean) => [T[], T[]];
5
5
  export declare const sortedIndexOf: <T>(array: T[], value: T) => number;
6
6
  export declare const groupBy: <T, K extends string>(array: T[], getGroupName: (item: T) => K) => Partial<Record<K, T[]>>;
7
- export declare const intersection: <T>(arrayA: readonly T[], arrayB: readonly T[]) => T[];
7
+ export declare const intersection: <T>(arrayA: ReadonlyArray<T>, arrayB: ReadonlyArray<T>) => T[];
@@ -1,10 +1,10 @@
1
1
  type Nullish = null | undefined;
2
2
  export declare const isNullish: (value: unknown) => value is Nullish;
3
- export declare const isNotNullish: <T>(value: Nullish | T) => value is T;
3
+ export declare const isNotNullish: <T>(value: T | Nullish) => value is T;
4
4
  export declare const isEmpty: (value: unknown) => value is "";
5
5
  export declare const isNotEmpty: <T extends string>(value: T) => value is Exclude<T, "">;
6
6
  export declare const isNullishOrEmpty: (value: unknown) => value is "" | Nullish;
7
- export declare const isNotNullishOrEmpty: <T extends string>(value: Nullish | T) => value is Exclude<T, "">;
7
+ export declare const isNotNullishOrEmpty: <T extends string>(value: T | Nullish) => value is Exclude<T, "">;
8
8
  export declare const emptyToUndefined: <T extends string>(value: T) => Exclude<T, ""> | undefined;
9
- export declare const nullishOrEmptyToUndefined: <T extends string>(value: Nullish | T) => Exclude<T, ""> | undefined;
9
+ export declare const nullishOrEmptyToUndefined: <T extends string>(value: T | Nullish) => Exclude<T, ""> | undefined;
10
10
  export {};
@@ -1,13 +1,11 @@
1
1
  import { Result } from "@swan-io/boxed";
2
2
  import { Except, SetRequired } from "type-fest";
3
3
  import { AnyVariables, OperationResult, UseQueryArgs, UseQueryResponse, UseQueryState } from "urql";
4
- export declare const parseOperationResult: <T>({ error, data }: OperationResult<T, AnyVariables>) => T;
5
- export declare const useQueryWithErrorBoundary: <Data = unknown, Variables extends AnyVariables = AnyVariables>(options: UseQueryArgs<Variables, Data>) => [{
6
- stale: boolean;
7
- extensions?: Record<string, any> | undefined;
8
- operation?: import("@urql/core/dist/urql-core-chunk").Operation<Data, Variables> | undefined;
9
- data: Data;
10
- }, import("urql").UseQueryExecute];
4
+ export declare const parseOperationResult: <T>({ error, data }: OperationResult<T>) => T;
5
+ export declare const useQueryWithErrorBoundary: <Data = unknown, Variables extends AnyVariables = AnyVariables>(options: UseQueryArgs<Variables, Data>) => [
6
+ SetRequired<Except<UseQueryState<Data, Variables>, "fetching" | "error">, "data">,
7
+ UseQueryResponse[1]
8
+ ];
11
9
  export declare const filterRejectionsToPromise: <T extends {
12
10
  __typename: string;
13
11
  }>(input: T) => Promise<Exclude<T, {