js-draw 0.1.6 → 0.1.7
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.
- package/.eslintrc.js +1 -0
- package/CHANGELOG.md +7 -0
- package/README.md +2 -2
- package/dist/bundle.js +1 -1
- package/dist/src/Color4.js +6 -2
- package/dist/src/Editor.d.ts +1 -0
- package/dist/src/Editor.js +19 -8
- package/dist/src/EditorImage.d.ts +8 -13
- package/dist/src/EditorImage.js +51 -29
- package/dist/src/Viewport.d.ts +9 -1
- package/dist/src/Viewport.js +3 -1
- package/dist/src/commands/Command.d.ts +9 -8
- package/dist/src/commands/Command.js +15 -14
- package/dist/src/commands/Duplicate.d.ts +14 -0
- package/dist/src/commands/Duplicate.js +34 -0
- package/dist/src/commands/Erase.d.ts +5 -2
- package/dist/src/commands/Erase.js +28 -9
- package/dist/src/commands/SerializableCommand.d.ts +13 -0
- package/dist/src/commands/SerializableCommand.js +28 -0
- package/dist/src/commands/localization.d.ts +2 -0
- package/dist/src/commands/localization.js +2 -0
- package/dist/src/components/AbstractComponent.d.ts +15 -2
- package/dist/src/components/AbstractComponent.js +122 -26
- package/dist/src/components/SVGGlobalAttributesObject.d.ts +6 -1
- package/dist/src/components/SVGGlobalAttributesObject.js +23 -1
- package/dist/src/components/Stroke.d.ts +5 -0
- package/dist/src/components/Stroke.js +32 -1
- package/dist/src/components/Text.d.ts +11 -4
- package/dist/src/components/Text.js +57 -3
- package/dist/src/components/UnknownSVGObject.d.ts +2 -0
- package/dist/src/components/UnknownSVGObject.js +12 -1
- package/dist/src/components/util/describeComponentList.d.ts +4 -0
- package/dist/src/components/util/describeComponentList.js +14 -0
- package/dist/src/geometry/Path.d.ts +4 -1
- package/dist/src/geometry/Path.js +4 -0
- package/dist/src/rendering/Display.d.ts +3 -0
- package/dist/src/rendering/Display.js +13 -0
- package/dist/src/rendering/RenderingStyle.d.ts +24 -0
- package/dist/src/rendering/RenderingStyle.js +32 -0
- package/dist/src/rendering/renderers/AbstractRenderer.d.ts +1 -8
- package/dist/src/rendering/renderers/AbstractRenderer.js +1 -6
- package/dist/src/rendering/renderers/CanvasRenderer.d.ts +2 -1
- package/dist/src/rendering/renderers/DummyRenderer.d.ts +2 -1
- package/dist/src/rendering/renderers/SVGRenderer.d.ts +2 -1
- package/dist/src/rendering/renderers/TextOnlyRenderer.d.ts +2 -1
- package/dist/src/toolbar/HTMLToolbar.d.ts +1 -1
- package/dist/src/toolbar/HTMLToolbar.js +52 -534
- package/dist/src/toolbar/icons.d.ts +5 -0
- package/dist/src/toolbar/icons.js +186 -13
- package/dist/src/toolbar/localization.d.ts +4 -0
- package/dist/src/toolbar/localization.js +4 -0
- package/dist/src/toolbar/makeColorInput.d.ts +5 -0
- package/dist/src/toolbar/makeColorInput.js +81 -0
- package/dist/src/toolbar/widgets/BaseToolWidget.d.ts +12 -0
- package/dist/src/toolbar/widgets/BaseToolWidget.js +44 -0
- package/dist/src/toolbar/widgets/BaseWidget.d.ts +32 -0
- package/dist/src/toolbar/widgets/BaseWidget.js +148 -0
- package/dist/src/toolbar/widgets/EraserWidget.d.ts +6 -0
- package/dist/src/toolbar/widgets/EraserWidget.js +14 -0
- package/dist/src/toolbar/widgets/HandToolWidget.d.ts +13 -0
- package/dist/src/toolbar/widgets/HandToolWidget.js +133 -0
- package/dist/src/toolbar/widgets/PenWidget.d.ts +20 -0
- package/dist/src/toolbar/widgets/PenWidget.js +131 -0
- package/dist/src/toolbar/widgets/SelectionWidget.d.ts +11 -0
- package/dist/src/toolbar/widgets/SelectionWidget.js +56 -0
- package/dist/src/toolbar/widgets/TextToolWidget.d.ts +13 -0
- package/dist/src/toolbar/widgets/TextToolWidget.js +72 -0
- package/dist/src/tools/Pen.js +1 -1
- package/dist/src/tools/PipetteTool.d.ts +20 -0
- package/dist/src/tools/PipetteTool.js +40 -0
- package/dist/src/tools/SelectionTool.d.ts +2 -0
- package/dist/src/tools/SelectionTool.js +41 -23
- package/dist/src/tools/TextTool.js +1 -1
- package/dist/src/tools/ToolController.d.ts +3 -1
- package/dist/src/tools/ToolController.js +4 -0
- package/dist/src/tools/localization.d.ts +2 -1
- package/dist/src/tools/localization.js +3 -2
- package/dist/src/types.d.ts +7 -2
- package/dist/src/types.js +1 -0
- package/jest.config.js +2 -0
- package/package.json +6 -6
- package/src/Color4.ts +9 -3
- package/src/Editor.ts +23 -11
- package/src/EditorImage.test.ts +4 -4
- package/src/EditorImage.ts +61 -20
- package/src/SVGLoader.ts +2 -1
- package/src/Viewport.ts +2 -1
- package/src/commands/Command.ts +21 -19
- package/src/commands/Duplicate.ts +49 -0
- package/src/commands/Erase.ts +34 -13
- package/src/commands/SerializableCommand.ts +41 -0
- package/src/commands/localization.ts +5 -0
- package/src/components/AbstractComponent.ts +168 -26
- package/src/components/SVGGlobalAttributesObject.ts +34 -2
- package/src/components/Stroke.test.ts +53 -0
- package/src/components/Stroke.ts +37 -2
- package/src/components/Text.test.ts +38 -0
- package/src/components/Text.ts +80 -5
- package/src/components/UnknownSVGObject.test.ts +10 -0
- package/src/components/UnknownSVGObject.ts +15 -1
- package/src/components/builders/FreehandLineBuilder.ts +2 -1
- package/src/components/util/describeComponentList.ts +18 -0
- package/src/geometry/Path.ts +8 -1
- package/src/rendering/Display.ts +17 -1
- package/src/rendering/RenderingStyle.test.ts +68 -0
- package/src/rendering/RenderingStyle.ts +46 -0
- package/src/rendering/caching/RenderingCache.test.ts +1 -1
- package/src/rendering/renderers/AbstractRenderer.ts +1 -15
- package/src/rendering/renderers/CanvasRenderer.ts +2 -1
- package/src/rendering/renderers/DummyRenderer.ts +2 -1
- package/src/rendering/renderers/SVGRenderer.ts +2 -1
- package/src/rendering/renderers/TextOnlyRenderer.ts +2 -1
- package/src/toolbar/HTMLToolbar.ts +58 -660
- package/src/toolbar/icons.ts +205 -13
- package/src/toolbar/localization.ts +10 -2
- package/src/toolbar/makeColorInput.ts +105 -0
- package/src/toolbar/toolbar.css +116 -78
- package/src/toolbar/widgets/BaseToolWidget.ts +53 -0
- package/src/toolbar/widgets/BaseWidget.ts +175 -0
- package/src/toolbar/widgets/EraserWidget.ts +16 -0
- package/src/toolbar/widgets/HandToolWidget.ts +186 -0
- package/src/toolbar/widgets/PenWidget.ts +165 -0
- package/src/toolbar/widgets/SelectionWidget.ts +72 -0
- package/src/toolbar/widgets/TextToolWidget.ts +90 -0
- package/src/tools/Pen.ts +1 -1
- package/src/tools/PipetteTool.ts +56 -0
- package/src/tools/SelectionTool.test.ts +2 -4
- package/src/tools/SelectionTool.ts +47 -27
- package/src/tools/TextTool.ts +1 -1
- package/src/tools/ToolController.ts +10 -6
- package/src/tools/UndoRedoShortcut.test.ts +1 -1
- package/src/tools/localization.ts +6 -3
- package/src/types.ts +12 -1
@@ -0,0 +1,32 @@
|
|
1
|
+
import Color4 from '../Color4';
|
2
|
+
export const stylesEqual = (a, b) => {
|
3
|
+
var _a, _b, _c, _d, _e, _f;
|
4
|
+
const result = a === b || (a.fill.eq(b.fill)
|
5
|
+
&& (a.stroke == undefined) === (b.stroke == undefined)
|
6
|
+
&& ((_d = (_b = (_a = a.stroke) === null || _a === void 0 ? void 0 : _a.color) === null || _b === void 0 ? void 0 : _b.eq((_c = b.stroke) === null || _c === void 0 ? void 0 : _c.color)) !== null && _d !== void 0 ? _d : true)
|
7
|
+
&& ((_e = a.stroke) === null || _e === void 0 ? void 0 : _e.width) === ((_f = b.stroke) === null || _f === void 0 ? void 0 : _f.width));
|
8
|
+
// Map undefined/null -> false
|
9
|
+
return result !== null && result !== void 0 ? result : false;
|
10
|
+
};
|
11
|
+
// Returns an object that can be converted to a JSON string with
|
12
|
+
// JSON.stringify.
|
13
|
+
export const styleToJSON = (style) => {
|
14
|
+
const stroke = !style.stroke ? undefined : {
|
15
|
+
color: style.stroke.color.toHexString(),
|
16
|
+
width: style.stroke.width,
|
17
|
+
};
|
18
|
+
return {
|
19
|
+
fill: style.fill.toHexString(),
|
20
|
+
stroke,
|
21
|
+
};
|
22
|
+
};
|
23
|
+
export const styleFromJSON = (json) => {
|
24
|
+
const stroke = json.stroke ? {
|
25
|
+
color: Color4.fromHex(json.stroke.color),
|
26
|
+
width: json.stroke.width,
|
27
|
+
} : undefined;
|
28
|
+
return {
|
29
|
+
fill: Color4.fromHex(json.fill),
|
30
|
+
stroke,
|
31
|
+
};
|
32
|
+
};
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import Color4 from '../../Color4';
|
2
1
|
import { LoadSaveDataTable } from '../../components/AbstractComponent';
|
3
2
|
import { TextStyle } from '../../components/Text';
|
4
3
|
import Mat33 from '../../geometry/Mat33';
|
@@ -6,13 +5,7 @@ import { PathCommand } from '../../geometry/Path';
|
|
6
5
|
import Rect2 from '../../geometry/Rect2';
|
7
6
|
import { Point2, Vec2 } from '../../geometry/Vec2';
|
8
7
|
import Viewport from '../../Viewport';
|
9
|
-
|
10
|
-
fill: Color4;
|
11
|
-
stroke?: {
|
12
|
-
color: Color4;
|
13
|
-
width: number;
|
14
|
-
};
|
15
|
-
}
|
8
|
+
import RenderingStyle from '../RenderingStyle';
|
16
9
|
export interface RenderablePathSpec {
|
17
10
|
startPoint: Point2;
|
18
11
|
commands: PathCommand[];
|
@@ -1,11 +1,6 @@
|
|
1
1
|
import Path, { PathCommandType } from '../../geometry/Path';
|
2
2
|
import { Vec2 } from '../../geometry/Vec2';
|
3
|
-
|
4
|
-
var _a, _b, _c, _d, _e;
|
5
|
-
return a === b || (a.fill.eq(b.fill)
|
6
|
-
&& ((_b = (_a = a.stroke) === null || _a === void 0 ? void 0 : _a.color) === null || _b === void 0 ? void 0 : _b.eq((_c = b.stroke) === null || _c === void 0 ? void 0 : _c.color))
|
7
|
-
&& ((_d = a.stroke) === null || _d === void 0 ? void 0 : _d.width) === ((_e = b.stroke) === null || _e === void 0 ? void 0 : _e.width));
|
8
|
-
};
|
3
|
+
import { stylesEqual } from '../RenderingStyle';
|
9
4
|
export default class AbstractRenderer {
|
10
5
|
constructor(viewport) {
|
11
6
|
this.viewport = viewport;
|
@@ -4,7 +4,8 @@ import Rect2 from '../../geometry/Rect2';
|
|
4
4
|
import { Point2, Vec2 } from '../../geometry/Vec2';
|
5
5
|
import Vec3 from '../../geometry/Vec3';
|
6
6
|
import Viewport from '../../Viewport';
|
7
|
-
import
|
7
|
+
import RenderingStyle from '../RenderingStyle';
|
8
|
+
import AbstractRenderer, { RenderablePathSpec } from './AbstractRenderer';
|
8
9
|
export default class CanvasRenderer extends AbstractRenderer {
|
9
10
|
private ctx;
|
10
11
|
private ignoreObjectsAboveLevel;
|
@@ -4,7 +4,8 @@ import Rect2 from '../../geometry/Rect2';
|
|
4
4
|
import { Point2, Vec2 } from '../../geometry/Vec2';
|
5
5
|
import Vec3 from '../../geometry/Vec3';
|
6
6
|
import Viewport from '../../Viewport';
|
7
|
-
import
|
7
|
+
import RenderingStyle from '../RenderingStyle';
|
8
|
+
import AbstractRenderer from './AbstractRenderer';
|
8
9
|
export default class DummyRenderer extends AbstractRenderer {
|
9
10
|
clearedCount: number;
|
10
11
|
renderedPathCount: number;
|
@@ -4,7 +4,8 @@ import Mat33 from '../../geometry/Mat33';
|
|
4
4
|
import Rect2 from '../../geometry/Rect2';
|
5
5
|
import { Point2, Vec2 } from '../../geometry/Vec2';
|
6
6
|
import Viewport from '../../Viewport';
|
7
|
-
import
|
7
|
+
import RenderingStyle from '../RenderingStyle';
|
8
|
+
import AbstractRenderer from './AbstractRenderer';
|
8
9
|
export default class SVGRenderer extends AbstractRenderer {
|
9
10
|
private elem;
|
10
11
|
private currentPath;
|
@@ -4,7 +4,8 @@ import Rect2 from '../../geometry/Rect2';
|
|
4
4
|
import Vec3 from '../../geometry/Vec3';
|
5
5
|
import Viewport from '../../Viewport';
|
6
6
|
import { TextRendererLocalization } from '../localization';
|
7
|
-
import
|
7
|
+
import RenderingStyle from '../RenderingStyle';
|
8
|
+
import AbstractRenderer from './AbstractRenderer';
|
8
9
|
export default class TextOnlyRenderer extends AbstractRenderer {
|
9
10
|
private localizationTable;
|
10
11
|
private descriptionBuilder;
|
@@ -1,11 +1,11 @@
|
|
1
1
|
import Editor from '../Editor';
|
2
2
|
import { ToolbarLocalization } from './localization';
|
3
3
|
import { ActionButtonIcon } from './types';
|
4
|
+
export declare const toolbarCSSPrefix = "toolbar-";
|
4
5
|
export default class HTMLToolbar {
|
5
6
|
private editor;
|
6
7
|
private localizationTable;
|
7
8
|
private container;
|
8
|
-
private penTypes;
|
9
9
|
constructor(editor: Editor, parent: HTMLElement, localizationTable?: ToolbarLocalization);
|
10
10
|
setupColorPickers(): void;
|
11
11
|
addActionButton(title: string | ActionButtonIcon, command: () => void, parent?: Element): HTMLButtonElement;
|