visualifyjs 2.5.3 → 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 -193
  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 -0
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -43
  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 -123
  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 -1
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -119
  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 -579
  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 -143
  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
@@ -0,0 +1,298 @@
1
+ <script defers>
2
+
3
+ function rangeRandom(min, max, precision) {
4
+ return (Math.random() * (max - min) + min).toFixed(precision)
5
+ }
6
+
7
+ const randomData = []
8
+
9
+ for (let i = 0; i < 50; i++) {
10
+ randomData.push([
11
+ rangeRandom(20, 200, 2), rangeRandom(10, 100, 2)
12
+ ])
13
+ }
14
+
15
+ const Basic_Scatter = {
16
+ code:
17
+ `const getOption = () => {
18
+ return {
19
+ type: 'scatter',
20
+ data: {
21
+ 'random': ${JSON.stringify(randomData)},
22
+ },
23
+ }
24
+ };
25
+ return getOption;`
26
+ };
27
+
28
+ const Grouped_Scatter = {
29
+ code: `const getOption = () => {
30
+ return {
31
+ type: 'scatter',
32
+ data: {
33
+ 'female': [
34
+ [161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6],
35
+ [170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2],
36
+ [172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0],
37
+ [147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8],
38
+ [159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8],
39
+ [174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0],
40
+ [154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8],
41
+ [162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6],
42
+ [168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3],
43
+ [167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8],
44
+ [167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3],
45
+ [168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3],
46
+ [156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0],
47
+ [162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7],
48
+ [151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5],
49
+ [164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2],
50
+ [170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8],
51
+ [163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9],
52
+ [161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2],
53
+ [159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4],
54
+ [161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4],
55
+ [171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2],
56
+ [166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0],
57
+ [159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0],
58
+ [162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4],
59
+ [172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4],
60
+ [162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5],
61
+ [158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5],
62
+ [167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2],
63
+ [170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2],
64
+ [160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3],
65
+ [166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5],
66
+ [170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4],
67
+ [167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6],
68
+ [160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8],
69
+ [177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1],
70
+ [172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5],
71
+ [175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2],
72
+ [165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6],
73
+ [168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0],
74
+ [162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0],
75
+ [157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9],
76
+ [172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1],
77
+ [161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4],
78
+ [152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7],
79
+ [160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5],
80
+ [167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8],
81
+ [175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0],
82
+ [174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9],
83
+ [156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6],
84
+ [169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8],
85
+ [176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3]
86
+ ],
87
+ "male": [
88
+ [174.0, 65.6], [175.3, 71.8], [193.5, 80.7], [186.5, 72.6], [187.2, 78.8],
89
+ [181.5, 74.8], [184.0, 86.4], [184.5, 78.4], [175.0, 62.0], [184.0, 81.6],
90
+ [180.0, 76.6], [177.8, 83.6], [192.0, 90.0], [176.0, 74.6], [174.0, 71.0],
91
+ [184.0, 79.6], [192.7, 93.8], [171.5, 70.0], [173.0, 72.4], [176.0, 85.9],
92
+ [176.0, 78.8], [180.5, 77.8], [172.7, 66.2], [176.0, 86.4], [173.5, 81.8],
93
+ [178.0, 89.6], [180.3, 82.8], [180.3, 76.4], [164.5, 63.2], [173.0, 60.9],
94
+ [183.5, 74.8], [175.5, 70.0], [188.0, 72.4], [189.2, 84.1], [172.8, 69.1],
95
+ [170.0, 59.5], [182.0, 67.2], [170.0, 61.3], [177.8, 68.6], [184.2, 80.1],
96
+ [186.7, 87.8], [171.4, 84.7], [172.7, 73.4], [175.3, 72.1], [180.3, 82.6],
97
+ [182.9, 88.7], [188.0, 84.1], [177.2, 94.1], [172.1, 74.9], [167.0, 59.1],
98
+ [169.5, 75.6], [174.0, 86.2], [172.7, 75.3], [182.2, 87.1], [164.1, 55.2],
99
+ [163.0, 57.0], [171.5, 61.4], [184.2, 76.8], [174.0, 86.8], [174.0, 72.2],
100
+ [177.0, 71.6], [186.0, 84.8], [167.0, 68.2], [171.8, 66.1], [182.0, 72.0],
101
+ [167.0, 64.6], [177.8, 74.8], [164.5, 70.0], [192.0, 101.6], [175.5, 63.2],
102
+ [171.2, 79.1], [181.6, 78.9], [167.4, 67.7], [181.1, 66.0], [177.0, 68.2],
103
+ [174.5, 63.9], [177.5, 72.0], [170.5, 56.8], [182.4, 74.5], [197.1, 90.9],
104
+ [180.1, 93.0], [175.5, 80.9], [180.6, 72.7], [184.4, 68.0], [175.5, 70.9],
105
+ [180.6, 72.5], [177.0, 72.5], [177.1, 83.4], [181.6, 75.5], [176.5, 73.0],
106
+ [175.0, 70.2], [174.0, 73.4], [165.1, 70.5], [177.0, 68.9], [192.0, 102.3],
107
+ [176.5, 68.4], [169.4, 65.9], [182.1, 75.7], [179.8, 84.5], [175.3, 87.7],
108
+ [184.9, 86.4], [177.3, 73.2], [167.4, 53.9], [178.1, 72.0], [168.9, 55.5],
109
+ [157.2, 58.4], [180.3, 83.2], [170.2, 72.7], [177.8, 64.1], [172.7, 72.3],
110
+ [165.1, 65.0], [186.7, 86.4], [165.1, 65.0], [174.0, 88.6], [175.3, 84.1],
111
+ [185.4, 66.8], [177.8, 75.5], [180.3, 93.2], [180.3, 82.7], [177.8, 58.0],
112
+ [177.8, 79.5], [177.8, 78.6], [177.8, 71.8], [177.8, 116.4], [163.8, 72.2],
113
+ [188.0, 83.6], [198.1, 85.5], [175.3, 90.9], [166.4, 85.9], [190.5, 89.1],
114
+ [166.4, 75.0], [177.8, 77.7], [179.7, 86.4], [172.7, 90.9], [190.5, 73.6],
115
+ [185.4, 76.4], [168.9, 69.1], [167.6, 84.5], [175.3, 64.5], [170.2, 69.1],
116
+ [190.5, 108.6], [177.8, 86.4], [190.5, 80.9], [177.8, 87.7], [184.2, 94.5],
117
+ [176.5, 80.2], [177.8, 72.0], [180.3, 71.4], [171.4, 72.7], [172.7, 84.1],
118
+ [172.7, 76.8], [177.8, 63.6], [177.8, 80.9], [182.9, 80.9], [170.2, 85.5],
119
+ [167.6, 68.6], [175.3, 67.7], [165.1, 66.4], [185.4, 102.3], [181.6, 70.5],
120
+ [172.7, 95.9], [190.5, 84.1], [179.1, 87.3], [175.3, 71.8], [170.2, 65.9],
121
+ [193.0, 95.9], [171.4, 91.4], [177.8, 81.8], [177.8, 96.8], [167.6, 69.1],
122
+ [167.6, 82.7], [180.3, 75.5], [182.9, 79.5], [176.5, 73.6], [186.7, 91.8],
123
+ [188.0, 84.1], [188.0, 85.9], [177.8, 81.8], [174.0, 82.5], [177.8, 80.5],
124
+ [171.4, 70.0], [185.4, 81.8], [185.4, 84.1], [188.0, 90.5], [188.0, 91.4],
125
+ [182.9, 89.1], [176.5, 85.0], [175.3, 69.1], [175.3, 73.6], [188.0, 80.5],
126
+ [188.0, 82.7], [175.3, 86.4], [170.5, 67.7], [179.1, 92.7], [177.8, 93.6],
127
+ [175.3, 70.9], [182.9, 75.0], [170.8, 93.2], [188.0, 93.2], [180.3, 77.7],
128
+ [177.8, 61.4], [185.4, 94.1], [168.9, 75.0], [185.4, 83.6], [180.3, 85.5],
129
+ [174.0, 73.9], [167.6, 66.8], [182.9, 87.3], [160.0, 72.3], [180.3, 88.6],
130
+ [167.6, 75.5], [186.7, 101.4], [175.3, 91.1], [175.3, 67.3], [175.9, 77.7],
131
+ [175.3, 81.8], [179.1, 75.5], [181.6, 84.5], [177.8, 76.6], [182.9, 85.0],
132
+ [177.8, 102.5], [184.2, 77.3], [179.1, 71.8], [176.5, 87.9], [188.0, 94.3],
133
+ [174.0, 70.9], [167.6, 64.5], [170.2, 77.3], [167.6, 72.3], [188.0, 87.3],
134
+ [174.0, 80.0], [176.5, 82.3], [180.3, 73.6], [167.6, 74.1], [188.0, 85.9],
135
+ [180.3, 73.2], [167.6, 76.3], [183.0, 65.9], [183.0, 90.9], [179.1, 89.1],
136
+ [170.2, 62.3], [177.8, 82.7], [179.1, 79.1], [190.5, 98.2], [177.8, 84.1],
137
+ [180.3, 83.2], [180.3, 83.2]
138
+ ]
139
+ },
140
+ xAxis:{
141
+ min: 140,
142
+ max: 200,
143
+ },
144
+ yAxis:{
145
+ min: 40,
146
+ max: 120,
147
+ },
148
+ xAxisLabel: 'Height',
149
+ yAxisLabel: 'Weight',
150
+ xAxisNameGap: 5,
151
+ yAxisNameGap: 5,
152
+ tooltip: {
153
+ axisPointer: {
154
+ type: 'cross'
155
+ }
156
+ }
157
+ }
158
+ };
159
+ return getOption;`
160
+ };
161
+
162
+ const Quadrant = {
163
+ code: `const getOption = () => {
164
+ return {
165
+ type: 'scatter',
166
+ data: {
167
+ 'Data':
168
+ [{
169
+ value: [1, 1],
170
+ symbol: 'none',
171
+ }, {
172
+ value: [0, -1],
173
+ symbol: 'none',
174
+ },
175
+ [0.35, 0.18],
176
+ [0.55, 0.77],
177
+ [0.88, 0.23],
178
+ [0.23, -0.25],
179
+ [0.65, -0.66]
180
+ ],
181
+ },
182
+ markArea: {
183
+ itemStyle: {
184
+ color: '#FFFAFA',
185
+ opacity: '0.7'
186
+ },
187
+ emphasis: {
188
+ itemStyle: {
189
+ color: '#FFFAFA',
190
+ opacity: '0.7'
191
+ },
192
+ },
193
+ data: [
194
+ [{
195
+ coord: [0.5, 0]
196
+ }, {
197
+ coord: [1, 1]
198
+ }],
199
+ [{
200
+ coord: [0.5, 0]
201
+ }, {
202
+ coord: [0, -1]
203
+ }]
204
+ ]
205
+ },
206
+ markLine: {
207
+ symbol: 'none',
208
+ data: [
209
+ [{
210
+ value: 0.5,
211
+ coord: [0.5, -1]
212
+ }, {
213
+ coord: [0.5, 1]
214
+ }]
215
+ ]
216
+ },
217
+ legend: false,
218
+ }
219
+ };
220
+ return getOption;`
221
+ };
222
+
223
+ const Bubble = {
224
+ code: `const getOption = () => {
225
+ return {
226
+ type: 'scatter',
227
+ data: {
228
+ 'bubble': ${JSON.stringify(randomData)},
229
+ },
230
+ itemStyle: {
231
+ normal: {
232
+ opacity: 0.8
233
+ }
234
+ },
235
+ symbolSize: function(val) {
236
+ const [a, b] = val
237
+ return Math.abs(a - b) / 2
238
+ },
239
+ }
240
+ };
241
+ return getOption;`
242
+ };
243
+
244
+ const ex1 = new $visualify.LiveEditor(Basic_Scatter).mount('#ex1');
245
+ const ex2 = new $visualify.LiveEditor(Grouped_Scatter).mount('#ex2');
246
+ const ex3 = new $visualify.LiveEditor(Quadrant).mount('#ex3');
247
+ const ex4 = new $visualify.LiveEditor(Bubble).mount('#ex4');
248
+ </script>
249
+
250
+ # Scatter Chart
251
+
252
+ ## Basic Scatter Chart
253
+
254
+ <div id="ex1"></div>
255
+
256
+ ## Grouped Scatter Chart
257
+
258
+ <div id="ex2"></div>
259
+
260
+ ## Quadrant Scatter Chart
261
+
262
+ <div id="ex3"></div>
263
+
264
+ ## Bubble Scatter Chart
265
+
266
+ <div id="ex4"></div>
267
+
268
+ ## Overall Configuration
269
+
270
+ ### Basic Configuration
271
+
272
+ The basic configuration includes:
273
+
274
+ | Attribute | Type | Description | Choice | Default |
275
+ | --------------- | ----------- | ----------------------- | -------------------------- | ------- |
276
+ | title | string | The main title | User-defined title | - |
277
+ | subtitle | string | A secondary title | User-defined subtitle | - |
278
+ | width | string | The width dimension | Any valid CSS width value | - |
279
+ | height | string | The height dimension | Any valid CSS height value | 400px |
280
+ | legend | bool/object | show or hide legend | False, User-defined legend | {} |
281
+ | xAxis | array/false | The xAxis | User-defined xAxis Data | [] |
282
+ | yAxis | array/false | The yAxis | User-defined yAxis Data | [] |
283
+ | label | object | The label | User-defined label | {} |
284
+ | labelLine | object | The labelLine | User-defined labelLine | {} |
285
+ | tooltip | object | The tooltip | User-defined tooltip | {} |
286
+ | xAxisLineshow | bool | show or hide xAxisLines | True, False | true |
287
+ | yAxisLineshow | bool | show or hide yAxisLines | True, False | true |
288
+ | xAxisLabelShow | bool | show or hide xAxisLabel | True, False | true |
289
+ | yAxisLabelShow | bool | show or hide yAxisLabel | True, False | true |
290
+ | xAxisLabelColor | string | The xAxisLabelColor | Any valid CSS color value | - |
291
+ | yAxisLabelColor | string | The yAxisLabelColor | Any valid CSS color value | - |
292
+
293
+ ### Data Configuration
294
+
295
+ | Attribute | Type | Description | Choice | Default |
296
+ | --------- | ------------ | ----------- | ----------------- | --------- |
297
+ | data | string | The data | User-defined data | {} |
298
+ | type | string/array | The type | 'line', 'bar' | undefined |
package/docs/docs/_404.md CHANGED
@@ -1,52 +1,52 @@
1
- <style>
2
- body {
3
- font-family: Arial, sans-serif;
4
- display: flex;
5
- justify-content: center;
6
- align-items: center;
7
- height: 100vh;
8
- margin: 0;
9
- }
10
-
11
- .container {
12
- text-align: center;
13
- background-color: #ffffff;
14
- padding: 50px;
15
- margin-top: 5vh;
16
- border-radius: 10px;
17
- box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
18
- }
19
-
20
- .container h1 {
21
- font-size: 72px;
22
- margin-bottom: 20px;
23
- color: #ff5252;
24
- }
25
-
26
- .container p {
27
- font-size: 24px;
28
- margin-bottom: 30px;
29
- }
30
-
31
- .container a {
32
- font-size: 18px;
33
- text-decoration: none;
34
- color: #2196f3;
35
- border: 1px solid #2196f3;
36
- padding: 10px 15px;
37
- border-radius: 5px;
38
- transition: background-color 0.3s, color 0.3s;
39
- }
40
-
41
- .container a:hover {
42
- background-color: #2196f3;
43
- color: #ffffff;
44
- }
45
-
46
- </style>
47
-
48
- <div class="container">
49
- <h1>404</h1>
50
- <p>Oops! The page you're looking for doesn't exist.</p>
51
- <a href="/">Go Home</a>
1
+ <style>
2
+ body {
3
+ font-family: Arial, sans-serif;
4
+ display: flex;
5
+ justify-content: center;
6
+ align-items: center;
7
+ height: 100vh;
8
+ margin: 0;
9
+ }
10
+
11
+ .container {
12
+ text-align: center;
13
+ background-color: #ffffff;
14
+ padding: 50px;
15
+ margin-top: 5vh;
16
+ border-radius: 10px;
17
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
18
+ }
19
+
20
+ .container h1 {
21
+ font-size: 72px;
22
+ margin-bottom: 20px;
23
+ color: #ff5252;
24
+ }
25
+
26
+ .container p {
27
+ font-size: 24px;
28
+ margin-bottom: 30px;
29
+ }
30
+
31
+ .container a {
32
+ font-size: 18px;
33
+ text-decoration: none;
34
+ color: #2196f3;
35
+ border: 1px solid #2196f3;
36
+ padding: 10px 15px;
37
+ border-radius: 5px;
38
+ transition: background-color 0.3s, color 0.3s;
39
+ }
40
+
41
+ .container a:hover {
42
+ background-color: #2196f3;
43
+ color: #ffffff;
44
+ }
45
+
46
+ </style>
47
+
48
+ <div class="container">
49
+ <h1>404</h1>
50
+ <p>Oops! The page you're looking for doesn't exist.</p>
51
+ <a href="/">Go Home</a>
52
52
  </div>
