balibabu commited on
Commit
e4e6a45
·
1 Parent(s): ce95639

feat: display all pdf pages and add DocumentPreview (#88)

Browse files

* feat: add DocumentPreview

* feat: display all pdf pages

web/.umirc.ts CHANGED
@@ -1,6 +1,16 @@
 
1
  import { defineConfig } from 'umi';
2
  import routes from './src/routes';
3
 
 
 
 
 
 
 
 
 
 
4
  export default defineConfig({
5
  outputPath: 'dist',
6
  // alias: { '@': './src' },
@@ -28,4 +38,11 @@ export default defineConfig({
28
  // pathRewrite: { '^/v1': '/v1' },
29
  },
30
  },
 
 
 
 
 
 
 
31
  });
 
1
+ import path from 'path';
2
  import { defineConfig } from 'umi';
3
  import routes from './src/routes';
4
 
5
+ const cMapsDir = path.join(
6
+ path.dirname(require.resolve('pdfjs-dist/package.json')),
7
+ 'cmaps',
8
+ );
9
+ const standardFontsDir = path.join(
10
+ path.dirname(require.resolve('pdfjs-dist/package.json')),
11
+ 'standard_fonts',
12
+ );
13
+
14
  export default defineConfig({
15
  outputPath: 'dist',
16
  // alias: { '@': './src' },
 
38
  // pathRewrite: { '^/v1': '/v1' },
39
  },
40
  },
41
+ copy: [
42
+ { from: cMapsDir, to: 'cmaps/' },
43
+ { from: standardFontsDir, to: 'standard_fonts/' },
44
+ ],
45
+ chainWebpack(memo, args) {
46
+ console.info(memo);
47
+ },
48
  });
web/package-lock.json CHANGED
@@ -9,6 +9,7 @@
9
  "@ant-design/icons": "^5.2.6",
10
  "@ant-design/pro-components": "^2.6.46",
11
  "@ant-design/pro-layout": "^7.17.16",
 
12
  "antd": "^5.12.7",
13
  "axios": "^1.6.3",
14
  "classnames": "^2.5.1",
@@ -22,6 +23,7 @@
22
  "react-i18next": "^14.0.0",
23
  "react-infinite-scroll-component": "^6.1.0",
24
  "react-markdown": "^9.0.1",
 
25
  "react-string-replace": "^1.1.1",
26
  "umi": "^4.0.90",
27
  "umi-request": "^1.4.0",
@@ -2098,6 +2100,109 @@
2098
  "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
2099
  "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
2100
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2101
  "node_modules/@mrmlnc/readdir-enhanced": {
2102
  "version": "2.2.1",
2103
  "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@@ -4582,6 +4687,12 @@
4582
  "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
4583
  "peer": true
4584
  },
 
 
 
 
 
 
4585
  "node_modules/acorn": {
4586
  "version": "8.11.3",
4587
  "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
@@ -4628,6 +4739,18 @@
4628
  "node": ">= 10.0.0"
4629
  }
4630
  },
 
 
 
 
 
 
 
 
 
 
 
 
4631
  "node_modules/aggregate-error": {
4632
  "version": "3.1.0",
4633
  "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -4641,6 +4764,27 @@
4641
  "node": ">=8"
4642
  }
4643
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4644
  "node_modules/ajv": {
4645
  "version": "6.12.6",
4646
  "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
@@ -4769,6 +4913,25 @@
4769
  "node": ">= 8"
4770
  }
4771
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4772
  "node_modules/argparse": {
4773
  "version": "1.0.10",
4774
  "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
@@ -5602,6 +5765,21 @@
5602
  "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
5603
  "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg=="
5604
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5605
  "node_modules/ccount": {
5606
  "version": "2.0.1",
5607
  "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz",
@@ -5660,6 +5838,15 @@
5660
  "fsevents": "~2.3.2"
5661
  }
5662
  },
 
 
 
 
 
 
 
 
 
5663
  "node_modules/chrome-trace-event": {
5664
  "version": "1.0.3",
5665
  "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@@ -5790,6 +5977,14 @@
5790
  "node": ">=12"
5791
  }
5792
  },
 
 
 
 
 
 
 
 
5793
  "node_modules/coa": {
5794
  "version": "2.0.2",
5795
  "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
@@ -5830,6 +6025,15 @@
5830
  "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
5831
  "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
5832
  },
 
 
 
 
 
 
 
 
 
5833
  "node_modules/colord": {
5834
  "version": "2.9.3",
5835
  "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz",
@@ -5886,6 +6090,12 @@
5886
  "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz",
5887
  "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
5888
  },
 
 
 
 
 
 
5889
  "node_modules/constants-browserify": {
5890
  "version": "1.0.0",
5891
  "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -6679,6 +6889,18 @@
6679
  "node": ">=0.10"
6680
  }
6681
  },
 
 
 
 
 
 
 
 
 
 
 
 
6682
  "node_modules/deep-is": {
6683
  "version": "0.1.4",
6684
  "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
@@ -6855,6 +7077,12 @@
6855
  "node": ">=0.4.0"
6856
  }
6857
  },
 
 
 
 
 
 
6858
  "node_modules/dequal": {
6859
  "version": "2.0.3",
6860
  "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz",
@@ -8678,6 +8906,36 @@
8678
  "node": ">=12"
8679
  }
8680
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8681
  "node_modules/fs-monkey": {
8682
  "version": "1.0.5",
8683
  "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.5.tgz",
@@ -8725,6 +8983,26 @@
8725
  "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
8726
  "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
8727
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8728
  "node_modules/gensync": {
8729
  "version": "1.0.0-beta.2",
8730
  "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -9051,6 +9329,12 @@
9051
  "node": ">= 0.4"
9052
  }
9053
  },
 
 
 
 
 
 
9054
  "node_modules/has-value": {
9055
  "version": "1.0.0",
9056
  "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
@@ -9391,6 +9675,19 @@
9391
  "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz",
9392
  "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
9393
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
9394
  "node_modules/human-signals": {
9395
  "version": "2.1.0",
9396
  "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
@@ -9568,6 +9865,11 @@
9568
  "node": ">= 0.4"
9569
  }
9570
  },
 
 
 
 
 
9571
  "node_modules/intl": {
9572
  "version": "1.2.5",
9573
  "resolved": "https://registry.npmmirror.com/intl/-/intl-1.2.5.tgz",
@@ -10455,6 +10757,11 @@
10455
  "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.5.tgz",
10456
  "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
10457
  },
 
 
 
 
 
10458
  "node_modules/js-tokens": {
10459
  "version": "4.0.0",
10460
  "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -10984,6 +11291,11 @@
10984
  "yallist": "^3.0.2"
10985
  }
10986
  },
 
 
 
 
 
10987
  "node_modules/make-dir": {
10988
  "version": "2.1.0",
10989
  "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
@@ -11006,6 +11318,11 @@
11006
  "semver": "bin/semver"
11007
  }
11008
  },
 
 
 
 
 
11009
  "node_modules/makeerror": {
11010
  "version": "1.0.12",
11011
  "resolved": "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz",
@@ -11212,6 +11529,19 @@
11212
  "node": ">=10"
11213
  }
11214
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
11215
  "node_modules/merge-stream": {
11216
  "version": "2.0.0",
11217
  "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -11504,6 +11834,15 @@
11504
  "node": ">=6"
11505
  }
11506
  },
 
 
 
 
 
 
 
 
 
