@thisisagile/easy-react 17.23.1 → 17.24.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/dist/index.js CHANGED
@@ -66,7 +66,11 @@ var useToggle = (initialState = false) => {
66
66
  function useSwitch(...states) {
67
67
  const [state, setState] = (0, import_react2.useState)(states[0]);
68
68
  const next = () => setState((s) => states[(states.indexOf(s) + 1) % states.length]);
69
- return { state, next, states };
69
+ const isState = (t) => state === t;
70
+ function ifState(t, yes, no) {
71
+ return (0, import_easy2.ofGet)(state === t ? yes : no, t);
72
+ }
73
+ return { state, next, states, isState, ifState };
70
74
  }
71
75
  var useA = (item = {}) => {
72
76
  const [state, setState] = (0, import_react2.useState)({ isValid: false, ...item });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/layout/If.tsx","../src/utils/Children.ts","../src/utils/Hooks.ts","../src/utils/useOnce.ts"],"sourcesContent":["export * from './layout';\nexport * from './utils';\n","import * as React from 'react';\nimport { FunctionComponent, ReactElement, ReactNode } from 'react';\n\nexport interface IfProps {\n condition: any | undefined;\n children?: ReactNode;\n}\n\nexport const If: FunctionComponent<IfProps> = ({ condition, children }): ReactElement | null => (condition ? <>{children}</> : null);\n","import { isDefined, List, toList } from '@thisisagile/easy';\nimport React, { ReactNode } from 'react';\n\nexport const toChildren = (children: ReactNode): List<ReactNode> => toList(React.Children.toArray(children).filter(isDefined));\n","import { isPageList, List, Optional, PageList, PageOptions, toList, toPageList, Validatable } from '@thisisagile/easy';\nimport { useState } from 'react';\n\nexport const useToggle = (initialState = false): [boolean, () => void] => {\n const [state, setState] = useState<boolean>(initialState);\n return [state, () => setState(s => !s)];\n};\n\nexport function useSwitch<T>(...states: T[]): { state: T; next: () => void; states: T[] } {\n const [state, setState] = useState(states[0]);\n const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);\n return { state, next, states };\n}\n\nexport const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {\n const [state, setState] = useState<E>({ isValid: false, ...item } as E);\n return [\n state,\n (e: E): E => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const useAn = useA;\n\nexport const useOptional = <E>(item?: Partial<E>): [E, (e: Optional<E>) => Optional<E>, () => Optional<E>] => {\n const [state, setState] = useState<E>(item as E);\n const set = (e?: Optional<E>): Optional<E> => {\n setState(e as E);\n return e;\n };\n return [state, set, (): Optional<E> => set()];\n};\n\nexport const useEntity = useA;\n\nexport const useList = <E>(...items: E[]): [List<E>, (e: List<E>) => List<E>] => {\n const [state, setState] = useState<List<E>>(toList<E>(...items));\n return [\n state,\n (e: List<E>): List<E> => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const usePageList = <E>(...items: E[]): [PageList<E>, (e: PageList<E>) => PageList<E>] => {\n const [pages, setPages] = useState<PageList<E>>(toPageList<E>(items));\n return [\n pages,\n (e: PageList<E>): PageList<E> => {\n setPages(e);\n return e;\n },\n ];\n};\n\nexport const usePaging = <E>(\n f: (options?: PageOptions) => Promise<PageList<E>>,\n options?: PageOptions\n): [PageList<E>, (options?: PageOptions) => Promise<PageList<E>>, boolean, number, number] => {\n const [list, setList] = usePageList<E>();\n const [skip, setSkip] = useState(options?.skip ?? 0);\n const [take] = useState(options?.take ?? 5);\n const next = (options: PageOptions = { skip, take }) =>\n f(options).then(items => {\n setSkip(skip + take);\n return setList(toPageList(list.add(items), items));\n });\n return [list, next, list.length < (list?.total ?? 0), skip, take];\n};\n\nexport const useGet = <E>(f: () => Promise<E>, initial?: Partial<E>): [E, () => Promise<E>] => {\n const [item, setItem] = useState((initial ?? {}) as E);\n const getter = () =>\n f().then(i => {\n setItem(i);\n return i;\n });\n return [item, getter];\n};\n\nexport const useGetList = <E>(f: () => Promise<List<E>>): [List<E>, () => Promise<PageList<E>>] => {\n const [list, setList] = usePageList<E>();\n const getter = () => f().then(l => setList(isPageList<E>(l) ? l : toPageList(l, { total: l.length })));\n return [list, getter];\n};\n","import { DependencyList, useEffect, useState } from 'react';\n\nexport type UseOnceOptions<E> = {\n deps?: DependencyList;\n initial?: Partial<E>;\n};\n\nexport function useOnce<E>(f: () => Promise<E>, options?: UseOnceOptions<E>): [E] {\n const [item, setItem] = useState(options?.initial as E);\n useEffect(() => void f().then(i => setItem(i)), options?.deps ?? []);\n return [item];\n}\n"],"mappings":"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","names":["React","import_easy","import_react","options","import_react"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/layout/If.tsx","../src/utils/Children.ts","../src/utils/Hooks.ts","../src/utils/useOnce.ts"],"sourcesContent":["export * from './layout';\nexport * from './utils';\n","import * as React from 'react';\nimport { FunctionComponent, ReactElement, ReactNode } from 'react';\n\nexport interface IfProps {\n condition: any | undefined;\n children?: ReactNode;\n}\n\nexport const If: FunctionComponent<IfProps> = ({ condition, children }): ReactElement | null => (condition ? <>{children}</> : null);\n","import { isDefined, List, toList } from '@thisisagile/easy';\nimport React, { ReactNode } from 'react';\n\nexport const toChildren = (children: ReactNode): List<ReactNode> => toList(React.Children.toArray(children).filter(isDefined));\n","import { Get, isPageList, List, ofGet, Optional, PageList, PageOptions, Predicate, toList, toPageList, Validatable } from '@thisisagile/easy';\nimport { useState } from 'react';\n\nexport const useToggle = (initialState = false): [boolean, () => void] => {\n const [state, setState] = useState<boolean>(initialState);\n return [state, () => setState(s => !s)];\n};\n\nexport function useSwitch<T>(...states: T[]): {\n state: T;\n next: () => void;\n states: T[];\n isState: Predicate<T>;\n ifState: <U>(t: T, yes: Get<U, T>, no: Get<U, T>) => U;\n} {\n const [state, setState] = useState(states[0]);\n const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);\n const isState = (t: T) => state === t;\n\n function ifState<U>(t: T, yes: Get<U, T>, no: Get<U, T>): U {\n return ofGet(state === t ? yes : no, t);\n }\n\n return { state, next, states, isState, ifState };\n}\n\nexport const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {\n const [state, setState] = useState<E>({ isValid: false, ...item } as E);\n return [\n state,\n (e: E): E => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const useAn = useA;\n\nexport const useOptional = <E>(item?: Partial<E>): [E, (e: Optional<E>) => Optional<E>, () => Optional<E>] => {\n const [state, setState] = useState<E>(item as E);\n const set = (e?: Optional<E>): Optional<E> => {\n setState(e as E);\n return e;\n };\n return [state, set, (): Optional<E> => set()];\n};\n\nexport const useEntity = useA;\n\nexport const useList = <E>(...items: E[]): [List<E>, (e: List<E>) => List<E>] => {\n const [state, setState] = useState<List<E>>(toList<E>(...items));\n return [\n state,\n (e: List<E>): List<E> => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const usePageList = <E>(...items: E[]): [PageList<E>, (e: PageList<E>) => PageList<E>] => {\n const [pages, setPages] = useState<PageList<E>>(toPageList<E>(items));\n return [\n pages,\n (e: PageList<E>): PageList<E> => {\n setPages(e);\n return e;\n },\n ];\n};\n\nexport const usePaging = <E>(\n f: (options?: PageOptions) => Promise<PageList<E>>,\n options?: PageOptions\n): [PageList<E>, (options?: PageOptions) => Promise<PageList<E>>, boolean, number, number] => {\n const [list, setList] = usePageList<E>();\n const [skip, setSkip] = useState(options?.skip ?? 0);\n const [take] = useState(options?.take ?? 5);\n const next = (options: PageOptions = { skip, take }) =>\n f(options).then(items => {\n setSkip(skip + take);\n return setList(toPageList(list.add(items), items));\n });\n return [list, next, list.length < (list?.total ?? 0), skip, take];\n};\n\nexport const useGet = <E>(f: () => Promise<E>, initial?: Partial<E>): [E, () => Promise<E>] => {\n const [item, setItem] = useState((initial ?? {}) as E);\n const getter = () =>\n f().then(i => {\n setItem(i);\n return i;\n });\n return [item, getter];\n};\n\nexport const useGetList = <E>(f: () => Promise<List<E>>): [List<E>, () => Promise<PageList<E>>] => {\n const [list, setList] = usePageList<E>();\n const getter = () => f().then(l => setList(isPageList<E>(l) ? l : toPageList(l, { total: l.length })));\n return [list, getter];\n};\n","import { DependencyList, useEffect, useState } from 'react';\n\nexport type UseOnceOptions<E> = {\n deps?: DependencyList;\n initial?: Partial<E>;\n};\n\nexport function useOnce<E>(f: () => Promise<E>, options?: UseOnceOptions<E>): [E] {\n const [item, setItem] = useState(options?.initial as E);\n useEffect(() => void f().then(i => setItem(i)), options?.deps ?? []);\n return [item];\n}\n"],"mappings":"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","names":["React","import_easy","import_react","options","import_react"]}
@@ -1,9 +1,11 @@
1
- import { List, Optional, PageList, PageOptions, Validatable } from '@thisisagile/easy';
1
+ import { Get, List, Optional, PageList, PageOptions, Predicate, Validatable } from '@thisisagile/easy';
2
2
  export declare const useToggle: (initialState?: boolean) => [boolean, () => void];
3
3
  export declare function useSwitch<T>(...states: T[]): {
4
4
  state: T;
5
5
  next: () => void;
6
6
  states: T[];
7
+ isState: Predicate<T>;
8
+ ifState: <U>(t: T, yes: Get<U, T>, no: Get<U, T>) => U;
7
9
  };
8
10
  export declare const useA: <E extends Validatable>(item?: Partial<E>) => [E, (e: E) => E];
9
11
  export declare const useAn: <E extends Validatable>(item?: Partial<E>) => [E, (e: E) => E];
@@ -1,5 +1,5 @@
1
1
  // src/utils/Hooks.ts
2
- import { isPageList, toList, toPageList } from "@thisisagile/easy";
2
+ import { isPageList, ofGet, toList, toPageList } from "@thisisagile/easy";
3
3
  import { useState } from "react";
4
4
  var useToggle = (initialState = false) => {
5
5
  const [state, setState] = useState(initialState);
@@ -8,7 +8,11 @@ var useToggle = (initialState = false) => {
8
8
  function useSwitch(...states) {
9
9
  const [state, setState] = useState(states[0]);
10
10
  const next = () => setState((s) => states[(states.indexOf(s) + 1) % states.length]);
11
- return { state, next, states };
11
+ const isState = (t) => state === t;
12
+ function ifState(t, yes, no) {
13
+ return ofGet(state === t ? yes : no, t);
14
+ }
15
+ return { state, next, states, isState, ifState };
12
16
  }
13
17
  var useA = (item = {}) => {
14
18
  const [state, setState] = useState({ isValid: false, ...item });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/Hooks.ts"],"sourcesContent":["import { isPageList, List, Optional, PageList, PageOptions, toList, toPageList, Validatable } from '@thisisagile/easy';\nimport { useState } from 'react';\n\nexport const useToggle = (initialState = false): [boolean, () => void] => {\n const [state, setState] = useState<boolean>(initialState);\n return [state, () => setState(s => !s)];\n};\n\nexport function useSwitch<T>(...states: T[]): { state: T; next: () => void; states: T[] } {\n const [state, setState] = useState(states[0]);\n const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);\n return { state, next, states };\n}\n\nexport const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {\n const [state, setState] = useState<E>({ isValid: false, ...item } as E);\n return [\n state,\n (e: E): E => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const useAn = useA;\n\nexport const useOptional = <E>(item?: Partial<E>): [E, (e: Optional<E>) => Optional<E>, () => Optional<E>] => {\n const [state, setState] = useState<E>(item as E);\n const set = (e?: Optional<E>): Optional<E> => {\n setState(e as E);\n return e;\n };\n return [state, set, (): Optional<E> => set()];\n};\n\nexport const useEntity = useA;\n\nexport const useList = <E>(...items: E[]): [List<E>, (e: List<E>) => List<E>] => {\n const [state, setState] = useState<List<E>>(toList<E>(...items));\n return [\n state,\n (e: List<E>): List<E> => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const usePageList = <E>(...items: E[]): [PageList<E>, (e: PageList<E>) => PageList<E>] => {\n const [pages, setPages] = useState<PageList<E>>(toPageList<E>(items));\n return [\n pages,\n (e: PageList<E>): PageList<E> => {\n setPages(e);\n return e;\n },\n ];\n};\n\nexport const usePaging = <E>(\n f: (options?: PageOptions) => Promise<PageList<E>>,\n options?: PageOptions\n): [PageList<E>, (options?: PageOptions) => Promise<PageList<E>>, boolean, number, number] => {\n const [list, setList] = usePageList<E>();\n const [skip, setSkip] = useState(options?.skip ?? 0);\n const [take] = useState(options?.take ?? 5);\n const next = (options: PageOptions = { skip, take }) =>\n f(options).then(items => {\n setSkip(skip + take);\n return setList(toPageList(list.add(items), items));\n });\n return [list, next, list.length < (list?.total ?? 0), skip, take];\n};\n\nexport const useGet = <E>(f: () => Promise<E>, initial?: Partial<E>): [E, () => Promise<E>] => {\n const [item, setItem] = useState((initial ?? {}) as E);\n const getter = () =>\n f().then(i => {\n setItem(i);\n return i;\n });\n return [item, getter];\n};\n\nexport const useGetList = <E>(f: () => Promise<List<E>>): [List<E>, () => Promise<PageList<E>>] => {\n const [list, setList] = usePageList<E>();\n const getter = () => f().then(l => setList(isPageList<E>(l) ? l : toPageList(l, { total: l.length })));\n return [list, getter];\n};\n"],"mappings":";AAAA,SAAS,YAAmD,QAAQ,kBAA+B;AACnG,SAAS,gBAAgB;AAElB,IAAM,YAAY,CAAC,eAAe,UAAiC;AACxE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAkB,YAAY;AACxD,SAAO,CAAC,OAAO,MAAM,SAAS,OAAK,CAAC,CAAC,CAAC;AACxC;AAEO,SAAS,aAAgB,QAA0D;AACxF,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,OAAO,CAAC,CAAC;AAC5C,QAAM,OAAO,MAAM,SAAS,OAAK,QAAQ,OAAO,QAAQ,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC;AAChF,SAAO,EAAE,OAAO,MAAM,OAAO;AAC/B;AAEO,IAAM,OAAO,CAAwB,OAAmB,CAAC,MAAsC;AACpG,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAY,EAAE,SAAS,OAAO,GAAG,KAAK,CAAM;AACtE,SAAO;AAAA,IACL;AAAA,IACA,CAAC,MAAY;AACX,eAAS,CAAC;AACV,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,QAAQ;AAEd,IAAM,cAAc,CAAI,SAA+E;AAC5G,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAY,IAAS;AAC/C,QAAM,MAAM,CAAC,MAAiC;AAC5C,aAAS,CAAM;AACf,WAAO;AAAA,EACT;AACA,SAAO,CAAC,OAAO,KAAK,MAAmB,IAAI,CAAC;AAC9C;AAEO,IAAM,YAAY;AAElB,IAAM,UAAU,IAAO,UAAmD;AAC/E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAkB,OAAU,GAAG,KAAK,CAAC;AAC/D,SAAO;AAAA,IACL;AAAA,IACA,CAAC,MAAwB;AACvB,eAAS,CAAC;AACV,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,cAAc,IAAO,UAA+D;AAC/F,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,WAAc,KAAK,CAAC;AACpE,SAAO;AAAA,IACL;AAAA,IACA,CAAC,MAAgC;AAC/B,eAAS,CAAC;AACV,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,YAAY,CACvB,GACA,YAC4F;AAC5F,QAAM,CAAC,MAAM,OAAO,IAAI,YAAe;AACvC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,SAAS,QAAQ,CAAC;AACnD,QAAM,CAAC,IAAI,IAAI,SAAS,SAAS,QAAQ,CAAC;AAC1C,QAAM,OAAO,CAACA,WAAuB,EAAE,MAAM,KAAK,MAChD,EAAEA,QAAO,EAAE,KAAK,WAAS;AACvB,YAAQ,OAAO,IAAI;AACnB,WAAO,QAAQ,WAAW,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC;AAAA,EACnD,CAAC;AACH,SAAO,CAAC,MAAM,MAAM,KAAK,UAAU,MAAM,SAAS,IAAI,MAAM,IAAI;AAClE;AAEO,IAAM,SAAS,CAAI,GAAqB,YAAgD;AAC7F,QAAM,CAAC,MAAM,OAAO,IAAI,SAAU,WAAW,CAAC,CAAO;AACrD,QAAM,SAAS,MACb,EAAE,EAAE,KAAK,OAAK;AACZ,YAAQ,CAAC;AACT,WAAO;AAAA,EACT,CAAC;AACH,SAAO,CAAC,MAAM,MAAM;AACtB;AAEO,IAAM,aAAa,CAAI,MAAqE;AACjG,QAAM,CAAC,MAAM,OAAO,IAAI,YAAe;AACvC,QAAM,SAAS,MAAM,EAAE,EAAE,KAAK,OAAK,QAAQ,WAAc,CAAC,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,SAAO,CAAC,MAAM,MAAM;AACtB;","names":["options"]}
1
+ {"version":3,"sources":["../../src/utils/Hooks.ts"],"sourcesContent":["import { Get, isPageList, List, ofGet, Optional, PageList, PageOptions, Predicate, toList, toPageList, Validatable } from '@thisisagile/easy';\nimport { useState } from 'react';\n\nexport const useToggle = (initialState = false): [boolean, () => void] => {\n const [state, setState] = useState<boolean>(initialState);\n return [state, () => setState(s => !s)];\n};\n\nexport function useSwitch<T>(...states: T[]): {\n state: T;\n next: () => void;\n states: T[];\n isState: Predicate<T>;\n ifState: <U>(t: T, yes: Get<U, T>, no: Get<U, T>) => U;\n} {\n const [state, setState] = useState(states[0]);\n const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);\n const isState = (t: T) => state === t;\n\n function ifState<U>(t: T, yes: Get<U, T>, no: Get<U, T>): U {\n return ofGet(state === t ? yes : no, t);\n }\n\n return { state, next, states, isState, ifState };\n}\n\nexport const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {\n const [state, setState] = useState<E>({ isValid: false, ...item } as E);\n return [\n state,\n (e: E): E => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const useAn = useA;\n\nexport const useOptional = <E>(item?: Partial<E>): [E, (e: Optional<E>) => Optional<E>, () => Optional<E>] => {\n const [state, setState] = useState<E>(item as E);\n const set = (e?: Optional<E>): Optional<E> => {\n setState(e as E);\n return e;\n };\n return [state, set, (): Optional<E> => set()];\n};\n\nexport const useEntity = useA;\n\nexport const useList = <E>(...items: E[]): [List<E>, (e: List<E>) => List<E>] => {\n const [state, setState] = useState<List<E>>(toList<E>(...items));\n return [\n state,\n (e: List<E>): List<E> => {\n setState(e);\n return e;\n },\n ];\n};\n\nexport const usePageList = <E>(...items: E[]): [PageList<E>, (e: PageList<E>) => PageList<E>] => {\n const [pages, setPages] = useState<PageList<E>>(toPageList<E>(items));\n return [\n pages,\n (e: PageList<E>): PageList<E> => {\n setPages(e);\n return e;\n },\n ];\n};\n\nexport const usePaging = <E>(\n f: (options?: PageOptions) => Promise<PageList<E>>,\n options?: PageOptions\n): [PageList<E>, (options?: PageOptions) => Promise<PageList<E>>, boolean, number, number] => {\n const [list, setList] = usePageList<E>();\n const [skip, setSkip] = useState(options?.skip ?? 0);\n const [take] = useState(options?.take ?? 5);\n const next = (options: PageOptions = { skip, take }) =>\n f(options).then(items => {\n setSkip(skip + take);\n return setList(toPageList(list.add(items), items));\n });\n return [list, next, list.length < (list?.total ?? 0), skip, take];\n};\n\nexport const useGet = <E>(f: () => Promise<E>, initial?: Partial<E>): [E, () => Promise<E>] => {\n const [item, setItem] = useState((initial ?? {}) as E);\n const getter = () =>\n f().then(i => {\n setItem(i);\n return i;\n });\n return [item, getter];\n};\n\nexport const useGetList = <E>(f: () => Promise<List<E>>): [List<E>, () => Promise<PageList<E>>] => {\n const [list, setList] = usePageList<E>();\n const getter = () => f().then(l => setList(isPageList<E>(l) ? l : toPageList(l, { total: l.length })));\n return [list, getter];\n};\n"],"mappings":"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","names":["options"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-react",
3
- "version": "17.23.1",
3
+ "version": "17.24.0",
4
4
  "description": "Straightforward library building micro applications in react",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -47,7 +47,7 @@
47
47
  "next-transpile-modules": "^10.0.0"
48
48
  },
49
49
  "dependencies": {
50
- "@thisisagile/easy": "^17.23.1",
50
+ "@thisisagile/easy": "^17.24.0",
51
51
  "react": "^18.3.1",
52
52
  "react-dom": "^18.3.1",
53
53
  "sass": "^1.80.3"
@@ -1,4 +1,4 @@
1
- import { isPageList, List, Optional, PageList, PageOptions, toList, toPageList, Validatable } from '@thisisagile/easy';
1
+ import { Get, isPageList, List, ofGet, Optional, PageList, PageOptions, Predicate, toList, toPageList, Validatable } from '@thisisagile/easy';
2
2
  import { useState } from 'react';
3
3
 
4
4
  export const useToggle = (initialState = false): [boolean, () => void] => {
@@ -6,10 +6,22 @@ export const useToggle = (initialState = false): [boolean, () => void] => {
6
6
  return [state, () => setState(s => !s)];
7
7
  };
8
8
 
9
- export function useSwitch<T>(...states: T[]): { state: T; next: () => void; states: T[] } {
9
+ export function useSwitch<T>(...states: T[]): {
10
+ state: T;
11
+ next: () => void;
12
+ states: T[];
13
+ isState: Predicate<T>;
14
+ ifState: <U>(t: T, yes: Get<U, T>, no: Get<U, T>) => U;
15
+ } {
10
16
  const [state, setState] = useState(states[0]);
11
17
  const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);
12
- return { state, next, states };
18
+ const isState = (t: T) => state === t;
19
+
20
+ function ifState<U>(t: T, yes: Get<U, T>, no: Get<U, T>): U {
21
+ return ofGet(state === t ? yes : no, t);
22
+ }
23
+
24
+ return { state, next, states, isState, ifState };
13
25
  }
14
26
 
15
27
  export const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {