@tsed/react-formio 3.0.0-rc.6 → 3.0.0-rc.8
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/interfaces/SubmissionType.d.ts +1 -1
- package/dist/molecules/table/Table.js +31 -31
- package/dist/molecules/table/Table.js.map +1 -1
- package/dist/molecules/table/components/DefaultCellOperations.d.ts +4 -11
- package/dist/molecules/table/components/DefaultCellOperations.js.map +1 -1
- package/dist/molecules/table/components/DefaultOperationButton.d.ts +4 -11
- package/dist/molecules/table/components/DefaultOperationButton.js.map +1 -1
- package/dist/molecules/table/hooks/useTable.d.ts +4 -11
- package/dist/molecules/table/hooks/useTable.js.map +1 -1
- package/dist/organisms/form/Form.d.ts +3 -11
- package/dist/organisms/form/Form.js.map +1 -1
- package/dist/organisms/form/useForm.d.ts +1 -1
- package/dist/organisms/form/useForm.js.map +1 -1
- package/dist/organisms/views/FormViews.d.ts +4 -11
- package/dist/organisms/views/FormViews.js.map +1 -1
- package/package.json +3 -3
- package/src/interfaces/SubmissionType.ts +1 -1
- package/src/molecules/table/Table.tsx +51 -49
- package/src/molecules/table/components/DefaultCellOperations.tsx +4 -3
- package/src/molecules/table/components/DefaultOperationButton.tsx +4 -4
- package/src/molecules/table/hooks/useTable.tsx +4 -4
- package/src/organisms/form/Form.tsx +3 -3
- package/src/organisms/form/useForm.ts +1 -1
- package/src/organisms/views/FormViews.tsx +6 -9
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { jsxs as l, jsx as
|
|
1
|
+
import { jsxs as l, jsx as a } from "react/jsx-runtime";
|
|
2
2
|
import { createElement as h } from "react";
|
|
3
|
-
import { flexRender as
|
|
4
|
-
import { c as
|
|
3
|
+
import { flexRender as C } from "@tanstack/react-table";
|
|
4
|
+
import { c as b } from "../../chunks/index.js";
|
|
5
5
|
import { getComponent as r } from "../../registries/components.js";
|
|
6
|
-
import { useTable as
|
|
7
|
-
function
|
|
6
|
+
import { useTable as x } from "./hooks/useTable.js";
|
|
7
|
+
function y({
|
|
8
8
|
className: c,
|
|
9
9
|
enableFooter: g,
|
|
10
10
|
children: m,
|
|
11
|
-
...
|
|
11
|
+
...o
|
|
12
12
|
}) {
|
|
13
|
-
const { tableInstance:
|
|
14
|
-
return /* @__PURE__ */ l("div", { className:
|
|
15
|
-
/* @__PURE__ */ l("table", { className: "table table-striped table-hover", children: [
|
|
16
|
-
/* @__PURE__ */
|
|
13
|
+
const { tableInstance: n, i18n: d } = x(o), u = r("CellHeader"), P = r("CellFooter"), p = r("Pagination"), { pagination: i } = n.getState();
|
|
14
|
+
return /* @__PURE__ */ l("div", { className: b("table-group", c), children: [
|
|
15
|
+
/* @__PURE__ */ a("div", { className: "table-group-body", children: /* @__PURE__ */ l("table", { className: "table table-striped table-hover", children: [
|
|
16
|
+
/* @__PURE__ */ a("thead", { children: n.getHeaderGroups().map((t) => /* @__PURE__ */ a("tr", { children: t.headers.map((e) => {
|
|
17
17
|
const s = e.column.getIsSorted();
|
|
18
|
-
return /* @__PURE__ */
|
|
18
|
+
return /* @__PURE__ */ a(
|
|
19
19
|
"th",
|
|
20
20
|
{
|
|
21
21
|
"data-testid": `head-cell-${e.id}`,
|
|
22
22
|
"aria-sort": s ? s === "asc" ? "ascending" : "descending" : "none",
|
|
23
|
-
children: e.isPlaceholder ? null : /* @__PURE__ */
|
|
23
|
+
children: e.isPlaceholder ? null : /* @__PURE__ */ a(u, { header: e, i18n: d })
|
|
24
24
|
},
|
|
25
25
|
e.id
|
|
26
26
|
);
|
|
27
27
|
}) }, t.id)) }),
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
g && /* @__PURE__ */
|
|
30
|
-
] }),
|
|
31
|
-
/* @__PURE__ */ l("div", { className: "
|
|
32
|
-
|
|
28
|
+
/* @__PURE__ */ a("tbody", { children: n.getRowModel().rows.map((t) => /* @__PURE__ */ a("tr", { "data-testid": `body-row-${t.id}`, children: t.getVisibleCells().filter((e) => !e.column.columnDef.meta?.hidden).map((e) => /* @__PURE__ */ h("td", { ...e.column.columnDef?.meta?.cellProps, key: e.id, "data-testid": `body-cell-${e.id}` }, C(e.column.columnDef.cell, e.getContext()))) }, t.id)) }),
|
|
29
|
+
g && /* @__PURE__ */ a("tfoot", { children: n.getFooterGroups().map((t) => /* @__PURE__ */ a("tr", { children: t.headers.map((e) => /* @__PURE__ */ a("th", { children: e.isPlaceholder ? null : /* @__PURE__ */ a(P, { header: e, i18n: d }) }, e.id)) }, t.id)) })
|
|
30
|
+
] }) }),
|
|
31
|
+
/* @__PURE__ */ l("div", { className: "table-group-footer", children: [
|
|
32
|
+
o.data.length && i ? /* @__PURE__ */ a(
|
|
33
33
|
p,
|
|
34
34
|
{
|
|
35
35
|
className: "flex-1",
|
|
36
|
-
canNextPage:
|
|
37
|
-
canPreviousPage:
|
|
38
|
-
pageIndex:
|
|
39
|
-
pageSize:
|
|
40
|
-
pageSizes:
|
|
41
|
-
i18n:
|
|
42
|
-
pageCount:
|
|
43
|
-
rowCount:
|
|
44
|
-
onPageIndexChange: (t) =>
|
|
45
|
-
onClickPreviousPage: () =>
|
|
46
|
-
onClickNextPage: () =>
|
|
47
|
-
onPageSizeChange: (t) =>
|
|
36
|
+
canNextPage: n.getCanNextPage(),
|
|
37
|
+
canPreviousPage: n.getCanPreviousPage(),
|
|
38
|
+
pageIndex: i.pageIndex,
|
|
39
|
+
pageSize: i.pageSize,
|
|
40
|
+
pageSizes: o.pageSizes,
|
|
41
|
+
i18n: o.i18n,
|
|
42
|
+
pageCount: n.getPageCount(),
|
|
43
|
+
rowCount: o.rowCount,
|
|
44
|
+
onPageIndexChange: (t) => n.setPageIndex(t),
|
|
45
|
+
onClickPreviousPage: () => n.previousPage(),
|
|
46
|
+
onClickNextPage: () => n.nextPage(),
|
|
47
|
+
onPageSizeChange: (t) => n.setPageSize(t)
|
|
48
48
|
}
|
|
49
49
|
) : null,
|
|
50
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ a("div", { children: m })
|
|
51
51
|
] })
|
|
52
52
|
] });
|
|
53
53
|
}
|
|
54
54
|
export {
|
|
55
|
-
|
|
55
|
+
y as Table
|
|
56
56
|
};
|
|
57
57
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../registries/components\";\nimport type { Pagination as DefaultPagination } from \"../pagination/Pagination\";\nimport type { DefaultCellFooter } from \"./components/DefaultCellFooter\";\nimport type { DefaultCellHeader } from \"./components/DefaultCellHeader\";\nimport { useTable, UseTableProps } from \"./hooks/useTable\";\n\nexport interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {\n className?: string;\n\n enableFooter?: boolean;\n\n pageSizes?: number[];\n}\n\nexport function Table<Data extends object = JSONRecord>({\n className,\n enableFooter,\n children,\n ...props\n}: PropsWithChildren<TableProps<Data>>) {\n const { tableInstance, i18n } = useTable<Data>(props);\n const CellHeader = getComponent<typeof DefaultCellHeader>(\"CellHeader\");\n const CellFooter = getComponent<typeof DefaultCellFooter>(\"CellFooter\");\n const Pagination = getComponent<typeof DefaultPagination>(\"Pagination\");\n\n const { pagination } = tableInstance.getState();\n\n return (\n <div className={cx(\"table-group
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../registries/components\";\nimport type { Pagination as DefaultPagination } from \"../pagination/Pagination\";\nimport type { DefaultCellFooter } from \"./components/DefaultCellFooter\";\nimport type { DefaultCellHeader } from \"./components/DefaultCellHeader\";\nimport { useTable, UseTableProps } from \"./hooks/useTable\";\n\nexport interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {\n className?: string;\n\n enableFooter?: boolean;\n\n pageSizes?: number[];\n}\n\nexport function Table<Data extends object = JSONRecord>({\n className,\n enableFooter,\n children,\n ...props\n}: PropsWithChildren<TableProps<Data>>) {\n const { tableInstance, i18n } = useTable<Data>(props);\n const CellHeader = getComponent<typeof DefaultCellHeader>(\"CellHeader\");\n const CellFooter = getComponent<typeof DefaultCellFooter>(\"CellFooter\");\n const Pagination = getComponent<typeof DefaultPagination>(\"Pagination\");\n\n const { pagination } = tableInstance.getState();\n\n return (\n <div className={cx(\"table-group\", className)}>\n <div className='table-group-body'>\n <table className='table table-striped table-hover'>\n <thead>\n {tableInstance.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sort = header.column.getIsSorted();\n return (\n <th\n data-testid={`head-cell-${header.id}`}\n key={header.id}\n aria-sort={sort ? (sort === \"asc\" ? \"ascending\" : \"descending\") : \"none\"}\n >\n {header.isPlaceholder ? null : <CellHeader header={header} i18n={i18n} />}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody>\n {tableInstance.getRowModel().rows.map((row) => {\n return (\n <tr key={row.id} data-testid={`body-row-${row.id}`}>\n {row\n .getVisibleCells()\n .filter((cell) => !cell.column.columnDef.meta?.hidden)\n .map((cell) => {\n return (\n <td {...cell.column.columnDef?.meta?.cellProps} key={cell.id} data-testid={`body-cell-${cell.id}`}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n {enableFooter && (\n <tfoot>\n {tableInstance.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>\n ))}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n <div className='table-group-footer'>\n {props.data.length && pagination ? (\n <Pagination\n className={\"flex-1\"}\n canNextPage={tableInstance.getCanNextPage()}\n canPreviousPage={tableInstance.getCanPreviousPage()}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizes={props.pageSizes}\n i18n={props.i18n}\n pageCount={tableInstance.getPageCount()}\n rowCount={props.rowCount}\n onPageIndexChange={(page) => tableInstance.setPageIndex(page)}\n onClickPreviousPage={() => tableInstance.previousPage()}\n onClickNextPage={() => tableInstance.nextPage()}\n onPageSizeChange={(pageSize) => tableInstance.setPageSize(pageSize)}\n />\n ) : null}\n <div>{children}</div>\n </div>\n </div>\n );\n}\n"],"names":["Table","className","enableFooter","children","props","tableInstance","i18n","useTable","CellHeader","getComponent","CellFooter","Pagination","pagination","cx","jsx","jsxs","headerGroup","header","sort","row","cell","createElement","flexRender","footerGroup","page","pageSize"],"mappings":"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"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { CellContext } from '@tanstack/react-table';
|
|
2
|
-
import { CellMetadata,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} = {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
}> {
|
|
2
|
+
import { CellMetadata, Operation } from '../../../interfaces';
|
|
3
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
4
|
+
export interface DefaultCellOperationsProps<Data extends object = JSONRecord> {
|
|
8
5
|
info: CellContext<Data, unknown>;
|
|
9
6
|
operations: Operation<Data>[];
|
|
10
7
|
metadata?: CellMetadata;
|
|
11
8
|
i18n: (i18n: string) => string;
|
|
12
9
|
onClick?: (data: any, operation: Operation<Data>) => void;
|
|
13
10
|
}
|
|
14
|
-
export declare function DefaultCellOperations<Data extends {
|
|
15
|
-
[key: string]: JSON;
|
|
16
|
-
} = {
|
|
17
|
-
[key: string]: JSON;
|
|
18
|
-
}>({ info, metadata, operations, i18n, onClick }: DefaultCellOperationsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function DefaultCellOperations<Data extends object = JSONRecord>({ info, metadata, operations, i18n, onClick }: DefaultCellOperationsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultCellOperations.js","sources":["../../../../src/molecules/table/components/DefaultCellOperations.tsx"],"sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\n\nimport type { CellMetadata,
|
|
1
|
+
{"version":3,"file":"DefaultCellOperations.js","sources":["../../../../src/molecules/table/components/DefaultCellOperations.tsx"],"sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\n\nimport type { CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { getComponent, registerComponent } from \"../../../registries/components\";\nimport type { DefaultOperationButton } from \"./DefaultOperationButton\";\n\nexport interface DefaultCellOperationsProps<Data extends object = JSONRecord> {\n info: CellContext<Data, unknown>;\n operations: Operation<Data>[];\n metadata?: CellMetadata;\n i18n: (i18n: string) => string;\n onClick?: (data: any, operation: Operation<Data>) => void;\n}\n\nexport function DefaultCellOperations<Data extends object = JSONRecord>({\n info,\n metadata,\n operations,\n i18n,\n onClick\n}: DefaultCellOperationsProps<Data>) {\n const Button = getComponent<typeof DefaultOperationButton<Data>>(\"OperationButton\");\n return (\n <div className='btn-group'>\n {operations\n .filter(({ permissionsResolver, ...operation }) => {\n return !permissionsResolver || permissionsResolver(info.row.original, metadata || {}, operation);\n })\n .map((operation) => {\n return (\n <Button\n data-testid={`operation-${info.row.id}-${operation.action}`}\n key={operation.action}\n operation={operation}\n metadata={metadata}\n info={info}\n i18n={i18n}\n onClick={() => {\n onClick?.(info.row.original, operation);\n }}\n />\n );\n })}\n </div>\n );\n}\n\nregisterComponent(\"CellOperations\", DefaultCellOperations);\n"],"names":["DefaultCellOperations","info","metadata","operations","i18n","onClick","Button","getComponent","jsx","permissionsResolver","operation","registerComponent"],"mappings":";;AAeO,SAASA,EAAwD;AAAA,EACtE,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AACF,GAAqC;AACnC,QAAMC,IAASC,EAAkD,iBAAiB;AAClF,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,aACZ,UAAAL,EACE,OAAO,CAAC,EAAE,qBAAAM,GAAqB,GAAGC,EAAA,MAC1B,CAACD,KAAuBA,EAAoBR,EAAK,IAAI,UAAUC,KAAY,CAAA,GAAIQ,CAAS,CAChG,EACA,IAAI,CAACA,MAEF,gBAAAF;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,eAAa,aAAaL,EAAK,IAAI,EAAE,IAAIS,EAAU,MAAM;AAAA,MAEzD,WAAAA;AAAA,MACA,UAAAR;AAAA,MACA,MAAAD;AAAA,MACA,MAAAG;AAAA,MACA,SAAS,MAAM;AACb,QAAAC,IAAUJ,EAAK,IAAI,UAAUS,CAAS;AAAA,MACxC;AAAA,IAAA;AAAA,IAPKA,EAAU;AAAA,EAAA,CAUpB,EAAA,CACL;AAEJ;AAEAC,EAAkB,kBAAkBX,CAAqB;"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import { CellContext } from '@tanstack/react-table';
|
|
2
2
|
import { HTMLAttributes } from 'react';
|
|
3
|
-
import { CellMetadata,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} = {
|
|
7
|
-
[key: string]: JSON;
|
|
8
|
-
}> extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
3
|
+
import { CellMetadata, Operation } from '../../../interfaces';
|
|
4
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
5
|
+
export interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
9
6
|
operation: Operation<Data>;
|
|
10
7
|
info: CellContext<Data, unknown>;
|
|
11
8
|
metadata?: CellMetadata;
|
|
12
9
|
onClick: () => void;
|
|
13
10
|
i18n?: (i18n: string) => string;
|
|
14
11
|
}
|
|
15
|
-
export declare function DefaultOperationButton<Data extends
|
|
16
|
-
[key: string]: JSON;
|
|
17
|
-
} = {
|
|
18
|
-
[key: string]: JSON;
|
|
19
|
-
}>(props: OperationButtonProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, type
|
|
1
|
+
{"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { registerComponent } from \"../../../registries/components\";\nimport { iconClass } from \"../../../utils/iconClass\";\nimport { stopPropagationWrapper } from \"../../../utils/stopPropagationWrapper\";\n\nexport interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n operation: Operation<Data>;\n info: CellContext<Data, unknown>;\n metadata?: CellMetadata;\n onClick: () => void;\n i18n?: (i18n: string) => string;\n}\n\nexport function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { i18n = (f: string) => f, onClick, operation, info, ...extraProps } = props;\n const { className = \"btn\", buttonSize = \"xs\", buttonType = \"primary\", buttonOutline, action, title = \"\", icon = \"\" } = operation;\n\n return (\n <button\n {...extraProps}\n aria-label={\"Operation button: \" + (title || action)}\n className={cx(className, [\"btn\", buttonOutline && \"outline\", buttonType].filter(Boolean).join(\"-\"), `btn-${buttonSize}`)}\n onClick={stopPropagationWrapper(() => onClick())}\n >\n {icon ? (\n <>\n <i className={iconClass(undefined, icon)} /> {title && \" \"}\n </>\n ) : null}\n {title && <span className={icon && title ? \"ml-1\" : \"\"}>{i18n(title)}</span>}\n </button>\n );\n}\n\nregisterComponent(\"OperationButton\", DefaultOperationButton);\n"],"names":["DefaultOperationButton","props","i18n","onClick","operation","info","extraProps","className","buttonSize","buttonType","buttonOutline","action","title","icon","jsxs","cx","stopPropagationWrapper","Fragment","jsx","iconClass","registerComponent"],"mappings":";;;;;AAkBO,SAASA,EAAyDC,GAAmC;AAE1G,QAAM,EAAE,MAAAC,IAAO,CAAC,MAAc,GAAG,SAAAC,GAAS,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,IAAeL,GACvE,EAAE,WAAAM,IAAY,OAAO,YAAAC,IAAa,MAAM,YAAAC,IAAa,WAAW,eAAAC,GAAe,QAAAC,GAAQ,OAAAC,IAAQ,IAAI,MAAAC,IAAO,OAAOT;AAEvH,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,cAAY,wBAAwBM,KAASD;AAAA,MAC7C,WAAWI,EAAGR,GAAW,CAAC,OAAOG,KAAiB,WAAWD,CAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAOD,CAAU,EAAE;AAAA,MACvH,SAASQ,EAAuB,MAAMb,GAAS;AAAA,MAE9C,UAAA;AAAA,QAAAU,IACC,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAWC,EAAU,QAAWN,CAAI,GAAG;AAAA,UAAE;AAAA,UAAED,KAAS;AAAA,QAAA,EAAA,CACzD,IACE;AAAA,QACHA,KAAS,gBAAAM,EAAC,QAAA,EAAK,WAAWL,KAAQD,IAAQ,SAAS,IAAK,UAAAV,EAAKU,CAAK,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;AAEAQ,EAAkB,mBAAmBpB,CAAsB;"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { TableOptions, TableState } from '@tanstack/react-table';
|
|
2
|
-
import { FormOptions,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} = {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
}> extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
2
|
+
import { FormOptions, Operation } from '../../../interfaces';
|
|
3
|
+
import { JSONRecord } from '../../../interfaces/JSONRecord.js';
|
|
4
|
+
export interface UseTableProps<Data extends object = JSONRecord> extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
8
5
|
operations: Operation<Data>[];
|
|
9
6
|
metadata?: Record<string, unknown>;
|
|
10
7
|
i18n?: FormOptions["i18n"];
|
|
@@ -13,11 +10,7 @@ export interface UseTableProps<Data extends {
|
|
|
13
10
|
onChange?: (query: TableState) => void;
|
|
14
11
|
pageSizes?: number[];
|
|
15
12
|
}
|
|
16
|
-
export declare function useTable<Data extends {
|
|
17
|
-
[key: string]: JSON;
|
|
18
|
-
} = {
|
|
19
|
-
[key: string]: JSON;
|
|
20
|
-
}>(props: UseTableProps<Data>): {
|
|
13
|
+
export declare function useTable<Data extends object = JSONRecord>(props: UseTableProps<Data>): {
|
|
21
14
|
i18n: (key: string, defaultValue?: string) => string;
|
|
22
15
|
tableInstance: import('@tanstack/table-core').Table<Data>;
|
|
23
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.js","sources":["../../../../src/molecules/table/hooks/useTable.tsx"],"sourcesContent":["import {\n type ColumnDef,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type TableOptions,\n type TableState,\n useReactTable\n} from \"@tanstack/react-table\";\nimport { useEffect } from \"react\";\n\nimport { useI18n } from \"../../../hooks/useI18n.js\";\nimport { type FormOptions, type
|
|
1
|
+
{"version":3,"file":"useTable.js","sources":["../../../../src/molecules/table/hooks/useTable.tsx"],"sourcesContent":["import {\n type ColumnDef,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type TableOptions,\n type TableState,\n useReactTable\n} from \"@tanstack/react-table\";\nimport { useEffect } from \"react\";\n\nimport { useI18n } from \"../../../hooks/useI18n.js\";\nimport { type FormOptions, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCellOperations } from \"../components/DefaultCellOperations\";\n\nexport interface UseTableProps<Data extends object = JSONRecord> extends Omit<TableOptions<Data>, \"getCoreRowModel\" | \"onClick\"> {\n operations: Operation<Data>[];\n metadata?: Record<string, unknown>;\n i18n?: FormOptions[\"i18n\"];\n onClick?: (data: Data, operation: Operation<Data>) => void;\n manualFaceted?: boolean;\n onChange?: (query: TableState) => void;\n pageSizes?: number[];\n}\n\nexport function useTable<Data extends object = JSONRecord>(props: UseTableProps<Data>) {\n const Operations = getComponent<typeof DefaultCellOperations<Data>>(\"CellOperations\");\n const { t } = useI18n(props.i18n);\n\n // const [pagination, setPagination] = useState({\n // pageIndex: 0, //initial page index\n // pageSize: 10 //default page size\n // });\n\n const operations = props.operations.length\n ? ([\n {\n id: \"operations\",\n header: t(\"Operations\"),\n cell: (info) => (\n <Operations info={info} operations={props.operations} metadata={props.metadata} onClick={props.onClick} i18n={t} />\n )\n }\n ] satisfies ColumnDef<Data>[])\n : [];\n\n const tableInstance = useReactTable({\n ...props,\n columns: [...props.columns, ...operations],\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFilteredRowModel: !props.manualFiltering ? getFilteredRowModel() : undefined,\n getSortedRowModel: !props.manualSorting ? getSortedRowModel() : undefined,\n getFacetedRowModel: !props.manualFaceted ? getFacetedRowModel() : undefined, // client-side faceting\n getFacetedUniqueValues: !props.manualFaceted ? getFacetedUniqueValues() : undefined // generate unique values for select filter/autocomplete\n });\n\n const { columnFilters, sorting, pagination, columnOrder, columnPinning, columnSizing, columnSizingInfo, columnVisibility, globalFilter } =\n tableInstance.getState();\n\n useEffect(() => {\n if (props.onChange) {\n props.onChange(tableInstance.getState());\n }\n }, [columnFilters, sorting, pagination, columnOrder, columnPinning, columnSizing, columnSizingInfo, columnVisibility, globalFilter]);\n\n return {\n i18n: t,\n tableInstance\n };\n}\n"],"names":["useTable","props","Operations","getComponent","useI18n","operations","info","jsx","tableInstance","useReactTable","getCoreRowModel","getPaginationRowModel","getFilteredRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","columnFilters","sorting","pagination","columnOrder","columnPinning","columnSizing","columnSizingInfo","columnVisibility","globalFilter","useEffect"],"mappings":";;;;;AA8BO,SAASA,EAA2CC,GAA4B;AACrF,QAAMC,IAAaC,EAAiD,gBAAgB,GAC9E,EAAE,EAAA,IAAMC,EAAQH,EAAM,IAAI,GAO1BI,IAAaJ,EAAM,WAAW,SAC/B;AAAA,IACC;AAAA,MACE,IAAI;AAAA,MACJ,QAAQ,EAAE,YAAY;AAAA,MACtB,MAAM,CAACK,MACL,gBAAAC,EAACL,GAAA,EAAW,MAAAI,GAAY,YAAYL,EAAM,YAAY,UAAUA,EAAM,UAAU,SAASA,EAAM,SAAS,MAAM,EAAA,CAAG;AAAA,IAAA;AAAA,EAErH,IAEF,CAAA,GAEEO,IAAgBC,EAAc;AAAA,IAClC,GAAGR;AAAA,IACH,SAAS,CAAC,GAAGA,EAAM,SAAS,GAAGI,CAAU;AAAA,IACzC,iBAAiBK,EAAA;AAAA,IACjB,uBAAuBC,EAAA;AAAA,IACvB,qBAAsBV,EAAM,kBAA0C,SAAxBW;IAC9C,mBAAoBX,EAAM,gBAAsC,SAAtBY;IAC1C,oBAAqBZ,EAAM,gBAAuC,SAAvBa;;IAC3C,wBAAyBb,EAAM,gBAA2C,SAA3Bc;;EAA2B,CAC3E,GAEK,EAAE,eAAAC,GAAe,SAAAC,GAAS,YAAAC,GAAY,aAAAC,GAAa,eAAAC,GAAe,cAAAC,GAAc,kBAAAC,GAAkB,kBAAAC,GAAkB,cAAAC,MACxHhB,EAAc,SAAA;AAEhB,SAAAiB,EAAU,MAAM;AACd,IAAIxB,EAAM,YACRA,EAAM,SAASO,EAAc,UAAU;AAAA,EAE3C,GAAG,CAACQ,GAAeC,GAASC,GAAYC,GAAaC,GAAeC,GAAcC,GAAkBC,GAAkBC,CAAY,CAAC,GAE5H;AAAA,IACL,MAAM;AAAA,IACN,eAAAhB;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
2
2
|
import { UseFormProps } from './useForm';
|
|
3
3
|
declare class CSSProperties {
|
|
4
4
|
}
|
|
5
|
-
export interface FormProps<Data extends {
|
|
6
|
-
[key: string]: JSON;
|
|
7
|
-
} = {
|
|
8
|
-
[key: string]: JSON;
|
|
9
|
-
}> extends UseFormProps<Data> {
|
|
5
|
+
export interface FormProps<Data extends object = JSONRecord> extends UseFormProps<Data> {
|
|
10
6
|
["data-testid"]?: string;
|
|
11
7
|
/**
|
|
12
8
|
*
|
|
@@ -14,9 +10,5 @@ export interface FormProps<Data extends {
|
|
|
14
10
|
className?: string;
|
|
15
11
|
style?: CSSProperties;
|
|
16
12
|
}
|
|
17
|
-
export declare function Form<Data extends {
|
|
18
|
-
[key: string]: JSON;
|
|
19
|
-
} = {
|
|
20
|
-
[key: string]: JSON;
|
|
21
|
-
}>({ style, className, "data-testid": dataTestId, ...props }: Partial<FormProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function Form<Data extends object = JSONRecord>({ style, className, "data-testid": dataTestId, ...props }: Partial<FormProps<Data>>): import("react/jsx-runtime").JSX.Element;
|
|
22
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../../src/organisms/form/Form.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../../src/organisms/form/Form.tsx"],"sourcesContent":["import type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { useForm, UseFormProps } from \"./useForm\";\n\nclass CSSProperties {}\n\nexport interface FormProps<Data extends object = JSONRecord> extends UseFormProps<Data> {\n [\"data-testid\"]?: string;\n /**\n *\n */\n className?: string;\n\n style?: CSSProperties;\n}\n\nexport function Form<Data extends object = JSONRecord>({\n style,\n className,\n \"data-testid\": dataTestId = \"formio-container\",\n ...props\n}: Partial<FormProps<Data>>) {\n const { element } = useForm<Data>(props);\n\n return (\n <div>\n <div data-testid={dataTestId} style={style} className={className} ref={element} />\n </div>\n );\n}\n"],"names":["Form","style","className","dataTestId","props","element","useForm","jsx"],"mappings":";;AAeO,SAASA,EAAuC;AAAA,EACrD,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,GAA6B;AAC3B,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAcF,CAAK;AAEvC,SACE,gBAAAG,EAAC,OAAA,EACC,UAAA,gBAAAA,EAAC,OAAA,EAAI,eAAaJ,GAAY,OAAAF,GAAc,WAAAC,GAAsB,KAAKG,EAAA,CAAS,EAAA,CAClF;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Form } from '@formio/js';
|
|
2
2
|
import { MutableRefObject } from 'react';
|
|
3
3
|
import { ChangedSubmission, ComponentType, FormOptions, FormType, SubmissionType } from '../../interfaces';
|
|
4
|
-
import { JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
4
|
+
import { JSON, JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
5
5
|
import { FormCustomEvent } from './types';
|
|
6
6
|
type Webform = any;
|
|
7
7
|
type EventError = string | Error | Error[] | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.js","sources":["../../../../../node_modules/eventemitter2/lib/eventemitter2.js","../../../src/organisms/form/useForm.ts"],"sourcesContent":["/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import { Form } from \"@formio/js\";\nimport { EventEmitter2 } from \"eventemitter2\";\nimport { type MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nimport type { ChangedSubmission, ComponentType, FormOptions, FormType, SubmissionType } from \"../../interfaces\";\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { FormCustomEvent } from \"./types\";\n\ntype Webform = any;\ntype EventError = string | Error | Error[] | { message: string } | { message: string }[];\n\nexport interface UseFormProps<Data extends object = JSONRecord> {\n src?: string;\n url?: string;\n form?: FormType;\n submission?: SubmissionType<Data>;\n options?: FormOptions;\n FormClass?: typeof Form;\n onFormReady?: (instance: Webform) => void;\n onPrevPage?: (page: number, submission: SubmissionType<Data>) => void;\n onNextPage?: (page: number, submission: SubmissionType<Data>) => void;\n onCancelSubmit?: () => void;\n onCancelComponent?: (component: ComponentType) => void;\n onChange?: (value: ChangedSubmission<Data>, flags: any, modified: boolean) => void;\n onCustomEvent?: (event: FormCustomEvent) => void;\n onComponentChange?: (changed: { instance: Webform; component: Webform; value: any; flags: any }) => void;\n onSubmit?: (submission: SubmissionType<Data>, saved?: boolean) => void;\n onAsyncSubmit?: (submission: SubmissionType<Data>) => void;\n onSubmitDone?: (submission: SubmissionType<Data>) => void;\n onSubmitError?: (error: EventError) => void;\n onFormLoad?: (form: JSON) => void;\n onError?: (error: EventError | false) => void;\n onRender?: (param: any) => void;\n onAttach?: (param: any) => void;\n onBuild?: (param: any) => void;\n onFocus?: (instance: Webform) => void;\n onBlur?: (instance: Webform) => void;\n onInitialized?: () => void;\n onLanguageChanged?: () => void;\n onBeforeSetSubmission?: (submission: SubmissionType<Data>) => void;\n onSaveDraftBegin?: () => void;\n onSaveDraft?: (submission: SubmissionType<Data>) => void;\n onRestoreDraft?: (submission: SubmissionType<Data> | null) => void;\n onSubmissionDeleted?: (submission: SubmissionType<Data>) => void;\n onRequestDone?: () => void;\n otherEvents?: {\n [event: string]: (...args: any[]) => void;\n };\n}\n\nconst getDefaultEmitter = () => {\n return new EventEmitter2({\n wildcard: false,\n maxListeners: 0\n });\n};\n\nfunction onAnyEvent<Data extends object = JSONRecord>(\n handlers: Omit<UseFormProps<Data>, \"src\" | \"url\" | \"form\" | \"submission\" | \"options\" | \"formReady\" | \"formioform\" | \"Formio\">,\n ...args: [string, ...any[]]\n) {\n const [event, ...outputArgs] = args;\n\n if (event.startsWith(\"formio.\")) {\n const funcName = `on${event.charAt(7).toUpperCase()}${event.slice(8)}`;\n\n if (funcName in handlers) {\n (handlers as any)[funcName](...outputArgs);\n }\n }\n if (handlers.otherEvents && handlers.otherEvents[event]) {\n handlers.otherEvents[event](...outputArgs);\n }\n}\n\nconst createWebformInstance = async (\n FormConstructor: any | undefined,\n formSource: any,\n element: HTMLDivElement,\n options: FormOptions = {}\n) => {\n if (!options?.events) {\n options.events = getDefaultEmitter();\n }\n\n if (typeof formSource !== \"string\") {\n formSource = structuredClone(formSource);\n }\n\n const promise = new FormConstructor(element, formSource, options);\n const webform = await promise.ready;\n\n webform.toJSON = () => ({ __WEBFORM__: true });\n\n return webform;\n};\n\n// Define effective props (aka I want to rename these props but also maintain backwards compatibility)\nfunction getEffectiveProps<Data extends object = JSONRecord>(props: UseFormProps<Data>) {\n const { FormClass = Form, form, src, url, options, submission, onFormReady, onAsyncSubmit, ...handlers } = props;\n\n return {\n FormClass,\n formSource: form !== undefined ? form : src,\n handlers,\n options,\n url,\n submission,\n onFormReady,\n onAsyncSubmit\n };\n}\n\nfunction createCustomValidation(customAction: any, ref: MutableRefObject<Webform | null>) {\n return async (submission: SubmissionType, next: (error: null | Error) => void) => {\n try {\n const updatedSubmission = await customAction(submission);\n\n next(null);\n\n ref.current.onSubmit(updatedSubmission, true);\n } catch (er: any) {\n next(er.errors || er);\n } finally {\n ref.current.submissionInProcess = false;\n }\n };\n}\n\nexport function useForm<Data extends object = JSONRecord>(props: UseFormProps<Data>) {\n const webformRef = useRef<Webform | null>(null);\n const renderElement = useRef<HTMLDivElement | null>(null);\n const { formSource, FormClass, options, url, submission, handlers, onFormReady, onAsyncSubmit } = getEffectiveProps(props);\n\n const [instanceIsReady, setInstanceIsReady] = useState(false);\n\n useEffect(() => {\n let ignore = false;\n const createInstance = async () => {\n if (renderElement.current === null) {\n console.warn(\"Form element not found\");\n return;\n }\n\n if (typeof formSource === \"undefined\") {\n console.warn(\"Form source not found\");\n return;\n }\n\n let opts = options || {};\n\n if (onAsyncSubmit) {\n opts.hooks = opts.hooks || {};\n opts.hooks.customValidation = createCustomValidation(props.onAsyncSubmit, webformRef);\n }\n\n const webform = await createWebformInstance(FormClass, formSource, renderElement.current, options);\n\n if (webform) {\n if (ignore) {\n webform.destroy(true);\n return;\n }\n\n if (typeof formSource === \"string\") {\n webform.src = formSource;\n } else if (typeof formSource === \"object\") {\n if (submission) {\n webform.setSubmission(submission);\n }\n\n if (url) {\n webform.url = url;\n }\n }\n\n if (onFormReady) {\n onFormReady(webform);\n }\n\n renderElement.current.className = \"formio-form-ready\";\n webformRef.current = webform;\n setInstanceIsReady(true);\n } else {\n console.warn(\"Failed to create form instance\");\n }\n };\n\n createInstance();\n\n return () => {\n ignore = true;\n if (webformRef.current) {\n webformRef.current.destroy(true);\n }\n };\n }, [formSource, url]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.onAny((...args: [string, ...any[]]) => {\n instanceIsReady && onAnyEvent(handlers, ...args);\n });\n }\n\n return () => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.offAny((...args: [string, ...any[]]) => onAnyEvent(handlers, ...args));\n }\n };\n }, [instanceIsReady, handlers]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && submission) {\n webformRef.current.setSubmission(submission);\n }\n }, [instanceIsReady, submission]);\n\n return {\n element: renderElement,\n instance: webformRef.current\n };\n}\n"],"names":["undefined","hasOwnProperty","isArray","obj","defaultMaxListeners","nextTickSupported","symbolsSupported","reflectSupported","setImmediateSupported","_setImmediate","ownKeys","arr","init","configure","conf","logPossibleMemoryLeak","count","eventName","errorMsg","e","toArray","a","b","c","n","toObject","keys","values","key","len","valuesCount","i","TargetObserver","emitter","target","options","on","off","_observers","event","localEvent","reducer","observer","listeners","handler","args","eventObj","result","_event","events","clearRefs","index","findTargetIndex","resolveOptions","schema","reducers","allowUnknown","computedOptions","length","option","value","reject","reason","constructorReducer","makeTypeReducer","types","message","firstType","secondType","v","kind","functionReducer","objectFunctionReducer","makeCancelablePromise","Promise","executor","isCancelable","callbacks","timer","subscriptionClosed","promise","resolve","onCancel","cleanup","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","type","tree","typeLength","ns","l","j","delimiter","dl","branch","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","_listeners","growListenerTree","listener","prepend","name","collectTreeEvents","root","asArray","branchName","path","hasListeners","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","async","nextTick","objectify","_listener","_origin","context","EventEmitter","listen","isSingleReducer","matched","fn","ttl","self","wildcard","containsSymbol","al","promises","returnValue","temp","leafs","iLeaf","leaf","position","fns","_events","allListeners","listenerTree","nsAsArray","_all","filter","once","_Promise","eventListener","errorListener","prototype","module","getDefaultEmitter","EventEmitter2","onAnyEvent","outputArgs","funcName","createWebformInstance","FormConstructor","formSource","element","webform","getEffectiveProps","props","FormClass","Form","form","src","url","submission","onFormReady","onAsyncSubmit","createCustomValidation","customAction","ref","next","updatedSubmission","er","useForm","webformRef","useRef","renderElement","instanceIsReady","setInstanceIsReady","useState","useEffect","ignore","opts"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"useForm.js","sources":["../../../../../node_modules/eventemitter2/lib/eventemitter2.js","../../../src/organisms/form/useForm.ts"],"sourcesContent":["/*!\n * EventEmitter2\n * https://github.com/hij1nx/EventEmitter2\n *\n * Copyright (c) 2013 hij1nx\n * Licensed under the MIT license.\n */\n;!function(undefined) {\n var hasOwnProperty= Object.hasOwnProperty;\n var isArray = Array.isArray ? Array.isArray : function _isArray(obj) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n };\n var defaultMaxListeners = 10;\n var nextTickSupported= typeof process=='object' && typeof process.nextTick=='function';\n var symbolsSupported= typeof Symbol==='function';\n var reflectSupported= typeof Reflect === 'object';\n var setImmediateSupported= typeof setImmediate === 'function';\n var _setImmediate= setImmediateSupported ? setImmediate : setTimeout;\n var ownKeys= symbolsSupported? (reflectSupported && typeof Reflect.ownKeys==='function'? Reflect.ownKeys : function(obj){\n var arr= Object.getOwnPropertyNames(obj);\n arr.push.apply(arr, Object.getOwnPropertySymbols(obj));\n return arr;\n }) : Object.keys;\n\n function init() {\n this._events = {};\n if (this._conf) {\n configure.call(this, this._conf);\n }\n }\n\n function configure(conf) {\n if (conf) {\n this._conf = conf;\n\n conf.delimiter && (this.delimiter = conf.delimiter);\n\n if(conf.maxListeners!==undefined){\n this._maxListeners= conf.maxListeners;\n }\n\n conf.wildcard && (this.wildcard = conf.wildcard);\n conf.newListener && (this._newListener = conf.newListener);\n conf.removeListener && (this._removeListener = conf.removeListener);\n conf.verboseMemoryLeak && (this.verboseMemoryLeak = conf.verboseMemoryLeak);\n conf.ignoreErrors && (this.ignoreErrors = conf.ignoreErrors);\n\n if (this.wildcard) {\n this.listenerTree = {};\n }\n }\n }\n\n function logPossibleMemoryLeak(count, eventName) {\n var errorMsg = '(node) warning: possible EventEmitter memory ' +\n 'leak detected. ' + count + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.';\n\n if(this.verboseMemoryLeak){\n errorMsg += ' Event name: ' + eventName + '.';\n }\n\n if(typeof process !== 'undefined' && process.emitWarning){\n var e = new Error(errorMsg);\n e.name = 'MaxListenersExceededWarning';\n e.emitter = this;\n e.count = count;\n process.emitWarning(e);\n } else {\n console.error(errorMsg);\n\n if (console.trace){\n console.trace();\n }\n }\n }\n\n var toArray = function (a, b, c) {\n var n = arguments.length;\n switch (n) {\n case 0:\n return [];\n case 1:\n return [a];\n case 2:\n return [a, b];\n case 3:\n return [a, b, c];\n default:\n var arr = new Array(n);\n while (n--) {\n arr[n] = arguments[n];\n }\n return arr;\n }\n };\n\n function toObject(keys, values) {\n var obj = {};\n var key;\n var len = keys.length;\n var valuesCount = values ? values.length : 0;\n for (var i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = i < valuesCount ? values[i] : undefined;\n }\n return obj;\n }\n\n function TargetObserver(emitter, target, options) {\n this._emitter = emitter;\n this._target = target;\n this._listeners = {};\n this._listenersCount = 0;\n\n var on, off;\n\n if (options.on || options.off) {\n on = options.on;\n off = options.off;\n }\n\n if (target.addEventListener) {\n on = target.addEventListener;\n off = target.removeEventListener;\n } else if (target.addListener) {\n on = target.addListener;\n off = target.removeListener;\n } else if (target.on) {\n on = target.on;\n off = target.off;\n }\n\n if (!on && !off) {\n throw Error('target does not implement any known event API');\n }\n\n if (typeof on !== 'function') {\n throw TypeError('on method must be a function');\n }\n\n if (typeof off !== 'function') {\n throw TypeError('off method must be a function');\n }\n\n this._on = on;\n this._off = off;\n\n var _observers= emitter._observers;\n if(_observers){\n _observers.push(this);\n }else{\n emitter._observers= [this];\n }\n }\n\n Object.assign(TargetObserver.prototype, {\n subscribe: function(event, localEvent, reducer){\n var observer= this;\n var target= this._target;\n var emitter= this._emitter;\n var listeners= this._listeners;\n var handler= function(){\n var args= toArray.apply(null, arguments);\n var eventObj= {\n data: args,\n name: localEvent,\n original: event\n };\n if(reducer){\n var result= reducer.call(target, eventObj);\n if(result!==false){\n emitter.emit.apply(emitter, [eventObj.name].concat(args))\n }\n return;\n }\n emitter.emit.apply(emitter, [localEvent].concat(args));\n };\n\n\n if(listeners[event]){\n throw Error('Event \\'' + event + '\\' is already listening');\n }\n\n this._listenersCount++;\n\n if(emitter._newListener && emitter._removeListener && !observer._onNewListener){\n\n this._onNewListener = function (_event) {\n if (_event === localEvent && listeners[event] === null) {\n listeners[event] = handler;\n observer._on.call(target, event, handler);\n }\n };\n\n emitter.on('newListener', this._onNewListener);\n\n this._onRemoveListener= function(_event){\n if(_event === localEvent && !emitter.hasListeners(_event) && listeners[event]){\n listeners[event]= null;\n observer._off.call(target, event, handler);\n }\n };\n\n listeners[event]= null;\n\n emitter.on('removeListener', this._onRemoveListener);\n }else{\n listeners[event]= handler;\n observer._on.call(target, event, handler);\n }\n },\n\n unsubscribe: function(event){\n var observer= this;\n var listeners= this._listeners;\n var emitter= this._emitter;\n var handler;\n var events;\n var off= this._off;\n var target= this._target;\n var i;\n\n if(event && typeof event!=='string'){\n throw TypeError('event must be a string');\n }\n\n function clearRefs(){\n if(observer._onNewListener){\n emitter.off('newListener', observer._onNewListener);\n emitter.off('removeListener', observer._onRemoveListener);\n observer._onNewListener= null;\n observer._onRemoveListener= null;\n }\n var index= findTargetIndex.call(emitter, observer);\n emitter._observers.splice(index, 1);\n }\n\n if(event){\n handler= listeners[event];\n if(!handler) return;\n off.call(target, event, handler);\n delete listeners[event];\n if(!--this._listenersCount){\n clearRefs();\n }\n }else{\n events= ownKeys(listeners);\n i= events.length;\n while(i-->0){\n event= events[i];\n off.call(target, event, listeners[event]);\n }\n this._listeners= {};\n this._listenersCount= 0;\n clearRefs();\n }\n }\n });\n\n function resolveOptions(options, schema, reducers, allowUnknown) {\n var computedOptions = Object.assign({}, schema);\n\n if (!options) return computedOptions;\n\n if (typeof options !== 'object') {\n throw TypeError('options must be an object')\n }\n\n var keys = Object.keys(options);\n var length = keys.length;\n var option, value;\n var reducer;\n\n function reject(reason) {\n throw Error('Invalid \"' + option + '\" option value' + (reason ? '. Reason: ' + reason : ''))\n }\n\n for (var i = 0; i < length; i++) {\n option = keys[i];\n if (!allowUnknown && !hasOwnProperty.call(schema, option)) {\n throw Error('Unknown \"' + option + '\" option');\n }\n value = options[option];\n if (value !== undefined) {\n reducer = reducers[option];\n computedOptions[option] = reducer ? reducer(value, reject) : value;\n }\n }\n return computedOptions;\n }\n\n function constructorReducer(value, reject) {\n if (typeof value !== 'function' || !value.hasOwnProperty('prototype')) {\n reject('value must be a constructor');\n }\n return value;\n }\n\n function makeTypeReducer(types) {\n var message= 'value must be type of ' + types.join('|');\n var len= types.length;\n var firstType= types[0];\n var secondType= types[1];\n\n if (len === 1) {\n return function (v, reject) {\n if (typeof v === firstType) {\n return v;\n }\n reject(message);\n }\n }\n\n if (len === 2) {\n return function (v, reject) {\n var kind= typeof v;\n if (kind === firstType || kind === secondType) return v;\n reject(message);\n }\n }\n\n return function (v, reject) {\n var kind = typeof v;\n var i = len;\n while (i-- > 0) {\n if (kind === types[i]) return v;\n }\n reject(message);\n }\n }\n\n var functionReducer= makeTypeReducer(['function']);\n\n var objectFunctionReducer= makeTypeReducer(['object', 'function']);\n\n function makeCancelablePromise(Promise, executor, options) {\n var isCancelable;\n var callbacks;\n var timer= 0;\n var subscriptionClosed;\n\n var promise = new Promise(function (resolve, reject, onCancel) {\n options= resolveOptions(options, {\n timeout: 0,\n overload: false\n }, {\n timeout: function(value, reject){\n value*= 1;\n if (typeof value !== 'number' || value < 0 || !Number.isFinite(value)) {\n reject('timeout must be a positive number');\n }\n return value;\n }\n });\n\n isCancelable = !options.overload && typeof Promise.prototype.cancel === 'function' && typeof onCancel === 'function';\n\n function cleanup() {\n if (callbacks) {\n callbacks = null;\n }\n if (timer) {\n clearTimeout(timer);\n timer = 0;\n }\n }\n\n var _resolve= function(value){\n cleanup();\n resolve(value);\n };\n\n var _reject= function(err){\n cleanup();\n reject(err);\n };\n\n if (isCancelable) {\n executor(_resolve, _reject, onCancel);\n } else {\n callbacks = [function(reason){\n _reject(reason || Error('canceled'));\n }];\n executor(_resolve, _reject, function (cb) {\n if (subscriptionClosed) {\n throw Error('Unable to subscribe on cancel event asynchronously')\n }\n if (typeof cb !== 'function') {\n throw TypeError('onCancel callback must be a function');\n }\n callbacks.push(cb);\n });\n subscriptionClosed= true;\n }\n\n if (options.timeout > 0) {\n timer= setTimeout(function(){\n var reason= Error('timeout');\n reason.code = 'ETIMEDOUT'\n timer= 0;\n promise.cancel(reason);\n reject(reason);\n }, options.timeout);\n }\n });\n\n if (!isCancelable) {\n promise.cancel = function (reason) {\n if (!callbacks) {\n return;\n }\n var length = callbacks.length;\n for (var i = 1; i < length; i++) {\n callbacks[i](reason);\n }\n // internal callback to reject the promise\n callbacks[0](reason);\n callbacks = null;\n };\n }\n\n return promise;\n }\n\n function findTargetIndex(observer) {\n var observers = this._observers;\n if(!observers){\n return -1;\n }\n var len = observers.length;\n for (var i = 0; i < len; i++) {\n if (observers[i]._target === observer) return i;\n }\n return -1;\n }\n\n // Attention, function return type now is array, always !\n // It has zero elements if no any matches found and one or more\n // elements (leafs) if there are matches\n //\n function searchListenerTree(handlers, type, tree, i, typeLength) {\n if (!tree) {\n return null;\n }\n\n if (i === 0) {\n var kind = typeof type;\n if (kind === 'string') {\n var ns, n, l = 0, j = 0, delimiter = this.delimiter, dl = delimiter.length;\n if ((n = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[l++] = type.slice(j, n);\n j = n + dl;\n } while ((n = type.indexOf(delimiter, j)) !== -1);\n\n ns[l++] = type.slice(j);\n type = ns;\n typeLength = l;\n } else {\n type = [type];\n typeLength = 1;\n }\n } else if (kind === 'object') {\n typeLength = type.length;\n } else {\n type = [type];\n typeLength = 1;\n }\n }\n\n var listeners= null, branch, xTree, xxTree, isolatedBranch, endReached, currentType = type[i],\n nextType = type[i + 1], branches, _listeners;\n\n if (i === typeLength) {\n //\n // If at the end of the event(s) list and the tree has listeners\n // invoke those listeners.\n //\n\n if(tree._listeners) {\n if (typeof tree._listeners === 'function') {\n handlers && handlers.push(tree._listeners);\n listeners = [tree];\n } else {\n handlers && handlers.push.apply(handlers, tree._listeners);\n listeners = [tree];\n }\n }\n } else {\n\n if (currentType === '*') {\n //\n // If the event emitted is '*' at this part\n // or there is a concrete match at this patch\n //\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 1, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (currentType === '**') {\n endReached = (i + 1 === typeLength || (i + 2 === typeLength && nextType === '*'));\n if (endReached && tree._listeners) {\n // The next element has a _listeners, add it to the handlers.\n listeners = searchListenerTree(handlers, type, tree, typeLength, typeLength);\n }\n\n branches = ownKeys(tree);\n n = branches.length;\n while (n-- > 0) {\n branch = branches[n];\n if (branch !== '_listeners') {\n if (branch === '*' || branch === '**') {\n if (tree[branch]._listeners && !endReached) {\n _listeners = searchListenerTree(handlers, type, tree[branch], typeLength, typeLength);\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n } else if (branch === nextType) {\n _listeners = searchListenerTree(handlers, type, tree[branch], i + 2, typeLength);\n } else {\n // No match on this one, shift into the tree but not in the type array.\n _listeners = searchListenerTree(handlers, type, tree[branch], i, typeLength);\n }\n if (_listeners) {\n if (listeners) {\n listeners.push.apply(listeners, _listeners);\n } else {\n listeners = _listeners;\n }\n }\n }\n }\n return listeners;\n } else if (tree[currentType]) {\n listeners = searchListenerTree(handlers, type, tree[currentType], i + 1, typeLength);\n }\n }\n\n xTree = tree['*'];\n if (xTree) {\n //\n // If the listener tree will allow any match for this part,\n // then recursively explore all branches of the tree\n //\n searchListenerTree(handlers, type, xTree, i + 1, typeLength);\n }\n\n xxTree = tree['**'];\n if (xxTree) {\n if (i < typeLength) {\n if (xxTree._listeners) {\n // If we have a listener on a '**', it will catch all, so add its handler.\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n }\n\n // Build arrays of matching next branches and others.\n branches= ownKeys(xxTree);\n n= branches.length;\n while(n-->0){\n branch= branches[n];\n if (branch !== '_listeners') {\n if (branch === nextType) {\n // We know the next element will match, so jump twice.\n searchListenerTree(handlers, type, xxTree[branch], i + 2, typeLength);\n } else if (branch === currentType) {\n // Current node matches, move into the tree.\n searchListenerTree(handlers, type, xxTree[branch], i + 1, typeLength);\n } else {\n isolatedBranch = {};\n isolatedBranch[branch] = xxTree[branch];\n searchListenerTree(handlers, type, {'**': isolatedBranch}, i + 1, typeLength);\n }\n }\n }\n } else if (xxTree._listeners) {\n // We have reached the end and still on a '**'\n searchListenerTree(handlers, type, xxTree, typeLength, typeLength);\n } else if (xxTree['*'] && xxTree['*']._listeners) {\n searchListenerTree(handlers, type, xxTree['*'], typeLength, typeLength);\n }\n }\n\n return listeners;\n }\n\n function growListenerTree(type, listener, prepend) {\n var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;\n\n if(typeof type==='string') {\n if ((i = type.indexOf(delimiter)) !== -1) {\n ns = new Array(5);\n do {\n ns[len++] = type.slice(j, i);\n j = i + dl;\n } while ((i = type.indexOf(delimiter, j)) !== -1);\n\n ns[len++] = type.slice(j);\n }else{\n ns= [type];\n len= 1;\n }\n }else{\n ns= type;\n len= type.length;\n }\n\n //\n // Looks for two consecutive '**', if so, don't add the event at all.\n //\n if (len > 1) {\n for (i = 0; i + 1 < len; i++) {\n if (ns[i] === '**' && ns[i + 1] === '**') {\n return;\n }\n }\n }\n\n\n\n var tree = this.listenerTree, name;\n\n for (i = 0; i < len; i++) {\n name = ns[i];\n\n tree = tree[name] || (tree[name] = {});\n\n if (i === len - 1) {\n if (!tree._listeners) {\n tree._listeners = listener;\n } else {\n if (typeof tree._listeners === 'function') {\n tree._listeners = [tree._listeners];\n }\n\n if (prepend) {\n tree._listeners.unshift(listener);\n } else {\n tree._listeners.push(listener);\n }\n\n if (\n !tree._listeners.warned &&\n this._maxListeners > 0 &&\n tree._listeners.length > this._maxListeners\n ) {\n tree._listeners.warned = true;\n logPossibleMemoryLeak.call(this, tree._listeners.length, name);\n }\n }\n return true;\n }\n }\n\n return true;\n }\n\n function collectTreeEvents(tree, events, root, asArray){\n var branches= ownKeys(tree);\n var i= branches.length;\n var branch, branchName, path;\n var hasListeners= tree['_listeners'];\n var isArrayPath;\n\n while(i-->0){\n branchName= branches[i];\n\n branch= tree[branchName];\n\n if(branchName==='_listeners'){\n path= root;\n }else {\n path = root ? root.concat(branchName) : [branchName];\n }\n\n isArrayPath= asArray || typeof branchName==='symbol';\n\n hasListeners && events.push(isArrayPath? path : path.join(this.delimiter));\n\n if(typeof branch==='object'){\n collectTreeEvents.call(this, branch, events, path, isArrayPath);\n }\n }\n\n return events;\n }\n\n function recursivelyGarbageCollect(root) {\n var keys = ownKeys(root);\n var i= keys.length;\n var obj, key, flag;\n while(i-->0){\n key = keys[i];\n obj = root[key];\n\n if(obj){\n flag= true;\n if(key !== '_listeners' && !recursivelyGarbageCollect(obj)){\n delete root[key];\n }\n }\n }\n\n return flag;\n }\n\n function Listener(emitter, event, listener){\n this.emitter= emitter;\n this.event= event;\n this.listener= listener;\n }\n\n Listener.prototype.off= function(){\n this.emitter.off(this.event, this.listener);\n return this;\n };\n\n function setupListener(event, listener, options){\n if (options === true) {\n promisify = true;\n } else if (options === false) {\n async = true;\n } else {\n if (!options || typeof options !== 'object') {\n throw TypeError('options should be an object or true');\n }\n var async = options.async;\n var promisify = options.promisify;\n var nextTick = options.nextTick;\n var objectify = options.objectify;\n }\n\n if (async || nextTick || promisify) {\n var _listener = listener;\n var _origin = listener._origin || listener;\n\n if (nextTick && !nextTickSupported) {\n throw Error('process.nextTick is not supported');\n }\n\n if (promisify === undefined) {\n promisify = listener.constructor.name === 'AsyncFunction';\n }\n\n listener = function () {\n var args = arguments;\n var context = this;\n var event = this.event;\n\n return promisify ? (nextTick ? Promise.resolve() : new Promise(function (resolve) {\n _setImmediate(resolve);\n }).then(function () {\n context.event = event;\n return _listener.apply(context, args)\n })) : (nextTick ? process.nextTick : _setImmediate)(function () {\n context.event = event;\n _listener.apply(context, args)\n });\n };\n\n listener._async = true;\n listener._origin = _origin;\n }\n\n return [listener, objectify? new Listener(this, event, listener): this];\n }\n\n function EventEmitter(conf) {\n this._events = {};\n this._newListener = false;\n this._removeListener = false;\n this.verboseMemoryLeak = false;\n configure.call(this, conf);\n }\n\n EventEmitter.EventEmitter2 = EventEmitter; // backwards compatibility for exporting EventEmitter property\n\n EventEmitter.prototype.listenTo= function(target, events, options){\n if(typeof target!=='object'){\n throw TypeError('target musts be an object');\n }\n\n var emitter= this;\n\n options = resolveOptions(options, {\n on: undefined,\n off: undefined,\n reducers: undefined\n }, {\n on: functionReducer,\n off: functionReducer,\n reducers: objectFunctionReducer\n });\n\n function listen(events){\n if(typeof events!=='object'){\n throw TypeError('events must be an object');\n }\n\n var reducers= options.reducers;\n var index= findTargetIndex.call(emitter, target);\n var observer;\n\n if(index===-1){\n observer= new TargetObserver(emitter, target, options);\n }else{\n observer= emitter._observers[index];\n }\n\n var keys= ownKeys(events);\n var len= keys.length;\n var event;\n var isSingleReducer= typeof reducers==='function';\n\n for(var i=0; i<len; i++){\n event= keys[i];\n observer.subscribe(\n event,\n events[event] || event,\n isSingleReducer ? reducers : reducers && reducers[event]\n );\n }\n }\n\n isArray(events)?\n listen(toObject(events)) :\n (typeof events==='string'? listen(toObject(events.split(/\\s+/))): listen(events));\n\n return this;\n };\n\n EventEmitter.prototype.stopListeningTo = function (target, event) {\n var observers = this._observers;\n\n if(!observers){\n return false;\n }\n\n var i = observers.length;\n var observer;\n var matched= false;\n\n if(target && typeof target!=='object'){\n throw TypeError('target should be an object');\n }\n\n while (i-- > 0) {\n observer = observers[i];\n if (!target || observer._target === target) {\n observer.unsubscribe(event);\n matched= true;\n }\n }\n\n return matched;\n };\n\n // By default EventEmitters will print a warning if more than\n // 10 listeners are added to it. This is a useful default which\n // helps finding memory leaks.\n //\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n\n EventEmitter.prototype.delimiter = '.';\n\n EventEmitter.prototype.setMaxListeners = function(n) {\n if (n !== undefined) {\n this._maxListeners = n;\n if (!this._conf) this._conf = {};\n this._conf.maxListeners = n;\n }\n };\n\n EventEmitter.prototype.getMaxListeners = function() {\n return this._maxListeners;\n };\n\n EventEmitter.prototype.event = '';\n\n EventEmitter.prototype.once = function(event, fn, options) {\n return this._once(event, fn, false, options);\n };\n\n EventEmitter.prototype.prependOnceListener = function(event, fn, options) {\n return this._once(event, fn, true, options);\n };\n\n EventEmitter.prototype._once = function(event, fn, prepend, options) {\n return this._many(event, 1, fn, prepend, options);\n };\n\n EventEmitter.prototype.many = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, false, options);\n };\n\n EventEmitter.prototype.prependMany = function(event, ttl, fn, options) {\n return this._many(event, ttl, fn, true, options);\n };\n\n EventEmitter.prototype._many = function(event, ttl, fn, prepend, options) {\n var self = this;\n\n if (typeof fn !== 'function') {\n throw new Error('many only accepts instances of Function');\n }\n\n function listener() {\n if (--ttl === 0) {\n self.off(event, listener);\n }\n return fn.apply(this, arguments);\n }\n\n listener._origin = fn;\n\n return this._on(event, listener, prepend, options);\n };\n\n EventEmitter.prototype.emit = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], ns, wildcard= this.wildcard;\n var args,l,i,j, containsSymbol;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) {\n return false;\n }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var al = arguments.length;\n var handler;\n\n if (this._all && this._all.length) {\n handler = this._all.slice();\n\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this, type);\n break;\n case 2:\n handler[i].call(this, type, arguments[1]);\n break;\n case 3:\n handler[i].call(this, type, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, arguments);\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0, l);\n } else {\n handler = this._events[type];\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n handler.apply(this, args);\n }\n return true;\n } else if (handler) {\n // need to make copy of handlers because list can change in the middle\n // of emit call\n handler = handler.slice();\n }\n }\n\n if (handler && handler.length) {\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n handler[i].call(this);\n break;\n case 2:\n handler[i].call(this, arguments[1]);\n break;\n case 3:\n handler[i].call(this, arguments[1], arguments[2]);\n break;\n default:\n handler[i].apply(this, args);\n }\n }\n return true;\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return !!this._all;\n };\n\n EventEmitter.prototype.emitAsync = function() {\n if (!this._events && !this._all) {\n return false;\n }\n\n this._events || init.call(this);\n\n var type = arguments[0], wildcard= this.wildcard, ns, containsSymbol;\n var args,l,i,j;\n\n if (type === 'newListener' && !this._newListener) {\n if (!this._events.newListener) { return Promise.resolve([false]); }\n }\n\n if (wildcard) {\n ns= type;\n if(type!=='newListener' && type!=='removeListener'){\n if (typeof type === 'object') {\n l = type.length;\n if (symbolsSupported) {\n for (i = 0; i < l; i++) {\n if (typeof type[i] === 'symbol') {\n containsSymbol = true;\n break;\n }\n }\n }\n if (!containsSymbol) {\n type = type.join(this.delimiter);\n }\n }\n }\n }\n\n var promises= [];\n\n var al = arguments.length;\n var handler;\n\n if (this._all) {\n for (i = 0, l = this._all.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(this._all[i].call(this, type));\n break;\n case 2:\n promises.push(this._all[i].call(this, type, arguments[1]));\n break;\n case 3:\n promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));\n break;\n default:\n promises.push(this._all[i].apply(this, arguments));\n }\n }\n }\n\n if (wildcard) {\n handler = [];\n searchListenerTree.call(this, handler, ns, this.listenerTree, 0);\n } else {\n handler = this._events[type];\n }\n\n if (typeof handler === 'function') {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler.call(this));\n break;\n case 2:\n promises.push(handler.call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler.call(this, arguments[1], arguments[2]));\n break;\n default:\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n promises.push(handler.apply(this, args));\n }\n } else if (handler && handler.length) {\n handler = handler.slice();\n if (al > 3) {\n args = new Array(al - 1);\n for (j = 1; j < al; j++) args[j - 1] = arguments[j];\n }\n for (i = 0, l = handler.length; i < l; i++) {\n this.event = type;\n switch (al) {\n case 1:\n promises.push(handler[i].call(this));\n break;\n case 2:\n promises.push(handler[i].call(this, arguments[1]));\n break;\n case 3:\n promises.push(handler[i].call(this, arguments[1], arguments[2]));\n break;\n default:\n promises.push(handler[i].apply(this, args));\n }\n }\n } else if (!this.ignoreErrors && !this._all && type === 'error') {\n if (arguments[1] instanceof Error) {\n return Promise.reject(arguments[1]); // Unhandled 'error' event\n } else {\n return Promise.reject(\"Uncaught, unspecified 'error' event.\");\n }\n }\n\n return Promise.all(promises);\n };\n\n EventEmitter.prototype.on = function(type, listener, options) {\n return this._on(type, listener, false, options);\n };\n\n EventEmitter.prototype.prependListener = function(type, listener, options) {\n return this._on(type, listener, true, options);\n };\n\n EventEmitter.prototype.onAny = function(fn) {\n return this._onAny(fn, false);\n };\n\n EventEmitter.prototype.prependAny = function(fn) {\n return this._onAny(fn, true);\n };\n\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n EventEmitter.prototype._onAny = function(fn, prepend){\n if (typeof fn !== 'function') {\n throw new Error('onAny only accepts instances of Function');\n }\n\n if (!this._all) {\n this._all = [];\n }\n\n // Add the function to the event listener collection.\n if(prepend){\n this._all.unshift(fn);\n }else{\n this._all.push(fn);\n }\n\n return this;\n };\n\n EventEmitter.prototype._on = function(type, listener, prepend, options) {\n if (typeof type === 'function') {\n this._onAny(type, listener);\n return this;\n }\n\n if (typeof listener !== 'function') {\n throw new Error('on only accepts instances of Function');\n }\n this._events || init.call(this);\n\n var returnValue= this, temp;\n\n if (options !== undefined) {\n temp = setupListener.call(this, type, listener, options);\n listener = temp[0];\n returnValue = temp[1];\n }\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n if (this._newListener) {\n this.emit('newListener', type, listener);\n }\n\n if (this.wildcard) {\n growListenerTree.call(this, type, listener, prepend);\n return returnValue;\n }\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else {\n if (typeof this._events[type] === 'function') {\n // Change to array.\n this._events[type] = [this._events[type]];\n }\n\n // If we've already got an array, just add\n if(prepend){\n this._events[type].unshift(listener);\n }else{\n this._events[type].push(listener);\n }\n\n // Check for listener leak\n if (\n !this._events[type].warned &&\n this._maxListeners > 0 &&\n this._events[type].length > this._maxListeners\n ) {\n this._events[type].warned = true;\n logPossibleMemoryLeak.call(this, this._events[type].length, type);\n }\n }\n\n return returnValue;\n };\n\n EventEmitter.prototype.off = function(type, listener) {\n if (typeof listener !== 'function') {\n throw new Error('removeListener only takes instances of Function');\n }\n\n var handlers,leafs=[];\n\n if(this.wildcard) {\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n leafs = searchListenerTree.call(this, null, ns, this.listenerTree, 0);\n if(!leafs) return this;\n } else {\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events[type]) return this;\n handlers = this._events[type];\n leafs.push({_listeners:handlers});\n }\n\n for (var iLeaf=0; iLeaf<leafs.length; iLeaf++) {\n var leaf = leafs[iLeaf];\n handlers = leaf._listeners;\n if (isArray(handlers)) {\n\n var position = -1;\n\n for (var i = 0, length = handlers.length; i < length; i++) {\n if (handlers[i] === listener ||\n (handlers[i].listener && handlers[i].listener === listener) ||\n (handlers[i]._origin && handlers[i]._origin === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n continue;\n }\n\n if(this.wildcard) {\n leaf._listeners.splice(position, 1);\n }\n else {\n this._events[type].splice(position, 1);\n }\n\n if (handlers.length === 0) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n\n return this;\n }\n else if (handlers === listener ||\n (handlers.listener && handlers.listener === listener) ||\n (handlers._origin && handlers._origin === listener)) {\n if(this.wildcard) {\n delete leaf._listeners;\n }\n else {\n delete this._events[type];\n }\n if (this._removeListener)\n this.emit(\"removeListener\", type, listener);\n }\n }\n\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n\n return this;\n };\n\n EventEmitter.prototype.offAny = function(fn) {\n var i = 0, l = 0, fns;\n if (fn && this._all && this._all.length > 0) {\n fns = this._all;\n for(i = 0, l = fns.length; i < l; i++) {\n if(fn === fns[i]) {\n fns.splice(i, 1);\n if (this._removeListener)\n this.emit(\"removeListenerAny\", fn);\n return this;\n }\n }\n } else {\n fns = this._all;\n if (this._removeListener) {\n for(i = 0, l = fns.length; i < l; i++)\n this.emit(\"removeListenerAny\", fns[i]);\n }\n this._all = [];\n }\n return this;\n };\n\n EventEmitter.prototype.removeListener = EventEmitter.prototype.off;\n\n EventEmitter.prototype.removeAllListeners = function (type) {\n if (type === undefined) {\n !this._events || init.call(this);\n return this;\n }\n\n if (this.wildcard) {\n var leafs = searchListenerTree.call(this, null, type, this.listenerTree, 0), leaf, i;\n if (!leafs) return this;\n for (i = 0; i < leafs.length; i++) {\n leaf = leafs[i];\n leaf._listeners = null;\n }\n this.listenerTree && recursivelyGarbageCollect(this.listenerTree);\n } else if (this._events) {\n this._events[type] = null;\n }\n return this;\n };\n\n EventEmitter.prototype.listeners = function (type) {\n var _events = this._events;\n var keys, listeners, allListeners;\n var i;\n var listenerTree;\n\n if (type === undefined) {\n if (this.wildcard) {\n throw Error('event name required for wildcard emitter');\n }\n\n if (!_events) {\n return [];\n }\n\n keys = ownKeys(_events);\n i = keys.length;\n allListeners = [];\n while (i-- > 0) {\n listeners = _events[keys[i]];\n if (typeof listeners === 'function') {\n allListeners.push(listeners);\n } else {\n allListeners.push.apply(allListeners, listeners);\n }\n }\n return allListeners;\n } else {\n if (this.wildcard) {\n listenerTree= this.listenerTree;\n if(!listenerTree) return [];\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, listenerTree, 0);\n return handlers;\n }\n\n if (!_events) {\n return [];\n }\n\n listeners = _events[type];\n\n if (!listeners) {\n return [];\n }\n return typeof listeners === 'function' ? [listeners] : listeners;\n }\n };\n\n EventEmitter.prototype.eventNames = function(nsAsArray){\n var _events= this._events;\n return this.wildcard? collectTreeEvents.call(this, this.listenerTree, [], null, nsAsArray) : (_events? ownKeys(_events) : []);\n };\n\n EventEmitter.prototype.listenerCount = function(type) {\n return this.listeners(type).length;\n };\n\n EventEmitter.prototype.hasListeners = function (type) {\n if (this.wildcard) {\n var handlers = [];\n var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();\n searchListenerTree.call(this, handlers, ns, this.listenerTree, 0);\n return handlers.length > 0;\n }\n\n var _events = this._events;\n var _all = this._all;\n\n return !!(_all && _all.length || _events && (type === undefined ? ownKeys(_events).length : _events[type]));\n };\n\n EventEmitter.prototype.listenersAny = function() {\n\n if(this._all) {\n return this._all;\n }\n else {\n return [];\n }\n\n };\n\n EventEmitter.prototype.waitFor = function (event, options) {\n var self = this;\n var type = typeof options;\n if (type === 'number') {\n options = {timeout: options};\n } else if (type === 'function') {\n options = {filter: options};\n }\n\n options= resolveOptions(options, {\n timeout: 0,\n filter: undefined,\n handleError: false,\n Promise: Promise,\n overload: false\n }, {\n filter: functionReducer,\n Promise: constructorReducer\n });\n\n return makeCancelablePromise(options.Promise, function (resolve, reject, onCancel) {\n function listener() {\n var filter= options.filter;\n if (filter && !filter.apply(self, arguments)) {\n return;\n }\n self.off(event, listener);\n if (options.handleError) {\n var err = arguments[0];\n err ? reject(err) : resolve(toArray.apply(null, arguments).slice(1));\n } else {\n resolve(toArray.apply(null, arguments));\n }\n }\n\n onCancel(function(){\n self.off(event, listener);\n });\n\n self._on(event, listener, false);\n }, {\n timeout: options.timeout,\n overload: options.overload\n })\n };\n\n function once(emitter, name, options) {\n options= resolveOptions(options, {\n Promise: Promise,\n timeout: 0,\n overload: false\n }, {\n Promise: constructorReducer\n });\n\n var _Promise= options.Promise;\n\n return makeCancelablePromise(_Promise, function(resolve, reject, onCancel){\n var handler;\n if (typeof emitter.addEventListener === 'function') {\n handler= function () {\n resolve(toArray.apply(null, arguments));\n };\n\n onCancel(function(){\n emitter.removeEventListener(name, handler);\n });\n\n emitter.addEventListener(\n name,\n handler,\n {once: true}\n );\n return;\n }\n\n var eventListener = function(){\n errorListener && emitter.removeListener('error', errorListener);\n resolve(toArray.apply(null, arguments));\n };\n\n var errorListener;\n\n if (name !== 'error') {\n errorListener = function (err){\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n onCancel(function(){\n errorListener && emitter.removeListener('error', errorListener);\n emitter.removeListener(name, eventListener);\n });\n\n emitter.once(name, eventListener);\n }, {\n timeout: options.timeout,\n overload: options.overload\n });\n }\n\n var prototype= EventEmitter.prototype;\n\n Object.defineProperties(EventEmitter, {\n defaultMaxListeners: {\n get: function () {\n return prototype._maxListeners;\n },\n set: function (n) {\n if (typeof n !== 'number' || n < 0 || Number.isNaN(n)) {\n throw TypeError('n must be a non-negative number')\n }\n prototype._maxListeners = n;\n },\n enumerable: true\n },\n once: {\n value: once,\n writable: true,\n configurable: true\n }\n });\n\n Object.defineProperties(prototype, {\n _maxListeners: {\n value: defaultMaxListeners,\n writable: true,\n configurable: true\n },\n _observers: {value: null, writable: true, configurable: true}\n });\n\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(function() {\n return EventEmitter;\n });\n } else if (typeof exports === 'object') {\n // CommonJS\n module.exports = EventEmitter;\n }\n else {\n // global for any kind of environment.\n var _global= new Function('','return this')();\n _global.EventEmitter2 = EventEmitter;\n }\n}();\n","import { Form } from \"@formio/js\";\nimport { EventEmitter2 } from \"eventemitter2\";\nimport { type MutableRefObject, useEffect, useRef, useState } from \"react\";\n\nimport type { ChangedSubmission, ComponentType, FormOptions, FormType, SubmissionType } from \"../../interfaces\";\nimport type { JSON, JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { FormCustomEvent } from \"./types\";\n\ntype Webform = any;\ntype EventError = string | Error | Error[] | { message: string } | { message: string }[];\n\nexport interface UseFormProps<Data extends object = JSONRecord> {\n src?: string;\n url?: string;\n form?: FormType;\n submission?: SubmissionType<Data>;\n options?: FormOptions;\n FormClass?: typeof Form;\n onFormReady?: (instance: Webform) => void;\n onPrevPage?: (page: number, submission: SubmissionType<Data>) => void;\n onNextPage?: (page: number, submission: SubmissionType<Data>) => void;\n onCancelSubmit?: () => void;\n onCancelComponent?: (component: ComponentType) => void;\n onChange?: (value: ChangedSubmission<Data>, flags: any, modified: boolean) => void;\n onCustomEvent?: (event: FormCustomEvent) => void;\n onComponentChange?: (changed: { instance: Webform; component: Webform; value: any; flags: any }) => void;\n onSubmit?: (submission: SubmissionType<Data>, saved?: boolean) => void;\n onAsyncSubmit?: (submission: SubmissionType<Data>) => void;\n onSubmitDone?: (submission: SubmissionType<Data>) => void;\n onSubmitError?: (error: EventError) => void;\n onFormLoad?: (form: JSON) => void;\n onError?: (error: EventError | false) => void;\n onRender?: (param: any) => void;\n onAttach?: (param: any) => void;\n onBuild?: (param: any) => void;\n onFocus?: (instance: Webform) => void;\n onBlur?: (instance: Webform) => void;\n onInitialized?: () => void;\n onLanguageChanged?: () => void;\n onBeforeSetSubmission?: (submission: SubmissionType<Data>) => void;\n onSaveDraftBegin?: () => void;\n onSaveDraft?: (submission: SubmissionType<Data>) => void;\n onRestoreDraft?: (submission: SubmissionType<Data> | null) => void;\n onSubmissionDeleted?: (submission: SubmissionType<Data>) => void;\n onRequestDone?: () => void;\n otherEvents?: {\n [event: string]: (...args: any[]) => void;\n };\n}\n\nconst getDefaultEmitter = () => {\n return new EventEmitter2({\n wildcard: false,\n maxListeners: 0\n });\n};\n\nfunction onAnyEvent<Data extends object = JSONRecord>(\n handlers: Omit<UseFormProps<Data>, \"src\" | \"url\" | \"form\" | \"submission\" | \"options\" | \"formReady\" | \"formioform\" | \"Formio\">,\n ...args: [string, ...any[]]\n) {\n const [event, ...outputArgs] = args;\n\n if (event.startsWith(\"formio.\")) {\n const funcName = `on${event.charAt(7).toUpperCase()}${event.slice(8)}`;\n\n if (funcName in handlers) {\n (handlers as any)[funcName](...outputArgs);\n }\n }\n if (handlers.otherEvents && handlers.otherEvents[event]) {\n handlers.otherEvents[event](...outputArgs);\n }\n}\n\nconst createWebformInstance = async (\n FormConstructor: any | undefined,\n formSource: any,\n element: HTMLDivElement,\n options: FormOptions = {}\n) => {\n if (!options?.events) {\n options.events = getDefaultEmitter();\n }\n\n if (typeof formSource !== \"string\") {\n formSource = structuredClone(formSource);\n }\n\n const promise = new FormConstructor(element, formSource, options);\n const webform = await promise.ready;\n\n webform.toJSON = () => ({ __WEBFORM__: true });\n\n return webform;\n};\n\n// Define effective props (aka I want to rename these props but also maintain backwards compatibility)\nfunction getEffectiveProps<Data extends object = JSONRecord>(props: UseFormProps<Data>) {\n const { FormClass = Form, form, src, url, options, submission, onFormReady, onAsyncSubmit, ...handlers } = props;\n\n return {\n FormClass,\n formSource: form !== undefined ? form : src,\n handlers,\n options,\n url,\n submission,\n onFormReady,\n onAsyncSubmit\n };\n}\n\nfunction createCustomValidation(customAction: any, ref: MutableRefObject<Webform | null>) {\n return async (submission: SubmissionType, next: (error: null | Error) => void) => {\n try {\n const updatedSubmission = await customAction(submission);\n\n next(null);\n\n ref.current.onSubmit(updatedSubmission, true);\n } catch (er: any) {\n next(er.errors || er);\n } finally {\n ref.current.submissionInProcess = false;\n }\n };\n}\n\nexport function useForm<Data extends object = JSONRecord>(props: UseFormProps<Data>) {\n const webformRef = useRef<Webform | null>(null);\n const renderElement = useRef<HTMLDivElement | null>(null);\n const { formSource, FormClass, options, url, submission, handlers, onFormReady, onAsyncSubmit } = getEffectiveProps(props);\n\n const [instanceIsReady, setInstanceIsReady] = useState(false);\n\n useEffect(() => {\n let ignore = false;\n const createInstance = async () => {\n if (renderElement.current === null) {\n console.warn(\"Form element not found\");\n return;\n }\n\n if (typeof formSource === \"undefined\") {\n console.warn(\"Form source not found\");\n return;\n }\n\n let opts = options || {};\n\n if (onAsyncSubmit) {\n opts.hooks = opts.hooks || {};\n opts.hooks.customValidation = createCustomValidation(props.onAsyncSubmit, webformRef);\n }\n\n const webform = await createWebformInstance(FormClass, formSource, renderElement.current, options);\n\n if (webform) {\n if (ignore) {\n webform.destroy(true);\n return;\n }\n\n if (typeof formSource === \"string\") {\n webform.src = formSource;\n } else if (typeof formSource === \"object\") {\n if (submission) {\n webform.setSubmission(submission);\n }\n\n if (url) {\n webform.url = url;\n }\n }\n\n if (onFormReady) {\n onFormReady(webform);\n }\n\n renderElement.current.className = \"formio-form-ready\";\n webformRef.current = webform;\n setInstanceIsReady(true);\n } else {\n console.warn(\"Failed to create form instance\");\n }\n };\n\n createInstance();\n\n return () => {\n ignore = true;\n if (webformRef.current) {\n webformRef.current.destroy(true);\n }\n };\n }, [formSource, url]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.onAny((...args: [string, ...any[]]) => {\n instanceIsReady && onAnyEvent(handlers, ...args);\n });\n }\n\n return () => {\n if (instanceIsReady && webformRef.current && Object.keys(handlers).length > 0) {\n webformRef.current.offAny((...args: [string, ...any[]]) => onAnyEvent(handlers, ...args));\n }\n };\n }, [instanceIsReady, handlers]);\n\n useEffect(() => {\n if (instanceIsReady && webformRef.current && submission) {\n webformRef.current.setSubmission(submission);\n }\n }, [instanceIsReady, submission]);\n\n return {\n element: renderElement,\n instance: webformRef.current\n };\n}\n"],"names":["undefined","hasOwnProperty","isArray","obj","defaultMaxListeners","nextTickSupported","symbolsSupported","reflectSupported","setImmediateSupported","_setImmediate","ownKeys","arr","init","configure","conf","logPossibleMemoryLeak","count","eventName","errorMsg","e","toArray","a","b","c","n","toObject","keys","values","key","len","valuesCount","i","TargetObserver","emitter","target","options","on","off","_observers","event","localEvent","reducer","observer","listeners","handler","args","eventObj","result","_event","events","clearRefs","index","findTargetIndex","resolveOptions","schema","reducers","allowUnknown","computedOptions","length","option","value","reject","reason","constructorReducer","makeTypeReducer","types","message","firstType","secondType","v","kind","functionReducer","objectFunctionReducer","makeCancelablePromise","Promise","executor","isCancelable","callbacks","timer","subscriptionClosed","promise","resolve","onCancel","cleanup","_resolve","_reject","err","cb","observers","searchListenerTree","handlers","type","tree","typeLength","ns","l","j","delimiter","dl","branch","xTree","xxTree","isolatedBranch","endReached","currentType","nextType","branches","_listeners","growListenerTree","listener","prepend","name","collectTreeEvents","root","asArray","branchName","path","hasListeners","isArrayPath","recursivelyGarbageCollect","flag","Listener","setupListener","promisify","async","nextTick","objectify","_listener","_origin","context","EventEmitter","listen","isSingleReducer","matched","fn","ttl","self","wildcard","containsSymbol","al","promises","returnValue","temp","leafs","iLeaf","leaf","position","fns","_events","allListeners","listenerTree","nsAsArray","_all","filter","once","_Promise","eventListener","errorListener","prototype","module","getDefaultEmitter","EventEmitter2","onAnyEvent","outputArgs","funcName","createWebformInstance","FormConstructor","formSource","element","webform","getEffectiveProps","props","FormClass","Form","form","src","url","submission","onFormReady","onAsyncSubmit","createCustomValidation","customAction","ref","next","updatedSubmission","er","useForm","webformRef","useRef","renderElement","instanceIsReady","setInstanceIsReady","useState","useEffect","ignore","opts"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import { FormOptions,
|
|
1
|
+
import { FormOptions, PermissionsResolver } from '../../interfaces/index.js';
|
|
2
|
+
import { JSONRecord } from '../../interfaces/JSONRecord.js';
|
|
2
3
|
import { FormAccessProps } from '../form/access/FormAccess.js';
|
|
3
4
|
import { FormEditProps } from '../form/builder/FormEdit.js';
|
|
4
5
|
import { ActionsTableProps } from '../table/actions/ActionsTable.js';
|
|
5
6
|
import { SubmissionsTableProps } from '../table/submissions/SubmissionsTable.js';
|
|
6
|
-
export type FormViewsProps<Data extends {
|
|
7
|
-
[key: string]: JSON;
|
|
8
|
-
} = {
|
|
9
|
-
[key: string]: JSON;
|
|
10
|
-
}> = {
|
|
7
|
+
export type FormViewsProps<Data extends object = JSONRecord> = {
|
|
11
8
|
form: FormEditProps["form"];
|
|
12
9
|
submissions: SubmissionsTableProps<Data>["data"];
|
|
13
10
|
availableActions: ActionsTableProps["availableActions"];
|
|
@@ -17,8 +14,4 @@ export type FormViewsProps<Data extends {
|
|
|
17
14
|
onAction: () => void;
|
|
18
15
|
permissionsResolver?: PermissionsResolver<Data>;
|
|
19
16
|
};
|
|
20
|
-
export declare function FormViews<Data extends {
|
|
21
|
-
[key: string]: JSON;
|
|
22
|
-
} = {
|
|
23
|
-
[key: string]: JSON;
|
|
24
|
-
}>({ form, roles, availableActions, actions, permissionsResolver, submissions, ...props }: FormViewsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function FormViews<Data extends object = JSONRecord>({ form, roles, availableActions, actions, permissionsResolver, submissions, ...props }: FormViewsProps<Data>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormViews.js","sources":["../../../src/organisms/views/FormViews.tsx"],"sourcesContent":["import { useI18n } from \"../../hooks/useI18n.js\";\nimport type { FormOptions, FormType,
|
|
1
|
+
{"version":3,"file":"FormViews.js","sources":["../../../src/organisms/views/FormViews.tsx"],"sourcesContent":["import { useI18n } from \"../../hooks/useI18n.js\";\nimport type { FormOptions, FormType, PermissionsResolver } from \"../../interfaces/index.js\";\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport type { Tab as DefaultTab } from \"../../molecules/tabs/Tab.js\";\nimport type { TabList as DefaultTabList } from \"../../molecules/tabs/TabList.js\";\nimport type { TabPanel as DefaultTabPanel } from \"../../molecules/tabs/TabPanel.js\";\nimport type { Tabs as DefaultTabs } from \"../../molecules/tabs/Tabs.js\";\nimport type { TabsBody as DefaultTabsBody } from \"../../molecules/tabs/TabsBody.js\";\nimport { getComponent } from \"../../registries/components.js\";\nimport { FormAccess, type FormAccessProps } from \"../form/access/FormAccess.js\";\nimport { FormEdit, type FormEditProps } from \"../form/builder/FormEdit.js\";\nimport { FormExport } from \"../form/exports/FormExport.js\";\nimport { FormPreview } from \"../form/preview/FormPreview.js\";\nimport { FormSettings } from \"../form/settings/FormSettings.js\";\nimport { ActionsTable, type ActionsTableProps } from \"../table/actions/ActionsTable.js\";\nimport { SubmissionsTable, type SubmissionsTableProps } from \"../table/submissions/SubmissionsTable.js\";\n\nexport type FormViewsProps<Data extends object = JSONRecord> = {\n form: FormEditProps[\"form\"];\n submissions: SubmissionsTableProps<Data>[\"data\"];\n availableActions: ActionsTableProps[\"availableActions\"];\n actions: ActionsTableProps[\"data\"];\n roles?: FormAccessProps[\"roles\"];\n i18n?: FormOptions[\"i18n\"];\n onAction: () => void;\n permissionsResolver?: PermissionsResolver<Data>;\n};\n\nfunction useSubmissionsOperations<Data extends object = JSONRecord>(permissionsResolver?: PermissionsResolver<Data>) {\n return [\n {\n title: \"Edit\",\n action: \"submission:edit\",\n alias: \"row\",\n icon: \"edit\",\n permissionsResolver\n },\n {\n action: \"submission:delete\",\n icon: \"trash\",\n buttonType: \"danger\",\n permissionsResolver\n }\n ] as SubmissionsTableProps<Data>[\"operations\"];\n}\n\nfunction useActionsOperations<Data extends object = JSONRecord>(permissionsResolver?: PermissionsResolver<Data>) {\n return [\n {\n title: \"Edit\",\n action: \"action:edit\",\n alias: \"row\",\n icon: \"edit\",\n permissionsResolver\n },\n {\n action: \"action:delete\",\n icon: \"trash\",\n buttonType: \"danger\",\n permissionsResolver\n }\n ] as SubmissionsTableProps<Data>[\"operations\"];\n}\n\nexport function FormViews<Data extends object = JSONRecord>({\n form,\n roles,\n availableActions,\n actions,\n permissionsResolver,\n submissions,\n ...props\n}: FormViewsProps<Data>) {\n const { t } = useI18n(props.i18n);\n const Tabs = getComponent<typeof DefaultTabs>(\"Tabs\");\n const TabList = getComponent<typeof DefaultTabList>(\"TabList\");\n const Tab = getComponent<typeof DefaultTab>(\"Tab\");\n const TabsBody = getComponent<typeof DefaultTabsBody>(\"TabsBody\");\n const TabPanel = getComponent<typeof DefaultTabPanel>(\"TabPanel\");\n const submissionsOperations = useSubmissionsOperations<Data>(permissionsResolver);\n const actionsOperations = useActionsOperations<any>(permissionsResolver);\n\n return (\n <Tabs>\n <TabList>\n <Tab value={0} icon='edit'>\n {t(\"Edit\")}\n </Tab>\n <Tab value={1} icon='data'>\n {t(\"Data\")}\n </Tab>\n <Tab value={2} icon='test-tube'>\n {t(\"Preview\")}\n </Tab>\n <Tab value={3} icon='paper-plane'>\n {t(\"Actions\")}\n </Tab>\n <Tab value={4} icon='lock'>\n {t(\"Access\")}\n </Tab>\n <Tab value={5} icon='download'>\n {t(\"Export\")}\n </Tab>\n <Tab value={6} icon='cog'>\n {t(\"Settings\")}\n </Tab>\n </TabList>\n <TabsBody>\n <TabPanel value={0} className='p-3 border-l-1 border-b-1 border-r-1 border-gray-300'>\n <FormEdit form={form} />\n </TabPanel>\n <TabPanel value={1}>\n <SubmissionsTable<Data>\n className={\"border-top-0\"}\n form={form as FormType}\n data={submissions}\n i18n={props.i18n}\n operations={submissionsOperations}\n />\n </TabPanel>\n <TabPanel value={2}>\n <FormPreview form={form as FormType} i18n={props.i18n} />\n </TabPanel>\n <TabPanel value={3}>\n <ActionsTable\n className={\"border-top-0\"}\n availableActions={availableActions}\n data={actions}\n operations={actionsOperations as any}\n i18n={props.i18n}\n />\n </TabPanel>\n <TabPanel value={4} className='pt-3'>\n <FormAccess form={form as FormType} roles={roles} options={props} />\n </TabPanel>\n <TabPanel value={5} className='pt-3'>\n <FormExport i18n={props.i18n} />\n </TabPanel>\n <TabPanel value={6} className='p-3 border-l-1 border-b-1 border-r-1 border-gray-300'>\n <FormSettings form={form as FormType} options={{}} />\n </TabPanel>\n </TabsBody>\n </Tabs>\n );\n}\n"],"names":["useSubmissionsOperations","permissionsResolver","useActionsOperations","FormViews","form","roles","availableActions","actions","submissions","props","t","useI18n","Tabs","getComponent","TabList","Tab","TabsBody","TabPanel","submissionsOperations","actionsOperations","jsxs","jsx","FormEdit","SubmissionsTable","FormPreview","ActionsTable","FormAccess","FormExport","FormSettings"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/react-formio",
|
|
3
|
-
"version": "3.0.0-rc.
|
|
3
|
+
"version": "3.0.0-rc.8",
|
|
4
4
|
"description": "Provide a react formio wrapper. Written in TypeScript.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@tanstack/react-table": ">=8.20.6",
|
|
47
|
-
"@tsed/tailwind-formio": "3.0.0-rc.
|
|
48
|
-
"@tsed/typescript": "3.0.0-rc.
|
|
47
|
+
"@tsed/tailwind-formio": "3.0.0-rc.8",
|
|
48
|
+
"@tsed/typescript": "3.0.0-rc.8",
|
|
49
49
|
"microbundle": "0.13.0",
|
|
50
50
|
"vite": "7.1.5",
|
|
51
51
|
"vitest": "3.2.4"
|
|
@@ -31,57 +31,59 @@ export function Table<Data extends object = JSONRecord>({
|
|
|
31
31
|
const { pagination } = tableInstance.getState();
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
|
-
<div className={cx("table-group
|
|
35
|
-
<
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{headerGroup.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
))}
|
|
53
|
-
</thead>
|
|
54
|
-
<tbody>
|
|
55
|
-
{tableInstance.getRowModel().rows.map((row) => {
|
|
56
|
-
return (
|
|
57
|
-
<tr key={row.id} data-testid={`body-row-${row.id}`}>
|
|
58
|
-
{row
|
|
59
|
-
.getVisibleCells()
|
|
60
|
-
.filter((cell) => !cell.column.columnDef.meta?.hidden)
|
|
61
|
-
.map((cell) => {
|
|
62
|
-
return (
|
|
63
|
-
<td {...cell.column.columnDef?.meta?.cellProps} key={cell.id} data-testid={`body-cell-${cell.id}`}>
|
|
64
|
-
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
65
|
-
</td>
|
|
66
|
-
);
|
|
67
|
-
})}
|
|
68
|
-
</tr>
|
|
69
|
-
);
|
|
70
|
-
})}
|
|
71
|
-
</tbody>
|
|
72
|
-
{enableFooter && (
|
|
73
|
-
<tfoot>
|
|
74
|
-
{tableInstance.getFooterGroups().map((footerGroup) => (
|
|
75
|
-
<tr key={footerGroup.id}>
|
|
76
|
-
{footerGroup.headers.map((header) => (
|
|
77
|
-
<th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>
|
|
78
|
-
))}
|
|
34
|
+
<div className={cx("table-group", className)}>
|
|
35
|
+
<div className='table-group-body'>
|
|
36
|
+
<table className='table table-striped table-hover'>
|
|
37
|
+
<thead>
|
|
38
|
+
{tableInstance.getHeaderGroups().map((headerGroup) => (
|
|
39
|
+
<tr key={headerGroup.id}>
|
|
40
|
+
{headerGroup.headers.map((header) => {
|
|
41
|
+
const sort = header.column.getIsSorted();
|
|
42
|
+
return (
|
|
43
|
+
<th
|
|
44
|
+
data-testid={`head-cell-${header.id}`}
|
|
45
|
+
key={header.id}
|
|
46
|
+
aria-sort={sort ? (sort === "asc" ? "ascending" : "descending") : "none"}
|
|
47
|
+
>
|
|
48
|
+
{header.isPlaceholder ? null : <CellHeader header={header} i18n={i18n} />}
|
|
49
|
+
</th>
|
|
50
|
+
);
|
|
51
|
+
})}
|
|
79
52
|
</tr>
|
|
80
53
|
))}
|
|
81
|
-
</
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
54
|
+
</thead>
|
|
55
|
+
<tbody>
|
|
56
|
+
{tableInstance.getRowModel().rows.map((row) => {
|
|
57
|
+
return (
|
|
58
|
+
<tr key={row.id} data-testid={`body-row-${row.id}`}>
|
|
59
|
+
{row
|
|
60
|
+
.getVisibleCells()
|
|
61
|
+
.filter((cell) => !cell.column.columnDef.meta?.hidden)
|
|
62
|
+
.map((cell) => {
|
|
63
|
+
return (
|
|
64
|
+
<td {...cell.column.columnDef?.meta?.cellProps} key={cell.id} data-testid={`body-cell-${cell.id}`}>
|
|
65
|
+
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
66
|
+
</td>
|
|
67
|
+
);
|
|
68
|
+
})}
|
|
69
|
+
</tr>
|
|
70
|
+
);
|
|
71
|
+
})}
|
|
72
|
+
</tbody>
|
|
73
|
+
{enableFooter && (
|
|
74
|
+
<tfoot>
|
|
75
|
+
{tableInstance.getFooterGroups().map((footerGroup) => (
|
|
76
|
+
<tr key={footerGroup.id}>
|
|
77
|
+
{footerGroup.headers.map((header) => (
|
|
78
|
+
<th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>
|
|
79
|
+
))}
|
|
80
|
+
</tr>
|
|
81
|
+
))}
|
|
82
|
+
</tfoot>
|
|
83
|
+
)}
|
|
84
|
+
</table>
|
|
85
|
+
</div>
|
|
86
|
+
<div className='table-group-footer'>
|
|
85
87
|
{props.data.length && pagination ? (
|
|
86
88
|
<Pagination
|
|
87
89
|
className={"flex-1"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { CellContext } from "@tanstack/react-table";
|
|
2
2
|
|
|
3
|
-
import type { CellMetadata,
|
|
3
|
+
import type { CellMetadata, Operation } from "../../../interfaces";
|
|
4
|
+
import type { JSONRecord } from "../../../interfaces/JSONRecord.js";
|
|
4
5
|
import { getComponent, registerComponent } from "../../../registries/components";
|
|
5
6
|
import type { DefaultOperationButton } from "./DefaultOperationButton";
|
|
6
7
|
|
|
7
|
-
export interface DefaultCellOperationsProps<Data extends
|
|
8
|
+
export interface DefaultCellOperationsProps<Data extends object = JSONRecord> {
|
|
8
9
|
info: CellContext<Data, unknown>;
|
|
9
10
|
operations: Operation<Data>[];
|
|
10
11
|
metadata?: CellMetadata;
|
|
@@ -12,7 +13,7 @@ export interface DefaultCellOperationsProps<Data extends { [key: string]: JSON }
|
|
|
12
13
|
onClick?: (data: any, operation: Operation<Data>) => void;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
export function DefaultCellOperations<Data extends
|
|
16
|
+
export function DefaultCellOperations<Data extends object = JSONRecord>({
|
|
16
17
|
info,
|
|
17
18
|
metadata,
|
|
18
19
|
operations,
|
|
@@ -2,13 +2,13 @@ import { CellContext } from "@tanstack/react-table";
|
|
|
2
2
|
import cx from "classnames";
|
|
3
3
|
import { HTMLAttributes } from "react";
|
|
4
4
|
|
|
5
|
-
import { type CellMetadata,
|
|
5
|
+
import { type CellMetadata, Operation } from "../../../interfaces";
|
|
6
|
+
import type { JSONRecord } from "../../../interfaces/JSONRecord.js";
|
|
6
7
|
import { registerComponent } from "../../../registries/components";
|
|
7
8
|
import { iconClass } from "../../../utils/iconClass";
|
|
8
9
|
import { stopPropagationWrapper } from "../../../utils/stopPropagationWrapper";
|
|
9
10
|
|
|
10
|
-
export interface OperationButtonProps<Data extends
|
|
11
|
-
extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
11
|
+
export interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, "onClick"> {
|
|
12
12
|
operation: Operation<Data>;
|
|
13
13
|
info: CellContext<Data, unknown>;
|
|
14
14
|
metadata?: CellMetadata;
|
|
@@ -16,7 +16,7 @@ export interface OperationButtonProps<Data extends { [key: string]: JSON } = { [
|
|
|
16
16
|
i18n?: (i18n: string) => string;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
export function DefaultOperationButton<Data extends
|
|
19
|
+
export function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>) {
|
|
20
20
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
21
|
const { i18n = (f: string) => f, onClick, operation, info, ...extraProps } = props;
|
|
22
22
|
const { className = "btn", buttonSize = "xs", buttonType = "primary", buttonOutline, action, title = "", icon = "" } = operation;
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
import { useEffect } from "react";
|
|
14
14
|
|
|
15
15
|
import { useI18n } from "../../../hooks/useI18n.js";
|
|
16
|
-
import { type FormOptions,
|
|
16
|
+
import { type FormOptions, Operation } from "../../../interfaces";
|
|
17
|
+
import type { JSONRecord } from "../../../interfaces/JSONRecord.js";
|
|
17
18
|
import { getComponent } from "../../../registries/components";
|
|
18
19
|
import type { DefaultCellOperations } from "../components/DefaultCellOperations";
|
|
19
20
|
|
|
20
|
-
export interface UseTableProps<Data extends
|
|
21
|
-
extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
21
|
+
export interface UseTableProps<Data extends object = JSONRecord> extends Omit<TableOptions<Data>, "getCoreRowModel" | "onClick"> {
|
|
22
22
|
operations: Operation<Data>[];
|
|
23
23
|
metadata?: Record<string, unknown>;
|
|
24
24
|
i18n?: FormOptions["i18n"];
|
|
@@ -28,7 +28,7 @@ export interface UseTableProps<Data extends { [key: string]: JSON } = { [key: st
|
|
|
28
28
|
pageSizes?: number[];
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function useTable<Data extends
|
|
31
|
+
export function useTable<Data extends object = JSONRecord>(props: UseTableProps<Data>) {
|
|
32
32
|
const Operations = getComponent<typeof DefaultCellOperations<Data>>("CellOperations");
|
|
33
33
|
const { t } = useI18n(props.i18n);
|
|
34
34
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { JSONRecord } from "../../interfaces/JSONRecord.js";
|
|
2
2
|
import { useForm, UseFormProps } from "./useForm";
|
|
3
3
|
|
|
4
4
|
class CSSProperties {}
|
|
5
5
|
|
|
6
|
-
export interface FormProps<Data extends
|
|
6
|
+
export interface FormProps<Data extends object = JSONRecord> extends UseFormProps<Data> {
|
|
7
7
|
["data-testid"]?: string;
|
|
8
8
|
/**
|
|
9
9
|
*
|
|
@@ -13,7 +13,7 @@ export interface FormProps<Data extends { [key: string]: JSON } = { [key: string
|
|
|
13
13
|
style?: CSSProperties;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export function Form<Data extends
|
|
16
|
+
export function Form<Data extends object = JSONRecord>({
|
|
17
17
|
style,
|
|
18
18
|
className,
|
|
19
19
|
"data-testid": dataTestId = "formio-container",
|
|
@@ -3,7 +3,7 @@ import { EventEmitter2 } from "eventemitter2";
|
|
|
3
3
|
import { type MutableRefObject, useEffect, useRef, useState } from "react";
|
|
4
4
|
|
|
5
5
|
import type { ChangedSubmission, ComponentType, FormOptions, FormType, SubmissionType } from "../../interfaces";
|
|
6
|
-
import type { JSONRecord } from "../../interfaces/JSONRecord.js";
|
|
6
|
+
import type { JSON, JSONRecord } from "../../interfaces/JSONRecord.js";
|
|
7
7
|
import { FormCustomEvent } from "./types";
|
|
8
8
|
|
|
9
9
|
type Webform = any;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useI18n } from "../../hooks/useI18n.js";
|
|
2
|
-
import type { FormOptions, FormType,
|
|
2
|
+
import type { FormOptions, FormType, PermissionsResolver } from "../../interfaces/index.js";
|
|
3
|
+
import type { JSONRecord } from "../../interfaces/JSONRecord.js";
|
|
3
4
|
import type { Tab as DefaultTab } from "../../molecules/tabs/Tab.js";
|
|
4
5
|
import type { TabList as DefaultTabList } from "../../molecules/tabs/TabList.js";
|
|
5
6
|
import type { TabPanel as DefaultTabPanel } from "../../molecules/tabs/TabPanel.js";
|
|
@@ -14,7 +15,7 @@ import { FormSettings } from "../form/settings/FormSettings.js";
|
|
|
14
15
|
import { ActionsTable, type ActionsTableProps } from "../table/actions/ActionsTable.js";
|
|
15
16
|
import { SubmissionsTable, type SubmissionsTableProps } from "../table/submissions/SubmissionsTable.js";
|
|
16
17
|
|
|
17
|
-
export type FormViewsProps<Data extends
|
|
18
|
+
export type FormViewsProps<Data extends object = JSONRecord> = {
|
|
18
19
|
form: FormEditProps["form"];
|
|
19
20
|
submissions: SubmissionsTableProps<Data>["data"];
|
|
20
21
|
availableActions: ActionsTableProps["availableActions"];
|
|
@@ -25,9 +26,7 @@ export type FormViewsProps<Data extends { [key: string]: JSON } = { [key: string
|
|
|
25
26
|
permissionsResolver?: PermissionsResolver<Data>;
|
|
26
27
|
};
|
|
27
28
|
|
|
28
|
-
function useSubmissionsOperations<Data extends
|
|
29
|
-
permissionsResolver?: PermissionsResolver<Data>
|
|
30
|
-
) {
|
|
29
|
+
function useSubmissionsOperations<Data extends object = JSONRecord>(permissionsResolver?: PermissionsResolver<Data>) {
|
|
31
30
|
return [
|
|
32
31
|
{
|
|
33
32
|
title: "Edit",
|
|
@@ -45,9 +44,7 @@ function useSubmissionsOperations<Data extends { [key: string]: JSON } = { [key:
|
|
|
45
44
|
] as SubmissionsTableProps<Data>["operations"];
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
function useActionsOperations<Data extends
|
|
49
|
-
permissionsResolver?: PermissionsResolver<Data>
|
|
50
|
-
) {
|
|
47
|
+
function useActionsOperations<Data extends object = JSONRecord>(permissionsResolver?: PermissionsResolver<Data>) {
|
|
51
48
|
return [
|
|
52
49
|
{
|
|
53
50
|
title: "Edit",
|
|
@@ -65,7 +62,7 @@ function useActionsOperations<Data extends { [key: string]: JSON } = { [key: str
|
|
|
65
62
|
] as SubmissionsTableProps<Data>["operations"];
|
|
66
63
|
}
|
|
67
64
|
|
|
68
|
-
export function FormViews<Data extends
|
|
65
|
+
export function FormViews<Data extends object = JSONRecord>({
|
|
69
66
|
form,
|
|
70
67
|
roles,
|
|
71
68
|
availableActions,
|