11507
  "node_modules/min-document": {
11508
  "version": "2.19.0",
11509
  "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
@@ -11572,6 +11911,46 @@
11572
  "node": ">=0.10.0"
11573
  }
11574
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11575
  "node_modules/mixin-deep": {
11576
  "version": "1.3.2",
11577
  "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
@@ -11610,6 +11989,12 @@
11610
  "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
11611
  "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
11612
  },
 
 
 
 
 
 
11613
  "node_modules/nanoid": {
11614
  "version": "3.3.7",
11615
  "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
@@ -11795,6 +12180,21 @@
11795
  "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
11796
  "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
11797
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11798
  "node_modules/normalize-package-data": {
11799
  "version": "3.0.3",
11800
  "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
@@ -11870,6 +12270,18 @@
11870
  "node": ">=8"
11871
  }
11872
  },
 
 
 
 
 
 
 
 
 
 
 
 
11873
  "node_modules/nth-check": {
11874
  "version": "2.1.1",
11875
  "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
@@ -12402,6 +12814,15 @@
12402
  "node": ">=8"
12403
  }
12404
  },
 
 
 
 
 
 
 
 
 
12405
  "node_modules/pbkdf2": {
12406
  "version": "3.1.2",
12407
  "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
@@ -12417,6 +12838,18 @@
12417
  "node": ">=0.12"
12418
  }
12419
  },
 
 
 
 
 
 
 
 
 
 
 
 
12420
  "node_modules/performance-now": {
12421
  "version": "2.1.0",
12422
  "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
@@ -14413,6 +14846,32 @@
14413
  "resolved": "https://registry.npmmirror.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz",
14414
  "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ=="
14415
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14416
  "node_modules/react-refresh": {
14417
  "version": "0.14.0",
14418
  "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz",
@@ -14969,7 +15428,6 @@
14969
  "version": "3.0.2",
14970
  "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
14971
  "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
14972
- "peer": true,
14973
  "dependencies": {
14974
  "glob": "^7.1.3"
14975
  },
@@ -15124,6 +15582,14 @@
15124
  "node": ">= 10.13.0"
15125
  }
15126
  },
 
 
 
 
 
 
 
 
15127
  "node_modules/scroll-into-view-if-needed": {
15128
  "version": "3.1.0",
15129
  "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
@@ -15154,6 +15620,12 @@
15154
  "randombytes": "^2.1.0"
15155
  }
15156
  },
 
 
 
 
 
 
15157
  "node_modules/set-function-length": {
15158
  "version": "1.1.1",
15159
  "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz",
@@ -15293,6 +15765,23 @@
15293
  "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
15294
  "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
15295
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15296
  "node_modules/single-spa": {
15297
  "version": "5.9.5",
15298
  "resolved": "https://registry.npmmirror.com/single-spa/-/single-spa-5.9.5.tgz",
@@ -16329,6 +16818,41 @@
16329
  "node": ">=6"
16330
  }
16331
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16332
  "node_modules/terser": {
16333
  "version": "5.26.0",
16334
  "resolved": "https://registry.npmmirror.com/terser/-/terser-5.26.0.tgz",
@@ -16469,9 +16993,7 @@
16469
  "node_modules/tiny-invariant": {
16470
  "version": "1.3.1",
16471
  "resolved": "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
16472
- "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==",
16473
- "dev": true,
16474
- "peer": true
16475
  },
16476
  "node_modules/tiny-warning": {
16477
  "version": "1.0.3",
@@ -16584,6 +17106,12 @@
16584
  "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
16585
  "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
16586
  },
 
 
 
 
 
 
16587
  "node_modules/trim-lines": {
16588
  "version": "3.0.1",
16589
  "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -17795,6 +18323,12 @@
17795
  "node": ">= 8"
17796
  }
17797
  },
 
 
 
 
 
 
17798
  "node_modules/webpack": {
17799
  "version": "5.89.0",
17800
  "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.89.0.tgz",
@@ -17865,6 +18399,16 @@
17865
  "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
17866
  "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
17867
  },
 
 
 
 
 
 
 
 
 
 
17868
  "node_modules/which": {
17869
  "version": "2.0.2",
17870
  "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
@@ -17939,6 +18483,15 @@
17939
  "node": ">= 0.4"
17940
  }
17941
  },
 
 
 
 
 
 
 
 
 
17942
  "node_modules/wrap-ansi": {
17943
  "version": "7.0.0",
17944
  "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
 
9
  "@ant-design/icons": "^5.2.6",
10
  "@ant-design/pro-components": "^2.6.46",
11
  "@ant-design/pro-layout": "^7.17.16",
12
+ "ahooks": "^3.7.10",
13
  "antd": "^5.12.7",
14
  "axios": "^1.6.3",
15
  "classnames": "^2.5.1",
 
23
  "react-i18next": "^14.0.0",
24
  "react-infinite-scroll-component": "^6.1.0",
25
  "react-markdown": "^9.0.1",
26
+ "react-pdf": "^7.7.1",
27
  "react-string-replace": "^1.1.1",
28
  "umi": "^4.0.90",
29
  "umi-request": "^1.4.0",
 
2100
  "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz",
2101
  "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
2102
  },
2103
+ "node_modules/@mapbox/node-pre-gyp": {
2104
+ "version": "1.0.11",
2105
+ "resolved": "https://registry.npmmirror.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
2106
+ "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
2107
+ "optional": true,
2108
+ "dependencies": {
2109
+ "detect-libc": "^2.0.0",
2110
+ "https-proxy-agent": "^5.0.0",
2111
+ "make-dir": "^3.1.0",
2112
+ "node-fetch": "^2.6.7",
2113
+ "nopt": "^5.0.0",
2114
+ "npmlog": "^5.0.1",
2115
+ "rimraf": "^3.0.2",
2116
+ "semver": "^7.3.5",
2117
+ "tar": "^6.1.11"
2118
+ },
2119
+ "bin": {
2120
+ "node-pre-gyp": "bin/node-pre-gyp"
2121
+ }
2122
+ },
2123
+ "node_modules/@mapbox/node-pre-gyp/node_modules/detect-libc": {
2124
+ "version": "2.0.2",
2125
+ "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.2.tgz",
2126
+ "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
2127
+ "optional": true,
2128
+ "engines": {
2129
+ "node": ">=8"
2130
+ }
2131
+ },
2132
+ "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": {
2133
+ "version": "6.0.0",
2134
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
2135
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
2136
+ "optional": true,
2137
+ "dependencies": {
2138
+ "yallist": "^4.0.0"
2139
+ },
2140
+ "engines": {
2141
+ "node": ">=10"
2142
+ }
2143
+ },
2144
+ "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir": {
2145
+ "version": "3.1.0",
2146
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
2147
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
2148
+ "optional": true,
2149
+ "dependencies": {
2150
+ "semver": "^6.0.0"
2151
+ },
2152
+ "engines": {
2153
+ "node": ">=8"
2154
+ }
2155
+ },
2156
+ "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": {
2157
+ "version": "6.3.1",
2158
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
2159
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2160
+ "optional": true,
2161
+ "bin": {
2162
+ "semver": "bin/semver.js"
2163
+ }
2164
+ },
2165
+ "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": {
2166
+ "version": "2.7.0",
2167
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
2168
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
2169
+ "optional": true,
2170
+ "dependencies": {
2171
+ "whatwg-url": "^5.0.0"
2172
+ },
2173
+ "engines": {
2174
+ "node": "4.x || >=6.0.0"
2175
+ },
2176
+ "peerDependencies": {
2177
+ "encoding": "^0.1.0"
2178
+ },
2179
+ "peerDependenciesMeta": {
2180
+ "encoding": {
2181
+ "optional": true
2182
+ }
2183
+ }
2184
+ },
2185
+ "node_modules/@mapbox/node-pre-gyp/node_modules/semver": {
2186
+ "version": "7.6.0",
2187
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz",
2188
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
2189
+ "optional": true,
2190
+ "dependencies": {
2191
+ "lru-cache": "^6.0.0"
2192
+ },
2193
+ "bin": {
2194
+ "semver": "bin/semver.js"
2195
+ },
2196
+ "engines": {
2197
+ "node": ">=10"
2198
+ }
2199
+ },
2200
+ "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": {
2201
+ "version": "4.0.0",
2202
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
2203
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
2204
+ "optional": true
2205
+ },
2206
  "node_modules/@mrmlnc/readdir-enhanced": {
2207
  "version": "2.2.1",
2208
  "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
 
4687
  "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
4688
  "peer": true
4689
  },
