From ebfa1905dd3c6953e2316e26f0791ae4331f612d Mon Sep 17 00:00:00 2001 From: chenshenhai Date: Sun, 27 Feb 2022 17:06:36 +0800 Subject: [PATCH] refactor: refactor @idraw/renderer export --- .../examples/{features => }/css/index.css | 0 .../{features => }/lib/data/circle.js | 0 .../examples/{features => }/lib/data/html.js | 0 .../examples/{features => }/lib/data/image.js | 0 .../examples/{features => }/lib/data/index.js | 0 .../examples/{features => }/lib/data/rect.js | 0 .../examples/{features => }/lib/data/svg.js | 0 .../examples/{features => }/lib/data/text.js | 0 .../examples/{features => }/lib/main.js | 0 .../examples/{features => }/main.html | 4 +-- packages/renderer/src/default.ts | 3 ++ packages/renderer/src/esm.ts | 5 +++ packages/renderer/src/index.ts | 7 ++--- packages/renderer/src/lib/draw/base.ts | 7 ++--- packages/renderer/src/lib/draw/index.ts | 4 +-- packages/renderer/src/lib/draw/text.ts | 9 +++--- packages/renderer/src/lib/loader.ts | 5 +-- packages/util/__tests__/index.test.ts | 2 +- packages/util/src/esm.ts | 3 ++ packages/util/src/index.ts | 31 ------------------- scripts/build-bundle.js | 2 +- scripts/rollup.config.js | 2 +- 22 files changed, 27 insertions(+), 57 deletions(-) rename packages/renderer/examples/{features => }/css/index.css (100%) rename packages/renderer/examples/{features => }/lib/data/circle.js (100%) rename packages/renderer/examples/{features => }/lib/data/html.js (100%) rename packages/renderer/examples/{features => }/lib/data/image.js (100%) rename packages/renderer/examples/{features => }/lib/data/index.js (100%) rename packages/renderer/examples/{features => }/lib/data/rect.js (100%) rename packages/renderer/examples/{features => }/lib/data/svg.js (100%) rename packages/renderer/examples/{features => }/lib/data/text.js (100%) rename packages/renderer/examples/{features => }/lib/main.js (100%) rename packages/renderer/examples/{features => }/main.html (74%) create mode 100644 packages/renderer/src/default.ts create mode 100644 packages/renderer/src/esm.ts create mode 100644 packages/util/src/esm.ts diff --git a/packages/renderer/examples/features/css/index.css b/packages/renderer/examples/css/index.css similarity index 100% rename from packages/renderer/examples/features/css/index.css rename to packages/renderer/examples/css/index.css diff --git a/packages/renderer/examples/features/lib/data/circle.js b/packages/renderer/examples/lib/data/circle.js similarity index 100% rename from packages/renderer/examples/features/lib/data/circle.js rename to packages/renderer/examples/lib/data/circle.js diff --git a/packages/renderer/examples/features/lib/data/html.js b/packages/renderer/examples/lib/data/html.js similarity index 100% rename from packages/renderer/examples/features/lib/data/html.js rename to packages/renderer/examples/lib/data/html.js diff --git a/packages/renderer/examples/features/lib/data/image.js b/packages/renderer/examples/lib/data/image.js similarity index 100% rename from packages/renderer/examples/features/lib/data/image.js rename to packages/renderer/examples/lib/data/image.js diff --git a/packages/renderer/examples/features/lib/data/index.js b/packages/renderer/examples/lib/data/index.js similarity index 100% rename from packages/renderer/examples/features/lib/data/index.js rename to packages/renderer/examples/lib/data/index.js diff --git a/packages/renderer/examples/features/lib/data/rect.js b/packages/renderer/examples/lib/data/rect.js similarity index 100% rename from packages/renderer/examples/features/lib/data/rect.js rename to packages/renderer/examples/lib/data/rect.js diff --git a/packages/renderer/examples/features/lib/data/svg.js b/packages/renderer/examples/lib/data/svg.js similarity index 100% rename from packages/renderer/examples/features/lib/data/svg.js rename to packages/renderer/examples/lib/data/svg.js diff --git a/packages/renderer/examples/features/lib/data/text.js b/packages/renderer/examples/lib/data/text.js similarity index 100% rename from packages/renderer/examples/features/lib/data/text.js rename to packages/renderer/examples/lib/data/text.js diff --git a/packages/renderer/examples/features/lib/main.js b/packages/renderer/examples/lib/main.js similarity index 100% rename from packages/renderer/examples/features/lib/main.js rename to packages/renderer/examples/lib/main.js diff --git a/packages/renderer/examples/features/main.html b/packages/renderer/examples/main.html similarity index 74% rename from packages/renderer/examples/features/main.html rename to packages/renderer/examples/main.html index 98df4ba..54d9821 100644 --- a/packages/renderer/examples/features/main.html +++ b/packages/renderer/examples/main.html @@ -11,8 +11,8 @@ - - + + \ No newline at end of file diff --git a/packages/renderer/src/default.ts b/packages/renderer/src/default.ts new file mode 100644 index 0000000..e6711bc --- /dev/null +++ b/packages/renderer/src/default.ts @@ -0,0 +1,3 @@ +import { Renderer } from './index'; + +export default Renderer; \ No newline at end of file diff --git a/packages/renderer/src/esm.ts b/packages/renderer/src/esm.ts new file mode 100644 index 0000000..8d33e56 --- /dev/null +++ b/packages/renderer/src/esm.ts @@ -0,0 +1,5 @@ +import { Renderer } from './index'; + +export * from './index'; + +export default Renderer; \ No newline at end of file diff --git a/packages/renderer/src/index.ts b/packages/renderer/src/index.ts index bf6dcec..e365956 100644 --- a/packages/renderer/src/index.ts +++ b/packages/renderer/src/index.ts @@ -1,5 +1,5 @@ import { TypeData, TypeContext, TypeElement, TypeElemDesc } from '@idraw/types'; -import util from '@idraw/util'; +import { createUUID, deepClone, Context } from '@idraw/util'; import { drawContext } from './lib/draw'; import { TypeLoadDataItem } from './lib/loader-event'; import Loader from './lib/loader'; @@ -10,9 +10,6 @@ import { } from './names'; const { requestAnimationFrame } = window; -const { createUUID } = util.uuid; -const { deepClone } = util.data; -const { Context } = util; type QueueItem = { data: TypeData }; enum DrawStatus { @@ -31,7 +28,7 @@ type Options = { devicePixelRatio: number, } -export default class Renderer extends RendererEvent { +export class Renderer extends RendererEvent { private [_queue]: QueueItem[] = []; private [_ctx]: TypeContext | null = null; diff --git a/packages/renderer/src/lib/draw/base.ts b/packages/renderer/src/lib/draw/base.ts index ee66aab..6d0a26c 100644 --- a/packages/renderer/src/lib/draw/base.ts +++ b/packages/renderer/src/lib/draw/base.ts @@ -3,9 +3,8 @@ import { // TypeElemDesc, TypeElement, } from '@idraw/types'; -import util from '@idraw/util'; +import { is, istype, isColorStr } from '@idraw/util'; import { rotateElement } from './../transform'; -const { is, istype, color } = util; export function clearContext(ctx: TypeContext) { // ctx.setFillStyle('rgb(0 0 0 / 100%)'); @@ -69,7 +68,7 @@ export function drawBoxBorder( } const bw = elem.desc.borderWidth; let borderColor = '#000000'; - if (color.isColorStr(elem.desc.borderColor) === true) { + if (isColorStr(elem.desc.borderColor) === true) { borderColor = elem.desc.borderColor as string; } const x = elem.x - bw / 2; @@ -83,7 +82,7 @@ export function drawBoxBorder( r = r + bw / 2; } const { desc } = elem; - if (desc.shadowColor !== undefined && color.isColorStr(desc.shadowColor)) { + if (desc.shadowColor !== undefined && isColorStr(desc.shadowColor)) { ctx.setShadowColor(desc.shadowColor); } if (desc.shadowOffsetX !== undefined && is.number(desc.shadowOffsetX)) { diff --git a/packages/renderer/src/lib/draw/index.ts b/packages/renderer/src/lib/draw/index.ts index d5d64ea..c4e0acf 100644 --- a/packages/renderer/src/lib/draw/index.ts +++ b/packages/renderer/src/lib/draw/index.ts @@ -4,7 +4,7 @@ import { TypeElement, // TypePoint, } from '@idraw/types'; -import util from '@idraw/util'; +import { isColorStr } from '@idraw/util'; import Loader from '../loader'; import { clearContext, drawBgColor } from './base'; import { drawRect } from './rect'; @@ -14,8 +14,6 @@ import { drawHTML } from './html'; import { drawText } from './text'; import { drawCircle } from './circle'; -const { isColorStr } = util.color; - export function drawContext( ctx: TypeContext, data: TypeData, diff --git a/packages/renderer/src/lib/draw/text.ts b/packages/renderer/src/lib/draw/text.ts index 3ca5d27..c390687 100644 --- a/packages/renderer/src/lib/draw/text.ts +++ b/packages/renderer/src/lib/draw/text.ts @@ -3,12 +3,11 @@ import { TypeElemDescText, TypeElement, } from '@idraw/types'; -import util from '@idraw/util'; +import { is, isColorStr } from '@idraw/util'; import Loader from '../loader'; import { clearContext, drawBox } from './base'; import { rotateElement } from './../transform'; - -const { is, color } = util; + export function drawText( ctx: TypeContext, @@ -86,7 +85,7 @@ export function drawText( if (lines.length * fontHeight < elem.h) { _y += ((elem.h - lines.length * fontHeight) / 2); } - if (desc.textShadowColor !== undefined && color.isColorStr(desc.textShadowColor)) { + if (desc.textShadowColor !== undefined && isColorStr(desc.textShadowColor)) { ctx.setShadowColor(desc.textShadowColor); } if (desc.textShadowOffsetX !== undefined && is.number(desc.textShadowOffsetX)) { @@ -111,7 +110,7 @@ export function drawText( } // draw text stroke - if (color.isColorStr(desc.strokeColor) && desc.strokeWidth !== undefined && desc.strokeWidth > 0) { + if (isColorStr(desc.strokeColor) && desc.strokeWidth !== undefined && desc.strokeWidth > 0) { let _y = elem.y; if (lines.length * fontHeight < elem.h) { _y += ((elem.h - lines.length * fontHeight) / 2); diff --git a/packages/renderer/src/lib/loader.ts b/packages/renderer/src/lib/loader.ts index d100060..02142b7 100644 --- a/packages/renderer/src/lib/loader.ts +++ b/packages/renderer/src/lib/loader.ts @@ -1,11 +1,8 @@ import { TypeData, TypeElement } from '@idraw/types'; -import util from '@idraw/util'; +import { loadImage, loadSVG, loadHTML, deepClone } from '@idraw/util'; import { LoaderEvent, TypeLoadData, TypeLoaderEventArgMap } from './loader-event'; import { filterScript } from './../util/filter'; -const { loadImage, loadSVG, loadHTML } = util.loader; -const { deepClone } = util.data; - type Options = { maxParallelNum: number } diff --git a/packages/util/__tests__/index.test.ts b/packages/util/__tests__/index.test.ts index fdbdfd6..a8b7c06 100644 --- a/packages/util/__tests__/index.test.ts +++ b/packages/util/__tests__/index.test.ts @@ -1,4 +1,4 @@ -import util from '../src/default'; +import util from '../src/default.js'; const types = { 'Context': 'Function', diff --git a/packages/util/src/esm.ts b/packages/util/src/esm.ts new file mode 100644 index 0000000..3f6b745 --- /dev/null +++ b/packages/util/src/esm.ts @@ -0,0 +1,3 @@ +export * from './index'; + +export * as default from './index'; \ No newline at end of file diff --git a/packages/util/src/index.ts b/packages/util/src/index.ts index 473b598..8d2a87e 100644 --- a/packages/util/src/index.ts +++ b/packages/util/src/index.ts @@ -28,34 +28,3 @@ export { deepClone, Context, } - -// export default { -// is, -// check, -// time: { -// delay, -// compose, -// throttle, -// }, -// loader: { -// loadImage, -// loadSVG, -// loadHTML, -// }, -// file: { -// downloadImageFromCanvas, -// }, -// color: { -// toColorHexStr, -// toColorHexNum, -// isColorStr, -// }, -// uuid: { -// createUUID -// }, -// istype, -// data: { -// deepClone, -// }, -// Context: Context, -// }; \ No newline at end of file diff --git a/scripts/build-bundle.js b/scripts/build-bundle.js index 2d028bc..7c8fdc8 100644 --- a/scripts/build-bundle.js +++ b/scripts/build-bundle.js @@ -10,7 +10,7 @@ const pkgNames = packages.map((pkg) => { async function main() { - if (process.env.BUILD_MODE === 'reset') { + if (process.env.BUILD_MODE === 'reset' && !process.argv[2]) { pkgNames.forEach(async (name) => { const target = name; const pkgDir = path.resolve(`packages/${target}`); diff --git a/scripts/rollup.config.js b/scripts/rollup.config.js index 8c62796..e830c76 100644 --- a/scripts/rollup.config.js +++ b/scripts/rollup.config.js @@ -55,7 +55,7 @@ for(let i = 0; i < packages.length; i++) { external, }); modules.push({ - input: resolveFile([pkg.dirName, 'src', 'default.ts']), + input: resolveFile([pkg.dirName, 'src', 'esm.ts']), output: resolveFile([pkg.dirName, 'dist', 'index.esm.js']), name: pkg.globalName, esModule: true,