@1money/component-ui 0.0.82 → 0.0.83
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/es/components/ProTable/ProTable.js +1 -4
- package/es/components/ProTable/interface.d.ts +2 -3
- package/es/components/Table/constants.d.ts +0 -1
- package/es/components/Table/constants.js +1 -2
- package/es/components/Table/core/useTableColumns.d.ts +1 -2
- package/es/components/Table/core/useTableColumns.js +5 -8
- package/es/components/Table/core/useTableSetup.js +4 -7
- package/es/components/Table/features/FilterTrigger.d.ts +1 -2
- package/es/components/Table/features/FilterTrigger.js +4 -8
- package/es/components/Table/features/SortTrigger.d.ts +2 -3
- package/es/components/Table/features/SortTrigger.js +4 -9
- package/es/components/Table/interface.d.ts +0 -2
- package/es/components/Table/renderers/HeaderCell.d.ts +2 -3
- package/es/components/Table/renderers/HeaderCell.js +2 -6
- package/es/components/Table/style/Table.css +6 -33
- package/es/index.css +1 -1
- package/lib/components/ProTable/ProTable.js +1 -4
- package/lib/components/ProTable/interface.d.ts +2 -3
- package/lib/components/Table/constants.d.ts +0 -1
- package/lib/components/Table/constants.js +2 -3
- package/lib/components/Table/core/useTableColumns.d.ts +1 -2
- package/lib/components/Table/core/useTableColumns.js +5 -8
- package/lib/components/Table/core/useTableSetup.js +3 -6
- package/lib/components/Table/features/FilterTrigger.d.ts +1 -2
- package/lib/components/Table/features/FilterTrigger.js +4 -8
- package/lib/components/Table/features/SortTrigger.d.ts +2 -3
- package/lib/components/Table/features/SortTrigger.js +4 -9
- package/lib/components/Table/interface.d.ts +0 -2
- package/lib/components/Table/renderers/HeaderCell.d.ts +2 -3
- package/lib/components/Table/renderers/HeaderCell.js +2 -6
- package/lib/components/Table/style/Table.css +6 -33
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +18 -24
- package/scripts/mcp-server/index.generated.json +5 -25
package/package.json
CHANGED
|
@@ -151,12 +151,6 @@
|
|
|
151
151
|
"source": "readme",
|
|
152
152
|
"compilable": true
|
|
153
153
|
},
|
|
154
|
-
"0b1bd0a0c931658fda5287f712844f21f5f69c50228164f8c97deeb385ed9187": {
|
|
155
|
-
"title": "Filters",
|
|
156
|
-
"code": "<div>\n <TypographyBody size=\"sm\" color=\"default-tertiary\" style={hintStyle}>\n Click the funnel icon in a column header to filter. Multi-select is the\n default; selections apply on <em>OK</em>.\n </TypographyBody>\n <Table<PortfolioRow>\n rowKey=\"id\"\n size=\"large\"\n variant=\"stroke\"\n pagination={false}\n dataSource={portfolioRows}\n columns={[\n portfolioColumns[0],\n {\n ...portfolioColumns[1],\n filters: NETWORK_FILTER_ITEMS,\n onFilter: (value, record) => record.network === value,\n },\n {\n ...portfolioColumns[2],\n filters: STATUS_FILTER_ITEMS,\n onFilter: (value, record) => record.status === value,\n },\n portfolioColumns[3],\n portfolioColumns[4],\n ]}\n />\n </div>",
|
|
157
|
-
"source": "stories",
|
|
158
|
-
"compilable": true
|
|
159
|
-
},
|
|
160
154
|
"0c7c04366337519cd94b38f5358dfa8f9eec80c8f289ba172def5f00e1a89ba3": {
|
|
161
155
|
"title": "Date Picker Story",
|
|
162
156
|
"code": "<ProForm\n {...args}\n initialValues={{ birthday: null, startDate: null }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormDatePicker\n name=\"birthday\"\n label=\"Birthday\"\n fieldProps={{ dateFormat: 'yy-mm-dd', showIcon: true }}\n />\n <ProFormDatePicker\n name=\"startDate\"\n label=\"Start Date\"\n fieldProps={{ dateFormat: 'mm/dd/yy', showButtonBar: true }}\n />\n </ProForm>",
|
|
@@ -397,6 +391,12 @@
|
|
|
397
391
|
"source": "stories",
|
|
398
392
|
"compilable": true
|
|
399
393
|
},
|
|
394
|
+
"22f07dc92931f7bcb736439f29717360c422408683d3f3591e045d2db3c052c9": {
|
|
395
|
+
"title": "Wallet List Panel",
|
|
396
|
+
"code": "<div style={figmaFrameStyle}>\n <Table<WalletListRow>\n rowKey=\"id\"\n variant=\"stroke\"\n pagination={false}\n columns={walletListPanelColumns}\n dataSource={walletListPanelRows}\n />\n </div>",
|
|
397
|
+
"source": "stories",
|
|
398
|
+
"compilable": true
|
|
399
|
+
},
|
|
400
400
|
"231708504f9ec34c52004329a3bb5c026dbda32f45ef5a642b02861df747100a": {
|
|
401
401
|
"title": "Loading",
|
|
402
402
|
"code": "<div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Large</p>\n <Input\n label=\"Label\"\n placeholder=\"Loading...\"\n loading\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Small</p>\n <Input\n size=\"small\"\n label=\"Label\"\n placeholder=\"Loading...\"\n loading\n />\n </div>\n </div>",
|
|
@@ -523,12 +523,6 @@
|
|
|
523
523
|
"source": "stories",
|
|
524
524
|
"compilable": true
|
|
525
525
|
},
|
|
526
|
-
"2bfe01695a2d2aa890db17bef359b1c81761ad66301c5c548fe2e23750a8e5c8": {
|
|
527
|
-
"title": "Figma-aligned Expandable Example",
|
|
528
|
-
"code": "import { useState } from 'react';\n\ninterface WalletRow {\n id: string;\n walletName: string;\n walletSummary: string;\n}\n\nconst rows: WalletRow[] = [\n {\n id: 'wallet-ops',\n walletName: 'Operations wallet',\n walletSummary: '0x1234...abcd',\n },\n];\n\nfunction WalletDetails({ record }: { record: WalletRow }) {\n return <div>{record.walletSummary}</div>;\n}\n\nfunction WalletRegistryTable() {\n const [expandedRowKeys, setExpandedRowKeys] = useState<React.Key[]>(['wallet-ops']);\n\n return (\n <Table\n rowKey=\"id\"\n size=\"small\"\n variant=\"stroke\"\n pagination={false}\n columns={[\n {\n key: 'walletName',\n title: 'Wallet name',\n render: (_value, record) => (\n <button\n type=\"button\"\n onClick={() => {\n setExpandedRowKeys((current) => (\n current.includes(record.id)\n ? current.filter((key) => key !== record.id)\n : [...current, record.id]\n ));\n }}\n >\n {record.walletName}\n </button>\n ),\n },\n {\n key: 'walletSummary',\n dataIndex: 'walletSummary',\n title: 'Wallet address',\n },\n {\n key: 'actions',\n title: 'Actions',\n align: 'right',\n render: () => '...',\n },\n ]}\n dataSource={rows}\n expandable={{\n showExpandColumn: false,\n expandedRowKeys,\n expandedRowRender: (record) => <WalletDetails record={record} />,\n }}\n />\n );\n}",
|
|
529
|
-
"source": "readme",
|
|
530
|
-
"compilable": true
|
|
531
|
-
},
|
|
532
526
|
"2c3e8df84f97a0c45dee2b95fc78c4b44f9173c4b0421a06f1c4ba6088ba407e": {
|
|
533
527
|
"title": "Basic Columns",
|
|
534
528
|
"code": "<div style={DEMO_SECTION_STYLE}>\n <Row gutter={GRID_GUTTER}>\n <Col span={SPAN_FULL}>\n <div style={DEMO_BOX_STYLE}>span 12</div>\n </Col>\n </Row>\n <Row gutter={GRID_GUTTER}>\n <Col span={SPAN_HALF}>\n <div style={DEMO_BOX_STYLE}>span 6</div>\n </Col>\n <Col span={SPAN_HALF}>\n <div style={DEMO_BOX_STYLE}>span 6</div>\n </Col>\n </Row>\n <Row gutter={GRID_GUTTER}>\n <Col span={SPAN_THIRD}>\n <div style={DEMO_BOX_STYLE}>span 4</div>\n </Col>\n <Col span={SPAN_THIRD}>\n <div style={DEMO_BOX_STYLE}>span 4</div>\n </Col>\n <Col span={SPAN_THIRD}>\n <div style={DEMO_BOX_STYLE}>span 4</div>\n </Col>\n </Row>\n <Row gutter={GRID_GUTTER}>\n <Col span={SPAN_QUARTER}>\n <div style={DEMO_BOX_STYLE}>span 3</div>\n </Col>\n <Col span={SPAN_QUARTER}>\n <div style={DEMO_BOX_STYLE}>span 3</div>\n </Col>\n <Col span={SPAN_QUARTER}>\n <div style={DEMO_BOX_STYLE}>span 3</div>\n </Col>\n <Col span={SPAN_QUARTER}>\n <div style={DEMO_BOX_STYLE}>span 3</div>\n </Col>\n </Row>\n </div>",
|
|
@@ -583,6 +577,12 @@
|
|
|
583
577
|
"source": "stories",
|
|
584
578
|
"compilable": true
|
|
585
579
|
},
|
|
580
|
+
"3266ea437833eda448a0d8e4995db6478a9e521959f7fe101f8b4f6971e4d612": {
|
|
581
|
+
"title": "Filters",
|
|
582
|
+
"code": "<div>\n <TypographyBody size=\"sm\" color=\"default-tertiary\" style={hintStyle}>\n Click the funnel icon in a column header to filter. Multi-select is the\n default; selections apply on <em>OK</em>.\n </TypographyBody>\n <Table<PortfolioRow>\n rowKey=\"id\"\n variant=\"stroke\"\n pagination={false}\n dataSource={portfolioRows}\n columns={[\n portfolioColumns[0],\n {\n ...portfolioColumns[1],\n filters: NETWORK_FILTER_ITEMS,\n onFilter: (value, record) => record.network === value,\n },\n {\n ...portfolioColumns[2],\n filters: STATUS_FILTER_ITEMS,\n onFilter: (value, record) => record.status === value,\n },\n portfolioColumns[3],\n portfolioColumns[4],\n ]}\n />\n </div>",
|
|
583
|
+
"source": "stories",
|
|
584
|
+
"compilable": true
|
|
585
|
+
},
|
|
586
586
|
"3298cc00509da7da73ca2da525874e520a453a289a0c4985f6f11249b5768dba": {
|
|
587
587
|
"title": "Full Width",
|
|
588
588
|
"code": "<Tabs items={DEFAULT_ITEMS} fullWidth />",
|
|
@@ -1825,12 +1825,6 @@
|
|
|
1825
1825
|
"source": "stories",
|
|
1826
1826
|
"compilable": false
|
|
1827
1827
|
},
|
|
1828
|
-
"a5a0117d707475ad307fab2299eec3c085bafe1954ddc3724c5fdd67f326f19d": {
|
|
1829
|
-
"title": "Wallet List Panel",
|
|
1830
|
-
"code": "<div style={figmaFrameStyle}>\n <Table<WalletListRow>\n rowKey=\"id\"\n size=\"large\"\n variant=\"stroke\"\n pagination={false}\n columns={walletListPanelColumns}\n dataSource={walletListPanelRows}\n />\n </div>",
|
|
1831
|
-
"source": "stories",
|
|
1832
|
-
"compilable": true
|
|
1833
|
-
},
|
|
1834
1828
|
"a5a04f0b0f7ad14c2ae616df4f7820ea44171f7317f4ba0ab23f15985159dc24": {
|
|
1835
1829
|
"title": "Group Directions",
|
|
1836
1830
|
"code": "{\n const [verticalValue, setVerticalValue] = React.useState<string | number>('a');\n const [horizontalValue, setHorizontalValue] = React.useState<string | number>('a');\n\n const handleVerticalChange = (event: RadioChangeEvent) => {\n if (event.target.value !== undefined) {\n setVerticalValue(event.target.value);\n }\n };\n\n const handleHorizontalChange = (event: RadioChangeEvent) => {\n if (event.target.value !== undefined) {\n setHorizontalValue(event.target.value);\n }\n };\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>\n <div>\n <h3 style={{ marginBottom: 12 }}>Direction Vertical</h3>\n <RadioGroup value={verticalValue} onChange={handleVerticalChange} direction=\"vertical\">\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n <Radio value=\"c\" label=\"Option C\" />\n </RadioGroup>\n </div>\n <div>\n <h3 style={{ marginBottom: 12 }}>Direction Horizontal</h3>\n <RadioGroup value={horizontalValue} onChange={handleHorizontalChange} direction=\"horizontal\">\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n <Radio value=\"c\" label=\"Option C\" />\n </RadioGroup>\n </div>\n </div>\n );\n }",
|
|
@@ -2179,12 +2173,6 @@
|
|
|
2179
2173
|
"source": "stories",
|
|
2180
2174
|
"compilable": true
|
|
2181
2175
|
},
|
|
2182
|
-
"c23b54aeab8234b5665b9182a68e75b1d9b5ea969d997e08e1d4a41b85679209": {
|
|
2183
|
-
"title": "Sizes",
|
|
2184
|
-
"code": "<div style={stackStyle}>\n <div>\n <TypographyTitle size=\"sm\" strong style={sectionTitleStyle}>\n Large\n </TypographyTitle>\n <Table {...(args as TableProps<Record<string, any>>)} dataSource={portfolioRows.slice(0, 3)} size=\"large\" />\n </div>\n <div>\n <TypographyTitle size=\"sm\" strong style={sectionTitleStyle}>\n Small\n </TypographyTitle>\n <Table {...(args as TableProps<Record<string, any>>)} dataSource={portfolioRows.slice(0, 3)} size=\"small\" />\n </div>\n </div>",
|
|
2185
|
-
"source": "stories",
|
|
2186
|
-
"compilable": false
|
|
2187
|
-
},
|
|
2188
2176
|
"c2c42c200e9bad53b274260619d36029e7257a5f80b73408ffe619abdf14a9d9": {
|
|
2189
2177
|
"title": "Canonical usage",
|
|
2190
2178
|
"code": "import { Drawer } from '@1money/component-ui';\n// or\nimport { Drawer } from '@1money/component-ui/Drawer';",
|
|
@@ -2491,6 +2479,12 @@
|
|
|
2491
2479
|
"source": "stories",
|
|
2492
2480
|
"compilable": false
|
|
2493
2481
|
},
|
|
2482
|
+
"de0d0a81ca267487f043cb33f3d0904b622d165a3c575d18cae764bbb819b538": {
|
|
2483
|
+
"title": "Figma-aligned Expandable Example",
|
|
2484
|
+
"code": "import { useState } from 'react';\n\ninterface WalletRow {\n id: string;\n walletName: string;\n walletSummary: string;\n}\n\nconst rows: WalletRow[] = [\n {\n id: 'wallet-ops',\n walletName: 'Operations wallet',\n walletSummary: '0x1234...abcd',\n },\n];\n\nfunction WalletDetails({ record }: { record: WalletRow }) {\n return <div>{record.walletSummary}</div>;\n}\n\nfunction WalletRegistryTable() {\n const [expandedRowKeys, setExpandedRowKeys] = useState<React.Key[]>(['wallet-ops']);\n\n return (\n <Table\n rowKey=\"id\"\n variant=\"stroke\"\n pagination={false}\n columns={[\n {\n key: 'walletName',\n title: 'Wallet name',\n render: (_value, record) => (\n <button\n type=\"button\"\n onClick={() => {\n setExpandedRowKeys((current) => (\n current.includes(record.id)\n ? current.filter((key) => key !== record.id)\n : [...current, record.id]\n ));\n }}\n >\n {record.walletName}\n </button>\n ),\n },\n {\n key: 'walletSummary',\n dataIndex: 'walletSummary',\n title: 'Wallet address',\n },\n {\n key: 'actions',\n title: 'Actions',\n align: 'right',\n render: () => '...',\n },\n ]}\n dataSource={rows}\n expandable={{\n showExpandColumn: false,\n expandedRowKeys,\n expandedRowRender: (record) => <WalletDetails record={record} />,\n }}\n />\n );\n}",
|
|
2485
|
+
"source": "readme",
|
|
2486
|
+
"compilable": true
|
|
2487
|
+
},
|
|
2494
2488
|
"de0d3ad5b313251b55282c90a8ec9860ebd8f4b6ebb25944dc225a2555ef3c4c": {
|
|
2495
2489
|
"title": "Search",
|
|
2496
2490
|
"code": "{\n const onSearch = fn();\n const sizes = INPUT_SIZES;\n const columns = [\n { label: 'Default', props: {} },\n { label: 'Disabled', props: { disabled: true } },\n ];\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 40 }}>\n {sizes.map((size) => (\n <div key={size}>\n <h3 style={{ margin: '0 0 16px', textTransform: 'capitalize' }}>{size}</h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>\n {/* Placeholder row */}\n <div>\n <p style={{ margin: '0 0 8px', color: '#666', fontSize: 13 }}>Placeholder</p>\n <div style={{ display: 'flex', gap: 16, flexWrap: 'wrap' }}>\n {columns.map((col) => (\n <div key={col.label} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>{col.label}</p>\n <Input.Search\n size={size}\n placeholder=\"Search\"\n onSearch={onSearch}\n {...col.props}\n />\n </div>\n ))}\n </div>\n </div>\n {/* Filled row */}\n <div>\n <p style={{ margin: '0 0 8px', color: '#666', fontSize: 13 }}>Filled</p>\n <div style={{ display: 'flex', gap: 16, flexWrap: 'wrap' }}>\n {columns.map((col) => (\n <div key={col.label} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>{col.label}</p>\n <Input.Search\n size={size}\n placeholder=\"Search\"\n defaultValue=\"Search\"\n allowClear\n onSearch={onSearch}\n {...col.props}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n ))}\n {/* Loading */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Loading</h3>\n <div style={{ display: 'flex', gap: 16 }}>\n <div style={{ width: 310 }}>\n <Input.Search\n placeholder=\"Search\"\n defaultValue=\"Search\"\n loading\n onSearch={onSearch}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }",
|
|
@@ -13081,14 +13081,6 @@
|
|
|
13081
13081
|
"description": "",
|
|
13082
13082
|
"inheritedFrom": null
|
|
13083
13083
|
},
|
|
13084
|
-
{
|
|
13085
|
-
"name": "size",
|
|
13086
|
-
"type": "TableSize",
|
|
13087
|
-
"optional": true,
|
|
13088
|
-
"default": null,
|
|
13089
|
-
"description": "",
|
|
13090
|
-
"inheritedFrom": null
|
|
13091
|
-
},
|
|
13092
13084
|
{
|
|
13093
13085
|
"name": "actionRef",
|
|
13094
13086
|
"type": "Ref<ProTableActionRef>",
|
|
@@ -13131,7 +13123,7 @@
|
|
|
13131
13123
|
}
|
|
13132
13124
|
],
|
|
13133
13125
|
"extends": [
|
|
13134
|
-
"Pick<\n TableProps<T>,\n | 'rowKey'\n | 'rowSelection'\n | 'variant'\n | 'bordered'\n | 'scroll'\n | 'sticky'\n | 'expandable'\n | 'empty'\n | 'tableLayout'\n | 'rowClassName'\n | 'onRow'\n | '
|
|
13126
|
+
"Pick<\n TableProps<T>,\n | 'rowKey'\n | 'rowSelection'\n | 'variant'\n | 'bordered'\n | 'scroll'\n | 'sticky'\n | 'expandable'\n | 'empty'\n | 'tableLayout'\n | 'rowClassName'\n | 'onRow'\n | 'summary'\n | 'footer'\n >"
|
|
13135
13127
|
],
|
|
13136
13128
|
"relatedSymbols": [
|
|
13137
13129
|
"PageInfo",
|
|
@@ -13336,7 +13328,7 @@
|
|
|
13336
13328
|
"RequestData"
|
|
13337
13329
|
],
|
|
13338
13330
|
"searchTags": [],
|
|
13339
|
-
"typeText": "interface ProTableProps extends Pick<\n TableProps<T>,\n | 'rowKey'\n | 'rowSelection'\n | 'variant'\n | 'bordered'\n | 'scroll'\n | 'sticky'\n | 'expandable'\n | 'empty'\n | 'tableLayout'\n | 'rowClassName'\n | 'onRow'\n | '
|
|
13331
|
+
"typeText": "interface ProTableProps extends Pick<\n TableProps<T>,\n | 'rowKey'\n | 'rowSelection'\n | 'variant'\n | 'bordered'\n | 'scroll'\n | 'sticky'\n | 'expandable'\n | 'empty'\n | 'tableLayout'\n | 'rowClassName'\n | 'onRow'\n | 'summary'\n | 'footer'\n > { ... }",
|
|
13340
13332
|
"canonicalUsage": "import type { ProTableProps } from '@1money/component-ui';",
|
|
13341
13333
|
"examples": [
|
|
13342
13334
|
{
|
|
@@ -17566,14 +17558,6 @@
|
|
|
17566
17558
|
"description": "Row key for tracking.",
|
|
17567
17559
|
"inheritedFrom": null
|
|
17568
17560
|
},
|
|
17569
|
-
{
|
|
17570
|
-
"name": "size",
|
|
17571
|
-
"type": "TableSize",
|
|
17572
|
-
"optional": true,
|
|
17573
|
-
"default": null,
|
|
17574
|
-
"description": "",
|
|
17575
|
-
"inheritedFrom": null
|
|
17576
|
-
},
|
|
17577
17561
|
{
|
|
17578
17562
|
"name": "variant",
|
|
17579
17563
|
"type": "TableVariant",
|
|
@@ -17777,7 +17761,7 @@
|
|
|
17777
17761
|
"source": "readme"
|
|
17778
17762
|
},
|
|
17779
17763
|
{
|
|
17780
|
-
"hash": "
|
|
17764
|
+
"hash": "de0d0a81ca267487f043cb33f3d0904b622d165a3c575d18cae764bbb819b538",
|
|
17781
17765
|
"source": "readme"
|
|
17782
17766
|
},
|
|
17783
17767
|
{
|
|
@@ -17805,7 +17789,7 @@
|
|
|
17805
17789
|
"source": "stories"
|
|
17806
17790
|
},
|
|
17807
17791
|
{
|
|
17808
|
-
"hash": "
|
|
17792
|
+
"hash": "22f07dc92931f7bcb736439f29717360c422408683d3f3591e045d2db3c052c9",
|
|
17809
17793
|
"source": "stories"
|
|
17810
17794
|
},
|
|
17811
17795
|
{
|
|
@@ -17820,16 +17804,12 @@
|
|
|
17820
17804
|
"hash": "082ec26c8081a863c586ce7bb5d2c1fc35a0e901d02e7fe1a7e0d66fe526848e",
|
|
17821
17805
|
"source": "stories"
|
|
17822
17806
|
},
|
|
17823
|
-
{
|
|
17824
|
-
"hash": "c23b54aeab8234b5665b9182a68e75b1d9b5ea969d997e08e1d4a41b85679209",
|
|
17825
|
-
"source": "stories"
|
|
17826
|
-
},
|
|
17827
17807
|
{
|
|
17828
17808
|
"hash": "b9cc21db46c34c1f749ec2f5cc996c0eb92608376b07b2eb61f2bc427f045927",
|
|
17829
17809
|
"source": "stories"
|
|
17830
17810
|
},
|
|
17831
17811
|
{
|
|
17832
|
-
"hash": "
|
|
17812
|
+
"hash": "3266ea437833eda448a0d8e4995db6478a9e521959f7fe101f8b4f6971e4d612",
|
|
17833
17813
|
"source": "stories"
|
|
17834
17814
|
},
|
|
17835
17815
|
{
|