4690
+ "node_modules/abbrev": {
4691
+ "version": "1.1.1",
4692
+ "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz",
4693
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
4694
+ "optional": true
4695
+ },
4696
  "node_modules/acorn": {
4697
  "version": "8.11.3",
4698
  "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
 
4739
  "node": ">= 10.0.0"
4740
  }
4741
  },
4742
+ "node_modules/agent-base": {
4743
+ "version": "6.0.2",
4744
+ "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
4745
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
4746
+ "optional": true,
4747
+ "dependencies": {
4748
+ "debug": "4"
4749
+ },
4750
+ "engines": {
4751
+ "node": ">= 6.0.0"
4752
+ }
4753
+ },
4754
  "node_modules/aggregate-error": {
4755
  "version": "3.1.0",
4756
  "resolved": "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz",
 
4764
  "node": ">=8"
4765
  }
4766
  },
4767
+ "node_modules/ahooks": {
4768
+ "version": "3.7.10",
4769
+ "resolved": "https://registry.npmmirror.com/ahooks/-/ahooks-3.7.10.tgz",
4770
+ "integrity": "sha512-/HLYif7sFA/5qSuWKrwvjDbf3bq+sdaMrUWS7XGCDRWdC2FrG/i+u5LZdakMYc6UIgJTMQ7tGiJCV7sdU4kSIw==",
4771
+ "dependencies": {
4772
+ "@babel/runtime": "^7.21.0",
4773
+ "dayjs": "^1.9.1",
4774
+ "intersection-observer": "^0.12.0",
4775
+ "js-cookie": "^2.x.x",
4776
+ "lodash": "^4.17.21",
4777
+ "resize-observer-polyfill": "^1.5.1",
4778
+ "screenfull": "^5.0.0",
4779
+ "tslib": "^2.4.1"
4780
+ },
4781
+ "engines": {
4782
+ "node": ">=8.0.0"
4783
+ },
4784
+ "peerDependencies": {
4785
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
4786
+ }
4787
+ },
4788
  "node_modules/ajv": {
4789
  "version": "6.12.6",
4790
  "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
 
4913
  "node": ">= 8"
4914
  }
4915
  },
4916
+ "node_modules/aproba": {
4917
+ "version": "2.0.0",
4918
+ "resolved": "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz",
4919
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
4920
+ "optional": true
4921
+ },
4922
+ "node_modules/are-we-there-yet": {
4923
+ "version": "2.0.0",
4924
+ "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
4925
+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
4926
+ "optional": true,
4927
+ "dependencies": {
4928
+ "delegates": "^1.0.0",
4929
+ "readable-stream": "^3.6.0"
4930
+ },
4931
+ "engines": {
4932
+ "node": ">=10"
4933
+ }
4934
+ },
4935
  "node_modules/argparse": {
4936
  "version": "1.0.10",
4937
  "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
 
5765
  "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
5766
  "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg=="
5767
  },
5768
+ "node_modules/canvas": {
5769
+ "version": "2.11.2",
5770
+ "resolved": "https://registry.npmmirror.com/canvas/-/canvas-2.11.2.tgz",
5771
+ "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
5772
+ "hasInstallScript": true,
5773
+ "optional": true,
5774
+ "dependencies": {
5775
+ "@mapbox/node-pre-gyp": "^1.0.0",
5776
+ "nan": "^2.17.0",
5777
+ "simple-get": "^3.0.3"
5778
+ },
5779
+ "engines": {
5780
+ "node": ">=6"
5781
+ }
5782
+ },
5783
  "node_modules/ccount": {
5784
  "version": "2.0.1",
5785
  "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz",
 
5838
  "fsevents": "~2.3.2"
5839
  }
5840
  },
5841
+ "node_modules/chownr": {
5842
+ "version": "2.0.0",
5843
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz",
5844
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
5845
+ "optional": true,
5846
+ "engines": {
5847
+ "node": ">=10"
5848
+ }
5849
+ },
5850
  "node_modules/chrome-trace-event": {
5851
  "version": "1.0.3",
5852
  "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
 
5977
  "node": ">=12"
5978
  }
5979
  },
5980
+ "node_modules/clsx": {
5981
+ "version": "2.1.0",
5982
+ "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.0.tgz",
5983
+ "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
5984
+ "engines": {
5985
+ "node": ">=6"
5986
+ }
5987
+ },
5988
  "node_modules/coa": {
5989
  "version": "2.0.2",
5990
  "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
 
6025
  "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
6026
  "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
6027
  },
6028
+ "node_modules/color-support": {
6029
+ "version": "1.1.3",
6030
+ "resolved": "https://registry.npmmirror.com/color-support/-/color-support-1.1.3.tgz",
6031
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
6032
+ "optional": true,
6033
+ "bin": {
6034
+ "color-support": "bin.js"
6035
+ }
6036
+ },
6037
  "node_modules/colord": {
6038
  "version": "2.9.3",
6039
  "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz",
 
6090
  "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz",
6091
  "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
6092
  },
6093
+ "node_modules/console-control-strings": {
6094
+ "version": "1.1.0",
6095
+ "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz",
6096
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
6097
+ "optional": true
6098
+ },
6099
  "node_modules/constants-browserify": {
6100
  "version": "1.0.0",
6101
  "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz",
 
6889
  "node": ">=0.10"
6890
  }
6891
  },
6892
+ "node_modules/decompress-response": {
6893
+ "version": "4.2.1",
6894
+ "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-4.2.1.tgz",
6895
+ "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
6896
+ "optional": true,
6897
+ "dependencies": {
6898
+ "mimic-response": "^2.0.0"
6899
+ },
6900
+ "engines": {
6901
+ "node": ">=8"
6902
+ }
6903
+ },
6904
  "node_modules/deep-is": {
6905
  "version": "0.1.4",
6906
  "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
 
7077
  "node": ">=0.4.0"
7078
  }
7079
  },
7080
+ "node_modules/delegates": {
7081
+ "version": "1.0.0",
7082
+ "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz",
7083
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
7084
+ "optional": true
7085
+ },
7086
  "node_modules/dequal": {
7087
  "version": "2.0.3",
7088
  "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz",
 
8906
  "node": ">=12"
8907
  }
8908
  },
