@mittwald/flow-react-components 0.2.0-alpha.631 → 0.2.0-alpha.633

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.
@@ -1,6 +1,6 @@
1
1
  "use client"
2
2
  /* */
3
- import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import SyntaxHighlighter from 'react-syntax-highlighter';
6
6
  import clsx from 'clsx';
@@ -8,8 +8,18 @@ import { CopyButton } from '../CopyButton/CopyButton.mjs';
8
8
  import styles from './CodeBlock.module.scss.mjs';
9
9
 
10
10
  const CodeBlock = (props) => {
11
- const { code, className, copyable, color = "default", ...rest } = props;
11
+ const {
12
+ code,
13
+ className,
14
+ copyable,
15
+ color = "default",
16
+ children,
17
+ ...rest
18
+ } = props;
12
19
  const rootClassName = clsx(styles.codeBlock, styles[color], className);
20
+ if (!code) {
21
+ return /* @__PURE__ */ jsx("div", { className: rootClassName, children: /* @__PURE__ */ jsx("pre", { children: /* @__PURE__ */ jsx("code", { children }) }) });
22
+ }
13
23
  return /* @__PURE__ */ jsxs("div", { className: rootClassName, children: [
14
24
  /* @__PURE__ */ jsx(
15
25
  SyntaxHighlighter,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.mjs","sources":["../../../../../../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport React from \"react\";\nimport SyntaxHighlighter from \"react-syntax-highlighter\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport clsx from \"clsx\";\nimport { CopyButton } from \"@/components/CopyButton\";\nimport styles from \"./CodeBlock.module.scss\";\n\nexport interface CodeBlockProps extends PropsWithClassName {\n /** Adds a copy icon to the code block to copy its content. */\n copyable?: boolean;\n /** The color of the code block. @default \"default\" */\n color?: \"default\" | \"light\" | \"dark\";\n /** The code to display inside the code block. */\n code: string | string[];\n\n // ATTENTION\n // we reexport by copy the props here - react-typescript-docgen\n // will not correctly export the props from react-syntax-highlighter\n // when using OMIT duo some wired circumstances how react-syntax-highlighter\n // exports his types - the following types are excluded\n //\n // children: string | string[];\n //\n language?: string | undefined;\n style?: Record<string, React.CSSProperties> | undefined;\n customStyle?: React.CSSProperties | undefined;\n codeTagProps?: React.HTMLProps<HTMLElement> | undefined;\n useInlineStyles?: boolean | undefined;\n showLineNumbers?: boolean | undefined;\n showInlineLineNumbers?: boolean | undefined;\n startingLineNumber?: number | undefined;\n lineNumberContainerStyle?: React.CSSProperties | undefined;\n lineNumberStyle?: React.CSSProperties | lineNumberStyleFunction | undefined;\n wrapLines?: boolean | undefined;\n wrapLongLines?: boolean | undefined;\n lineProps?: lineTagPropsFunction | React.HTMLProps<HTMLElement> | undefined;\n renderer?: (props: rendererProps) => React.ReactNode;\n PreTag?:\n | keyof React.JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.ComponentType<any>\n | undefined;\n CodeTag?:\n | keyof React.JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.ComponentType<any>\n | undefined;\n}\n\n/** @flr-generate all */\nexport const CodeBlock: FC<CodeBlockProps> = (props) => {\n const { code, className, copyable, color = \"default\", ...rest } = props;\n\n const rootClassName = clsx(styles.codeBlock, styles[color], className);\n\n return (\n <div className={rootClassName}>\n <SyntaxHighlighter\n customStyle={{\n background: \"none\",\n padding: \"none\",\n margin: \"none\",\n }}\n useInlineStyles={false}\n {...rest}\n >\n {code}\n </SyntaxHighlighter>\n {copyable && (\n <CopyButton\n className={styles.copyButton}\n size=\"s\"\n color={color === \"default\" ? \"dark\" : color}\n text={Array.isArray(code) ? code.join(\"\\r\\n\") : code}\n />\n )}\n </div>\n );\n};\n\nexport default CodeBlock;\n"],"names":[],"mappings":";;;;;;;AAmDO,MAAM,SAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,MAAM,EAAE,MAAM,SAAA,EAAW,QAAA,EAAU,QAAQ,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAElE,EAAA,MAAM,gBAAgB,IAAA,CAAK,MAAA,CAAO,WAAW,MAAA,CAAO,KAAK,GAAG,SAAS,CAAA;AAErE,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAa;AAAA,UACX,UAAA,EAAY,MAAA;AAAA,UACZ,OAAA,EAAS,MAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,eAAA,EAAiB,KAAA;AAAA,QAChB,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC,QAAA,oBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAClB,IAAA,EAAK,GAAA;AAAA,QACL,KAAA,EAAO,KAAA,KAAU,SAAA,GAAY,MAAA,GAAS,KAAA;AAAA,QACtC,IAAA,EAAM,MAAM,OAAA,CAAQ,IAAI,IAAI,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI;AAAA;AAAA;AAClD,GAAA,EAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CodeBlock.mjs","sources":["../../../../../../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport React from \"react\";\nimport SyntaxHighlighter from \"react-syntax-highlighter\";\nimport type { PropsWithClassName } from \"@/lib/types/props\";\nimport clsx from \"clsx\";\nimport { CopyButton } from \"@/components/CopyButton\";\nimport styles from \"./CodeBlock.module.scss\";\n\nexport interface CodeBlockProps extends PropsWithClassName, PropsWithChildren {\n /** Adds a copy icon to the code block to copy its content. */\n copyable?: boolean;\n /** The color of the code block. @default \"default\" */\n color?: \"default\" | \"light\" | \"dark\";\n /** The code to display inside the code block. */\n code?: string | string[];\n\n // ATTENTION\n // we reexport by copy the props here - react-typescript-docgen\n // will not correctly export the props from react-syntax-highlighter\n // when using OMIT duo some wired circumstances how react-syntax-highlighter\n // exports his types - the following types are excluded\n //\n // children: string | string[];\n //\n language?: string | undefined;\n style?: Record<string, React.CSSProperties> | undefined;\n customStyle?: React.CSSProperties | undefined;\n codeTagProps?: React.HTMLProps<HTMLElement> | undefined;\n useInlineStyles?: boolean | undefined;\n showLineNumbers?: boolean | undefined;\n showInlineLineNumbers?: boolean | undefined;\n startingLineNumber?: number | undefined;\n lineNumberContainerStyle?: React.CSSProperties | undefined;\n lineNumberStyle?: React.CSSProperties | lineNumberStyleFunction | undefined;\n wrapLines?: boolean | undefined;\n wrapLongLines?: boolean | undefined;\n lineProps?: lineTagPropsFunction | React.HTMLProps<HTMLElement> | undefined;\n renderer?: (props: rendererProps) => React.ReactNode;\n PreTag?:\n | keyof React.JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.ComponentType<any>\n | undefined;\n CodeTag?:\n | keyof React.JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | React.ComponentType<any>\n | undefined;\n}\n\n/** @flr-generate all */\nexport const CodeBlock: FC<CodeBlockProps> = (props) => {\n const {\n code,\n className,\n copyable,\n color = \"default\",\n children,\n ...rest\n } = props;\n\n const rootClassName = clsx(styles.codeBlock, styles[color], className);\n\n if (!code) {\n return (\n <div className={rootClassName}>\n <pre>\n <code>{children}</code>\n </pre>\n </div>\n );\n }\n\n return (\n <div className={rootClassName}>\n <SyntaxHighlighter\n customStyle={{\n background: \"none\",\n padding: \"none\",\n margin: \"none\",\n }}\n useInlineStyles={false}\n {...rest}\n >\n {code}\n </SyntaxHighlighter>\n {copyable && (\n <CopyButton\n className={styles.copyButton}\n size=\"s\"\n color={color === \"default\" ? \"dark\" : color}\n text={Array.isArray(code) ? code.join(\"\\r\\n\") : code}\n />\n )}\n </div>\n );\n};\n\nexport default CodeBlock;\n"],"names":[],"mappings":";;;;;;;AAmDO,MAAM,SAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,GAAQ,SAAA;AAAA,IACR,QAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,gBAAgB,IAAA,CAAK,MAAA,CAAO,WAAW,MAAA,CAAO,KAAK,GAAG,SAAS,CAAA;AAErE,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EACd,QAAA,kBAAA,GAAA,CAAC,SACC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAS,CAAA,EAClB,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,aAAA,EACd,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAa;AAAA,UACX,UAAA,EAAY,MAAA;AAAA,UACZ,OAAA,EAAS,MAAA;AAAA,UACT,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,eAAA,EAAiB,KAAA;AAAA,QAChB,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,IACC,QAAA,oBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,UAAA;AAAA,QAClB,IAAA,EAAK,GAAA;AAAA,QACL,KAAA,EAAO,KAAA,KAAU,SAAA,GAAY,MAAA,GAAS,KAAA;AAAA,QACtC,IAAA,EAAM,MAAM,OAAA,CAAQ,IAAI,IAAI,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GAAI;AAAA;AAAA;AAClD,GAAA,EAEJ,CAAA;AAEJ;;;;"}
@@ -1,12 +1,12 @@
1
- import { FC, default as React } from 'react';
1
+ import { FC, PropsWithChildren, default as React } from 'react';
2
2
  import { PropsWithClassName } from '../../lib/types/props';
3
- export interface CodeBlockProps extends PropsWithClassName {
3
+ export interface CodeBlockProps extends PropsWithClassName, PropsWithChildren {
4
4
  /** Adds a copy icon to the code block to copy its content. */
5
5
  copyable?: boolean;
6
6
  /** The color of the code block. @default "default" */
7
7
  color?: "default" | "light" | "dark";
8
8
  /** The code to display inside the code block. */
9
- code: string | string[];
9
+ code?: string | string[];
10
10
  language?: string | undefined;
11
11
  style?: Record<string, React.CSSProperties> | undefined;
12
12
  customStyle?: React.CSSProperties | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACrC,iDAAiD;IACjD,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAUxB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAC9C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,wBAAwB,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAC3D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAC5E,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,MAAM,CAAC,EACH,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAEjC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,SAAS,CAAC;IACd,OAAO,CAAC,EACJ,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAEjC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,SAAS,CAAC;CACf;AAED,wBAAwB;AACxB,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA4BxC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../../../src/components/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,MAAM,WAAW,cAAe,SAAQ,kBAAkB,EAAE,iBAAiB;IAC3E,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACrC,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAUzB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IACxD,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAC9C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IACxD,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,wBAAwB,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAC3D,eAAe,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAC5E,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAC5E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,MAAM,CAAC,EACH,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAEjC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,SAAS,CAAC;IACd,OAAO,CAAC,EACJ,MAAM,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAEjC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,SAAS,CAAC;CACf;AAED,wBAAwB;AACxB,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA6CxC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -8,4 +8,5 @@ export declare const WithLineNumbers: Story;
8
8
  export declare const Copyable: Story;
9
9
  export declare const Dark: Story;
10
10
  export declare const Light: Story;
11
+ export declare const WithChildren: Story;
11
12
  //# sourceMappingURL=Default.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/CodeBlock/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAehC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,KAA2C,CAAC;AAE1E,eAAO,MAAM,QAAQ,EAAE,KAAoC,CAAC;AAE5D,eAAO,MAAM,IAAI,EAAE,KAQlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAC"}
1
+ {"version":3,"file":"Default.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/CodeBlock/stories/Default.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAehC,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AAExC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,eAAe,EAAE,KAA2C,CAAC;AAE1E,eAAO,MAAM,QAAQ,EAAE,KAAoC,CAAC;AAE5D,eAAO,MAAM,IAAI,EAAE,KAQlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAQnB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAU1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "0.2.0-alpha.631",
3
+ "version": "0.2.0-alpha.633",
4
4
  "type": "module",
5
5
  "description": "A React implementation of Flow, mittwald’s design system",
6
6
  "homepage": "https://mittwald.github.io/flow",
@@ -58,7 +58,7 @@
58
58
  "dependencies": {
59
59
  "@internationalized/string-compiler": "^3.2.6",
60
60
  "@mittwald/password-tools-js": "3.0.0-alpha.18",
61
- "@mittwald/react-tunnel": "0.2.0-alpha.631",
61
+ "@mittwald/react-tunnel": "0.2.0-alpha.633",
62
62
  "@mittwald/react-use-promise": "^4.2.2",
63
63
  "@react-aria/form": "^3.1.2",
64
64
  "@react-aria/live-announcer": "^3.4.4",
@@ -103,7 +103,7 @@
103
103
  "@faker-js/faker": "^10.1.0",
104
104
  "@internationalized/date": "^3.10.0",
105
105
  "@mittwald/flow-core": "",
106
- "@mittwald/flow-design-tokens": "0.2.0-alpha.631",
106
+ "@mittwald/flow-design-tokens": "0.2.0-alpha.633",
107
107
  "@mittwald/react-use-promise": "^4.2.2",
108
108
  "@mittwald/remote-dom-react": "1.2.2-mittwald.10",
109
109
  "@mittwald/typescript-config": "",
@@ -172,5 +172,5 @@
172
172
  "optional": true
173
173
  }
174
174
  },
175
- "gitHead": "98acf12abf54abfc1f2817c3cb13458f8032989c"
175
+ "gitHead": "7b8d45e840cd1478965f7595b2e6d84631650b18"
176
176
  }