@mittwald/flow-react-components 1.6.0-next.37 → 1.6.0-next.38
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/assets/component-index.json +1 -1
- package/dist/assets/doc-properties.json +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs +5 -12
- package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs +4 -2
- package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs +7 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs +14 -0
- package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs.map +1 -0
- package/dist/types/components/Table/components/TableCell/TableCell.d.ts +4 -1
- package/dist/types/components/Table/components/TableHeader/context.d.ts +6 -0
- package/package.json +10 -10
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import { SkeletonText } from "../../../SkeletonText/SkeletonText.mjs";
|
|
4
4
|
import { SkeletonRawText } from "../../../SkeletonMode/components/SkeletonRawText/SkeletonRawText.mjs";
|
|
5
5
|
import Table_module_default from "../../Table.module.mjs";
|
|
6
|
-
import { TableColumn } from "../TableColumn/TableColumn.mjs";
|
|
7
6
|
import clsx from "clsx";
|
|
8
7
|
import { Suspense } from "react";
|
|
9
8
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -12,20 +11,14 @@ import * as Aria from "react-aria-components";
|
|
|
12
11
|
/** @flr-generate all */
|
|
13
12
|
var TableCell = (props) => {
|
|
14
13
|
const { children, className, rowHeader, horizontalAlign = "start", ...rest } = props;
|
|
15
|
-
const rootClassName = clsx(Table_module_default.cell, horizontalAlign !== "start" && Table_module_default[`horizontal-align-${horizontalAlign}`], className);
|
|
16
|
-
const content = /* @__PURE__ */ jsx(Suspense, {
|
|
17
|
-
fallback: /* @__PURE__ */ jsx(SkeletonText, { width: "100px" }),
|
|
18
|
-
children: /* @__PURE__ */ jsx(SkeletonRawText, { children })
|
|
19
|
-
});
|
|
20
|
-
if (rowHeader) return /* @__PURE__ */ jsx(TableColumn, {
|
|
21
|
-
className: rootClassName,
|
|
22
|
-
...rest,
|
|
23
|
-
children: content
|
|
24
|
-
});
|
|
14
|
+
const rootClassName = clsx(Table_module_default.cell, rowHeader && Table_module_default.column, horizontalAlign !== "start" && Table_module_default[`horizontal-align-${horizontalAlign}`], className);
|
|
25
15
|
return /* @__PURE__ */ jsx(Aria.Cell, {
|
|
26
16
|
className: rootClassName,
|
|
27
17
|
...rest,
|
|
28
|
-
children:
|
|
18
|
+
children: /* @__PURE__ */ jsx(Suspense, {
|
|
19
|
+
fallback: /* @__PURE__ */ jsx(SkeletonText, { width: "100px" }),
|
|
20
|
+
children: /* @__PURE__ */ jsx(SkeletonRawText, { children })
|
|
21
|
+
})
|
|
29
22
|
});
|
|
30
23
|
};
|
|
31
24
|
//#endregion
|
package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCell.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableCell/TableCell.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport { Suspense } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"../../Table.module.scss\";\nimport { SkeletonText } from \"@/components/SkeletonText\";\nimport {
|
|
1
|
+
{"version":3,"file":"TableCell.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableCell/TableCell.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport { Suspense } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"../../Table.module.scss\";\nimport { SkeletonText } from \"@/components/SkeletonText\";\nimport { SkeletonRawText } from \"@/components/SkeletonMode/components/SkeletonRawText\";\n\nexport interface TableCellProps\n extends\n Omit<Aria.CellProps, \"children\" | \"style\" | \"render\">,\n PropsWithChildren {\n /**\n * Styles the cell as a row header. Its semantics come from the column: the\n * first column, or the one with `isRowHeader`.\n */\n rowHeader?: boolean;\n /** Horizontal alignment of the cell content @default \"start\" */\n horizontalAlign?: \"start\" | \"center\" | \"end\";\n}\n\n/** @flr-generate all */\nexport const TableCell: FC<TableCellProps> = (props) => {\n const {\n children,\n className,\n rowHeader,\n horizontalAlign = \"start\",\n ...rest\n } = props;\n\n const rootClassName = clsx(\n styles.cell,\n rowHeader && styles.column,\n horizontalAlign !== \"start\" &&\n styles[`horizontal-align-${horizontalAlign}`],\n className,\n );\n\n return (\n <Aria.Cell className={rootClassName} {...rest}>\n <Suspense fallback={<SkeletonText width=\"100px\" />}>\n <SkeletonRawText>{children}</SkeletonRawText>\n </Suspense>\n </Aria.Cell>\n );\n};\n\nexport default TableCell;\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,aAAiC,UAAU;CACtD,MAAM,EACJ,UACA,WACA,WACA,kBAAkB,SAClB,GAAG,SACD;CAEJ,MAAM,gBAAgB,KACpBA,qBAAO,MACP,aAAaA,qBAAO,QACpB,oBAAoB,WAClBA,qBAAO,oBAAoB,oBAC7B,SACF;CAEA,OACE,oBAAC,KAAK,MAAN;EAAW,WAAW;EAAe,GAAI;EACvC,UAAA,oBAAC,UAAD;GAAU,UAAU,oBAAC,cAAD,EAAc,OAAM,QAAS,CAAA;GAC/C,UAAA,oBAAC,iBAAD,EAAkB,SAA0B,CAAA;EACpC,CAAA;CACD,CAAA;AAEf"}
|
package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs
CHANGED
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
import { PropsContextProvider } from "../../../../lib/propsContext/components/PropsContextProvider.mjs";
|
|
4
4
|
import { SkeletonRawText } from "../../../SkeletonMode/components/SkeletonRawText/SkeletonRawText.mjs";
|
|
5
5
|
import Table_module_default from "../../Table.module.mjs";
|
|
6
|
+
import { useIsFirstColumn } from "../TableHeader/context.mjs";
|
|
6
7
|
import clsx from "clsx";
|
|
7
8
|
import { jsx } from "react/jsx-runtime";
|
|
8
9
|
import * as Aria from "react-aria-components";
|
|
9
10
|
//#region src/components/Table/components/TableColumn/TableColumn.tsx
|
|
10
11
|
/** @flr-generate all */
|
|
11
12
|
var TableColumn = (props) => {
|
|
12
|
-
const { children, className, horizontalAlign = "start", width, minWidth, ...rest } = props;
|
|
13
|
+
const { children, className, horizontalAlign = "start", width, minWidth, isRowHeader, ...rest } = props;
|
|
14
|
+
const isFirstColumn = useIsFirstColumn();
|
|
13
15
|
const rootClassName = clsx(Table_module_default.column, horizontalAlign !== "start" && Table_module_default[`horizontal-align-${horizontalAlign}`], className);
|
|
14
16
|
const propsContext = { Checkbox: { slot: null } };
|
|
15
17
|
return /* @__PURE__ */ jsx(Aria.Column, {
|
|
16
|
-
isRowHeader: true,
|
|
18
|
+
isRowHeader: isRowHeader ?? isFirstColumn ?? true,
|
|
17
19
|
className: rootClassName,
|
|
18
20
|
...rest,
|
|
19
21
|
style: {
|
package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableColumn.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableColumn/TableColumn.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"../../Table.module.scss\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport { SkeletonRawText } from \"@/components/SkeletonMode/components/SkeletonRawText\";\n\nexport interface TableColumnProps\n extends\n Omit<\n Aria.ColumnProps,\n \"children\" | \"width\" | \"minWidth\" | \"maxWidth\" | \"style\"\n >,\n PropsWithChildren {\n /** Horizontal alignment of the cell content @default \"start\" */\n horizontalAlign?: \"start\" | \"center\" | \"end\";\n /** The width of the column. */\n width?: number | string;\n /** The minimum width of the column. */\n minWidth?: number | string;\n}\n\n/** @flr-generate all */\nexport const TableColumn: FC<TableColumnProps> = (props) => {\n const {\n children,\n className,\n horizontalAlign = \"start\",\n width,\n minWidth,\n ...rest\n } = props;\n const rootClassName = clsx(\n styles.column,\n horizontalAlign !== \"start\" &&\n styles[`horizontal-align-${horizontalAlign}`],\n className,\n );\n\n const propsContext: PropsContext = { Checkbox: { slot: null } };\n\n return (\n <Aria.Column\n isRowHeader\n className={rootClassName}\n {...rest}\n style={{ width, minWidth }}\n >\n <PropsContextProvider props={propsContext}>\n <SkeletonRawText>{children}</SkeletonRawText>\n </PropsContextProvider>\n </Aria.Column>\n );\n};\n\nexport default TableColumn;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TableColumn.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableColumn/TableColumn.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"../../Table.module.scss\";\nimport { type PropsContext, PropsContextProvider } from \"@/lib/propsContext\";\nimport { SkeletonRawText } from \"@/components/SkeletonMode/components/SkeletonRawText\";\nimport { useIsFirstColumn } from \"@/components/Table/components/TableHeader/context\";\n\nexport interface TableColumnProps\n extends\n Omit<\n Aria.ColumnProps,\n \"children\" | \"width\" | \"minWidth\" | \"maxWidth\" | \"style\"\n >,\n PropsWithChildren {\n /** Horizontal alignment of the cell content @default \"start\" */\n horizontalAlign?: \"start\" | \"center\" | \"end\";\n /** The width of the column. */\n width?: number | string;\n /** The minimum width of the column. */\n minWidth?: number | string;\n}\n\n/** @flr-generate all */\nexport const TableColumn: FC<TableColumnProps> = (props) => {\n const {\n children,\n className,\n horizontalAlign = \"start\",\n width,\n minWidth,\n isRowHeader,\n ...rest\n } = props;\n const isFirstColumn = useIsFirstColumn();\n\n const rootClassName = clsx(\n styles.column,\n horizontalAlign !== \"start\" &&\n styles[`horizontal-align-${horizontalAlign}`],\n className,\n );\n\n const propsContext: PropsContext = { Checkbox: { slot: null } };\n\n return (\n <Aria.Column\n isRowHeader={isRowHeader ?? isFirstColumn ?? true}\n className={rootClassName}\n {...rest}\n style={{ width, minWidth }}\n >\n <PropsContextProvider props={propsContext}>\n <SkeletonRawText>{children}</SkeletonRawText>\n </PropsContextProvider>\n </Aria.Column>\n );\n};\n\nexport default TableColumn;\n"],"mappings":";;;;;;;;;;;AAwBA,IAAa,eAAqC,UAAU;CAC1D,MAAM,EACJ,UACA,WACA,kBAAkB,SAClB,OACA,UACA,aACA,GAAG,SACD;CACJ,MAAM,gBAAgB,iBAAiB;CAEvC,MAAM,gBAAgB,KACpBA,qBAAO,QACP,oBAAoB,WAClBA,qBAAO,oBAAoB,oBAC7B,SACF;CAEA,MAAM,eAA6B,EAAE,UAAU,EAAE,MAAM,KAAK,EAAE;CAE9D,OACE,oBAAC,KAAK,QAAN;EACE,aAAa,eAAe,iBAAiB;EAC7C,WAAW;EACX,GAAI;EACJ,OAAO;GAAE;GAAO;EAAS;EAEzB,UAAA,oBAAC,sBAAD;GAAsB,OAAO;GAC3B,UAAA,oBAAC,iBAAD,EAAkB,SAA0B,CAAA;EACxB,CAAA;CACX,CAAA;AAEjB"}
|
package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use client"
|
|
2
2
|
/* */
|
|
3
3
|
import Table_module_default from "../../Table.module.mjs";
|
|
4
|
+
import { IsFirstColumnContext } from "./context.mjs";
|
|
4
5
|
import clsx from "clsx";
|
|
6
|
+
import { Children } from "react";
|
|
5
7
|
import { jsx } from "react/jsx-runtime";
|
|
6
8
|
import * as Aria from "react-aria-components";
|
|
7
9
|
//#region src/components/Table/components/TableHeader/TableHeader.tsx
|
|
@@ -9,10 +11,14 @@ import * as Aria from "react-aria-components";
|
|
|
9
11
|
var TableHeader = (props) => {
|
|
10
12
|
const { children, className, ...rest } = props;
|
|
11
13
|
const rootClassName = clsx(Table_module_default.header, className);
|
|
14
|
+
const columns = typeof children === "function" ? children : Children.toArray(children).map((column, index) => /* @__PURE__ */ jsx(IsFirstColumnContext, {
|
|
15
|
+
value: index === 0,
|
|
16
|
+
children: column
|
|
17
|
+
}, index));
|
|
12
18
|
return /* @__PURE__ */ jsx(Aria.TableHeader, {
|
|
13
19
|
className: rootClassName,
|
|
14
20
|
...rest,
|
|
15
|
-
children
|
|
21
|
+
children: columns
|
|
16
22
|
});
|
|
17
23
|
};
|
|
18
24
|
//#endregion
|
package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableHeader/TableHeader.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"TableHeader.mjs","names":["styles"],"sources":["../../../../../../../../../src/components/Table/components/TableHeader/TableHeader.tsx"],"sourcesContent":["import { Children, type FC } from \"react\";\nimport * as Aria from \"react-aria-components\";\nimport clsx from \"clsx\";\nimport styles from \"../../Table.module.scss\";\nimport { IsFirstColumnContext } from \"./context\";\n\nexport type TableHeaderProps = Aria.TableHeaderProps<never>;\n\n/** @flr-generate all */\nexport const TableHeader: FC<TableHeaderProps> = (props) => {\n const { children, className, ...rest } = props;\n\n const rootClassName = clsx(styles.header, className);\n\n // Assumes the first child renders a column; a wrapper that renders nothing\n // leaves the table without row header column, and react-aria throws.\n const columns =\n typeof children === \"function\"\n ? children\n : Children.toArray(children).map((column, index) => (\n <IsFirstColumnContext key={index} value={index === 0}>\n {column}\n </IsFirstColumnContext>\n ));\n\n return (\n <Aria.TableHeader className={rootClassName} {...rest}>\n {columns}\n </Aria.TableHeader>\n );\n};\n\nexport default TableHeader;\n"],"mappings":";;;;;;;;;;AASA,IAAa,eAAqC,UAAU;CAC1D,MAAM,EAAE,UAAU,WAAW,GAAG,SAAS;CAEzC,MAAM,gBAAgB,KAAKA,qBAAO,QAAQ,SAAS;CAInD,MAAM,UACJ,OAAO,aAAa,aAChB,WACA,SAAS,QAAQ,QAAQ,CAAC,CAAC,KAAK,QAAQ,UACtC,oBAAC,sBAAD;EAAkC,OAAO,UAAU;EAChD,UAAA;CACmB,GAFK,KAEL,CACvB;CAEP,OACE,oBAAC,KAAK,aAAN;EAAkB,WAAW;EAAe,GAAI;EAC7C,UAAA;CACe,CAAA;AAEtB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
/* */
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
//#region src/components/Table/components/TableHeader/context.ts
|
|
5
|
+
/**
|
|
6
|
+
* Whether a column is the first of its `TableHeader`. Undefined outside a
|
|
7
|
+
* header that can tell, e.g. with dynamic `columns`.
|
|
8
|
+
*/
|
|
9
|
+
var IsFirstColumnContext = createContext(void 0);
|
|
10
|
+
var useIsFirstColumn = () => useContext(IsFirstColumnContext);
|
|
11
|
+
//#endregion
|
|
12
|
+
export { IsFirstColumnContext, useIsFirstColumn };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=context.mjs.map
|
package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.mjs","names":[],"sources":["../../../../../../../../../src/components/Table/components/TableHeader/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\n/**\n * Whether a column is the first of its `TableHeader`. Undefined outside a\n * header that can tell, e.g. with dynamic `columns`.\n */\nexport const IsFirstColumnContext = createContext<boolean | undefined>(\n undefined,\n);\n\nexport const useIsFirstColumn = () => useContext(IsFirstColumnContext);\n"],"mappings":";;;;;;;;AAMA,IAAa,uBAAuB,cAClC,KAAA,CACF;AAEA,IAAa,yBAAyB,WAAW,oBAAoB"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { FC, PropsWithChildren } from 'react';
|
|
2
2
|
import * as Aria from "react-aria-components";
|
|
3
3
|
export interface TableCellProps extends Omit<Aria.CellProps, "children" | "style" | "render">, PropsWithChildren {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Styles the cell as a row header. Its semantics come from the column: the
|
|
6
|
+
* first column, or the one with `isRowHeader`.
|
|
7
|
+
*/
|
|
5
8
|
rowHeader?: boolean;
|
|
6
9
|
/** Horizontal alignment of the cell content @default "start" */
|
|
7
10
|
horizontalAlign?: "start" | "center" | "end";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a column is the first of its `TableHeader`. Undefined outside a
|
|
3
|
+
* header that can tell, e.g. with dynamic `columns`.
|
|
4
|
+
*/
|
|
5
|
+
export declare const IsFirstColumnContext: import('react').Context<boolean | undefined>;
|
|
6
|
+
export declare const useIsFirstColumn: () => boolean | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-react-components",
|
|
3
|
-
"version": "1.6.0-next.
|
|
3
|
+
"version": "1.6.0-next.38",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A React implementation of Flow, mittwald’s design system",
|
|
6
6
|
"homepage": "https://flow.mittwald.de",
|
|
@@ -84,9 +84,9 @@
|
|
|
84
84
|
"@internationalized/string-compiler": "^3.4.1",
|
|
85
85
|
"@lezer/common": "^1.5.2",
|
|
86
86
|
"@lezer/highlight": "^1.2.3",
|
|
87
|
-
"@mittwald/flow-icons": "^1.6.0-next.
|
|
87
|
+
"@mittwald/flow-icons": "^1.6.0-next.38",
|
|
88
88
|
"@mittwald/password-tools-js": "^3.0.0",
|
|
89
|
-
"@mittwald/react-tunnel": "^1.6.0-next.
|
|
89
|
+
"@mittwald/react-tunnel": "^1.6.0-next.38",
|
|
90
90
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
91
91
|
"@react-aria/form": "^3.2.1",
|
|
92
92
|
"@react-aria/i18n": "^3.13.1",
|
|
@@ -139,13 +139,13 @@
|
|
|
139
139
|
"@internationalized/date": "^3.12.3",
|
|
140
140
|
"@lezer/generator": "^1.8.0",
|
|
141
141
|
"@lezer/lr": "^1.4.10",
|
|
142
|
-
"@mittwald/flow-components-base": "1.6.0-next.
|
|
143
|
-
"@mittwald/flow-core": "1.6.0-next.
|
|
144
|
-
"@mittwald/flow-design-tokens": "1.6.0-next.
|
|
145
|
-
"@mittwald/flow-icons-base": "1.6.0-next.
|
|
142
|
+
"@mittwald/flow-components-base": "1.6.0-next.38",
|
|
143
|
+
"@mittwald/flow-core": "1.6.0-next.38",
|
|
144
|
+
"@mittwald/flow-design-tokens": "1.6.0-next.38",
|
|
145
|
+
"@mittwald/flow-icons-base": "1.6.0-next.38",
|
|
146
146
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
147
147
|
"@mittwald/remote-dom-react": "1.2.2-mittwald.10",
|
|
148
|
-
"@mittwald/typescript-config": "1.6.0-next.
|
|
148
|
+
"@mittwald/typescript-config": "1.6.0-next.38",
|
|
149
149
|
"@nx/storybook": "^22.7.6",
|
|
150
150
|
"@storybook/addon-a11y": "^10.5.10",
|
|
151
151
|
"@storybook/addon-actions": "^9.0.8",
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
},
|
|
200
200
|
"peerDependencies": {
|
|
201
201
|
"@internationalized/date": "^3.12.2",
|
|
202
|
-
"@mittwald/flow-icons-pro": "1.6.0-next.
|
|
202
|
+
"@mittwald/flow-icons-pro": "1.6.0-next.38",
|
|
203
203
|
"@mittwald/react-use-promise": "^4.2.2",
|
|
204
204
|
"next": "^16.2.3",
|
|
205
205
|
"react": "^19.2.0",
|
|
@@ -223,5 +223,5 @@
|
|
|
223
223
|
"browserslist": [
|
|
224
224
|
"baseline widely available"
|
|
225
225
|
],
|
|
226
|
-
"gitHead": "
|
|
226
|
+
"gitHead": "6cdf6117125d8cd2993df5ac2a61d4e5405643c6"
|
|
227
227
|
}
|