8909
+ "node_modules/fs-minipass": {
8910
+ "version": "2.1.0",
8911
+ "resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz",
8912
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
8913
+ "optional": true,
8914
+ "dependencies": {
8915
+ "minipass": "^3.0.0"
8916
+ },
8917
+ "engines": {
8918
+ "node": ">= 8"
8919
+ }
8920
+ },
8921
+ "node_modules/fs-minipass/node_modules/minipass": {
8922
+ "version": "3.3.6",
8923
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
8924
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
8925
+ "optional": true,
8926
+ "dependencies": {
8927
+ "yallist": "^4.0.0"
8928
+ },
8929
+ "engines": {
8930
+ "node": ">=8"
8931
+ }
8932
+ },
8933
+ "node_modules/fs-minipass/node_modules/yallist": {
8934
+ "version": "4.0.0",
8935
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
8936
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
8937
+ "optional": true
8938
+ },
8939
  "node_modules/fs-monkey": {
8940
  "version": "1.0.5",
8941
  "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.5.tgz",
 
8983
  "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
8984
  "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
8985
  },
8986
+ "node_modules/gauge": {
8987
+ "version": "3.0.2",
8988
+ "resolved": "https://registry.npmmirror.com/gauge/-/gauge-3.0.2.tgz",
8989
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
8990
+ "optional": true,
8991
+ "dependencies": {
8992
+ "aproba": "^1.0.3 || ^2.0.0",
8993
+ "color-support": "^1.1.2",
8994
+ "console-control-strings": "^1.0.0",
8995
+ "has-unicode": "^2.0.1",
8996
+ "object-assign": "^4.1.1",
8997
+ "signal-exit": "^3.0.0",
8998
+ "string-width": "^4.2.3",
8999
+ "strip-ansi": "^6.0.1",
9000
+ "wide-align": "^1.1.2"
9001
+ },
9002
+ "engines": {
9003
+ "node": ">=10"
9004
+ }
9005
+ },
9006
  "node_modules/gensync": {
9007
  "version": "1.0.0-beta.2",
9008
  "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
 
9329
  "node": ">= 0.4"
9330
  }
9331
  },
9332
+ "node_modules/has-unicode": {
9333
+ "version": "2.0.1",
9334
+ "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz",
9335
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
9336
+ "optional": true
9337
+ },
9338
  "node_modules/has-value": {
9339
  "version": "1.0.0",
9340
  "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
 
9675
  "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz",
9676
  "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
9677
  },
9678
+ "node_modules/https-proxy-agent": {
9679
+ "version": "5.0.1",
9680
+ "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
9681
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
9682
+ "optional": true,
9683
+ "dependencies": {
9684
+ "agent-base": "6",
9685
+ "debug": "4"
9686
+ },
9687
+ "engines": {
9688
+ "node": ">= 6"
9689
+ }
9690
+ },
9691
  "node_modules/human-signals": {
9692
  "version": "2.1.0",
9693
  "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
 
9865
  "node": ">= 0.4"
9866
  }
9867
  },
9868
+ "node_modules/intersection-observer": {
9869
+ "version": "0.12.2",
9870
+ "resolved": "https://registry.npmmirror.com/intersection-observer/-/intersection-observer-0.12.2.tgz",
9871
+ "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg=="
9872
+ },
9873
  "node_modules/intl": {
9874
  "version": "1.2.5",
9875
  "resolved": "https://registry.npmmirror.com/intl/-/intl-1.2.5.tgz",
 
10757
  "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.5.tgz",
10758
  "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
10759
  },
10760
+ "node_modules/js-cookie": {
10761
+ "version": "2.2.1",
10762
+ "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.1.tgz",
10763
+ "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
10764
+ },
10765
  "node_modules/js-tokens": {
10766
  "version": "4.0.0",
10767
  "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
 
11291
  "yallist": "^3.0.2"
11292
  }
11293
  },
11294
+ "node_modules/make-cancellable-promise": {
11295
+ "version": "1.3.2",
11296
+ "resolved": "https://registry.npmmirror.com/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz",
11297
+ "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww=="
11298
+ },
11299
  "node_modules/make-dir": {
11300
  "version": "2.1.0",
11301
  "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
 
11318
  "semver": "bin/semver"
11319
  }
11320
  },
11321
+ "node_modules/make-event-props": {
11322
+ "version": "1.6.2",
11323
+ "resolved": "https://registry.npmmirror.com/make-event-props/-/make-event-props-1.6.2.tgz",
11324
+ "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA=="
11325
+ },
11326
  "node_modules/makeerror": {
11327
  "version": "1.0.12",
11328
  "resolved": "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz",
 
11529
  "node": ">=10"
11530
  }
11531
  },
11532
+ "node_modules/merge-refs": {
11533
+ "version": "1.2.2",
11534
+ "resolved": "https://registry.npmmirror.com/merge-refs/-/merge-refs-1.2.2.tgz",
11535
+ "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==",
11536
+ "peerDependencies": {
11537
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0"
11538
+ },
11539
+ "peerDependenciesMeta": {
11540
+ "@types/react": {
11541
+ "optional": true
11542
+ }
11543
+ }
11544
+ },
11545
  "node_modules/merge-stream": {
11546
  "version": "2.0.0",
11547
  "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
 
11834
  "node": ">=6"
11835
  }
11836
  },
11837
+ "node_modules/mimic-response": {
11838
+ "version": "2.1.0",
11839
+ "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-2.1.0.tgz",
11840
+ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
11841
+ "optional": true,
11842
+ "engines": {
11843
+ "node": ">=8"
11844
+ }
11845
+ },
11846
  "node_modules/min-document": {
11847
  "version": "2.19.0",
11848
  "resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
 
11911
  "node": ">=0.10.0"
11912
  }
11913
  },
11914
+ "node_modules/minipass": {
11915
+ "version": "5.0.0",
11916
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz",
11917
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
11918
+ "optional": true,
11919
+ "engines": {
11920
+ "node": ">=8"
11921
+ }
11922
+ },
11923
+ "node_modules/minizlib": {
11924
+ "version": "2.1.2",
11925
+ "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz",
11926
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
11927
+ "optional": true,
11928
+ "dependencies": {
11929
+ "minipass": "^3.0.0",
11930
+ "yallist": "^4.0.0"
11931
+ },
11932
+ "engines": {
11933
+ "node": ">= 8"
11934
+ }
11935
+ },
11936
+ "node_modules/minizlib/node_modules/minipass": {
11937
+ "version": "3.3.6",
11938
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
11939
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
11940
+ "optional": true,
11941
+ "dependencies": {
11942
+ "yallist": "^4.0.0"
11943
+ },
11944
+ "engines": {
11945
+ "node": ">=8"
11946
+ }
11947
+ },
11948
+ "node_modules/minizlib/node_modules/yallist": {
11949
+ "version": "4.0.0",
11950
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
11951
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
11952
+ "optional": true
11953
+ },
11954
  "node_modules/mixin-deep": {
11955
  "version": "1.3.2",
11956
  "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
 
11989
  "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
11990
  "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
11991
  },
11992
+ "node_modules/nan": {
11993
+ "version": "2.18.0",
11994
+ "resolved": "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz",
11995
+ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
11996
+ "optional": true
11997
+ },
11998
  "node_modules/nanoid": {
11999
  "version": "3.3.7",
12000
  "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
 
12180
  "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
12181
  "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
12182
  },
