@thisisagile/easy-react 17.22.3 → 17.23.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.
package/dist/index.js CHANGED
@@ -42,6 +42,7 @@ __export(src_exports, {
42
42
  useOptional: () => useOptional,
43
43
  usePageList: () => usePageList,
44
44
  usePaging: () => usePaging,
45
+ useSwitch: () => useSwitch,
45
46
  useToggle: () => useToggle
46
47
  });
47
48
  module.exports = __toCommonJS(src_exports);
@@ -62,6 +63,11 @@ var useToggle = (initialState = false) => {
62
63
  const [state, setState] = (0, import_react2.useState)(initialState);
63
64
  return [state, () => setState((s) => !s)];
64
65
  };
66
+ function useSwitch(...states) {
67
+ const [state, setState] = (0, import_react2.useState)(states[0]);
68
+ const next = () => setState((s) => states[(states.indexOf(s) + 1) % states.length]);
69
+ return { state, next, states };
70
+ }
65
71
  var useA = (item = {}) => {
66
72
  const [state, setState] = (0, import_react2.useState)({ isValid: false, ...item });
67
73
  return [
@@ -147,6 +153,7 @@ function useOnce(f, options) {
147
153
  useOptional,
148
154
  usePageList,
149
155
  usePaging,
156
+ useSwitch,
150
157
  useToggle
151
158
  });
152
159
  //# sourceMappingURL=index.js.map
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 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQ6G;AAAtG,IAAM,KAAiC,CAAC,EAAE,WAAW,SAAS,MAA4B,YAAY,2EAAG,UAAS,IAAM;;;ACR/H,kBAAwC;AACxC,mBAAiC;AAE1B,IAAM,aAAa,CAAC,iBAAyC,oBAAO,aAAAA,QAAM,SAAS,QAAQ,QAAQ,EAAE,OAAO,qBAAS,CAAC;;;ACH7H,IAAAC,eAAmG;AACnG,IAAAC,gBAAyB;AAElB,IAAM,YAAY,CAAC,eAAe,UAAiC;AACxE,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAkB,YAAY;AACxD,SAAO,CAAC,OAAO,MAAM,SAAS,OAAK,CAAC,CAAC,CAAC;AACxC;AAEO,IAAM,OAAO,CAAwB,OAAmB,CAAC,MAAsC;AACpG,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAY,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,QAAI,wBAAY,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,QAAI,4BAAkB,qBAAU,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,QAAI,4BAAsB,yBAAc,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,QAAI,wBAAS,SAAS,QAAQ,CAAC;AACnD,QAAM,CAAC,IAAI,QAAI,wBAAS,SAAS,QAAQ,CAAC;AAC1C,QAAM,OAAO,CAACC,WAAuB,EAAE,MAAM,KAAK,MAChD,EAAEA,QAAO,EAAE,KAAK,WAAS;AACvB,YAAQ,OAAO,IAAI;AACnB,WAAO,YAAQ,yBAAW,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,QAAI,wBAAU,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,YAAQ,yBAAc,CAAC,IAAI,QAAI,yBAAW,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,SAAO,CAAC,MAAM,MAAM;AACtB;;;ACnFA,IAAAC,gBAAoD;AAO7C,SAAS,QAAW,GAAqB,SAAkC;AAChF,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,SAAS,OAAY;AACtD,+BAAU,MAAM,KAAK,EAAE,EAAE,KAAK,OAAK,QAAQ,CAAC,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC;AACnE,SAAO,CAAC,IAAI;AACd;","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 { 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,5 +1,10 @@
1
1
  import { List, Optional, PageList, PageOptions, Validatable } from '@thisisagile/easy';
2
2
  export declare const useToggle: (initialState?: boolean) => [boolean, () => void];
3
+ export declare function useSwitch<T>(...states: T[]): {
4
+ state: T;
5
+ next: () => void;
6
+ states: T[];
7
+ };
3
8
  export declare const useA: <E extends Validatable>(item?: Partial<E>) => [E, (e: E) => E];
4
9
  export declare const useAn: <E extends Validatable>(item?: Partial<E>) => [E, (e: E) => E];
5
10
  export declare const useOptional: <E>(item?: Partial<E>) => [E, (e: Optional<E>) => Optional<E>, () => Optional<E>];
@@ -5,6 +5,11 @@ var useToggle = (initialState = false) => {
5
5
  const [state, setState] = useState(initialState);
6
6
  return [state, () => setState((s) => !s)];
7
7
  };
8
+ function useSwitch(...states) {
9
+ const [state, setState] = useState(states[0]);
10
+ const next = () => setState((s) => states[(states.indexOf(s) + 1) % states.length]);
11
+ return { state, next, states };
12
+ }
8
13
  var useA = (item = {}) => {
9
14
  const [state, setState] = useState({ isValid: false, ...item });
10
15
  return [
@@ -78,6 +83,7 @@ export {
78
83
  useOptional,
79
84
  usePageList,
80
85
  usePaging,
86
+ useSwitch,
81
87
  useToggle
82
88
  };
83
89
  //# sourceMappingURL=Hooks.mjs.map
@@ -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 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,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 { 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-react",
3
- "version": "17.22.3",
3
+ "version": "17.23.1",
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.22.3",
50
+ "@thisisagile/easy": "^17.23.1",
51
51
  "react": "^18.3.1",
52
52
  "react-dom": "^18.3.1",
53
53
  "sass": "^1.80.3"
@@ -6,6 +6,12 @@ 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[] } {
10
+ const [state, setState] = useState(states[0]);
11
+ const next = () => setState(s => states[(states.indexOf(s) + 1) % states.length]);
12
+ return { state, next, states };
13
+ }
14
+
9
15
  export const useA = <E extends Validatable>(item: Partial<E> = {} as Partial<E>): [E, (e: E) => E] => {
10
16
  const [state, setState] = useState<E>({ isValid: false, ...item } as E);
11
17
  return [