@machete-jhun/canvas-studio 0.0.1

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 (32) hide show
  1. package/README.md +157 -0
  2. package/dist/CanvasStudio.d.ts +46 -0
  3. package/dist/CanvasStudio.styles.d.ts +9 -0
  4. package/dist/components/AuxiliaryLines/AuxiliaryLine.d.ts +42 -0
  5. package/dist/components/AuxiliaryLines/index.d.ts +26 -0
  6. package/dist/components/BackScreen.d.ts +9 -0
  7. package/dist/components/BarCodeSvgKonva.d.ts +10 -0
  8. package/dist/components/ContextMenu/BaseMenu.d.ts +14 -0
  9. package/dist/components/ContextMenu/ContextMenuItem.d.ts +8 -0
  10. package/dist/components/ContextMenu/HelpLineMenu.d.ts +8 -0
  11. package/dist/components/ContextMenu/index.d.ts +16 -0
  12. package/dist/components/Geometry.d.ts +16 -0
  13. package/dist/components/GroupTransformerGeometry.d.ts +14 -0
  14. package/dist/components/ImageKonva.d.ts +8 -0
  15. package/dist/components/QrCodeSvgKonva.d.ts +8 -0
  16. package/dist/components/RiveKonva.d.ts +24 -0
  17. package/dist/components/StageMouseControl.d.ts +19 -0
  18. package/dist/components/SvgImageKonva.d.ts +10 -0
  19. package/dist/components/VideoKonva.d.ts +23 -0
  20. package/dist/components/index.d.ts +7 -0
  21. package/dist/constants/index.d.ts +31 -0
  22. package/dist/index.d.ts +6 -0
  23. package/dist/index.js +25 -0
  24. package/dist/types/index.d.ts +4 -0
  25. package/dist/types/shapeTypes.d.ts +119 -0
  26. package/dist/utils/enableDragBackground.d.ts +8 -0
  27. package/dist/utils/enableDragStage.d.ts +6 -0
  28. package/dist/utils/enableKeyboardShortcuts.d.ts +10 -0
  29. package/dist/utils/enableZoomStage.d.ts +4 -0
  30. package/dist/utils/index.d.ts +21 -0
  31. package/dist/utils/shapeTools.d.ts +13 -0
  32. package/package.json +82 -0
