visualifyjs 2.5.3-2.dev → 3.0.0

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.
Files changed (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -241
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -298
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -44
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -121
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -9
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -124
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -587
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -147
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
package/README.md CHANGED
@@ -1,59 +1,94 @@
1
- ## Visualify
2
-
3
- > The magical data portal generator
4
- >
5
- > Best mate for [Docsify](https://docsify.js.org/) to be deployed on GitHub
6
- > Pages
7
-
8
- ## What it is
9
-
10
- Visualify takes the complexity out of generating data portal websites, which is
11
- inspired by [docsify](https://docsify.js.org/). Forget about manually writing
12
- React components or generating static HTML files. Visualify smartly loads and
13
- parses your configuration and data API, allowing you to provide the information
14
- directly in a JavaScript file. The result? Your data is beautifully displayed
15
- and visualized as a website, all with minimal effort on your part.
16
-
17
- To get started, simply create an `index.html` file and deploy it on GitHub Pages
18
- or your personal server.
19
-
20
- Here is the [Quick Start](https://visualify.pharmacy.arizona.edu/#/quickstart) guide, which providing detailed
21
- instructions to help you begin.
22
-
23
- ## Pages Mode Vs. Reacharts Mode
24
-
25
- Visualify supports two modes: `pages` and `reacharts`. The `pages` mode is
26
- designed for creating a data portal website as the front router, while the
27
- `reacharts` mode is designed for creating a single page with multiple plots. The
28
- `reacharts` mode is the best mate for [Docsify](https://docsify.js.org/) to show
29
- the plots of your data.
30
-
31
- Pages mode will be the default mode if you don't specify the mode in the
32
- configuration. You can specify the mode in the configuration file by setting the
33
- `mode` field to `pages` or `reacharts`.
34
-
35
- ```json
36
- {
37
- "mode": "pages"
38
- }
39
- ```
40
-
41
- ## Features
42
-
43
- - **No Manual React Components**: Automatically handles the creation of React
44
- components without the need for manual coding.
45
- - **Smart Configuration and Data Parsing**: Loads and parses your
46
- configuration and data API, even if provided directly in a JavaScript file.
47
- - **Dynamic Website Visualization**: Transforms your data into a visually
48
- appealing website on the fly.
49
- - **Easy Deployment**: Just create an `index.html` file with `*.json`
50
- configuration and deploy it on GitHub Pages or your personal server.
51
- - **Best Mate for Docsify**: Visualify is the best mate for
52
- [Docsify](https://docsify.js.org/) to show the plots of your data.
53
-
54
- ## Showcases
55
-
56
- - [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/): Zhou, Yizhuo, Ying Yang, Lihao Guo, Jun Qian, Jian Ge, Debora Sinner, Hongxu Ding, Andrea Califano, and Wellington V. Cardoso. "Airway basal cells show regionally distinct potential to undergo metaplastic differentiation." Elife 11 (2022): e80083.
57
- - [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/): Yang, Ying, Carmel Grace McCullough, Lucas Seninge, Lihao Guo, Woo-Joo Kwon, Yongchun Z. Zhang, Nancy Yanzhe Li et al. "A Spatiotemporal and Machine-Learning Platform Accelerates the Manufacturing of hPSC-derived Esophageal Mucosa." bioRxiv (2023): 2023-10.
58
-
59
-
1
+ ## Visualify.js
2
+
3
+ > The magical data portal generator — best mate for [Docsify](https://docsify.js.org/)
4
+
5
+ Visualify takes the complexity out of generating data portal websites. Forget about manually writing React components or generating static HTML files. Visualify smartly loads and parses your configuration and data API, allowing you to provide the information directly in a JavaScript file.
6
+
7
+ [Quick Start](https://visualify.pharmacy.arizona.edu/#/quickstart) | [Documentation](https://visualify.pharmacy.arizona.edu/) | [Changelog](docs/CHANGELOG.md)
8
+
9
+ ## Usage
10
+
11
+ ### Charts Mode (Docsify integration)
12
+
13
+ Embed interactive charts in your Docsify documentation:
14
+
15
+ ```html
16
+ <script src="https://cdn.jsdelivr.net/gh/visualify/visualify.js@release/dist/visualify-loader.js"></script>
17
+ <script>
18
+ $visualify = { mode: 'charts' }
19
+
20
+ // Mount a chart
21
+ new $visualify.Recharts({
22
+ type: 'line',
23
+ title: 'Example',
24
+ data: { 'series1': [300, 280, 250, 260, 270] },
25
+ }).mount('#chart')
26
+ </script>
27
+ ```
28
+
29
+ ### Pages Mode (Data portal)
30
+
31
+ Build a full data portal website from JSON configuration:
32
+
33
+ ```html
34
+ <script>
35
+ $visualify = {
36
+ el: '#root',
37
+ mode: 'pages',
38
+ name: 'My Data Portal',
39
+ nav: true,
40
+ }
41
+ </script>
42
+ <script src="https://cdn.jsdelivr.net/gh/visualify/visualify.js@release/dist/visualify-loader.js"></script>
43
+ ```
44
+
45
+ ### CLI
46
+
47
+ ```bash
48
+ npm i -g visualifyjs
49
+
50
+ visualify init my-project # Initialize a new project
51
+ visualify dev # Start dev server (auto-detect mode)
52
+ visualify docs build # Build static documentation
53
+ visualify portal dev # Start portal dev server
54
+ visualify edit # Open visual editor
55
+ ```
56
+
57
+ ## Installation
58
+
59
+ ### Stable (npm)
60
+
61
+ ```bash
62
+ npm install visualifyjs
63
+ ```
64
+
65
+ ### Beta (dev branch)
66
+
67
+ Get the latest development build directly from GitHub:
68
+
69
+ ```bash
70
+ npm install github:visualify/visualify.js#dev
71
+ ```
72
+
73
+ Or via CDN (beta):
74
+
75
+ ```html
76
+ <script src="https://cdn.jsdelivr.net/gh/visualify/visualify.js@dev/dist/visualify-loader.js"></script>
77
+ ```
78
+
79
+ > Beta builds are updated daily on the `dev` branch. For production use, install from npm.
80
+
81
+ ## Features
82
+
83
+ - **Two modes**: Charts mode for Docsify integration, Pages mode for full data portals
84
+ - **3D Visualization**: Scatter3D, Bar3D, Surface3D, Line3D via ECharts GL and Three.js
85
+ - **Smart Configuration**: JSON-based configuration with TypeScript validation
86
+ - **CDN Auto-loader**: Single `<script>` tag loads all dependencies automatically
87
+ - **Internationalization**: 6 languages with RTL support
88
+ - **Accessibility**: Keyboard navigation, ARIA labels, screen reader support
89
+ - **Easy Deployment**: Deploy on GitHub Pages, personal server, or any static host
90
+
91
+ ## Showcases
92
+
93
+ - [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/) - Airway basal cells metaplastic differentiation (Zhou et al., Elife 2022)
94
+ - [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/) - Esophageal mucosa spatiotemporal platform (Yang et al., bioRxiv 2023)
@@ -1,31 +1,31 @@
1
- /*
2
- * @Author : Lihao leolihao@arizona.edu
3
- * @Date : 2023-11-29 15:39:38
4
- * @FilePath : /visualifyjs/config-overrides.js
5
- * @Description :
6
- * Copyright (c) 2023 by Lihao (leolihao@arizona.edu), All Rights Reserved.
7
- */
8
- const MiniCssExtractPlugin = require('mini-css-extract-plugin');
9
-
10
- let jsChunkCounter = -1;
11
- let cssChunkCounter = -1;
12
-
13
- module.exports = function override(config, env) {
14
- if (env === 'production') {
15
- // Change output filenames for the production build
16
- config.output.filename = 'static/js/visualify.js';
17
- config.output.chunkFilename = () =>
18
- `static/js/visualify.chunk${jsChunkCounter++}.js`;
19
-
20
- // Update MiniCssExtractPlugin filename and chunkFilename
21
- const miniCssExtractPlugin = config.plugins.find(
22
- (plugin) => plugin.constructor.name === 'MiniCssExtractPlugin',
23
- );
24
- if (miniCssExtractPlugin) {
25
- miniCssExtractPlugin.options.filename = 'static/css/visualify.css';
26
- miniCssExtractPlugin.options.chunkFilename = () =>
27
- `static/css/visualify.chunk${cssChunkCounter++}.css`;
28
- }
29
- }
30
- return config;
31
- };
1
+ /*
2
+ * @Author : Lihao leolihao@arizona.edu
3
+ * @Date : 2023-11-29 15:39:38
4
+ * @FilePath : /visualifyjs/config-overrides.js
5
+ * @Description :
6
+ * Copyright (c) 2023 by Lihao (leolihao@arizona.edu), All Rights Reserved.
7
+ */
8
+ const MiniCssExtractPlugin = require('mini-css-extract-plugin');
9
+
10
+ let jsChunkCounter = -1;
11
+ let cssChunkCounter = -1;
12
+
13
+ module.exports = function override(config, env) {
14
+ if (env === 'production') {
15
+ // Change output filenames for the production build
16
+ config.output.filename = 'static/js/visualify.js';
17
+ config.output.chunkFilename = () =>
18
+ `static/js/visualify.chunk${jsChunkCounter++}.js`;
19
+
20
+ // Update MiniCssExtractPlugin filename and chunkFilename
21
+ const miniCssExtractPlugin = config.plugins.find(
22
+ (plugin) => plugin.constructor.name === 'MiniCssExtractPlugin',
23
+ );
24
+ if (miniCssExtractPlugin) {
25
+ miniCssExtractPlugin.options.filename = 'static/css/visualify.css';
26
+ miniCssExtractPlugin.options.chunkFilename = () =>
27
+ `static/css/visualify.chunk${cssChunkCounter++}.css`;
28
+ }
29
+ }
30
+ return config;
31
+ };