@codingfactory/mediables-vue 2.11.0 → 2.13.0

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 (64) hide show
  1. package/dist/{PixiFrameExporter-apC6SqIv.cjs → PixiFrameExporter-BnAievFi.cjs} +2 -2
  2. package/dist/{PixiFrameExporter-apC6SqIv.cjs.map → PixiFrameExporter-BnAievFi.cjs.map} +1 -1
  3. package/dist/{PixiFrameExporter-D9swI3PO.js → PixiFrameExporter-DwbBy1Iu.js} +2 -2
  4. package/dist/{PixiFrameExporter-D9swI3PO.js.map → PixiFrameExporter-DwbBy1Iu.js.map} +1 -1
  5. package/dist/components/ImageEditorModal.vue.d.ts +9 -2
  6. package/dist/composables/useImageEditorModal.d.ts +1262 -86
  7. package/dist/composables/useRadialMenu.d.ts +1 -1
  8. package/dist/editor-BoDU3YXD.js +10862 -0
  9. package/dist/editor-BoDU3YXD.js.map +1 -0
  10. package/dist/editor-D-cJRASf.cjs +2 -0
  11. package/dist/editor-D-cJRASf.cjs.map +1 -0
  12. package/dist/{index-BFYtEc-Y.js → index-BGC4rPDc.js} +16370 -14565
  13. package/dist/index-BGC4rPDc.js.map +1 -0
  14. package/dist/index-CljyFIEv.cjs +357 -0
  15. package/dist/index-CljyFIEv.cjs.map +1 -0
  16. package/dist/mediables-vanilla.cjs +1 -1
  17. package/dist/mediables-vanilla.mjs +1 -1
  18. package/dist/mediables-vue.cjs +1 -1
  19. package/dist/mediables-vue.mjs +2 -2
  20. package/dist/style.css +1 -1
  21. package/dist/types/editor.d.ts +212 -27
  22. package/dist/vanilla-editor/VanillaImageEditor.d.ts +18 -0
  23. package/dist/vanilla-editor/VanillaImageEditorV2.d.ts +16 -0
  24. package/dist/vanilla-editor/core/EventEmitter.d.ts +12 -0
  25. package/dist/vanilla-editor/core/State.d.ts +98 -0
  26. package/dist/vanilla-editor/filters/categories.d.ts +69 -0
  27. package/dist/vanilla-editor/icons/icons.d.ts +42 -0
  28. package/dist/vanilla-editor/index.d.ts +342 -0
  29. package/dist/vanilla-editor/presets/index.d.ts +114 -0
  30. package/dist/vanilla-editor/renderer/CropManager.d.ts +140 -0
  31. package/dist/vanilla-editor/renderer/FilterManager.d.ts +132 -0
  32. package/dist/vanilla-editor/renderer/PixiRenderer.d.ts +274 -0
  33. package/dist/vanilla-editor/renderer/RemoveBgManager.d.ts +108 -0
  34. package/dist/vanilla-editor/styles/editor-v2.css +1366 -0
  35. package/dist/vanilla-editor/styles/editor.css +1403 -0
  36. package/dist/vanilla-editor/ui/ActiveFiltersPanel.d.ts +93 -0
  37. package/dist/vanilla-editor/ui/CategoryCarousel.d.ts +66 -0
  38. package/dist/vanilla-editor/ui/CropControls.d.ts +65 -0
  39. package/dist/vanilla-editor/ui/FilterAdjustments.d.ts +93 -0
  40. package/dist/vanilla-editor/ui/FilterCarousel.d.ts +74 -0
  41. package/dist/vanilla-editor/ui/MobileActiveFilters.d.ts +21 -0
  42. package/dist/vanilla-editor/ui/MobileFilterDrawer.d.ts +79 -0
  43. package/dist/vanilla-editor/ui/Toolbar.d.ts +35 -0
  44. package/dist/vanilla-editor/ui/UIBuilder.d.ts +87 -0
  45. package/dist/vanilla-editor/ui-v2/ActiveFiltersStack.d.ts +16 -0
  46. package/dist/vanilla-editor/ui-v2/BackgroundPanel.d.ts +16 -0
  47. package/dist/vanilla-editor/ui-v2/BottomDrawer.d.ts +55 -0
  48. package/dist/vanilla-editor/ui-v2/CategoryTabs.d.ts +21 -0
  49. package/dist/vanilla-editor/ui-v2/FilterControlsView.d.ts +16 -0
  50. package/dist/vanilla-editor/ui-v2/FilterListView.d.ts +32 -0
  51. package/dist/vanilla-editor/ui-v2/LayerStackPanel.d.ts +30 -0
  52. package/dist/vanilla-editor/ui-v2/MobileActiveChips.d.ts +23 -0
  53. package/dist/vanilla-editor/ui-v2/MobileNavigation.d.ts +51 -0
  54. package/dist/vanilla-editor/ui-v2/SplitPanelLayout.d.ts +70 -0
  55. package/dist/vanilla-editor/ui-v2/TextPanel.d.ts +58 -0
  56. package/dist/vanilla-exports.d.ts +9 -0
  57. package/package.json +3 -2
  58. package/dist/editor-BTwIhrcA.cjs +0 -2
  59. package/dist/editor-BTwIhrcA.cjs.map +0 -1
  60. package/dist/editor-CYj5y5bp.js +0 -8893
  61. package/dist/editor-CYj5y5bp.js.map +0 -1
  62. package/dist/index-BFYtEc-Y.js.map +0 -1
  63. package/dist/index-CAPdRZVb.cjs +0 -357
  64. package/dist/index-CAPdRZVb.cjs.map +0 -1
