kritzel-react 0.1.30 → 0.1.32
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/dist/kritzel-react/lib/components/stencil-generated/components.js +122 -0
- package/dist/kritzel-react/lib/index.js +2 -0
- package/dist/kritzel-stencil/src/classes/core/core.class.js +797 -0
- package/dist/kritzel-stencil/src/classes/core/reviver.class.js +97 -0
- package/dist/kritzel-stencil/src/classes/core/store.class.js +153 -0
- package/dist/kritzel-stencil/src/classes/core/viewport.class.js +311 -0
- package/dist/kritzel-stencil/src/classes/core/workspace.class.js +34 -0
- package/dist/kritzel-stencil/src/classes/handlers/base.handler.js +6 -0
- package/dist/kritzel-stencil/src/classes/handlers/context-menu.handler.js +63 -0
- package/dist/kritzel-stencil/src/classes/handlers/hover.handler.js +18 -0
- package/dist/kritzel-stencil/src/classes/handlers/key.handler.js +76 -0
- package/dist/kritzel-stencil/src/classes/handlers/line-handle.handler.js +382 -0
- package/dist/kritzel-stencil/src/classes/handlers/move.handler.js +213 -0
- package/dist/kritzel-stencil/src/classes/handlers/resize.handler.js +205 -0
- package/dist/kritzel-stencil/src/classes/handlers/rotation.handler.js +117 -0
- package/dist/kritzel-stencil/src/classes/handlers/selection.handler.js +313 -0
- package/dist/kritzel-stencil/src/classes/managers/anchor.manager.js +1056 -0
- package/dist/kritzel-stencil/src/classes/managers/cursor.manager.js +117 -0
- package/dist/kritzel-stencil/src/classes/managers/theme.manager.js +103 -0
- package/dist/kritzel-stencil/src/classes/objects/base-object.class.js +249 -0
- package/dist/kritzel-stencil/src/classes/objects/custom-element.class.js +60 -0
- package/dist/kritzel-stencil/src/classes/objects/group.class.js +407 -0
- package/dist/kritzel-stencil/src/classes/objects/image.class.js +55 -0
- package/dist/kritzel-stencil/src/classes/objects/line.class.js +608 -0
- package/dist/kritzel-stencil/src/classes/objects/path.class.js +401 -0
- package/dist/kritzel-stencil/src/classes/objects/selection-box.class.js +21 -0
- package/dist/kritzel-stencil/src/classes/objects/selection-group.class.js +409 -0
- package/dist/kritzel-stencil/src/classes/objects/shape.class.js +412 -0
- package/dist/kritzel-stencil/src/classes/objects/text.class.js +292 -0
- package/dist/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.js +101 -0
- package/dist/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.js +241 -0
- package/dist/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.js +43 -0
- package/dist/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.js +98 -0
- package/dist/kritzel-stencil/src/classes/registries/icon-registry.class.js +66 -0
- package/dist/kritzel-stencil/src/classes/registries/tool.registry.js +21 -0
- package/dist/kritzel-stencil/src/classes/structures/app-state-map.structure.js +212 -0
- package/dist/kritzel-stencil/src/classes/structures/object-map.structure.js +414 -0
- package/dist/kritzel-stencil/src/classes/structures/quadtree.structure.js +151 -0
- package/dist/kritzel-stencil/src/classes/tools/base-tool.class.js +36 -0
- package/dist/kritzel-stencil/src/classes/tools/brush-tool.class.js +161 -0
- package/dist/kritzel-stencil/src/classes/tools/eraser-tool.class.js +85 -0
- package/dist/kritzel-stencil/src/classes/tools/image-tool.class.js +83 -0
- package/dist/kritzel-stencil/src/classes/tools/line-tool.class.js +187 -0
- package/dist/kritzel-stencil/src/classes/tools/selection-tool.class.js +429 -0
- package/dist/kritzel-stencil/src/classes/tools/shape-tool.class.js +196 -0
- package/dist/kritzel-stencil/src/classes/tools/text-tool.class.js +100 -0
- package/dist/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.js +1343 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.js +46 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.js +312 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.js +60 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.js +105 -0
- package/dist/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +53 -0
- package/dist/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.js +137 -0
- package/dist/kritzel-stencil/src/configs/default-brush-tool.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-engine-config.js +63 -0
- package/dist/kritzel-stencil/src/configs/default-line-tool.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-sync.config.js +9 -0
- package/dist/kritzel-stencil/src/configs/default-text-tool.config.js +7 -0
- package/dist/kritzel-stencil/src/constants/color-palette.constants.js +37 -0
- package/dist/kritzel-stencil/src/constants/engine.constants.js +2 -0
- package/dist/kritzel-stencil/src/enums/event-button.enum.js +6 -0
- package/dist/kritzel-stencil/src/enums/handle-type.enum.js +7 -0
- package/dist/kritzel-stencil/src/enums/shape-type.enum.js +6 -0
- package/dist/kritzel-stencil/src/helpers/class.helper.js +5 -0
- package/dist/kritzel-stencil/src/helpers/color.helper.js +106 -0
- package/dist/kritzel-stencil/src/helpers/cursor.helper.js +57 -0
- package/dist/kritzel-stencil/src/helpers/devices.helper.js +28 -0
- package/dist/kritzel-stencil/src/helpers/event.helper.js +58 -0
- package/dist/kritzel-stencil/src/helpers/geometry.helper.js +149 -0
- package/dist/kritzel-stencil/src/helpers/keyboard.helper.js +51 -0
- package/dist/kritzel-stencil/src/helpers/math.helper.js +5 -0
- package/dist/kritzel-stencil/src/helpers/object.helper.js +11 -0
- package/dist/kritzel-stencil/src/helpers/theme.helper.js +69 -0
- package/dist/kritzel-stencil/src/index.js +41 -0
- package/dist/kritzel-stencil/src/interfaces/anchor.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/arrow-head.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/bounding-box.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/clonable.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/context-menu-item.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/debug-info.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/dialog.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/displayable-shortcut.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/engine-state.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/line-options.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/master-detail.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/menu-item.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/object.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/path-options.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/point.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/polygon.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/serializable.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/settings.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/shortcut.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/sync-config.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/sync-provider.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/theme.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/tool-config.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/tool.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/toolbar-control.interface.js +1 -0
- package/dist/kritzel-stencil/src/interfaces/undo-state.interface.js +1 -0
- package/dist/kritzel-stencil/src/themes/dark-theme.js +198 -0
- package/dist/kritzel-stencil/src/themes/light-theme.js +199 -0
- package/dist/kritzel-stencil/src/types/shortcut.type.js +1 -0
- package/dist/kritzel-stencil/src/types/state.types.js +1 -0
- package/dist/types/kritzel-react/lib/components/stencil-generated/components.d.ts +74 -0
- package/dist/types/kritzel-react/lib/index.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/classes/core/core.class.d.ts +101 -0
- package/dist/types/kritzel-stencil/src/classes/core/reviver.class.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/core/store.class.d.ts +53 -0
- package/dist/types/kritzel-stencil/src/classes/core/viewport.class.d.ts +48 -0
- package/dist/types/kritzel-stencil/src/classes/core/workspace.class.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/base.handler.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/context-menu.handler.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/hover.handler.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/key.handler.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/line-handle.handler.d.ts +34 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/move.handler.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/resize.handler.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/rotation.handler.d.ts +12 -0
- package/dist/types/kritzel-stencil/src/classes/handlers/selection.handler.d.ts +27 -0
- package/dist/types/kritzel-stencil/src/classes/managers/anchor.manager.d.ts +180 -0
- package/dist/types/kritzel-stencil/src/classes/managers/cursor.manager.d.ts +43 -0
- package/dist/types/kritzel-stencil/src/classes/managers/theme.manager.d.ts +56 -0
- package/dist/types/kritzel-stencil/src/classes/objects/base-object.class.d.ts +76 -0
- package/dist/types/kritzel-stencil/src/classes/objects/custom-element.class.d.ts +26 -0
- package/dist/types/kritzel-stencil/src/classes/objects/group.class.d.ts +97 -0
- package/dist/types/kritzel-stencil/src/classes/objects/image.class.d.ts +17 -0
- package/dist/types/kritzel-stencil/src/classes/objects/line.class.d.ts +101 -0
- package/dist/types/kritzel-stencil/src/classes/objects/path.class.d.ts +62 -0
- package/dist/types/kritzel-stencil/src/classes/objects/selection-box.class.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/classes/objects/selection-group.class.d.ts +67 -0
- package/dist/types/kritzel-stencil/src/classes/objects/shape.class.d.ts +124 -0
- package/dist/types/kritzel-stencil/src/classes/objects/text.class.d.ts +56 -0
- package/dist/types/kritzel-stencil/src/classes/providers/broadcast-sync-provider.class.d.ts +18 -0
- package/dist/types/kritzel-stencil/src/classes/providers/hocuspocus-sync-provider.class.d.ts +120 -0
- package/dist/types/kritzel-stencil/src/classes/providers/indexeddb-sync-provider.class.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/classes/providers/websocket-sync-provider.class.d.ts +52 -0
- package/dist/types/kritzel-stencil/src/classes/registries/icon-registry.class.d.ts +9 -0
- package/dist/types/kritzel-stencil/src/classes/registries/tool.registry.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/classes/structures/app-state-map.structure.d.ts +31 -0
- package/dist/types/kritzel-stencil/src/classes/structures/object-map.structure.d.ts +63 -0
- package/dist/types/kritzel-stencil/src/classes/structures/quadtree.structure.d.ts +36 -0
- package/dist/types/kritzel-stencil/src/classes/tools/base-tool.class.d.ts +20 -0
- package/dist/types/kritzel-stencil/src/classes/tools/brush-tool.class.d.ts +14 -0
- package/dist/types/kritzel-stencil/src/classes/tools/eraser-tool.class.d.ts +9 -0
- package/dist/types/kritzel-stencil/src/classes/tools/image-tool.class.d.ts +15 -0
- package/dist/types/kritzel-stencil/src/classes/tools/line-tool.class.d.ts +19 -0
- package/dist/types/kritzel-stencil/src/classes/tools/selection-tool.class.d.ts +54 -0
- package/dist/types/kritzel-stencil/src/classes/tools/shape-tool.class.d.ts +39 -0
- package/dist/types/kritzel-stencil/src/classes/tools/text-tool.class.d.ts +13 -0
- package/dist/types/kritzel-stencil/src/components/core/kritzel-engine/kritzel-engine.d.ts +111 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-brush-style/kritzel-brush-style.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-dropdown/kritzel-dropdown.d.ts +46 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-font-family/kritzel-font-family.d.ts +13 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +21 -0
- package/dist/types/kritzel-stencil/src/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +10 -0
- package/dist/types/kritzel-stencil/src/components/ui/kritzel-context-menu/kritzel-context-menu.d.ts +21 -0
- package/dist/types/kritzel-stencil/src/configs/default-brush-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-engine-config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-line-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/configs/default-sync.config.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/configs/default-text-tool.config.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/constants/color-palette.constants.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/constants/engine.constants.d.ts +2 -0
- package/dist/types/kritzel-stencil/src/enums/event-button.enum.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/enums/handle-type.enum.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/enums/shape-type.enum.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/helpers/class.helper.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/helpers/color.helper.d.ts +33 -0
- package/dist/types/kritzel-stencil/src/helpers/cursor.helper.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/helpers/devices.helper.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/helpers/event.helper.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/helpers/geometry.helper.d.ts +38 -0
- package/dist/types/kritzel-stencil/src/helpers/keyboard.helper.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/helpers/math.helper.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/helpers/object.helper.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/helpers/theme.helper.d.ts +41 -0
- package/dist/types/kritzel-stencil/src/index.d.ts +42 -0
- package/dist/types/kritzel-stencil/src/interfaces/anchor.interface.d.ts +137 -0
- package/dist/types/kritzel-stencil/src/interfaces/arrow-head.interface.d.ts +27 -0
- package/dist/types/kritzel-stencil/src/interfaces/bounding-box.interface.d.ts +8 -0
- package/dist/types/kritzel-stencil/src/interfaces/clonable.interface.d.ts +3 -0
- package/dist/types/kritzel-stencil/src/interfaces/context-menu-item.interface.d.ts +17 -0
- package/dist/types/kritzel-stencil/src/interfaces/debug-info.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/dialog.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/displayable-shortcut.interface.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/interfaces/engine-state.interface.d.ts +73 -0
- package/dist/types/kritzel-stencil/src/interfaces/line-options.interface.d.ts +23 -0
- package/dist/types/kritzel-stencil/src/interfaces/master-detail.interface.d.ts +14 -0
- package/dist/types/kritzel-stencil/src/interfaces/menu-item.interface.d.ts +24 -0
- package/dist/types/kritzel-stencil/src/interfaces/object.interface.d.ts +53 -0
- package/dist/types/kritzel-stencil/src/interfaces/path-options.interface.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/interfaces/point.interface.d.ts +4 -0
- package/dist/types/kritzel-stencil/src/interfaces/polygon.interface.d.ts +7 -0
- package/dist/types/kritzel-stencil/src/interfaces/serializable.interface.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/interfaces/settings.interface.d.ts +11 -0
- package/dist/types/kritzel-stencil/src/interfaces/shortcut.interface.d.ts +10 -0
- package/dist/types/kritzel-stencil/src/interfaces/sync-config.interface.d.ts +22 -0
- package/dist/types/kritzel-stencil/src/interfaces/sync-provider.interface.d.ts +29 -0
- package/dist/types/kritzel-stencil/src/interfaces/theme.interface.d.ts +330 -0
- package/dist/types/kritzel-stencil/src/interfaces/tool-config.interface.d.ts +26 -0
- package/dist/types/kritzel-stencil/src/interfaces/tool.interface.d.ts +7 -0
- package/dist/types/kritzel-stencil/src/interfaces/toolbar-control.interface.d.ts +58 -0
- package/dist/types/kritzel-stencil/src/interfaces/undo-state.interface.d.ts +6 -0
- package/dist/types/kritzel-stencil/src/themes/dark-theme.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/themes/light-theme.d.ts +5 -0
- package/dist/types/kritzel-stencil/src/types/shortcut.type.d.ts +1 -0
- package/dist/types/kritzel-stencil/src/types/state.types.d.ts +3 -0
- package/package.json +2 -2
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, Host, Prop, Event } from '@stencil/core';
|
|
8
|
+
let KritzelBrushStyle = class KritzelBrushStyle {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.type = 'pen';
|
|
11
|
+
this.brushOptions = [
|
|
12
|
+
{ value: 'pen', label: 'Pen' },
|
|
13
|
+
{ value: 'highlighter', label: 'Highlighter' },
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
handleDropdownValueChange(event) {
|
|
17
|
+
this.typeChange.emit(event.detail);
|
|
18
|
+
}
|
|
19
|
+
render() {
|
|
20
|
+
const dropdownOptions = this.brushOptions.map(option => ({
|
|
21
|
+
value: option.value,
|
|
22
|
+
label: option.label,
|
|
23
|
+
}));
|
|
24
|
+
return (React.createElement(Host, null,
|
|
25
|
+
React.createElement("kritzel-dropdown", { options: dropdownOptions, value: this.type, onValueChanged: event => this.handleDropdownValueChange(event) },
|
|
26
|
+
React.createElement("button", { class: "brush-style-button", slot: "prefix" },
|
|
27
|
+
React.createElement("kritzel-icon", { name: this.type, size: 16 })))));
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
Prop()
|
|
32
|
+
], KritzelBrushStyle.prototype, "type", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
Prop()
|
|
35
|
+
], KritzelBrushStyle.prototype, "brushOptions", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
Event()
|
|
38
|
+
], KritzelBrushStyle.prototype, "typeChange", void 0);
|
|
39
|
+
KritzelBrushStyle = __decorate([
|
|
40
|
+
Component({
|
|
41
|
+
tag: 'kritzel-brush-style',
|
|
42
|
+
styleUrl: 'kritzel-brush-style.css',
|
|
43
|
+
shadow: true,
|
|
44
|
+
})
|
|
45
|
+
], KritzelBrushStyle);
|
|
46
|
+
export { KritzelBrushStyle };
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, Host, Prop, State, Event, Watch, Element, Listen } from '@stencil/core';
|
|
8
|
+
let KritzelDropdown = class KritzelDropdown {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.options = [];
|
|
11
|
+
this.selectStyles = {};
|
|
12
|
+
this.hasSuffixContent = false;
|
|
13
|
+
this.hasPrefixContent = false;
|
|
14
|
+
this.isOpen = false;
|
|
15
|
+
this.focusedIndex = -1;
|
|
16
|
+
this.openDirection = 'down';
|
|
17
|
+
this.toggleMenu = () => {
|
|
18
|
+
if (this.isOpen) {
|
|
19
|
+
this.closeMenu();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.openMenu();
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
this.openMenu = () => {
|
|
26
|
+
this.calculateMenuDirection();
|
|
27
|
+
this.isOpen = true;
|
|
28
|
+
const currentIndex = this.options.findIndex(opt => opt.value === this.internalValue);
|
|
29
|
+
this.focusedIndex = currentIndex >= 0 ? currentIndex : 0;
|
|
30
|
+
// Focus the menu after it opens
|
|
31
|
+
requestAnimationFrame(() => {
|
|
32
|
+
var _a;
|
|
33
|
+
(_a = this.menuElement) === null || _a === void 0 ? void 0 : _a.focus();
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
this.calculateMenuDirection = () => {
|
|
37
|
+
if (!this.wrapperElement) {
|
|
38
|
+
this.openDirection = 'down';
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const wrapperRect = this.wrapperElement.getBoundingClientRect();
|
|
42
|
+
const viewportHeight = window.innerHeight;
|
|
43
|
+
const spaceBelow = viewportHeight - wrapperRect.bottom;
|
|
44
|
+
const spaceAbove = wrapperRect.top;
|
|
45
|
+
// Estimate menu height (max 240px or fewer based on options)
|
|
46
|
+
const estimatedOptionHeight = 36; // padding + content
|
|
47
|
+
const menuPadding = 8; // 4px top + 4px bottom
|
|
48
|
+
const estimatedMenuHeight = Math.min(240, this.options.length * estimatedOptionHeight + menuPadding);
|
|
49
|
+
// Prefer opening downward, but switch to upward if not enough space below
|
|
50
|
+
// and there's more space above
|
|
51
|
+
if (spaceBelow < estimatedMenuHeight && spaceAbove > spaceBelow) {
|
|
52
|
+
this.openDirection = 'up';
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.openDirection = 'down';
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
this.closeMenu = () => {
|
|
59
|
+
this.isOpen = false;
|
|
60
|
+
this.focusedIndex = -1;
|
|
61
|
+
// Note: openDirection is intentionally NOT reset here to allow the close animation
|
|
62
|
+
// to play in the same direction the menu was opened
|
|
63
|
+
};
|
|
64
|
+
this.selectOption = (option) => {
|
|
65
|
+
var _a;
|
|
66
|
+
if (this.internalValue !== option.value) {
|
|
67
|
+
this.internalValue = option.value;
|
|
68
|
+
this.valueChanged.emit(this.internalValue);
|
|
69
|
+
}
|
|
70
|
+
this.closeMenu();
|
|
71
|
+
(_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.focus();
|
|
72
|
+
};
|
|
73
|
+
this.handleTriggerKeyDown = (event) => {
|
|
74
|
+
switch (event.key) {
|
|
75
|
+
case 'Enter':
|
|
76
|
+
case ' ':
|
|
77
|
+
case 'ArrowDown':
|
|
78
|
+
case 'ArrowUp':
|
|
79
|
+
event.preventDefault();
|
|
80
|
+
this.openMenu();
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
this.handleMenuKeyDown = (event) => {
|
|
85
|
+
switch (event.key) {
|
|
86
|
+
case 'ArrowDown':
|
|
87
|
+
event.preventDefault();
|
|
88
|
+
this.focusedIndex = Math.min(this.focusedIndex + 1, this.options.length - 1);
|
|
89
|
+
this.scrollFocusedOptionIntoView();
|
|
90
|
+
break;
|
|
91
|
+
case 'ArrowUp':
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
this.focusedIndex = Math.max(this.focusedIndex - 1, 0);
|
|
94
|
+
this.scrollFocusedOptionIntoView();
|
|
95
|
+
break;
|
|
96
|
+
case 'Enter':
|
|
97
|
+
case ' ':
|
|
98
|
+
event.preventDefault();
|
|
99
|
+
if (this.focusedIndex >= 0 && this.focusedIndex < this.options.length) {
|
|
100
|
+
this.selectOption(this.options[this.focusedIndex]);
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case 'Home':
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
this.focusedIndex = 0;
|
|
106
|
+
this.scrollFocusedOptionIntoView();
|
|
107
|
+
break;
|
|
108
|
+
case 'End':
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
this.focusedIndex = this.options.length - 1;
|
|
111
|
+
this.scrollFocusedOptionIntoView();
|
|
112
|
+
break;
|
|
113
|
+
case 'Tab':
|
|
114
|
+
this.closeMenu();
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
this.scrollFocusedOptionIntoView = () => {
|
|
119
|
+
if (!this.menuElement || this.focusedIndex < 0) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Use requestAnimationFrame to ensure the DOM has updated with the new focused class
|
|
123
|
+
requestAnimationFrame(() => {
|
|
124
|
+
var _a;
|
|
125
|
+
const focusedOption = (_a = this.menuElement) === null || _a === void 0 ? void 0 : _a.querySelector('.dropdown-option.is-focused');
|
|
126
|
+
if (focusedOption) {
|
|
127
|
+
focusedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
this.handleOptionMouseEnter = (index) => {
|
|
132
|
+
this.focusedIndex = index;
|
|
133
|
+
};
|
|
134
|
+
this.evaluateSuffixContent = () => {
|
|
135
|
+
if (this.suffixSlotElement) {
|
|
136
|
+
const newHasContent = this.suffixSlotElement.assignedNodes({ flatten: true }).length > 0;
|
|
137
|
+
if (this.hasSuffixContent !== newHasContent) {
|
|
138
|
+
this.hasSuffixContent = newHasContent;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else if (this.hasSuffixContent !== false) {
|
|
142
|
+
this.hasSuffixContent = false;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
this.evaluatePrefixContent = () => {
|
|
146
|
+
if (this.prefixSlotElement) {
|
|
147
|
+
const newHasContent = this.prefixSlotElement.assignedNodes({ flatten: true }).length > 0;
|
|
148
|
+
if (this.hasPrefixContent !== newHasContent) {
|
|
149
|
+
this.hasPrefixContent = newHasContent;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else if (this.hasPrefixContent !== false) {
|
|
153
|
+
this.hasPrefixContent = false;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
optionsChanged() {
|
|
158
|
+
this.updateInternalValue(this.internalValue, true);
|
|
159
|
+
}
|
|
160
|
+
externalValueChanged(newValue) {
|
|
161
|
+
if (newValue !== this.internalValue) {
|
|
162
|
+
this.updateInternalValue(newValue, false);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
componentWillLoad() {
|
|
166
|
+
this.updateInternalValue(this.value, false);
|
|
167
|
+
this.evaluateSuffixContent();
|
|
168
|
+
this.evaluatePrefixContent();
|
|
169
|
+
}
|
|
170
|
+
disconnectedCallback() {
|
|
171
|
+
// Close menu when component is removed from DOM to prevent orphaned open dropdowns
|
|
172
|
+
if (this.isOpen) {
|
|
173
|
+
this.isOpen = false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
handleDocumentClick(event) {
|
|
177
|
+
if (this.isOpen && !this.el.contains(event.target)) {
|
|
178
|
+
this.closeMenu();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
handleDocumentKeydown(event) {
|
|
182
|
+
var _a;
|
|
183
|
+
if (this.isOpen && event.key === 'Escape') {
|
|
184
|
+
event.stopPropagation();
|
|
185
|
+
event.preventDefault();
|
|
186
|
+
this.closeMenu();
|
|
187
|
+
(_a = this.triggerElement) === null || _a === void 0 ? void 0 : _a.focus();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
updateInternalValue(proposedValue, emitChange) {
|
|
191
|
+
let finalValue = proposedValue;
|
|
192
|
+
if (this.options && this.options.length > 0) {
|
|
193
|
+
const isValidValue = this.options.some(opt => opt.value === finalValue);
|
|
194
|
+
if (!finalValue || !isValidValue) {
|
|
195
|
+
finalValue = this.options[0].value;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
finalValue = undefined;
|
|
200
|
+
}
|
|
201
|
+
if (this.internalValue !== finalValue) {
|
|
202
|
+
this.internalValue = finalValue;
|
|
203
|
+
if (emitChange || (proposedValue !== finalValue && proposedValue !== undefined)) {
|
|
204
|
+
this.valueChanged.emit(this.internalValue);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
getSelectedLabel() {
|
|
209
|
+
var _a;
|
|
210
|
+
const selectedOption = this.options.find(opt => opt.value === this.internalValue);
|
|
211
|
+
return (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _a !== void 0 ? _a : '';
|
|
212
|
+
}
|
|
213
|
+
getSelectedStyle() {
|
|
214
|
+
const selectedOption = this.options.find(opt => opt.value === this.internalValue);
|
|
215
|
+
return selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.style;
|
|
216
|
+
}
|
|
217
|
+
render() {
|
|
218
|
+
const triggerClasses = {
|
|
219
|
+
'dropdown-trigger': true,
|
|
220
|
+
'has-suffix-border': this.hasSuffixContent,
|
|
221
|
+
'has-prefix-border': this.hasPrefixContent,
|
|
222
|
+
'is-open': this.isOpen,
|
|
223
|
+
'open-up': this.openDirection === 'up',
|
|
224
|
+
};
|
|
225
|
+
const menuClasses = {
|
|
226
|
+
'dropdown-menu': true,
|
|
227
|
+
'is-open': this.isOpen,
|
|
228
|
+
'open-up': this.openDirection === 'up',
|
|
229
|
+
'open-down': this.openDirection === 'down',
|
|
230
|
+
};
|
|
231
|
+
return (React.createElement(Host, null,
|
|
232
|
+
React.createElement("div", { class: "dropdown-wrapper", ref: el => (this.wrapperElement = el) },
|
|
233
|
+
React.createElement("slot", { name: "prefix", ref: el => (this.prefixSlotElement = el), onSlotchange: this.evaluatePrefixContent }),
|
|
234
|
+
React.createElement("div", { class: "dropdown-container", style: { width: this.width } },
|
|
235
|
+
React.createElement("button", { type: "button", class: triggerClasses, style: Object.assign(Object.assign({}, this.selectStyles), this.getSelectedStyle()), onClick: this.toggleMenu, onKeyDown: this.handleTriggerKeyDown, "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', ref: el => (this.triggerElement = el) },
|
|
236
|
+
React.createElement("span", { class: "dropdown-trigger-label" }, this.getSelectedLabel()),
|
|
237
|
+
React.createElement("span", { class: "dropdown-trigger-arrow", "aria-hidden": "true" },
|
|
238
|
+
React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" },
|
|
239
|
+
React.createElement("polyline", { points: "6 9 12 15 18 9" }))))),
|
|
240
|
+
React.createElement("slot", { name: "suffix", ref: el => (this.suffixSlotElement = el), onSlotchange: this.evaluateSuffixContent }),
|
|
241
|
+
React.createElement("ul", { class: menuClasses, role: "listbox", tabindex: "-1", onKeyDown: this.handleMenuKeyDown, ref: el => (this.menuElement = el) }, this.options.map((option, index) => {
|
|
242
|
+
const isSelected = option.value === this.internalValue;
|
|
243
|
+
const isFocused = index === this.focusedIndex;
|
|
244
|
+
const optionClasses = {
|
|
245
|
+
'dropdown-option': true,
|
|
246
|
+
'is-selected': isSelected,
|
|
247
|
+
'is-focused': isFocused,
|
|
248
|
+
};
|
|
249
|
+
return (React.createElement("li", { class: optionClasses, role: "option", "aria-selected": isSelected ? 'true' : 'false', style: option.style, onClick: () => this.selectOption(option), onMouseEnter: () => this.handleOptionMouseEnter(index) },
|
|
250
|
+
option.label,
|
|
251
|
+
isSelected && (React.createElement("span", { class: "dropdown-option-check", "aria-hidden": "true" },
|
|
252
|
+
React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" },
|
|
253
|
+
React.createElement("polyline", { points: "20 6 9 17 4 12" }))))));
|
|
254
|
+
})))));
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
__decorate([
|
|
258
|
+
Element()
|
|
259
|
+
], KritzelDropdown.prototype, "el", void 0);
|
|
260
|
+
__decorate([
|
|
261
|
+
Prop()
|
|
262
|
+
], KritzelDropdown.prototype, "options", void 0);
|
|
263
|
+
__decorate([
|
|
264
|
+
Watch('options')
|
|
265
|
+
], KritzelDropdown.prototype, "optionsChanged", null);
|
|
266
|
+
__decorate([
|
|
267
|
+
Prop()
|
|
268
|
+
], KritzelDropdown.prototype, "value", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
Watch('value')
|
|
271
|
+
], KritzelDropdown.prototype, "externalValueChanged", null);
|
|
272
|
+
__decorate([
|
|
273
|
+
Prop()
|
|
274
|
+
], KritzelDropdown.prototype, "width", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
Prop()
|
|
277
|
+
], KritzelDropdown.prototype, "selectStyles", void 0);
|
|
278
|
+
__decorate([
|
|
279
|
+
State()
|
|
280
|
+
], KritzelDropdown.prototype, "internalValue", void 0);
|
|
281
|
+
__decorate([
|
|
282
|
+
State()
|
|
283
|
+
], KritzelDropdown.prototype, "hasSuffixContent", void 0);
|
|
284
|
+
__decorate([
|
|
285
|
+
State()
|
|
286
|
+
], KritzelDropdown.prototype, "hasPrefixContent", void 0);
|
|
287
|
+
__decorate([
|
|
288
|
+
State()
|
|
289
|
+
], KritzelDropdown.prototype, "isOpen", void 0);
|
|
290
|
+
__decorate([
|
|
291
|
+
State()
|
|
292
|
+
], KritzelDropdown.prototype, "focusedIndex", void 0);
|
|
293
|
+
__decorate([
|
|
294
|
+
State()
|
|
295
|
+
], KritzelDropdown.prototype, "openDirection", void 0);
|
|
296
|
+
__decorate([
|
|
297
|
+
Event()
|
|
298
|
+
], KritzelDropdown.prototype, "valueChanged", void 0);
|
|
299
|
+
__decorate([
|
|
300
|
+
Listen('click', { target: 'document' })
|
|
301
|
+
], KritzelDropdown.prototype, "handleDocumentClick", null);
|
|
302
|
+
__decorate([
|
|
303
|
+
Listen('keydown', { target: 'document' })
|
|
304
|
+
], KritzelDropdown.prototype, "handleDocumentKeydown", null);
|
|
305
|
+
KritzelDropdown = __decorate([
|
|
306
|
+
Component({
|
|
307
|
+
tag: 'kritzel-dropdown',
|
|
308
|
+
styleUrl: 'kritzel-dropdown.css',
|
|
309
|
+
shadow: true,
|
|
310
|
+
})
|
|
311
|
+
], KritzelDropdown);
|
|
312
|
+
export { KritzelDropdown };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, Host, Prop, Event } from '@stencil/core';
|
|
8
|
+
let KritzelFontFamily = class KritzelFontFamily {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.fontOptions = [
|
|
11
|
+
{ value: 'arial', label: 'Arial' },
|
|
12
|
+
{ value: 'verdana', label: 'Verdana' },
|
|
13
|
+
{ value: 'helvetica', label: 'Helvetica' },
|
|
14
|
+
{ value: 'tahoma', label: 'Tahoma' },
|
|
15
|
+
{ value: 'trebuchet ms', label: 'Trebuchet MS' },
|
|
16
|
+
{ value: 'times new roman', label: 'Times New Roman' },
|
|
17
|
+
{ value: 'georgia', label: 'Georgia' },
|
|
18
|
+
{ value: 'garamond', label: 'Garamond' },
|
|
19
|
+
{ value: 'courier new', label: 'Courier New' },
|
|
20
|
+
{ value: 'brush script mt', label: 'Brush Script MT' },
|
|
21
|
+
];
|
|
22
|
+
this.handleDropdownValueChange = (event) => {
|
|
23
|
+
this.fontFamilyChange.emit(event.detail);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
componentWillLoad() {
|
|
27
|
+
if (this.fontOptions && this.fontOptions.length > 0) {
|
|
28
|
+
const isValidCurrentFont = this.fontOptions.some(opt => opt.value === this.selectedFontFamily);
|
|
29
|
+
if (!this.selectedFontFamily || !isValidCurrentFont) {
|
|
30
|
+
this.selectedFontFamily = this.fontOptions[0].value;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
const dropdownOptions = this.fontOptions.map(option => ({
|
|
36
|
+
value: option.value,
|
|
37
|
+
label: option.label,
|
|
38
|
+
style: { fontFamily: option.value },
|
|
39
|
+
}));
|
|
40
|
+
return (React.createElement(Host, null,
|
|
41
|
+
React.createElement("kritzel-dropdown", { options: dropdownOptions, value: this.selectedFontFamily, onValueChanged: this.handleDropdownValueChange, selectStyles: { fontFamily: this.selectedFontFamily } })));
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
__decorate([
|
|
45
|
+
Prop()
|
|
46
|
+
], KritzelFontFamily.prototype, "fontOptions", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
Prop({ mutable: true })
|
|
49
|
+
], KritzelFontFamily.prototype, "selectedFontFamily", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Event()
|
|
52
|
+
], KritzelFontFamily.prototype, "fontFamilyChange", void 0);
|
|
53
|
+
KritzelFontFamily = __decorate([
|
|
54
|
+
Component({
|
|
55
|
+
tag: 'kritzel-font-family',
|
|
56
|
+
styleUrl: 'kritzel-font-family.css',
|
|
57
|
+
shadow: true,
|
|
58
|
+
})
|
|
59
|
+
], KritzelFontFamily);
|
|
60
|
+
export { KritzelFontFamily };
|
package/dist/kritzel-stencil/src/components/shared/kritzel-line-endings/kritzel-line-endings.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, Host, Prop, Event } from '@stencil/core';
|
|
8
|
+
let KritzelLineEndings = class KritzelLineEndings {
|
|
9
|
+
constructor() {
|
|
10
|
+
/** Available ending styles */
|
|
11
|
+
this.styles = ['none', 'triangle'];
|
|
12
|
+
}
|
|
13
|
+
getStartEnding() {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
if (!((_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.enabled))
|
|
16
|
+
return 'none';
|
|
17
|
+
return (_c = this.value.start.style) !== null && _c !== void 0 ? _c : 'triangle';
|
|
18
|
+
}
|
|
19
|
+
getEndEnding() {
|
|
20
|
+
var _a, _b, _c;
|
|
21
|
+
if (!((_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.end) === null || _b === void 0 ? void 0 : _b.enabled))
|
|
22
|
+
return 'none';
|
|
23
|
+
return (_c = this.value.end.style) !== null && _c !== void 0 ? _c : 'triangle';
|
|
24
|
+
}
|
|
25
|
+
handleStartChange(type) {
|
|
26
|
+
const newValue = Object.assign(Object.assign({}, this.value), { start: type === 'none'
|
|
27
|
+
? { enabled: false }
|
|
28
|
+
: { enabled: true, style: type } });
|
|
29
|
+
this.value = newValue;
|
|
30
|
+
this.valueChange.emit(newValue);
|
|
31
|
+
}
|
|
32
|
+
handleEndChange(type) {
|
|
33
|
+
const newValue = Object.assign(Object.assign({}, this.value), { end: type === 'none'
|
|
34
|
+
? { enabled: false }
|
|
35
|
+
: { enabled: true, style: type } });
|
|
36
|
+
this.value = newValue;
|
|
37
|
+
this.valueChange.emit(newValue);
|
|
38
|
+
}
|
|
39
|
+
getEndingPath(type) {
|
|
40
|
+
switch (type) {
|
|
41
|
+
case 'triangle':
|
|
42
|
+
return 'M 0 0 L 10 5 L 0 10 Z';
|
|
43
|
+
case 'open':
|
|
44
|
+
return 'M 0 0 L 10 5 L 0 10';
|
|
45
|
+
case 'diamond':
|
|
46
|
+
return 'M 0 5 L 5 0 L 10 5 L 5 10 Z';
|
|
47
|
+
case 'circle':
|
|
48
|
+
return 'M 10 5 A 5 5 0 1 1 0 5 A 5 5 0 1 1 10 5 Z';
|
|
49
|
+
default:
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
renderEndingIcon(type, isStart) {
|
|
54
|
+
const color = 'var(--kritzel-global-text-primary)';
|
|
55
|
+
if (type === 'none') {
|
|
56
|
+
return (React.createElement("svg", { viewBox: "0 0 24 12", class: "ending-icon" },
|
|
57
|
+
React.createElement("line", { x1: isStart ? 4 : 2, y1: "6", x2: isStart ? 22 : 20, y2: "6", stroke: color, "stroke-width": "2", "stroke-linecap": "round" })));
|
|
58
|
+
}
|
|
59
|
+
const path = this.getEndingPath(type);
|
|
60
|
+
const isOpenStyle = type === 'open';
|
|
61
|
+
return (React.createElement("svg", { viewBox: "0 0 24 12", class: "ending-icon" }, isStart ? (
|
|
62
|
+
// Start arrow points left
|
|
63
|
+
React.createElement("g", null,
|
|
64
|
+
React.createElement("line", { x1: "12", y1: "6", x2: "22", y2: "6", stroke: color, "stroke-width": "2", "stroke-linecap": "round" }),
|
|
65
|
+
React.createElement("g", { transform: "translate(2, 1) scale(1, 1)" },
|
|
66
|
+
React.createElement("path", { d: path, fill: isOpenStyle ? 'none' : color, stroke: color, "stroke-width": isOpenStyle ? 2 : 0, "stroke-linecap": "round", "stroke-linejoin": "round", transform: "scale(-1, 1) translate(-10, 0)" })))) : (
|
|
67
|
+
// End arrow points right
|
|
68
|
+
React.createElement("g", null,
|
|
69
|
+
React.createElement("line", { x1: "2", y1: "6", x2: "12", y2: "6", stroke: color, "stroke-width": "2", "stroke-linecap": "round" }),
|
|
70
|
+
React.createElement("g", { transform: "translate(12, 1)" },
|
|
71
|
+
React.createElement("path", { d: path, fill: isOpenStyle ? 'none' : color, stroke: color, "stroke-width": isOpenStyle ? 2 : 0, "stroke-linecap": "round", "stroke-linejoin": "round" }))))));
|
|
72
|
+
}
|
|
73
|
+
render() {
|
|
74
|
+
const startEnding = this.getStartEnding();
|
|
75
|
+
const endEnding = this.getEndEnding();
|
|
76
|
+
return (React.createElement(Host, null,
|
|
77
|
+
React.createElement("div", { class: "endings-section" },
|
|
78
|
+
React.createElement("div", { class: "endings-row" }, this.styles.map(type => (React.createElement("button", { class: {
|
|
79
|
+
'ending-option': true,
|
|
80
|
+
'selected': startEnding === type,
|
|
81
|
+
}, onClick: () => this.handleStartChange(type), title: type === 'none' ? 'No start arrow' : `${type} start arrow` }, this.renderEndingIcon(type, true)))))),
|
|
82
|
+
React.createElement("div", { class: "endings-section" },
|
|
83
|
+
React.createElement("div", { class: "endings-row" }, this.styles.map(type => (React.createElement("button", { class: {
|
|
84
|
+
'ending-option': true,
|
|
85
|
+
'selected': endEnding === type,
|
|
86
|
+
}, onClick: () => this.handleEndChange(type), title: type === 'none' ? 'No end arrow' : `${type} end arrow` }, this.renderEndingIcon(type, false))))))));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
__decorate([
|
|
90
|
+
Prop()
|
|
91
|
+
], KritzelLineEndings.prototype, "styles", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
Prop({ mutable: true })
|
|
94
|
+
], KritzelLineEndings.prototype, "value", void 0);
|
|
95
|
+
__decorate([
|
|
96
|
+
Event()
|
|
97
|
+
], KritzelLineEndings.prototype, "valueChange", void 0);
|
|
98
|
+
KritzelLineEndings = __decorate([
|
|
99
|
+
Component({
|
|
100
|
+
tag: 'kritzel-line-endings',
|
|
101
|
+
styleUrl: 'kritzel-line-endings.css',
|
|
102
|
+
shadow: true,
|
|
103
|
+
})
|
|
104
|
+
], KritzelLineEndings);
|
|
105
|
+
export { KritzelLineEndings };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component, Host, Prop, Event } from '@stencil/core';
|
|
8
|
+
let KritzelShapeFill = class KritzelShapeFill {
|
|
9
|
+
constructor() {
|
|
10
|
+
/** Current fill type */
|
|
11
|
+
this.value = 'transparent';
|
|
12
|
+
}
|
|
13
|
+
handleFillChange(type) {
|
|
14
|
+
this.value = type;
|
|
15
|
+
this.valueChange.emit(type);
|
|
16
|
+
}
|
|
17
|
+
renderFillIcon(type) {
|
|
18
|
+
const strokeColor = 'var(--kritzel-global-text-primary)';
|
|
19
|
+
if (type === 'transparent') {
|
|
20
|
+
return (React.createElement("svg", { viewBox: "0 0 24 24", class: "fill-icon" },
|
|
21
|
+
React.createElement("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: "none", stroke: strokeColor, "stroke-width": "2" })));
|
|
22
|
+
}
|
|
23
|
+
// Filled
|
|
24
|
+
return (React.createElement("svg", { viewBox: "0 0 24 24", class: "fill-icon" },
|
|
25
|
+
React.createElement("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2", fill: strokeColor, stroke: strokeColor, "stroke-width": "2" })));
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
return (React.createElement(Host, null,
|
|
29
|
+
React.createElement("div", { class: "fill-row" },
|
|
30
|
+
React.createElement("button", { class: {
|
|
31
|
+
'fill-option': true,
|
|
32
|
+
'selected': this.value === 'transparent',
|
|
33
|
+
}, onClick: () => this.handleFillChange('transparent'), title: "Transparent background" }, this.renderFillIcon('transparent')),
|
|
34
|
+
React.createElement("button", { class: {
|
|
35
|
+
'fill-option': true,
|
|
36
|
+
'selected': this.value === 'filled',
|
|
37
|
+
}, onClick: () => this.handleFillChange('filled'), title: "Filled background" }, this.renderFillIcon('filled')))));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
__decorate([
|
|
41
|
+
Prop({ mutable: true })
|
|
42
|
+
], KritzelShapeFill.prototype, "value", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
Event()
|
|
45
|
+
], KritzelShapeFill.prototype, "valueChange", void 0);
|
|
46
|
+
KritzelShapeFill = __decorate([
|
|
47
|
+
Component({
|
|
48
|
+
tag: 'kritzel-shape-fill',
|
|
49
|
+
styleUrl: 'kritzel-shape-fill.css',
|
|
50
|
+
shadow: true,
|
|
51
|
+
})
|
|
52
|
+
], KritzelShapeFill);
|
|
53
|
+
export { KritzelShapeFill };
|