@moda-chart/core 0.1.2

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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/dist/conformance.d.ts +40 -0
  4. package/dist/conformance.d.ts.map +1 -0
  5. package/dist/conformance.js +1608 -0
  6. package/dist/conformance.js.map +1 -0
  7. package/dist/core.d.ts +448 -0
  8. package/dist/core.d.ts.map +1 -0
  9. package/dist/core.js +6026 -0
  10. package/dist/core.js.map +1 -0
  11. package/dist/geo.d.ts +85 -0
  12. package/dist/geo.d.ts.map +1 -0
  13. package/dist/geo.js +264 -0
  14. package/dist/geo.js.map +1 -0
  15. package/dist/geometry.d.ts +29 -0
  16. package/dist/geometry.d.ts.map +1 -0
  17. package/dist/geometry.js +92 -0
  18. package/dist/geometry.js.map +1 -0
  19. package/dist/hierarchy.d.ts +142 -0
  20. package/dist/hierarchy.d.ts.map +1 -0
  21. package/dist/hierarchy.js +422 -0
  22. package/dist/hierarchy.js.map +1 -0
  23. package/dist/index.d.ts +18 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/maps/world.d.ts +9 -0
  28. package/dist/maps/world.d.ts.map +1 -0
  29. package/dist/maps/world.js +9 -0
  30. package/dist/maps/world.js.map +1 -0
  31. package/dist/mount.d.ts +75 -0
  32. package/dist/mount.d.ts.map +1 -0
  33. package/dist/mount.js +795 -0
  34. package/dist/mount.js.map +1 -0
  35. package/dist/scales.d.ts +22 -0
  36. package/dist/scales.d.ts.map +1 -0
  37. package/dist/scales.js +118 -0
  38. package/dist/scales.js.map +1 -0
  39. package/dist/sparkline.d.ts +4 -0
  40. package/dist/sparkline.d.ts.map +1 -0
  41. package/dist/sparkline.js +62 -0
  42. package/dist/sparkline.js.map +1 -0
  43. package/dist/styles.css +989 -0
  44. package/dist/svg.d.ts +21 -0
  45. package/dist/svg.d.ts.map +1 -0
  46. package/dist/svg.js +1022 -0
  47. package/dist/svg.js.map +1 -0
  48. package/dist/text.d.ts +23 -0
  49. package/dist/text.d.ts.map +1 -0
  50. package/dist/text.js +67 -0
  51. package/dist/text.js.map +1 -0
  52. package/dist/types.d.ts +1881 -0
  53. package/dist/types.d.ts.map +1 -0
  54. package/dist/types.js +8 -0
  55. package/dist/types.js.map +1 -0
  56. package/dist/xml.d.ts +13 -0
  57. package/dist/xml.d.ts.map +1 -0
  58. package/dist/xml.js +109 -0
  59. package/dist/xml.js.map +1 -0
  60. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 park-taejoon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @moda-chart/core
2
+
3
+ 헤드리스 차트 코어 — 프레임워크에 무관한 상태·스냅샷·이벤트·SVG 렌더러.
4
+
5
+ - `ChartCore` — 상태 관리 코어 (옵션 → 스냅샷 → subscribe)
6
+ - `attachChartView(el, chart)` — 공용 DOM 렌더러 (어댑터가 생명주기에 연결)
7
+ - `mountChart(el, opts)` — 어댑터 없이 DOM에 직접 마운트 (vanilla/CDN)
8
+ - `runChartConformance` — 어댑터 공용 렌더 계약 스펙
9
+ - `styles.css` — 공통 스타일 (`--chart-*` 변수)
10
+
11
+ ```ts
12
+ import { ChartCore, mountChart } from "@moda-chart/core";
13
+ import "@moda-chart/core/styles.css";
14
+
15
+ const chart = new ChartCore({
16
+ type: "line",
17
+ series: [{ name: "매출", values: [12, 24, 16] }],
18
+ categories: ["1월", "2월", "3월"],
19
+ });
20
+ mountChart(document.getElementById("app")!, {
21
+ type: "bar",
22
+ series,
23
+ categories,
24
+ });
25
+ ```
@@ -0,0 +1,40 @@
1
+ import type { ChartCore } from "./core.js";
2
+ import type { ChartCoreOptions } from "./types.js";
3
+ /**
4
+ * 어댑터 공통 렌더 계약 (conformance) 스펙.
5
+ *
6
+ * 5개 렌더러(React/Vue3/Vue2/Svelte/mountChart)가 같은 DOM 계약(mc-*)을
7
+ * 각각 구현한다. 기능 추가 시 한쪽이 빠지는 회귀를 막기 위해, 동일한
8
+ * 옵션에 대한 DOM 계약을 여기에 한 번만 선언하고 각 어댑터의 vitest가
9
+ * 자기 마운트 함수를 주입해 실행한다.
10
+ *
11
+ * runChartConformance("vue3", async (opts) => {
12
+ * const el = document.createElement("div");
13
+ * const chart = new ChartCore(opts);
14
+ * const app = createApp(ChartView, { chart });
15
+ * app.mount(el);
16
+ * return { el, chart, flush: nextTick, destroy: () => app.unmount() };
17
+ * });
18
+ *
19
+ * 새 기능을 추가할 때는 여기에 계약(선택자 + 상호작용 + 기대 DOM)을 추가한다 —
20
+ * 그러면 5개 렌더러 전부에서 자동으로 검증된다.
21
+ */
22
+ /** 어댑터 마운트 결과 — 스펙이 상호작용/단언하는 대상 */
23
+ export interface MountedChartHandle {
24
+ /** 컴포넌트가 렌더된 컨테이너 (마운트 직후 1차 렌더 완료 상태) */
25
+ el: HTMLElement;
26
+ /** 어댑터가 만든 코어 인스턴스 — 스펙이 상태를 직접 조작한다 */
27
+ chart: ChartCore;
28
+ /**
29
+ * DOM 반영 대기. 액션 후 호출된다.
30
+ * vue/svelte은 nextTick/tick, react는 act, vanilla는 생략 가능.
31
+ */
32
+ flush?: () => void | Promise<void>;
33
+ destroy(): void;
34
+ }
35
+ /** 각 어댑터가 구현하는 마운트 함수 — opts를 자기 props/옵션으로 번역한다 */
36
+ export type ConformanceMount = (opts: ChartCoreOptions) => MountedChartHandle | Promise<MountedChartHandle>;
37
+ /** 스펙 기본 픽스처 — 4카테고리 × 2시리즈 라인 */
38
+ export declare function specOptions(extra?: Partial<ChartCoreOptions>): ChartCoreOptions;
39
+ export declare function runChartConformance(label: string, mount: ConformanceMount): void;
40
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,EAAE,EAAE,WAAW,CAAC;IAChB,wCAAwC;IACxC,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,gBAAgB,KACnB,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEtD,kCAAkC;AAClC,wBAAgB,WAAW,CACzB,KAAK,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACpC,gBAAgB,CAiBlB;AAcD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAkwDN"}