12183
+ "node_modules/nopt": {
12184
+ "version": "5.0.0",
12185
+ "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz",
12186
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
12187
+ "optional": true,
12188
+ "dependencies": {
12189
+ "abbrev": "1"
12190
+ },
12191
+ "bin": {
12192
+ "nopt": "bin/nopt.js"
12193
+ },
12194
+ "engines": {
12195
+ "node": ">=6"
12196
+ }
12197
+ },
12198
  "node_modules/normalize-package-data": {
12199
  "version": "3.0.3",
12200
  "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
 
12270
  "node": ">=8"
12271
  }
12272
  },
12273
+ "node_modules/npmlog": {
12274
+ "version": "5.0.1",
12275
+ "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-5.0.1.tgz",
12276
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
12277
+ "optional": true,
12278
+ "dependencies": {
12279
+ "are-we-there-yet": "^2.0.0",
12280
+ "console-control-strings": "^1.1.0",
12281
+ "gauge": "^3.0.0",
12282
+ "set-blocking": "^2.0.0"
12283
+ }
12284
+ },
12285
  "node_modules/nth-check": {
12286
  "version": "2.1.1",
12287
  "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
 
12814
  "node": ">=8"
12815
  }
12816
  },
12817
+ "node_modules/path2d-polyfill": {
12818
+ "version": "2.0.1",
12819
+ "resolved": "https://registry.npmmirror.com/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz",
12820
+ "integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==",
12821
+ "optional": true,
12822
+ "engines": {
12823
+ "node": ">=8"
12824
+ }
12825
+ },
12826
  "node_modules/pbkdf2": {
12827
  "version": "3.1.2",
12828
  "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
 
12838
  "node": ">=0.12"
12839
  }
12840
  },
12841
+ "node_modules/pdfjs-dist": {
12842
+ "version": "3.11.174",
12843
+ "resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz",
12844
+ "integrity": "sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==",
12845
+ "engines": {
12846
+ "node": ">=18"
12847
+ },
12848
+ "optionalDependencies": {
12849
+ "canvas": "^2.11.2",
12850
+ "path2d-polyfill": "^2.0.1"
12851
+ }
12852
+ },
12853
  "node_modules/performance-now": {
12854
  "version": "2.1.0",
12855
  "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
 
14846
  "resolved": "https://registry.npmmirror.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz",
14847
  "integrity": "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ=="
14848
  },
14849
+ "node_modules/react-pdf": {
14850
+ "version": "7.7.1",
14851
+ "resolved": "https://registry.npmmirror.com/react-pdf/-/react-pdf-7.7.1.tgz",
14852
+ "integrity": "sha512-cbbf/PuRtGcPPw+HLhMI1f6NSka8OJgg+j/yPWTe95Owf0fK6gmVY7OXpTxMeh92O3T3K3EzfE0ML0eXPGwR5g==",
14853
+ "dependencies": {
14854
+ "clsx": "^2.0.0",
14855
+ "dequal": "^2.0.3",
14856
+ "make-cancellable-promise": "^1.3.1",
14857
+ "make-event-props": "^1.6.0",
14858
+ "merge-refs": "^1.2.1",
14859
+ "pdfjs-dist": "3.11.174",
14860
+ "prop-types": "^15.6.2",
14861
+ "tiny-invariant": "^1.0.0",
14862
+ "warning": "^4.0.0"
14863
+ },
14864
+ "peerDependencies": {
14865
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
14866
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
14867
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
14868
+ },
14869
+ "peerDependenciesMeta": {
14870
+ "@types/react": {
14871
+ "optional": true
14872
+ }
14873
+ }
14874
+ },
14875
  "node_modules/react-refresh": {
14876
  "version": "0.14.0",
14877
  "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz",
 
15428
  "version": "3.0.2",
15429
  "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
15430
  "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
 
15431
  "dependencies": {
15432
  "glob": "^7.1.3"
15433
  },
 
15582
  "node": ">= 10.13.0"
15583
  }
15584
  },
15585
+ "node_modules/screenfull": {
15586
+ "version": "5.2.0",
15587
+ "resolved": "https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz",
15588
+ "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==",
15589
+ "engines": {
15590
+ "node": ">=0.10.0"
15591
+ }
15592
+ },
15593
  "node_modules/scroll-into-view-if-needed": {
15594
  "version": "3.1.0",
15595
  "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz",
 
15620
  "randombytes": "^2.1.0"
15621
  }
15622
  },
15623
+ "node_modules/set-blocking": {
15624
+ "version": "2.0.0",
15625
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
15626
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
15627
+ "optional": true
15628
+ },
15629
  "node_modules/set-function-length": {
15630
  "version": "1.1.1",
15631
  "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz",
 
15765
  "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
15766
  "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
15767
  },
15768
+ "node_modules/simple-concat": {
15769
+ "version": "1.0.1",
15770
+ "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
15771
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
15772
+ "optional": true
15773
+ },
15774
+ "node_modules/simple-get": {
15775
+ "version": "3.1.1",
15776
+ "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-3.1.1.tgz",
15777
+ "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
15778
+ "optional": true,
15779
+ "dependencies": {
15780
+ "decompress-response": "^4.2.0",
15781
+ "once": "^1.3.1",
15782
+ "simple-concat": "^1.0.0"
15783
+ }
15784
+ },
15785
  "node_modules/single-spa": {
15786
  "version": "5.9.5",
15787
  "resolved": "https://registry.npmmirror.com/single-spa/-/single-spa-5.9.5.tgz",
 
16818
  "node": ">=6"
16819
  }
16820
  },
16821
+ "node_modules/tar": {
16822
+ "version": "6.2.0",
16823
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-6.2.0.tgz",
16824
+ "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
16825
+ "optional": true,
16826
+ "dependencies": {
16827
+ "chownr": "^2.0.0",
16828
+ "fs-minipass": "^2.0.0",
16829
+ "minipass": "^5.0.0",
16830
+ "minizlib": "^2.1.1",
16831
+ "mkdirp": "^1.0.3",
16832
+ "yallist": "^4.0.0"
16833
+ },
16834
+ "engines": {
16835
+ "node": ">=10"
16836
+ }
16837
+ },
16838
+ "node_modules/tar/node_modules/mkdirp": {
16839
+ "version": "1.0.4",
16840
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
16841
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
16842
+ "optional": true,
16843
+ "bin": {
16844
+ "mkdirp": "bin/cmd.js"
16845
+ },
16846
+ "engines": {
16847
+ "node": ">=10"
16848
+ }
16849
+ },
16850
+ "node_modules/tar/node_modules/yallist": {
16851
+ "version": "4.0.0",
16852
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
16853
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
16854
+ "optional": true
16855
+ },
16856
  "node_modules/terser": {
16857
  "version": "5.26.0",
16858
  "resolved": "https://registry.npmmirror.com/terser/-/terser-5.26.0.tgz",
 
16993
  "node_modules/tiny-invariant": {
16994
  "version": "1.3.1",
16995
  "resolved": "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
16996
+ "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw=="
 
 
16997
  },
16998
  "node_modules/tiny-warning": {
16999
  "version": "1.0.3",
 
17106
  "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
17107
  "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
17108
  },
17109
+ "node_modules/tr46": {
17110
+ "version": "0.0.3",
17111
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
17112
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
17113
+ "optional": true
17114
+ },
17115
  "node_modules/trim-lines": {
17116
  "version": "3.0.1",
17117
  "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz",
 
18323
  "node": ">= 8"
18324
  }
18325
  },