@@ -0,0 +1,6 @@
1
+ import type { Stage } from 'konva/lib/Stage';
2
+ /**
3
+ * 按住空格键时可拖动 stage
4
+ */
5
+ declare function enableDragStage(stageIns: Stage): readonly [() => void, () => void];
6
+ export default enableDragStage;
@@ -0,0 +1,10 @@
1
+ import type { Stage } from 'konva/lib/Stage';
2
+ import type { MyShapeConfig } from '../types/shapeTypes';
3
+ export type KeyboardShortcutsCallbacks = {
4
+ onSetShapes: (shapes: MyShapeConfig[]) => void;
5
+ onRemoveShapes: (ids: string[]) => void;
6
+ onSetActiveShapeIds: (ids: string[]) => void;
7
+ onAddShapes: (shapes: MyShapeConfig[]) => void;
8
+ };
9
+ declare function enableKeyboardShortcuts(stageIns: Stage, selectedShape: MyShapeConfig[], callbacks: KeyboardShortcutsCallbacks): readonly [() => void, () => void];
10
+ export default enableKeyboardShortcuts;
@@ -0,0 +1,4 @@
1
+ import type { KonvaEventObject } from 'konva/lib/Node';
2
+ import type { Stage } from 'konva/lib/Stage';
3
+ declare function enableZoomStage(stageIns: Stage): (event: KonvaEventObject<WheelEvent>) => void;
4
+ export default enableZoomStage;
@@ -0,0 +1,21 @@
1
+ import type { KonvaEventObject } from 'konva/lib/Node';
2
+ import type { Vector2d } from 'konva/lib/types';
3
+ import type { Stage } from 'konva/lib/Stage';
4
+ export declare function isMac(): boolean;
5
+ export declare function assertNever(x: never): never;
6
+ /**
7
+ * 获取互补色
8
+ * @param color full_hex #xxxxxx 颜色值
9
+ */
10
+ export declare const complementaryHexColor: (color: string) => string;
11
+ export declare function getVector2Position(node: {
12
+ position: () => Vector2d;
13
+ scaleX: () => number;
14
+ }, pos: Vector2d): Vector2d;
15
+ export declare function getPointerPosition(e: KonvaEventObject<MouseEvent>): Vector2d;
16
+ export declare function getStageCenter(stage: Stage, offsetWidth?: number, offsetHeight?: number): Vector2d;
17
+ export declare function getStageViewPortCenter({ stage, offsetWidth, offsetHeight, }: {
18
+ stage: Stage;
19
+ offsetWidth?: number;
20
+ offsetHeight?: number;
21
+ }): Vector2d;
@@ -0,0 +1,13 @@
1
+ import type { MyBarCodeShape, MyRiveShape, MyImgShape, MyQrCodeShape, MyShapeConfig, MySvgShape, MyTextShape, MyRectShape, MyVideoShape, MyBackScreenShape } from '../types/shapeTypes';
2
+ export declare const copyShape: (shape: MyShapeConfig) => MyShapeConfig;
3
+ export declare const createText: (text: string, fontSize: number, fontFamily: string, fontId: string | number, fontUrl: string, x?: number, y?: number, id?: string) => MyTextShape;
4
+ export declare const createImage: (imageSource: string, imageName: string, displayName: string, id?: string, x?: number, y?: number, width?: number, height?: number) => MyImgShape;
5
+ export declare const createRect: (x?: number, y?: number, width?: number, height?: number, id?: string, fill?: string, strokeWidth?: number, stroke?: string) => MyRectShape;
6
+ export declare const createSvg: (url: string, displayName: string, colors: MySvgShape["colors"], x?: number, y?: number, width?: number, height?: number, id?: string) => MySvgShape;
7
+ export declare const createQrCode: (source: string, displayName: string, x?: number, y?: number, width?: number, height?: number, id?: string) => MyQrCodeShape;
8
+ export declare const createBarCode: (source: string, displayName: string, x?: number, y?: number, width?: number, height?: number, id?: string) => MyBarCodeShape;
9
+ export declare const createRive: (url: string, stateMachine: string, displayName: string, x: number | undefined, y: number | undefined, width: number | undefined, height: number | undefined, id: string | undefined, inputs: MyRiveShape["inputs"], variableObj: MyRiveShape["variableObj"], artboard?: string) => MyRiveShape;
10
+ export declare const createVideo: (url: string, displayName: string, x?: number, y?: number, width?: number, height?: number, id?: string) => MyVideoShape;
11
+ export declare const createBackScreen: (screenId: string, displayName: string, fill: string, x: number, y: number, width: number, height: number, id?: string) => MyBackScreenShape;
12
+ export declare function isTextShape(shape: MyShapeConfig): shape is MyTextShape;
13
+ export declare function isImgShape(shape: MyShapeConfig): shape is MyImgShape;
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "@machete-jhun/canvas-studio",
3
+ "description": "一个基于 React 和 Konva 的画布编辑组件库,支持多种图形和媒体元素的添加与编辑,适用于构建复杂的图形应用。",
4
+ "private": false,
5
+ "version": "0.0.1",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "import": "./dist/index.js",
16
+ "types": "./dist/index.d.ts"
17
+ }
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "scripts": {
23
+ "dev": "vite",
24
+ "build": "vite build && tsc -p tsconfig.lib.json",
25
+ "build:types": "tsc -p tsconfig.lib.json",
26
+ "lint": "eslint .",
27
+ "preview": "vite preview",
28
+ "release": "release-it",
29
+ "release:dry": "release-it --dry-run"
30
+ },
31
+ "peerDependencies": {
32
+ "js-base64": "^3.7.0",
33
+ "jsbarcode": "^3.12.0",
34
+ "konva": "^9.0.0 || ^10.0.0",
35
+ "lodash-es": "^4.17.0",
36
+ "nanoid": "^5.0.0",
37
+ "qrcode": "^1.5.0",
38
+ "react": "^18.0.0 || ^19.0.0",
39
+ "react-dom": "^18.0.0 || ^19.0.0",
40
+ "react-konva": "^18.0.0 || ^19.0.0",
41
+ "react-konva-utils": "^1.0.0 || ^2.0.0"
42
+ },
43
+ "devDependencies": {
44
+ "@eslint/js": "^9.39.2",
45
+ "@release-it/conventional-changelog": "^10.0.4",
46
+ "@types/lodash-es": "^4.17.12",
47
+ "@types/node": "^25.0.10",
48
+ "@types/qrcode": "^1.5.6",
49
+ "@types/react": "^19.2.9",
50
+ "@types/react-dom": "^19.2.3",
51
+ "@vitejs/plugin-react": "^5.1.2",
52
+ "eslint": "^9.39.2",
53
+ "eslint-config-prettier": "^10.1.8",
54
+ "eslint-plugin-prettier": "^5.5.5",
55
+ "eslint-plugin-react": "^7.37.5",
56
+ "eslint-plugin-react-hooks": "^7.0.1",
57
+ "eslint-plugin-react-refresh": "^0.4.26",
58
+ "globals": "^17.1.0",
59
+ "js-base64": "^3.7.8",
60
+ "jsbarcode": "^3.12.3",
61
+ "konva": "^10.2.0",
62
+ "lodash-es": "^4.17.23",
63
+ "nanoid": "^5.1.6",
64
+ "qrcode": "^1.5.4",
65
+ "react": "^19.2.3",
66
+ "react-dom": "^19.2.3",
67
+ "react-konva": "^19.2.1",
68
+ "react-konva-utils": "^2.0.0",
69
+ "release-it": "^19.2.4",
70
+ "terser": "^5.46.0",
71
+ "typescript": "~5.9.3",
72
+ "typescript-eslint": "^8.53.1",
73
+ "vite": "npm:rolldown-vite@7.2.5"
74
+ },
75
+ "overrides": {
76
+ "vite": "npm:rolldown-vite@7.2.5"
77
+ },
78
+ "packageManager": "pnpm@10.28.2",
79
+ "dependencies": {
80
+ "@rive-app/canvas": "^2.34.1"
81
+ }
82
+ }