@@ -1,11 +1,11 @@
1
- <!-- _coverpage.md -->
2
-
3
- ![logo](./static/logo/logo_256x256.png)
4
-
5
- # visualify.js <small>2.5.3</small>
6
-
7
- > A magical data portal generator
8
-
9
- [GitHub](https://github.com/usleolihao)
10
- [Getting Started](#visualify)
11
-
1
+ <!-- _coverpage.md -->
2
+
3
+ ![logo](./static/logo/logo_256x256.png)
4
+
5
+ # visualify.js <small>3.0.0</small>
6
+
7
+ > A magical data portal generator
8
+
9
+ [GitHub](https://github.com/visualify)
10
+ [Getting Started](#visualify)
11
+
@@ -1,43 +1,54 @@
1
- - Getting started
2
-
3
- - [Introduction](/README.md)
4
- - [Quick start](/quickstart.md)
5
- - [More pages](/more-pages.md)
6
-
7
- - Visualify.Recharts
8
-
9
- - [Usage](/rechart-basic-usage.md)
10
- - [Attributes](/rechart-attributes.md)
11
- - [Line Chart](/Rechart/line.md)
12
- - [Bar Chart](/Rechart/bar.md)
13
- - [Pie Chart](/Rechart/pie.md)
14
- - [Radar Chart](/Rechart/radar.md)
15
- - [Funnel Chart](/Rechart/funnel.md)
16
-
17
-
18
- - Page Mode
19
-
20
- - [ScatterL](/components/scatterL.md)
21
- - [Visium](/components/visium.md)
22
- - [DotBio](/components/dotBio.md)
23
- - [Echart](/components/echart.md)
24
- - [Plotly](/components/plotly.md)
25
- - [Macaron](/components/macaron.md)
26
- - [More...](/components/more.md)
27
-
28
- - Customization
29
-
30
- - [Configuration](/configuration.md)
31
- - [Theme](/theme.md)
32
-
33
- - Guide
34
-
35
- - [CLI](/CLI.md)
36
- - [Deploy](/deploy.md)
37
-
38
- - Showcase
39
-
40
- - [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/)
41
- - [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/)
42
-
43
- - [UpdateLog](/log.md)
1
+ - Getting Started
2
+
3
+ - [Introduction](/README.md)
4
+ - [Quick Start](/quickstart.md)
5
+ - [Docsify Plugin](/docsify-plugin.md)
6
+
7
+ - Charts (2D)
8
+
9
+ - [Usage](/rechart-basic-usage.md)
10
+ - [Attributes](/rechart-attributes.md)
11
+ - [Line Chart](/Rechart/line.md)
12
+ - [Bar Chart](/Rechart/bar.md)
13
+ - [Pie Chart](/Rechart/pie.md)
14
+ - [Radar Chart](/Rechart/radar.md)
15
+ - [Funnel Chart](/Rechart/funnel.md)
16
+ - [Scatter Chart](/Rechart/scatter.md)
17
+
18
+ - Charts (3D)
19
+
20
+ - [3D Visualization](/3d-visualization.md)
21
+
22
+ - Page Mode
23
+
24
+ - [ScatterL](/components/scatterL.md)
25
+ - [Visium](/components/visium.md)
26
+ - [DotBio](/components/dotBio.md)
27
+ - [Echart](/components/echart.md)
28
+ - [Plotly](/components/plotly.md)
29
+ - [Macaron](/components/macaron.md)
30
+ - [More...](/components/more.md)
31
+
32
+ - Customization
33
+
34
+ - [Configuration](/configuration.md)
35
+ - [Theme](/theme.md)
36
+
37
+ - Developer Experience
38
+
39
+ - [Hot Module Replacement](/hmr.md)
40
+ - [TypeScript](/typescript.md)
41
+ - [Visual Editor](/visual-editor.md)
42
+ - [Internationalization](/i18n.md)
43
+
44
+ - Guide
45
+
46
+ - [CLI](/CLI.md)
47
+ - [Deploy](/deploy.md)
48
+
49
+ - Showcase
50
+
51
+ - [MmTrBC](https://visualify.pharmacy.arizona.edu/MmTrBC/)
52
+ - [EsoDev](https://visualify.pharmacy.arizona.edu/EsoDev/)
53
+
54
+ - [UpdateLog](/log.md)
@@ -1,34 +1,87 @@
1
- # DotBio Component
2
-
3
- The DotBio component is a dot plot that
4
- displays the expression of genes in different cell types.
5
-
6
-
7
- ## Properties
8
-
9
- The DotBio component has the following properties:
10
-
11
- - `type` (string): The type of the component, in this case `DotBio`.
12
- - `id` (string): The unique identifier of the component.
13
- - `row` (int): The row in which the component is to be displayed.
14
- - `col` (int): The column in which the component is to be displayed.
15
- - `rowspan` (int): The number of rows the component is to span.
16
- - `colspan` (int): The number of columns the component is to span.
17
- - `settings` (object): The settings of the component.
18
- - `meta` (object): The metadata API of the component.
19
- - `name` (string): The name of the metadata.
20
- - `url` (string): The URL of the metadata.
21
- - `exclude_celltype` (array): The cell types to be excluded.
22
- - `gene` (string): The gene API.
23
- - `genelist` (string): The genelist variable name we want to use.
24
-
25
- ### settings Properties
26
-
27
- The `settings` object has the following properties:
28
-
29
- - `preset` (string): The preset of the component.
30
- - `ignoreEmptyData` (boolean): Whether to ignore empty data or not.
31
- - `showscale` (boolean): Whether to show the scale or not.
32
- - `showlegend` (boolean): Whether to show the legend or not.
33
-
34
-
1
+ # DotBio Component
2
+
3
+ The DotBio component creates dot plots (also known as bubble plots) commonly used in bioinformatics to display gene expression patterns across cell types. Each dot represents the expression of a gene in a specific cell type, with size indicating the percentage of expressing cells and color indicating expression level.
4
+
5
+ > **Note:** This component requires a backend API to supply gene expression and metadata. A live demo is not available in this documentation.
6
+
7
+ ## How It Works
8
+
9
+ The DotBio component fetches cell-type metadata and gene expression data from backend APIs, then renders a matrix of dots where rows are cell types and columns are genes.
10
+
11
+ ```
12
+ Gene A Gene B Gene C Gene D
13
+ Cell Type 1 ● ◉ ○ ●
14
+ Cell Type 2 ○ ● ◉ ○
15
+ Cell Type 3 ◉ ○ ● ◉
16
+ Cell Type 4 ● ● ○ ○
17
+
18
+ = high expression (large, dark)
19
+ = medium expression
20
+ = low expression (small, light)
21
+ ```
22
+
23
+ The dot size encodes the percentage of cells expressing the gene, while the dot color encodes the average expression level. This dual encoding lets researchers quickly identify which genes are active in which cell populations.
24
+
25
+ ## Properties
26
+
27
+ | Property | Type | Required | Description |
28
+ |---|---|---|---|
29
+ | `type` | string | Yes | Must be set to `"DotBio"`. |
30
+ | `id` | string | Yes | A unique identifier for this component instance. Used for cross-component references and event targeting. |
31
+ | `row` | int | No | The grid row position where the component is placed (1-based). |
32
+ | `col` | int | No | The grid column position where the component is placed (1-based). |
33
+ | `rowspan` | int | No | The number of grid rows this component spans. Defaults to 1. |
34
+ | `colspan` | int | No | The number of grid columns this component spans. Defaults to 1. |
35
+ | `settings` | object | No | Display and behavior settings. See the **Settings** table below. |
36
+ | `meta` | object | Yes | Defines the metadata API endpoint that provides cell-type information. |
37
+ | `meta.name` | string | Yes | A label for the metadata source (e.g., `"metadata"`). |
38
+ | `meta.url` | string | Yes | The backend URL that returns cell-type metadata. |
39
+ | `exclude_celltype` | array | No | An array of cell-type names to exclude from the plot. Useful for filtering out irrelevant or noisy populations. |
40
+ | `gene` | string | Yes | The backend API URL that returns gene expression data for the selected genes. |
41
+ | `genelist` | string | Yes | The name of the gene list variable to use. This should match a gene list defined elsewhere in the page configuration. |
42
+
43
+ ### Settings
44
+
45
+ | Property | Type | Default | Description |
46
+ |---|---|---|---|
47
+ | `preset` | string | - | A named preset that applies predefined styling and layout options (e.g., `"mmtrbc"`). |
48
+ | `ignoreEmptyData` | boolean | `false` | When `true`, the component will not render an error or placeholder if the API returns empty data. |
49
+ | `showscale` | boolean | `true` | Whether to display the color scale legend alongside the plot. |
50
+ | `showlegend` | boolean | `true` | Whether to display the size legend indicating percentage of expressing cells. |
51
+
52
+ ## Example
53
+
54
+ ```json
55
+ {
56
+ "id": "dotbio_expression",
57
+ "type": "DotBio",
58
+ "col": 1,
59
+ "rowspan": 4,
60
+ "colspan": 2,
61
+ "settings": {
62
+ "preset": "mmtrbc",
63
+ "ignoreEmptyData": true,
64
+ "showscale": true,
65
+ "showlegend": true
66
+ },
67
+ "meta": {
68
+ // Label for this metadata source
69
+ "name": "metadata",
70
+ // Backend endpoint returning cell-type information
71
+ "url": "<your-backend-url>/api/metadata"
72
+ },
73
+ // Cell types to exclude from the visualization
74
+ "exclude_celltype": ["BC-Mes", "BC-NE"],
75
+ // Backend endpoint returning gene expression values
76
+ "gene": "<your-backend-url>/api/gene",
77
+ // References a gene list defined in the page configuration
78
+ "genelist": "selected_genes"
79
+ }
80
+ ```
81
+
82
+ ## See Also
83
+
84
+ - [Plotly Component](/components/plotly.md) - For scatter and violin plots of expression data
85
+ - [Echart Component](/components/echart.md) - General-purpose chart component
86
+ - [Configuration](/configuration.md) - How to set up page mode
87
+ - [MmTrBC Showcase](https://visualify.pharmacy.arizona.edu/MmTrBC/) - Live project using DotBio and other components