diff --git a/package.json b/package.json
index d5b6c18..963e521 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"version": "23.0.0-rc.1",
"main": "dist/umd/jcanvas.min.js",
"module": "dist/esm/jcanvas.min.js",
- "types": "src/jcanvas.d.ts",
+ "types": "dist/esm/jcanvas.d.ts",
"scripts": {
"build": "rollup -c",
"prepare": "rollup -c",
@@ -43,6 +43,7 @@
"prettier": "^3.2.5",
"qunit": "^2.21.0",
"rollup": "^4.17.2",
+ "rollup-plugin-copy": "^3.5.0",
"rollup-plugin-esbuild": "^6.1.1",
"tslib": "^2.6.2",
"typescript": "^5.4.5"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 17a90ed..ab8054a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -44,6 +44,9 @@ devDependencies:
rollup:
specifier: ^4.17.2
version: 4.17.2
+ rollup-plugin-copy:
+ specifier: ^3.5.0
+ version: 3.5.0
rollup-plugin-esbuild:
specifier: ^6.1.1
version: 6.1.1(esbuild@0.21.4)(rollup@4.17.2)
@@ -534,12 +537,35 @@ packages:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
+ /@types/fs-extra@8.1.5:
+ resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==}
+ dependencies:
+ '@types/node': 20.14.2
+ dev: true
+
+ /@types/glob@7.2.0:
+ resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 20.14.2
+ dev: true
+
/@types/jquery@3.5.30:
resolution: {integrity: sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==}
dependencies:
'@types/sizzle': 2.3.8
dev: true
+ /@types/minimatch@5.1.2:
+ resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ dev: true
+
+ /@types/node@20.14.2:
+ resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: true
+
/@types/sizzle@2.3.8:
resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==}
dev: true
@@ -777,6 +803,10 @@ packages:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
+ /colorette@1.4.0:
+ resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+ dev: true
+
/commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
@@ -1058,6 +1088,15 @@ packages:
signal-exit: 4.1.0
dev: true
+ /fs-extra@8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
/fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@@ -1135,6 +1174,20 @@ packages:
resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
dev: true
+ /globby@10.0.1:
+ resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ glob: 7.1.7
+ ignore: 5.3.1
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
/globby@11.1.0:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
@@ -1151,6 +1204,10 @@ packages:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: true
+ /graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ dev: true
+
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
@@ -1221,6 +1278,11 @@ packages:
engines: {node: '>=8'}
dev: true
+ /is-plain-object@3.0.1:
+ resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/is-reference@1.2.1:
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
dependencies:
@@ -1259,6 +1321,12 @@ packages:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
+ /jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
/levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -1477,6 +1545,17 @@ packages:
glob: 7.1.7
dev: true
+ /rollup-plugin-copy@3.5.0:
+ resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==}
+ engines: {node: '>=8.3'}
+ dependencies:
+ '@types/fs-extra': 8.1.5
+ colorette: 1.4.0
+ fs-extra: 8.1.0
+ globby: 10.0.1
+ is-plain-object: 3.0.1
+ dev: true
+
/rollup-plugin-esbuild@6.1.1(esbuild@0.21.4)(rollup@4.17.2):
resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==}
engines: {node: '>=14.18.0'}
@@ -1647,6 +1726,15 @@ packages:
hasBin: true
dev: true
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: true
+
+ /universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
diff --git a/rollup.config.mjs b/rollup.config.mjs
index f6f4940..ffa73ad 100644
--- a/rollup.config.mjs
+++ b/rollup.config.mjs
@@ -1,9 +1,12 @@
import commonjs from "@rollup/plugin-commonjs";
import { globSync } from "glob";
import path from "node:path";
+import copy from "rollup-plugin-copy";
import esbuild from "rollup-plugin-esbuild";
-const inputPaths = globSync(["src/jcanvas.ts", "src/jcanvas-*.ts"]);
+const inputPaths = globSync(["src/jcanvas.ts", "src/jcanvas-*.ts", ""], {
+ ignore: "src/*.d.ts",
+});
export default inputPaths.map((inputPath) => {
const inputFilenameWithoutExtension = path.basename(inputPath, ".ts");
@@ -29,6 +32,23 @@ export default inputPaths.map((inputPath) => {
},
},
],
- plugins: [commonjs(), esbuild({ minify: true, target: "es2020" })],
+ plugins: [
+ commonjs(),
+ esbuild({ minify: true, target: "es2020" }),
+ copy({
+ targets: [
+ {
+ src: `src/${inputFilenameWithoutExtension}.d.ts`,
+ dest: "dist/umd",
+ rename: `${inputFilenameWithoutExtension}.min.d.ts`,
+ },
+ {
+ src: `src/${inputFilenameWithoutExtension}.d.ts`,
+ dest: "dist/esm",
+ rename: `${inputFilenameWithoutExtension}.min.d.ts`,
+ },
+ ],
+ }),
+ ],
};
});
diff --git a/src/jcanvas-crescents.d.ts b/src/jcanvas-crescents.d.ts
new file mode 100644
index 0000000..fb779eb
--- /dev/null
+++ b/src/jcanvas-crescents.d.ts
@@ -0,0 +1,9 @@
+///
+
+interface JCanvasDefaults {
+ eclipse: number;
+}
+
+interface JQuery {
+ drawCrescent(args: Partial): JQuery;
+}
diff --git a/src/jcanvas-donuts.d.ts b/src/jcanvas-donuts.d.ts
new file mode 100644
index 0000000..aed18a2
--- /dev/null
+++ b/src/jcanvas-donuts.d.ts
@@ -0,0 +1,9 @@
+///
+
+interface JCanvasDefaults {
+ holeSize: number;
+}
+
+interface JQuery {
+ drawDonut(args: Partial): JQuery;
+}
diff --git a/src/jcanvas-handles.d.ts b/src/jcanvas-handles.d.ts
new file mode 100644
index 0000000..4f9ab8a
--- /dev/null
+++ b/src/jcanvas-handles.d.ts
@@ -0,0 +1,16 @@
+///
+
+interface JCanvasDefaults {
+ handle: JCanvasLayer | null;
+ guide: JCanvasLayer | null;
+ aspectRatio: number | null;
+ resizeFromCenter: boolean;
+ constrainProportions: boolean;
+ handlePlacement: "corners" | "sides" | "both";
+ minWidth: number;
+ minHeight: number;
+ handlestart?: JCanvasLayerCallback;
+ handlestop?: JCanvasLayerCallback;
+ handlemove?: JCanvasLayerCallback;
+ handlecancel?: JCanvasLayerCallback;
+}
diff --git a/src/jcanvas-hearts.d.ts b/src/jcanvas-hearts.d.ts
new file mode 100644
index 0000000..0e5d8de
--- /dev/null
+++ b/src/jcanvas-hearts.d.ts
@@ -0,0 +1,9 @@
+///
+
+interface JCanvasDefaults {
+ size: number;
+}
+
+interface JQuery {
+ drawHeart(args: Partial): JQuery;
+}
diff --git a/src/jcanvas.d.ts b/src/jcanvas.d.ts
index 1515645..99b814b 100644
--- a/src/jcanvas.d.ts
+++ b/src/jcanvas.d.ts
@@ -107,7 +107,7 @@ type JCanvasEventName =
| JCanvasImageEventName;
interface JCanvasMaps {
- drawings: Record;
+ drawings: Record;
touchEvents: Partial<
Record
>;
@@ -375,7 +375,7 @@ interface JCanvasDefaults {
translate: number;
translateX: number;
translateY: number;
- type: keyof JCanvasMaps["drawings"] | null;
+ type: string | null;
visible: boolean;
width: number | null;
willReadFrequently: boolean;
diff --git a/src/jcanvas.ts b/src/jcanvas.ts
index 56eb3e1..0727ddb 100644
--- a/src/jcanvas.ts
+++ b/src/jcanvas.ts
@@ -201,7 +201,7 @@ class jCanvasDefaults implements JCanvasDefaults {
translate: number = 0;
translateX: number = 0;
translateY: number = 0;
- type: keyof (typeof maps)["drawings"] | null = null;
+ type: string | null = null;
visible: boolean = true;
width: number | null = null;
willReadFrequently: boolean = false;