18326
+ "node_modules/webidl-conversions": {
18327
+ "version": "3.0.1",
18328
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
18329
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
18330
+ "optional": true
18331
+ },
18332
  "node_modules/webpack": {
18333
  "version": "5.89.0",
18334
  "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.89.0.tgz",
 
18399
  "resolved": "https://registry.npmmirror.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
18400
  "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
18401
  },
18402
+ "node_modules/whatwg-url": {
18403
+ "version": "5.0.0",
18404
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
18405
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
18406
+ "optional": true,
18407
+ "dependencies": {
18408
+ "tr46": "~0.0.3",
18409
+ "webidl-conversions": "^3.0.0"
18410
+ }
18411
+ },
18412
  "node_modules/which": {
18413
  "version": "2.0.2",
18414
  "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
 
18483
  "node": ">= 0.4"
18484
  }
18485
  },
18486
+ "node_modules/wide-align": {
18487
+ "version": "1.1.5",
18488
+ "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz",
18489
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
18490
+ "optional": true,
18491
+ "dependencies": {
18492
+ "string-width": "^1.0.2 || 2 || 3 || 4"
18493
+ }
18494
+ },
18495
  "node_modules/wrap-ansi": {
18496
  "version": "7.0.0",
18497
  "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
web/package.json CHANGED
@@ -13,6 +13,7 @@
13
  "@ant-design/icons": "^5.2.6",
14
  "@ant-design/pro-components": "^2.6.46",
15
  "@ant-design/pro-layout": "^7.17.16",
 
16
  "antd": "^5.12.7",
17
  "axios": "^1.6.3",
18
  "classnames": "^2.5.1",
@@ -26,6 +27,7 @@
26
  "react-i18next": "^14.0.0",
27
  "react-infinite-scroll-component": "^6.1.0",
28
  "react-markdown": "^9.0.1",
 
29
  "react-string-replace": "^1.1.1",
30
  "umi": "^4.0.90",
31
  "umi-request": "^1.4.0",
 
13
  "@ant-design/icons": "^5.2.6",
14
  "@ant-design/pro-components": "^2.6.46",
15
  "@ant-design/pro-layout": "^7.17.16",
16
+ "ahooks": "^3.7.10",
17
  "antd": "^5.12.7",
18
  "axios": "^1.6.3",
19
  "classnames": "^2.5.1",
 
27
  "react-i18next": "^14.0.0",
28
  "react-infinite-scroll-component": "^6.1.0",
29
  "react-markdown": "^9.0.1",
30
+ "react-pdf": "^7.7.1",
31
  "react-string-replace": "^1.1.1",
32
  "umi": "^4.0.90",
33
  "umi-request": "^1.4.0",
web/src/constants/knowledge.ts CHANGED
@@ -48,3 +48,8 @@ export enum LlmModelType {
48
  Image2text = 'image2text',
49
  Speech2text = 'speech2text',
50
  }
 
 
 
 
 
 
48
  Image2text = 'image2text',
49
  Speech2text = 'speech2text',
50
  }
51
+
52
+ export enum KnowledgeSearchParams {
53
+ DocumentId = 'doc_id',
54
+ KnowledgeId = 'id',
55
+ }
web/src/hooks/knowledgeHook.ts CHANGED
@@ -1,4 +1,5 @@
1
  import showDeleteConfirm from '@/components/deleting-confirm';
 
2
  import { IKnowledge, ITenantInfo } from '@/interfaces/database/knowledge';
3
  import { useCallback, useEffect, useMemo } from 'react';
4
  import { useDispatch, useSearchParams, useSelector } from 'umi';
@@ -181,3 +182,14 @@ export const useFetchFileThumbnails = (docIds?: Array<string>) => {
181
 
182
  return { fileThumbnails, fetchFileThumbnails };
183
  };
 
 
 
 
 
 
 
 
 
 
 
 
1
  import showDeleteConfirm from '@/components/deleting-confirm';
2
+ import { KnowledgeSearchParams } from '@/constants/knowledge';
3
  import { IKnowledge, ITenantInfo } from '@/interfaces/database/knowledge';
4
  import { useCallback, useEffect, useMemo } from 'react';
5
  import { useDispatch, useSearchParams, useSelector } from 'umi';
 
182
 
183
  return { fileThumbnails, fetchFileThumbnails };
184
  };
185
+
186
+ export const useGetKnowledgeSearchParams = () => {
187
+ const [currentQueryParameters] = useSearchParams();
188
+
189
+ return {
190
+ documentId:
191
+ currentQueryParameters.get(KnowledgeSearchParams.DocumentId) || '',
192
+ knowledgeId:
193
+ currentQueryParameters.get(KnowledgeSearchParams.KnowledgeId) || '',
194
+ };
195
+ };
web/src/pages/add-knowledge/components/knowledge-chunk/components/document-preview/hooks.ts ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useSize } from 'ahooks';
2
+ import { useCallback, useEffect, useState } from 'react';
3
+
4
+ export const useDocumentResizeObserver = () => {
5
+ const [containerWidth, setContainerWidth] = useState<number>();
6
+ const [containerRef, setContainerRef] = useState<HTMLElement | null>(null);
7
+ const size = useSize(containerRef);
8
+
9
+ const onResize = useCallback((width?: number) => {
10
+ if (width) {
11
+ setContainerWidth(width);
12
+ }
13
+ }, []);
14
+
15
+ useEffect(() => {
16
+ onResize(size?.width);
17
+ }, [size?.width, onResize]);
18
+
19
+ return { containerWidth, setContainerRef };
20
+ };
web/src/pages/add-knowledge/components/knowledge-chunk/components/document-preview/index.less ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ .documentContainer {
2
+ width: 100%;
3
+ height: calc(100vh - 284px);
4
+ overflow-y: auto;
5
+ overflow-x: hidden;
6
+ }
web/src/pages/add-knowledge/components/knowledge-chunk/components/document-preview/index.tsx ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useGetKnowledgeSearchParams } from '@/hooks/knowledgeHook';
2
+ import { api_host } from '@/utils/api';
3
+ import { useMemo, useState } from 'react';
4
+ import { Document, Page, pdfjs } from 'react-pdf';
5
+
6
+ import 'react-pdf/dist/esm/Page/AnnotationLayer.css';
7
+ import 'react-pdf/dist/esm/Page/TextLayer.css';
8
+ import { useDocumentResizeObserver } from './hooks';
9
+
10
+ import styles from './index.less';
11
+
12
+ // type PDFFile = string | File | null;
13
+
14
+ pdfjs.GlobalWorkerOptions.workerSrc = new URL(
15
+ 'pdfjs-dist/build/pdf.worker.min.js',
16
+ import.meta.url,
17
+ ).toString();
18
+
19
+ // const options = {
20
+ // cMapUrl: '/cmaps/',
21
+ // standardFontDataUrl: '/standard_fonts/',
22
+ // };
23
+
24
+ const DocumentPreview = () => {
25
+ const [numPages, setNumPages] = useState<number>();
26
+ const { documentId } = useGetKnowledgeSearchParams();
27
+ // const [file, setFile] = useState<PDFFile>(null);
28
+ const { containerWidth, setContainerRef } = useDocumentResizeObserver();
29
+
30
+ function onDocumentLoadSuccess({ numPages }: { numPages: number }): void {
31
+ setNumPages(numPages);
32
+ }
33
+
34
+ // const handleChange = (e: any) => {
35
+ // console.info(e.files);
36
+ // setFile(e.target.files[0] || null);
37
+ // };
38
+
39
+ const url = useMemo(() => {
40
+ return `${api_host}/document/get/${documentId}`;
41
+ }, [documentId]);
42
+
43
+ // const fetch_document_file = useCallback(async () => {
44
+ // const ret: Blob = await getDocumentFile(documentId);
45
+ // console.info(ret);
46
+ // const f = new File([ret], 'xx.pdf', { type: ret.type });
47
+ // setFile(f);
48
+ // }, [documentId]);
49
+
50
+ // useEffect(() => {
51
+ // // dispatch({ type: 'kFModel/fetch_document_file', payload: documentId });
52
+ // fetch_document_file();
53
+ // }, [fetch_document_file]);
54
+
55
+ return (
56
+ <div ref={setContainerRef} className={styles.documentContainer}>
57
+ <Document
58
+ file={url}
59
+ onLoadSuccess={onDocumentLoadSuccess}
60
+ // options={options}
61
+ >
62
+ {Array.from(new Array(numPages), (el, index) => (
63
+ <Page
64
+ key={`page_${index + 1}`}
65
+ pageNumber={index + 1}
66
+ width={containerWidth}
67
+ />
68
+ ))}
69
+ </Document>
70
+ {/* <input type="file" onChange={handleChange} /> */}
71
+ </div>
72
+ );
73
+ };
74
+
75
+ export default DocumentPreview;
web/src/pages/add-knowledge/components/knowledge-chunk/hooks.ts ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import { IKnowledgeFile } from '@/interfaces/database/knowledge';
2
+ import { useSelector } from 'umi';
3
+
4
+ export const useSelectDocumentInfo = () => {
5
+ const documentInfo: IKnowledgeFile = useSelector(
6
+ (state: any) => state.chunkModel.documentInfo,
7
+ );
8
+ return documentInfo;
9
+ };
web/src/pages/add-knowledge/components/knowledge-chunk/index.less CHANGED
@@ -23,6 +23,11 @@
23
  }