@@ -0,0 +1,55 @@
1
+ export class BottomDrawer {
2
+ constructor(options?: {});
3
+ _onSnapChange: any;
4
+ _ariaLabel: any;
5
+ element: HTMLElement | null;
6
+ _handle: HTMLElement | null;
7
+ _body: HTMLElement | null;
8
+ _headerSlot: HTMLElement | null;
9
+ _snap: string;
10
+ _dragging: boolean;
11
+ _dragStartY: number;
12
+ _dragStartHeight: number;
13
+ _dragPointerId: any;
14
+ _containerHeight: number;
15
+ /**
16
+ * Build the drawer DOM. Returns the root element. The caller owns mounting.
17
+ *
18
+ * @param {Object} slots
19
+ * @param {HTMLElement} [slots.header] - Optional content mounted between the handle and body
20
+ * @param {HTMLElement} slots.body - Drawer body content (scrollable)
21
+ */
22
+ build({ header, body }?: {
23
+ header?: HTMLElement | undefined;
24
+ body: HTMLElement;
25
+ }): HTMLElement;
26
+ _wasDragging: boolean | undefined;
27
+ /**
28
+ * Notify the drawer that its container height changed (call when the
29
+ * viewport resizes or the parent flex container updates). Updates the
30
+ * drawer height to match the current snap point.
31
+ */
32
+ updateContainerHeight(height: any): void;
33
+ /**
34
+ * Programmatically move the drawer to a snap point. Animates by default.
35
+ *
36
+ * @param {'collapsed'|'half'|'full'} snap
37
+ */
38
+ snapTo(snap: "collapsed" | "half" | "full", options?: {}): void;
39
+ /** Current snap point id. */
40
+ get snap(): string;
41
+ /** Replace the body content. */
42
+ setBodyContent(content: any): void;
43
+ /** Replace the header content. */
44
+ setHeaderContent(content: any): void;
45
+ _onPointerDown(e: any): void;
46
+ _onPointerMove(e: any): void;
47
+ _onPointerEnd(e: any): void;
48
+ _cycleSnap(): void;
49
+ _heightForSnap(snap: any): number;
50
+ _nearestSnap(currentHeight: any): string;
51
+ _applySnap(snap: any, { animate }: {
52
+ animate: any;
53
+ }): void;
54
+ destroy(): void;
55
+ }
@@ -0,0 +1,21 @@
1
+ export class CategoryTabs {
2
+ constructor(state: any, editor: any);
3
+ state: any;
4
+ editor: any;
5
+ element: HTMLElement | null;
6
+ _tabs: Map<any, any>;
7
+ _unsubscribers: any[];
8
+ _onSelect: Function | null;
9
+ /**
10
+ * @param {Object} options
11
+ * @param {Function} options.onSelect - Called with the selected UI category id
12
+ * @returns {HTMLElement}
13
+ */
14
+ render({ onSelect }?: {
15
+ onSelect: Function;
16
+ }): HTMLElement;
17
+ _isSelected(categoryId: any): boolean;
18
+ _selectCategory(categoryId: any): void;
19
+ _refreshActive(): void;
20
+ destroy(): void;
21
+ }
@@ -0,0 +1,16 @@
1
+ export class FilterControlsView {
2
+ constructor(state: any, filterManager: any);
3
+ state: any;
4
+ filterManager: any;
5
+ element: HTMLElement | null;
6
+ _unsubscribers: any[];
7
+ _onChange: any;
8
+ _onReset: any;
9
+ _onAction: any;
10
+ render({ onChange, onReset, onAction }?: {}): HTMLElement;
11
+ _renderControls(): void;
12
+ _createControl(filterId: any, ctl: any, value: any, layerId?: null): HTMLElement | null;
13
+ _normalizeControlType(type: any): any;
14
+ _handleReset(filterId: any, layerId?: null): void;
15
+ destroy(): void;
16
+ }
@@ -0,0 +1,32 @@
1
+ export class FilterListView {
2
+ constructor(state: any, filterManager: any);
3
+ state: any;
4
+ filterManager: any;
5
+ element: HTMLElement | null;
6
+ _unsubscribers: any[];
7
+ _onToggle: Function | null;
8
+ _onSelect: Function | null;
9
+ /**
10
+ * @param {Object} options
11
+ * @param {Function} options.onToggle - (filterId, enabled) => void
12
+ * @param {Function} options.onSelect - (filterId) => void
13
+ * @returns {HTMLElement}
14
+ */
15
+ render({ onToggle, onSelect }?: {
16
+ onToggle: Function;
17
+ onSelect: Function;
18
+ }): HTMLElement;
19
+ _renderRows(): void;
20
+ _renderRow(filter: any, isActive: any, isSelected: any, layerId?: null): HTMLElement;
21
+ /**
22
+ * Return a short status summary for the filter — shown under its name
23
+ * when the filter is active. Prefers the filter's own summary formatter
24
+ * if it exposes one, otherwise falls back to a description or a terse
25
+ * rendering of its current values.
26
+ */
27
+ _buildSummary(filter: any, isActive: any): any;
28
+ _formatControlValue(ctl: any, val: any): any;
29
+ /** Refresh just the summary text of rows without rebuilding the list. */
30
+ _refreshSummaries(): void;
31
+ destroy(): void;
32
+ }
@@ -0,0 +1,30 @@
1
+ export class LayerStackPanel {
2
+ constructor(state: any, editor: any);
3
+ state: any;
4
+ editor: any;
5
+ element: HTMLElement | null;
6
+ _listEl: HTMLElement | null;
7
+ _unsubscribers: any[];
8
+ render(): HTMLElement;
9
+ _layers(): any[];
10
+ _renderRows(): void;
11
+ _row(layer: any, index: any, count: any): HTMLElement;
12
+ _thumbnail(layer: any): HTMLElement;
13
+ _button({ testId, label, ...attrs }: {
14
+ [x: string]: any;
15
+ testId: any;
16
+ label: any;
17
+ }, child: any): HTMLElement;
18
+ _iconButton({ testId, label, icon, disabled, onClick }: {
19
+ testId: any;
20
+ label: any;
21
+ icon: any;
22
+ disabled?: boolean | undefined;
23
+ onClick: any;
24
+ }): HTMLElement;
25
+ _renameLayer(layerId: any, currentName: any): void;
26
+ _runAction(action: any): void;
27
+ _layerName(layer: any): any;
28
+ _layerTypeLabel(layer: any): "Background" | "Subject" | "Text" | "Image";
29
+ destroy(): void;
30
+ }
@@ -0,0 +1,23 @@
1
+ export class MobileActiveChips {
2
+ constructor(state: any, filterManager: any);
3
+ state: any;
4
+ filterManager: any;
5
+ element: HTMLElement | null;
6
+ _onSelect: Function | null;
7
+ _onRemove: Function | null;
8
+ _unsubscribers: any[];
9
+ /**
10
+ * @param {Object} options
11
+ * @param {Function} options.onSelect - (filterId) => void
12
+ * @param {Function} options.onRemove - (filterId) => void
13
+ */
14
+ render({ onSelect, onRemove }?: {
15
+ onSelect: Function;
16
+ onRemove: Function;
17
+ }): HTMLElement;
18
+ _renderChips(): void;
19
+ _renderChip(def: any, isSelected: any, layerId?: null): HTMLElement;
20
+ _activeFilterLayerId(): any;
21
+ _refreshSelection(): void;
22
+ destroy(): void;
23
+ }
@@ -0,0 +1,51 @@
1
+ export class MobileNavigation {
2
+ constructor(state: any, filterManager: any, editor: any);
3
+ state: any;
4
+ filterManager: any;
5
+ editor: any;
6
+ element: HTMLElement | null;
7
+ _headerEl: HTMLElement | null;
8
+ _bodyEl: HTMLElement | null;
9
+ _view: string;
10
+ _onNavigate: Function | null;
11
+ _callbacks: {
12
+ onViewChange?: Function | undefined;
13
+ } | null;
14
+ _unsubscribers: any[];
15
+ _categoryTabs: CategoryTabs | null;
16
+ _filterListView: FilterListView | null;
17
+ _filterControlsView: FilterControlsView | null;
18
+ _backgroundPanel: BackgroundPanel | null;
19
+ _layerStackPanel: LayerStackPanel | null;
20
+ _textPanel: TextPanel | null;
21
+ /**
22
+ * Build the mobile navigator DOM.
23
+ *
24
+ * @param {Object} callbacks - Same shape as SplitPanelLayout
25
+ * @param {Function} [callbacks.onViewChange] - (view) => void, fired after navigation
26
+ */
27
+ build(callbacks: {
28
+ onViewChange?: Function | undefined;
29
+ }): HTMLElement;
30
+ _buildViews(): void;
31
+ _categoryTabsEl: HTMLElement | undefined;
32
+ _filterListEl: HTMLElement | undefined;
33
+ _filterControlsEl: HTMLElement | undefined;
34
+ _backgroundPanelEl: HTMLElement | undefined;
35
+ _layerStackPanelEl: HTMLElement | undefined;
36
+ _textPanelEl: HTMLElement | undefined;
37
+ navigateTo(view: any): void;
38
+ _renderHeader(): void;
39
+ _activeFilterLayerId(): any;
40
+ _titleForView(view: any): any;
41
+ _categoryLabel(categoryId: any): string | null;
42
+ _goBack(): void;
43
+ get currentView(): string;
44
+ destroy(): void;
45
+ }
46
+ import { CategoryTabs } from './CategoryTabs.js';
47
+ import { FilterListView } from './FilterListView.js';
48
+ import { FilterControlsView } from './FilterControlsView.js';
49
+ import { BackgroundPanel } from './BackgroundPanel.js';
50
+ import { LayerStackPanel } from './LayerStackPanel.js';
51
+ import { TextPanel } from './TextPanel.js';
@@ -0,0 +1,70 @@
1
+ export class SplitPanelLayout {
2
+ constructor(state: any, filterManager: any, editor: any);
3
+ state: any;
4
+ filterManager: any;
5
+ editor: any;
6
+ root: HTMLElement | null;
7
+ canvasSection: HTMLElement | null;
8
+ canvasContainer: HTMLElement | null;
9
+ cropOverlay: HTMLElement | null;
10
+ _callbacks: any;
11
+ _isMobile: boolean;
12
+ _panel: HTMLElement | null;
13
+ _categoryTabs: CategoryTabs | null;
14
+ _filterListView: FilterListView | null;
15
+ _filterControlsView: FilterControlsView | null;
16
+ _activeStack: ActiveFiltersStack | null;
17
+ _backgroundPanel: BackgroundPanel | null;
18
+ _layerStackPanel: LayerStackPanel | null;
19
+ _textPanel: TextPanel | null;
20
+ _desktopBackgroundSection: HTMLElement | null;
21
+ _desktopLayerSection: HTMLElement | null;
22
+ _desktopTextSection: HTMLElement | null;
23
+ _desktopFilterListSection: HTMLElement | null;
24
+ _desktopCropWrapper: HTMLElement | null;
25
+ _mobileChips: MobileActiveChips | null;
26
+ _mobileDrawer: BottomDrawer | null;
27
+ _mobileNav: MobileNavigation | null;
28
+ _mobileCropWrapper: HTMLElement | null;
29
+ _cropControlsEl: any;
30
+ _unsubscribers: any[];
31
+ _mql: MediaQueryList | null;
32
+ _mqlHandler: ((event: any) => void) | null;
33
+ _resizeObserver: ResizeObserver | null;
34
+ /**
35
+ * Build the DOM and child components. The initial shell (desktop vs mobile)
36
+ * is chosen from the current viewport; subsequent changes swap shells.
37
+ *
38
+ * @returns {{ root: HTMLElement, canvasContainer: HTMLElement, cropOverlay: HTMLElement }}
39
+ */
40
+ build(callbacks: any): {
41
+ root: HTMLElement;
42
+ canvasContainer: HTMLElement;
43
+ cropOverlay: HTMLElement;
44
+ };
45
+ /**
46
+ * Accept the externally-constructed crop controls element.
47
+ * The layout re-parents it into the active shell's crop slot.
48
+ */
49
+ mountCropControls(cropControlsElement: any): void;
50
+ _buildDesktopShell(): void;
51
+ _buildMobileShell(): void;
52
+ _wireDrawerSizing(): void;
53
+ _destroyDesktopShell(): void;
54
+ _destroyMobileShell(): void;
55
+ _handleBreakpointChange(isNowMobile: any): void;
56
+ _mountCropControlsInActiveShell(): void;
57
+ _handleDesktopCategoryChange(): void;
58
+ _applyMode(mode: any): void;
59
+ destroy(): void;
60
+ }
61
+ import { CategoryTabs } from './CategoryTabs.js';
62
+ import { FilterListView } from './FilterListView.js';
63
+ import { FilterControlsView } from './FilterControlsView.js';
64
+ import { ActiveFiltersStack } from './ActiveFiltersStack.js';
65
+ import { BackgroundPanel } from './BackgroundPanel.js';
66
+ import { LayerStackPanel } from './LayerStackPanel.js';
67
+ import { TextPanel } from './TextPanel.js';
68
+ import { MobileActiveChips } from './MobileActiveChips.js';
69
+ import { BottomDrawer } from './BottomDrawer.js';
70
+ import { MobileNavigation } from './MobileNavigation.js';
@@ -0,0 +1,58 @@
1
+ export class TextPanel {
2
+ constructor(state: any, editor: any);
3
+ state: any;
4
+ editor: any;
5
+ element: HTMLElement | null;
6
+ _errorMessage: string | null;
7
+ _unsubscribers: any[];
8
+ render(): HTMLElement;
9
+ _render(): void;
10
+ _contentControl(layerId: any, content: any, disabled: any): HTMLElement;
11
+ _controlGrid(controls: any): HTMLElement;
12
+ _effectSection(title: any, controls: any): HTMLElement;
13
+ _selectField({ label, testId, value, options, disabled, onChange }: {
14
+ label: any;
15
+ testId: any;
16
+ value: any;
17
+ options: any;
18
+ disabled: any;
19
+ onChange: any;
20
+ }): HTMLElement;
21
+ _numberField({ label, testId, value, min, max, step, disabled, onInput }: {
22
+ label: any;
23
+ testId: any;
24
+ value: any;
25
+ min: any;
26
+ max: any;
27
+ step: any;
28
+ disabled: any;
29
+ onInput: any;
30
+ }): HTMLElement;
31
+ _colorField({ label, testId, value, disabled, onInput }: {
32
+ label: any;
33
+ testId: any;
34
+ value: any;
35
+ disabled: any;
36
+ onInput: any;
37
+ }): HTMLElement;
38
+ _checkboxField({ label, testId, checked, disabled, onChange }: {
39
+ label: any;
40
+ testId: any;
41
+ checked: any;
42
+ disabled: any;
43
+ onChange: any;
44
+ }): HTMLElement;
45
+ _field(label: any, control: any): HTMLElement;
46
+ _updateStyle(layerId: any, style: any): void;
47
+ _updateBox(layerId: any, box: any): void;
48
+ _updateEffects(layerId: any, effects: any): void;
49
+ _textEffects(effects: any): {
50
+ stroke: any;
51
+ shadow: any;
52
+ glow: any;
53
+ backdrop: any;
54
+ };
55
+ _runAction(promise: any): void;
56
+ _activeTextLayer(): any;
57
+ destroy(): void;
58
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Vanilla Editor Exports
3
+ * Standalone exports for the vanilla image editor without Vue/Pinia/Ionic dependencies
4
+ *
5
+ * Use this entry point when you only need the VanillaImageEditor and filter registry
6
+ */
7
+ export { VanillaImageEditor } from './vanilla-editor/index.js';
8
+ export { initializeFilterRegistry, getAllFilters, getFilter, getFiltersByCategory, getAllCategories, registerFilter, hasFilter, } from './filters/index';
9
+ export type { FilterDefinition, ControlDefinition } from './filters/index';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingfactory/mediables-vue",
3
- "version": "2.11.0",
3
+ "version": "2.13.0",
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },
@@ -36,7 +36,8 @@
36
36
  "scripts": {
37
37
  "preinstall": "npx only-allow pnpm",
38
38
  "clean": "rimraf dist",
39
- "build": "vite build --config vite.lib.config.ts && vue-tsc -p tsconfig.build.json --emitDeclarationOnly && pnpm build:render",
39
+ "build": "vite build --config vite.lib.config.ts && vue-tsc -p tsconfig.build.json --emitDeclarationOnly && pnpm build:vanilla-types && pnpm build:render",
40
+ "build:vanilla-types": "tsc -p tsconfig.vanilla-declarations.json && node scripts/build-vanilla-declarations.mjs",
40
41
  "build:render": "vite build --config vite.render.config.ts",
41
42
  "dev": "vite build --config vite.lib.config.ts --watch",
42
43
  "type-check": "vue-tsc --noEmit",