24
  }
25
 
 
 
 
 
 
26
  .chunkContainer {
27
  height: calc(100vh - 320px);
28
  overflow: auto;
 
23
  }
24
  }
25
 
26
+ .documentPreview {
27
+ width: 40%;
28
+ height: 100%;
29
+ }
30
+
31
  .chunkContainer {
32
  height: calc(100vh - 320px);
33
  overflow: auto;
web/src/pages/add-knowledge/components/knowledge-chunk/index.tsx CHANGED
@@ -1,6 +1,6 @@
1
  import { getOneNamespaceEffectsLoading } from '@/utils/storeUtil';
2
  import type { PaginationProps } from 'antd';
3
- import { Divider, Pagination, Space, Spin, message } from 'antd';
4
  import { useCallback, useEffect, useState } from 'react';
5
  import { useDispatch, useSearchParams, useSelector } from 'umi';
6
  import CreatingModal from './components/chunk-creating-modal';
@@ -8,6 +8,8 @@ import CreatingModal from './components/chunk-creating-modal';
8
  import { useDeleteChunkByIds } from '@/hooks/knowledgeHook';
9
  import ChunkCard from './components/chunk-card';
10
  import ChunkToolBar from './components/chunk-toolbar';
 
 
11
  import styles from './index.less';
12
  import { ChunkModelState } from './model';
13
 
@@ -33,6 +35,7 @@ const Chunk = () => {
33
  const documentId: string = searchParams.get('doc_id') || '';
34
  const [chunkId, setChunkId] = useState<string | undefined>();
35
  const { removeChunk } = useDeleteChunkByIds();
 
36
 
37
  const getChunkList = useCallback(() => {
38
  const payload: PayloadType = {
@@ -158,39 +161,51 @@ const Chunk = () => {
158
  switchChunk={switchChunk}
159
  ></ChunkToolBar>
160
  <Divider></Divider>
161
- <div className={styles.pageContent}>
162
- <Spin spinning={loading} className={styles.spin} size="large">
163
- <Space
164
- direction="vertical"
165
- size={'middle'}
166
- className={styles.chunkContainer}
167
- >
168
- {data.map((item) => (
169
- <ChunkCard
170
- item={item}
171
- key={item.chunk_id}
172
- editChunk={handleEditChunk}
173
- checked={selectedChunkIds.some((x) => x === item.chunk_id)}
174
- handleCheckboxClick={handleSingleCheckboxClick}
175
- switchChunk={switchChunk}
176
- ></ChunkCard>
177
- ))}
178
- </Space>
179
- </Spin>
180
- </div>
181
- <div className={styles.pageFooter}>
182
- <Pagination
183
- responsive
184
- showLessItems
185
- showQuickJumper
186
- showSizeChanger
187
- onChange={onPaginationChange}
188
- pageSize={pagination.pageSize}
189
- pageSizeOptions={[10, 30, 60, 90]}
190
- current={pagination.current}
191
- total={total}
192
- />
193
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
194
  </div>
195
  <CreatingModal doc_id={documentId} chunkId={chunkId} />
196
  </>
 
1
  import { getOneNamespaceEffectsLoading } from '@/utils/storeUtil';
2
  import type { PaginationProps } from 'antd';
3
+ import { Divider, Flex, Pagination, Space, Spin, message } from 'antd';
4
  import { useCallback, useEffect, useState } from 'react';
5
  import { useDispatch, useSearchParams, useSelector } from 'umi';
6
  import CreatingModal from './components/chunk-creating-modal';
 
8
  import { useDeleteChunkByIds } from '@/hooks/knowledgeHook';
9
  import ChunkCard from './components/chunk-card';
10
  import ChunkToolBar from './components/chunk-toolbar';
11
+ import DocumentPreview from './components/document-preview';
12
+ import { useSelectDocumentInfo } from './hooks';
13
  import styles from './index.less';
14
  import { ChunkModelState } from './model';
15
 
 
35
  const documentId: string = searchParams.get('doc_id') || '';
36
  const [chunkId, setChunkId] = useState<string | undefined>();
37
  const { removeChunk } = useDeleteChunkByIds();
38
+ const documentInfo = useSelectDocumentInfo();
39
 
40
  const getChunkList = useCallback(() => {
41
  const payload: PayloadType = {
 
161
  switchChunk={switchChunk}
162
  ></ChunkToolBar>
163
  <Divider></Divider>
164
+ <Flex flex={1} gap={'middle'}>
165
+ <Flex flex={1} vertical>
166
+ <div className={styles.pageContent}>
167
+ <Spin spinning={loading} className={styles.spin} size="large">
168
+ <Space
169
+ direction="vertical"
170
+ size={'middle'}
171
+ className={styles.chunkContainer}
172
+ >
173
+ {data.map((item) => (
174
+ <ChunkCard
175
+ item={item}
176
+ key={item.chunk_id}
177
+ editChunk={handleEditChunk}
178
+ checked={selectedChunkIds.some(
179
+ (x) => x === item.chunk_id,
180
+ )}
181
+ handleCheckboxClick={handleSingleCheckboxClick}
182
+ switchChunk={switchChunk}
183
+ ></ChunkCard>
184
+ ))}
185
+ </Space>
186
+ </Spin>
187
+ </div>
188
+ <div className={styles.pageFooter}>
189
+ <Pagination
190
+ responsive
191
+ showLessItems
192
+ showQuickJumper
193
+ showSizeChanger
194
+ onChange={onPaginationChange}
195
+ pageSize={pagination.pageSize}
196
+ pageSizeOptions={[10, 30, 60, 90]}
197
+ current={pagination.current}
198
+ total={total}
199
+ />
200
+ </div>
201
+ </Flex>
202
+
203
+ {documentInfo.type === 'pdf' && (
204
+ <section className={styles.documentPreview}>
205
+ <DocumentPreview></DocumentPreview>
206
+ </section>
207
+ )}
208
+ </Flex>
209
  </div>
210
  <CreatingModal doc_id={documentId} chunkId={chunkId} />
211
  </>
web/src/pages/add-knowledge/components/knowledge-chunk/model.ts CHANGED
@@ -13,7 +13,7 @@ export interface ChunkModelState extends BaseState {
13
  chunk_id: string;
14
  doc_id: string;
15
  chunkInfo: any;
16
- documentInfo: Partial<IKnowledgeFile>;
17
  available?: number;
18
  }
19
 
@@ -26,7 +26,7 @@ const model: DvaModel<ChunkModelState> = {
26
  chunk_id: '',
27
  doc_id: '',
28
  chunkInfo: {},
29
- documentInfo: {},
30
  pagination: {
31
  current: 1,
32
  pageSize: 10,
 
13
  chunk_id: string;
14
  doc_id: string;
15
  chunkInfo: any;
16
+ documentInfo: IKnowledgeFile;
17
  available?: number;
18
  }
19
 
 
26
  chunk_id: '',
27
  doc_id: '',
28
  chunkInfo: {},
29
+ documentInfo: {} as IKnowledgeFile,
30
  pagination: {
31
  current: 1,
32
  pageSize: 10,
web/src/pages/add-knowledge/components/knowledge-file/model.ts CHANGED
@@ -1,6 +1,6 @@
1
  import { BaseState } from '@/interfaces/common';
2
  import { IKnowledgeFile } from '@/interfaces/database/knowledge';
3
- import kbService from '@/services/kbService';
4
  import { message } from 'antd';
5
  import omit from 'lodash/omit';
6
  import pick from 'lodash/pick';
@@ -212,6 +212,16 @@ const model: DvaModel<KFModelState> = {
212
  yield put({ type: 'setFileThumbnails', payload: data.data });
213
  }
214
  },
 
 
 
 
 
 
 
 
 
 
215
  },
216
  };
217
  export default model;
 
1
  import { BaseState } from '@/interfaces/common';
2
  import { IKnowledgeFile } from '@/interfaces/database/knowledge';
3
+ import kbService, { getDocumentFile } from '@/services/kbService';
4
  import { message } from 'antd';
5
  import omit from 'lodash/omit';
6
  import pick from 'lodash/pick';
 
212
  yield put({ type: 'setFileThumbnails', payload: data.data });
213
  }
214
  },
215
+ *fetch_document_file({ payload = {} }, { call }) {
216
+ const documentId = payload;
217
+ try {
218
+ const ret = yield call(getDocumentFile, documentId);
219
+ console.info('fetch_document_file:', ret);
220
+ return ret;
221
+ } catch (error) {
222
+ console.warn(error);
223
+ }
224
+ },
225
  },
226
  };
227
  export default model;
web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx CHANGED
@@ -29,7 +29,7 @@ const ChunkTitle = ({ item }: { item: ITestingChunk }) => {
29
  <span className={styles.similarityCircle}>
30
  {((item[x.field] as number) * 100).toFixed(2)}%
31
  </span>
32
- <span className={styles.similarityText}>Hybrid Similarity</span>
33
  </Space>
34
  ))}
35
  </Flex>
 
29
  <span className={styles.similarityCircle}>
30
  {((item[x.field] as number) * 100).toFixed(2)}%
31
  </span>
32
+ <span className={styles.similarityText}>{x.label}</span>
33
  </Space>
34
  ))}
35
  </Flex>
web/src/services/kbService.ts CHANGED
@@ -1,6 +1,7 @@
1
  import api from '@/utils/api';
2
  import registerServer from '@/utils/registerServer';
3
  import request from '@/utils/request';
 
4
 
5
  const {
6
  create_kb,
@@ -23,6 +24,7 @@ const {
23
  retrieval_test,
24
  document_rename,
25
  document_run,
 
26
  } = api;
27
 
28
  const methods = {
@@ -113,4 +115,39 @@ const methods = {
113
 
114
  const kbService = registerServer<keyof typeof methods>(methods, request);
115
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  export default kbService;
 
1
  import api from '@/utils/api';
2
  import registerServer from '@/utils/registerServer';
3
  import request from '@/utils/request';
4
+ import pureRequest from 'umi-request';
5
 
6
  const {
7
  create_kb,
 
24
  retrieval_test,
25
  document_rename,
26
  document_run,
27
+ get_document_file,
28
  } = api;
29
 
30
  const methods = {
 
115
 
116
  const kbService = registerServer<keyof typeof methods>(methods, request);
117
 
118
+ export const getDocumentFile = (documentId: string) => {
119
+ return pureRequest(get_document_file + '/' + documentId, {
120
+ responseType: 'blob',
121
+ method: 'get',
122
+ parseResponse: false,
123
+ // getResponse: true,
124
+ })
125
+ .then((res) => {
126
+ const x = res.headers.get('content-disposition');
127
+ console.info(res);
128
+ console.info(x);
129
+ return res.blob();
130
+ })
131
+ .then((res) => {
132
+ // const objectURL = URL.createObjectURL(res);
133
+
134
+ // let btn = document.createElement('a');
135
+
136
+ // btn.download = '文件名.pdf';
137
+
138
+ // btn.href = objectURL;
139
+
140
+ // btn.click();
141
+
142
+ // URL.revokeObjectURL(objectURL);
143
+
144
+ // btn = null;
145
+
146
+ return res;
147
+ })
148
+ .catch((err) => {
149
+ console.info(err);
150
+ });
151
+ };
152
+
153
  export default kbService;
web/src/utils/api.ts CHANGED
@@ -43,6 +43,7 @@ export default {
43
  document_run: `${api_host}/document/run`,
44
  document_change_parser: `${api_host}/document/change_parser`,
45
  document_thumbnails: `${api_host}/document/thumbnails`,
 
46
 
47
  setDialog: `${api_host}/dialog/set`,
48
  getDialog: `${api_host}/dialog/get`,
 
43
  document_run: `${api_host}/document/run`,
44
  document_change_parser: `${api_host}/document/change_parser`,
45
  document_thumbnails: `${api_host}/document/thumbnails`,
46
+ get_document_file: `${api_host}/document/get`,
47
 
48
  setDialog: `${api_host}/dialog/set`,
49
  getDialog: `${api_host}/dialog/get`,
web/src/utils/request.ts CHANGED
@@ -106,7 +106,10 @@ request.interceptors.request.use((url: string, options: any) => {
106
  * 请求response拦截器
107
  * */
108
 
109
- request.interceptors.response.use(async (response: any, request) => {
 
 
 
110
  const data: ResponseType = await response.clone().json();
111
  // response 拦截
112
 
 
106
  * 请求response拦截器
107
  * */
108
 
109
+ request.interceptors.response.use(async (response: any, options) => {
110
+ if (options.responseType === 'blob') {
111
+ return response;
112
+ }
113
  const data: ResponseType = await response.clone().json();
114
  // response 拦截
115