@acorex/components 19.1.0 → 19.3.0-next.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. package/action-sheet/lib/action-sheet.class.d.ts +10 -0
  2. package/action-sheet/lib/action-sheet.component.d.ts +22 -3
  3. package/action-sheet/lib/action-sheet.service.d.ts +5 -2
  4. package/common/lib/classes/components.class.d.ts +1 -0
  5. package/decorators/lib/components/close-button.component.d.ts +2 -1
  6. package/fesm2022/acorex-components-action-sheet.mjs +225 -67
  7. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  8. package/fesm2022/acorex-components-calendar.mjs +17 -17
  9. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  10. package/fesm2022/acorex-components-common.mjs.map +1 -1
  11. package/fesm2022/acorex-components-decorators.mjs +21 -5
  12. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  13. package/fesm2022/acorex-components-grid-layout-builder.mjs +530 -0
  14. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -0
  15. package/fesm2022/acorex-components-map.mjs +0 -1
  16. package/fesm2022/acorex-components-map.mjs.map +1 -1
  17. package/fesm2022/acorex-components-media-viewer.mjs +245 -75
  18. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  19. package/fesm2022/acorex-components-notification.mjs +1 -1
  20. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  21. package/fesm2022/acorex-components-pdf-reader.mjs +39 -0
  22. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -0
  23. package/fesm2022/acorex-components-popup.mjs +1 -1
  24. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  25. package/fesm2022/acorex-components-select-box.mjs +1 -1
  26. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  27. package/fesm2022/acorex-components-tabs.mjs +9 -8
  28. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  29. package/fesm2022/acorex-components-toast.mjs +136 -123
  30. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  31. package/fesm2022/acorex-components-video-player.mjs +37 -0
  32. package/fesm2022/acorex-components-video-player.mjs.map +1 -0
  33. package/grid-layout-builder/README.md +3 -0
  34. package/grid-layout-builder/index.d.ts +4 -0
  35. package/grid-layout-builder/lib/grid-layout-builder.module.d.ts +9 -0
  36. package/grid-layout-builder/lib/grid-layout-container.component.d.ts +233 -0
  37. package/grid-layout-builder/lib/grid-layout-widget.component.d.ts +95 -0
  38. package/grid-layout-builder/lib/types.d.ts +33 -0
  39. package/media-viewer/index.d.ts +0 -1
  40. package/media-viewer/lib/media-viewer-container/media-viewer-container.component.d.ts +21 -6
  41. package/media-viewer/lib/media-viewer-tools/file-info/file-info.component.d.ts +1 -2
  42. package/media-viewer/lib/media-viewer-tools/pdf-reader/pdf-reader.component.d.ts +3 -3
  43. package/media-viewer/lib/media-viewer-tools/video-player/video-player.component.d.ts +3 -3
  44. package/media-viewer/lib/media-viewer.module.d.ts +17 -15
  45. package/package.json +15 -2
  46. package/pdf-reader/README.md +3 -0
  47. package/pdf-reader/index.d.ts +2 -0
  48. package/pdf-reader/lib/pdf-reader/pdf-reader.component.d.ts +8 -0
  49. package/pdf-reader/lib/pdf-reader.module.d.ts +7 -0
  50. package/tabs/lib/tabs.class.d.ts +1 -1
  51. package/toast/lib/toast.class.d.ts +1 -0
  52. package/toast/lib/toast.component.d.ts +4 -0
  53. package/toast/lib/toast.service.d.ts +3 -4
  54. package/video-player/README.md +3 -0
  55. package/video-player/index.d.ts +2 -0
  56. package/video-player/lib/video-player/video-player.component.d.ts +6 -0
  57. package/video-player/lib/video-player.module.d.ts +7 -0
  58. package/media-viewer/lib/media-viewer-thumbnail/media-viewer-thumbnail.component.d.ts +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-components-grid-layout-builder.mjs","sources":["../../../../libs/components/grid-layout-builder/src/lib/grid-layout-widget.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-container.component.ts","../../../../libs/components/grid-layout-builder/src/lib/grid-layout-builder.module.ts","../../../../libs/components/grid-layout-builder/src/lib/types.ts","../../../../libs/components/grid-layout-builder/src/acorex-components-grid-layout-builder.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXGridLayoutNode, AXGridLayoutWidget, AXGridLayoutWidgetCompElement } from './types';\n\n/**\n * A component that represents a widget within the grid layout. It serves as an individual\n * item within a `gridstack` layout, providing options for customization and interaction.\n *\n * This widget component is used within the `AXGridLayoutContainerComponent` to manage the\n * layout of widgets in a grid system. The component interacts with the GridStack library\n * to offer features like resizing, movement, and customization of the widget's properties.\n *\n * @example\n * <ax-grid-layout-widget [options]=\"widgetOptions\">\n * <div>Widget Content</div>\n * </ax-grid-layout-widget>\n */\n@Component({\n selector: 'ax-grid-layout-widget',\n template: ` <div class=\"grid-stack-item-content\">\n <ng-template #container></ng-template>\n <ng-content></ng-content>\n {{ options().content }}\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutWidgetComponent {\n /**\n * A reference to the native element of this widget component. It is used for interaction\n * with the underlying DOM element and for updating the widget properties via GridStack.\n */\n private readonly elementRef: ElementRef<AXGridLayoutWidgetCompElement> = inject(ElementRef);\n \n /**\n * The native element of the widget component.\n */\n public el: AXGridLayoutWidgetCompElement = this.elementRef.nativeElement;\n\n /**\n * The current options of the widget. These options are used to define the layout,\n * content, and behavior of the widget within the grid.\n *\n * @internal\n */\n private _options?: AXGridLayoutNode;\n\n /**\n * Input property that represents the widget's configuration options.\n *\n * The options include properties such as position, size, content, and other\n * configuration values. These options are updated dynamically.\n *\n * @param {AXGridLayoutNode} val The configuration object for the widget.\n * @returns {AXGridLayoutWidgetCompElement} The element associated with the widget.\n */\n public options = input(null, {\n transform: (val: AXGridLayoutNode) => {\n const grid = this.el.gridstackNode?.grid;\n if (grid) {\n grid.update(this.el, val);\n } else {\n this._options = { ...val, el: this.el };\n }\n return this.el.gridstackNode || this._options || { el: this.el };\n },\n });\n\n /**\n * Clears the widget's options.\n *\n * This method removes any existing options set for the widget and resets it\n * to its default state.\n */\n public clearOptions() {\n this._options = null;\n }\n\n /**\n * Constructor that initializes the widget component and sets the reference to\n * the grid widget component in the element's properties.\n */\n constructor() {\n this.el._gridWidgetComp = this;\n }\n\n /**\n * Removes this widget from the grid.\n *\n * This method interacts with GridStack to remove the widget from the layout.\n * Once removed, the widget will no longer be part of the grid.\n */\n public removeWidget() {\n this.el.gridstackNode.grid.removeWidget(this.el);\n }\n\n /**\n * Sets whether the widget can be locked (i.e., not resizable).\n *\n * @param {boolean} state Whether the widget should be locked or not.\n * @remarks\n * If the widget is locked, it cannot be resized.\n */\n public setlockable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noResize: state });\n }\n\n /**\n * Sets whether the widget can be resized.\n *\n * @param {boolean} state Whether the widget should be resizable or not.\n * @remarks\n * If the widget is resizable, the user can change its size by dragging.\n */\n public setResizable(state: boolean): void {\n this.el.gridstackNode.grid.update(this.el, { noMove: state });\n }\n\n /**\n * Updates the options of the widget.\n *\n * @param {AXGridLayoutWidget} options The new options to apply to the widget.\n */\n setOptions(options: AXGridLayoutWidget) {\n this.el.gridstackNode.grid.update(this.el, options);\n }\n\n /**\n * Retrieves the current options of the widget.\n *\n * @returns {AXGridLayoutNode} The current configuration options of the widget.\n * @remarks\n * This method provides access to the widget's layout and configuration.\n * If no specific options are set, it returns the default options.\n */\n getOptions(): AXGridLayoutNode {\n const gridstackNode = this.el.gridstackNode;\n if (gridstackNode) {\n return {\n ...gridstackNode,\n el: this.el,\n };\n }\n return this.options() || this._options || { el: this.el };\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n ViewEncapsulation,\n WritableSignal,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\nimport {\n AXGridLayout,\n AXGridLayoutContainerCompElement,\n AXGridLayoutDroppedEvent,\n AXGridLayoutElementEvent,\n AXGridLayoutEventEvent,\n AXGridLayoutNode,\n AXGridLayoutNodesEvent,\n AXGridLayoutOptions,\n AXGridLayoutWidget,\n AXGridLayoutWidgetCompElement,\n AXGridLayoutWidgetElement,\n AXSaveCallback,\n} from './types';\n\n/**\n * The `AXGridLayoutContainerComponent` is an Angular component that acts as a wrapper for the GridStack library.\n * It provides a flexible grid layout system for arranging items within a container. It integrates with GridStack.js\n * and allows dynamic manipulation of grid items (widgets), including adding, removing, resizing, and dragging.\n *\n * This component uses Angular's reactive signals, outputs, and lifecycle hooks to manage grid state and interactions.\n */\n@Component({\n selector: 'ax-grid-layout-container',\n template: ` <ng-template #container></ng-template>\n <ng-content></ng-content>`,\n styleUrl: './grid-layout-container.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class AXGridLayoutContainerComponent {\n private serializedData?: AXGridLayoutOptions;\n /**\n * Content children elements of type `AXGridLayoutWidgetComponent` that are dynamically managed within the grid.\n */\n private items = contentChildren(AXGridLayoutWidgetComponent);\n\n /**\n * Input that holds options for configuring the GridStack grid layout.\n */\n public options = input<AXGridLayoutOptions>();\n\n /**\n * A computed signal that merges the provided `options` with the grid's existing configuration (if any).\n */\n private calcOptions = computed(() => this.grid()?.opts || this.options() || {});\n\n /**\n * A reference to the native element of the container component.\n */\n private readonly elementRef: ElementRef<AXGridLayoutContainerCompElement> = inject(ElementRef);\n\n /**\n * Angular's NgZone for running code outside Angular's change detection.\n */\n private ngZone = inject(NgZone);\n\n /**\n * A writable signal representing the current state of the grid.\n */\n private grid: WritableSignal<AXGridLayout> = signal(null);\n\n /**\n * Flag indicating whether the grid has been loaded with content.\n */\n private loaded?: boolean;\n\n /**\n * A reference to the native element representing the grid container.\n */\n private el: AXGridLayoutContainerCompElement = this.elementRef.nativeElement;\n\n // Outputs\n\n /**\n * Output event emitted when a widget is added to the grid.\n */\n protected onAdded = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget or layout is changed.\n */\n protected onChange = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when the grid is disabled.\n */\n protected onDisable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted during a drag operation on a widget.\n */\n protected onDrag = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag starts on a widget.\n */\n protected onDragStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when drag stops on a widget.\n */\n protected onDragStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when a widget is dropped on the grid.\n */\n protected onDropped = output<AXGridLayoutDroppedEvent>();\n\n /**\n * Output event emitted when the grid is enabled.\n */\n protected onEnable = output<AXGridLayoutEventEvent>();\n\n /**\n * Output event emitted when a widget is removed from the grid.\n */\n protected onRemoved = output<AXGridLayoutNodesEvent>();\n\n /**\n * Output event emitted when a widget is resized.\n */\n protected onResize = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing starts on a widget.\n */\n protected onResizeStart = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when resizing stops on a widget.\n */\n protected onResizeStop = output<AXGridLayoutElementEvent>();\n\n /**\n * Output event emitted when the grid is rendered.\n */\n protected isRendered = output<boolean>();\n\n // Model\n\n /**\n * Model that tracks whether the grid container is empty.\n */\n protected isEmpty = model(false);\n\n // Lifecycle\n\n /**\n * Initializes the grid layout component and sets up the GridStack grid.\n */\n constructor() {\n this.el._gridComp = this;\n }\n\n /**\n * Angular lifecycle hook that initializes the grid once the component is created.\n * It sets up GridStack and loads any initial layout configuration.\n */\n protected async ngOnInit(): Promise<void> {\n this.ngZone.runOutsideAngular(async () => {\n this.loaded = !!this.calcOptions()?.children?.length;\n const { GridStack } = await import('gridstack');\n this.grid.set(GridStack.init(this.calcOptions(), this.el));\n this.checkEmpty();\n });\n }\n\n /**\n * Angular lifecycle hook that cleans up resources when the component is destroyed.\n * It removes event listeners and destroys the GridStack instance.\n */\n protected ngOnDestroy(): void {\n this.unhookEvents(this.grid());\n this.grid()?.destroy();\n }\n\n // Effects\n\n /**\n * Effect that reacts to changes in the grid layout and updates the DOM accordingly.\n */\n private gridChange = effect(() => {\n if (this.grid()) {\n if (!this.loaded) this.updateAll();\n this.hookEvents(this.grid());\n this.isRendered.emit(true);\n console.log('Grid Rendered!');\n }\n });\n\n /**\n * Effect that reacts to changes in child widgets and updates the grid layout.\n */\n private childChange = effect(() => {\n if (this.items()) {\n this.updateAll();\n }\n });\n\n // Methods\n\n /**\n * Updates the grid layout with the current set of widgets, clearing previous options.\n */\n private updateAll() {\n if (!this.grid()) return;\n const layout: AXGridLayoutWidget[] = [];\n this.items()?.forEach((item) => {\n layout.push(item.options());\n item.clearOptions();\n });\n this.grid().load(layout);\n }\n\n /**\n * Checks whether the grid is empty and updates the `isEmpty` model accordingly.\n */\n private checkEmpty() {\n if (this.grid()) {\n const isEmpty = !this.grid().engine.nodes.length;\n if (isEmpty === this.isEmpty()) return;\n this.isEmpty.set(isEmpty);\n }\n }\n\n // Event Listeners\n\n /**\n * Hooks event listeners to the grid for various grid events (e.g., add, remove, drag, resize).\n */\n private hookEvents(grid?: AXGridLayout): void {\n if (grid) {\n grid\n .on('added', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onAdded.emit({ event, nodes });\n })\n .on('removed', (event: Event, nodes: AXGridLayoutNode[]) => {\n this.checkEmpty();\n this.onRemoved.emit({ event, nodes });\n })\n .on('change', (event: Event, nodes: AXGridLayoutNode[]) => this.onChange.emit({ event, nodes }))\n .on('disable', (event: Event) => this.onDisable.emit({ event }))\n .on('drag', (event: Event, el: AXGridLayoutWidgetElement) => this.onDrag.emit({ event, el }))\n .on('dragstart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onDragStart.emit({ event, el }),\n )\n .on('dragstop', (event: Event, el: AXGridLayoutWidgetElement) => this.onDragStop.emit({ event, el }))\n .on('dropped', (event: Event, previousNode: AXGridLayoutNode, newNode: AXGridLayoutNode) =>\n this.onDropped.emit({ event, previousNode, newNode }),\n )\n .on('enable', (event: Event) => this.onEnable.emit({ event }))\n .on('resize', (event: Event, el: AXGridLayoutWidgetElement) => this.onResize.emit({ event, el }))\n .on('resizestart', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStart.emit({ event, el }),\n )\n .on('resizestop', (event: Event, el: AXGridLayoutWidgetElement) =>\n this.onResizeStop.emit({ event, el }),\n );\n }\n }\n\n /**\n * Removes all event listeners from the grid.\n */\n private unhookEvents(grid?: AXGridLayout) {\n if (grid) {\n grid.offAll();\n }\n }\n\n // Public Methods\n\n /**\n * Adds a widget to the grid layout. Optionally arranges the grid after adding the widget.\n *\n * @param item The widget to add.\n * @param withAutoArrange If true, the grid will be auto-arranged after adding the widget.\n * @returns The added widget's layout node.\n */\n public add(item: AXGridLayoutWidget, withAutoArrange = false): AXGridLayoutNode {\n if (withAutoArrange) {\n this.autoArrange();\n }\n return this.grid().addWidget(item).gridstackNode;\n }\n\n /**\n * Removes a widget from the grid layout.\n *\n * @param element The widget element to remove.\n * @returns The updated grid instance.\n */\n public remove(element: AXGridLayoutWidgetCompElement): AXGridLayout {\n return this.grid().removeWidget(element);\n }\n\n /**\n * Clears all widgets from the grid layout.\n *\n * @returns The updated grid instance.\n */\n public clear(): AXGridLayout {\n return this.grid().removeAll();\n }\n\n /**\n * Saves the current state of the grid and its widgets.\n *\n * @param saveContent If true, the content of the widgets will be saved.\n * @param saveGridOpt If true, the grid options will be saved.\n * @param saveCallback Optional callback to invoke after saving the grid state.\n * @returns The saved grid layout options.\n */\n public save(saveContent = false, saveGridOpt = true, saveCallback?: AXSaveCallback): AXGridLayoutOptions {\n return (this.serializedData = this.grid().save(\n saveContent,\n saveGridOpt,\n saveCallback,\n ) as AXGridLayoutOptions);\n }\n\n /**\n * Loads a serialized grid layout configuration into the grid.\n *\n * @param serializedData The serialized grid options to load.\n * @param cleanBeforeLoad If true, the grid will be cleared before loading the new layout.\n * @returns A promise that resolves to the loaded grid instance.\n */\n public async load(\n serializedData: AXGridLayoutOptions = this.serializedData,\n cleanBeforeLoad = true,\n ): Promise<AXGridLayout> {\n if (cleanBeforeLoad) {\n this.grid().removeAll();\n }\n const { GridStack } = await import('gridstack');\n return GridStack.addGrid(this.el, serializedData);\n }\n\n /**\n * Automatically arranges the widgets within the grid layout.\n */\n public autoArrange() {\n this.grid().compact();\n }\n\n /**\n * Sets whether widgets in the grid can be moved (dragged).\n *\n * @param state If true, widgets are movable; otherwise, they are locked.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setlockable(state: boolean, recurse?: boolean) {\n this.grid().enableMove(state, recurse);\n }\n\n /**\n * Sets whether widgets in the grid can be resized.\n *\n * @param state If true, widgets are resizable; otherwise, they are fixed.\n * @param recurse If true, the setting is applied to nested widgets as well.\n */\n public setResizable(state: boolean, recurse?: boolean) {\n this.grid().enableResize(state, recurse);\n }\n\n /**\n * Retrieves all the child nodes (widgets) in the grid layout.\n *\n * @returns An array of grid layout nodes representing the widgets.\n */\n public getChildren(): AXGridLayoutNode[] {\n return this.grid().engine.nodes;\n }\n\n /**\n * Sets up draggable functionality for external elements to be added to the grid.\n *\n * @param dragIn A CSS selector or an array of elements that can be dragged into the grid.\n * @param widgets An optional set of widgets that are draggable into the grid.\n */\n public async setupDraggable(dragIn?: string | HTMLElement[], widgets?: AXGridLayoutWidget) {\n if (typeof dragIn === 'string') {\n document.querySelectorAll(dragIn).forEach((item) => {\n if (!item.classList.contains('grid-stack-item')) {\n item.classList.add('grid-stack-item');\n }\n });\n }\n const { GridStack } = await import('gridstack');\n GridStack.setupDragIn(dragIn, undefined, [widgets]);\n }\n\n /**\n * Sets grid layout options.\n *\n * @param options The new grid layout options to apply.\n */\n public setOption(options: AXGridLayoutOptions) {\n this.grid().opts = options;\n }\n\n /**\n * Rotates a specific widget element in the grid layout.\n *\n * @param element The widget element to rotate.\n */\n public rotate(element: AXGridLayoutWidgetCompElement) {\n this.grid().rotate(element);\n }\n\n /**\n * Sets the number of columns in the grid layout.\n *\n * @param count The number of columns to set.\n */\n public setColumn(count: number) {\n this.grid().column(count, 'moveScale');\n }\n\n /**\n * Retrieves the current grid layout options.\n *\n * @returns The current grid options.\n */\n public getOptions() {\n return this.grid().opts;\n }\n}\n","/**\n * gridstack.component.ts 11.1.1-dev\n * Copyright (c) 2022-2024 Alain Dumesny - see GridStack root license\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent],\n exports: [AXGridLayoutContainerComponent, AXGridLayoutWidgetComponent],\n})\nexport class AXGridLayoutBuilderModule {\n // constructor() {\n // set globally our method to create the right widget type\n // GridStack.addRemoveCB = gsCreateNgComponents;\n // GridStack.saveCB = gsSaveAdditionalNgInfo;\n // }\n}\n","import { AXGridLayoutContainerComponent } from './grid-layout-container.component';\nimport { AXGridLayoutWidgetComponent } from './grid-layout-widget.component';\n//TYPES\nexport type AXGridLayoutNode = import('gridstack').GridStackNode;\nexport type AXGridLayout = import('gridstack').GridStack;\nexport type AXGridLayoutOptions = import('gridstack').GridStackOptions;\nexport type AXGridLayoutWidget = import('gridstack').GridStackWidget & { data?: any };\nexport type AXGridLayoutContainerElement = import('gridstack').GridHTMLElement;\nexport type AXGridLayoutWidgetElement = import('gridstack').GridItemHTMLElement;\n//EVENTS\nexport type AXGridLayoutEventEvent = { event: Event };\nexport type AXGridLayoutElementEvent = { event: Event; el: AXGridLayoutWidgetElement };\nexport type AXGridLayoutNodesEvent = { event: Event; nodes: AXGridLayoutNode[] };\nexport type AXGridLayoutDroppedEvent = {\n event: Event;\n previousNode: AXGridLayoutNode;\n newNode: AXGridLayoutNode;\n};\n//COMPONENTS\nexport interface AXGridLayoutContainerCompElement extends AXGridLayoutContainerElement {\n _gridComp?: AXGridLayoutContainerComponent;\n}\nexport interface AXGridLayoutWidgetCompElement extends AXGridLayoutWidgetElement {\n _gridWidgetComp?: AXGridLayoutWidgetComponent;\n}\n\n//Callback\nexport type AXSaveCallback = import('gridstack').SaveFcn;\n\n// //DYNAMIC\n// export type AXNgCompInputs = { [key: string]: any };\n// export type SelectorToType = { [key: string]: Type<object> }; // selector string to runtime Type mapping\n// export interface AXNgGridLayoutWidget extends AXGridLayoutWidget {\n// selector?: string; //Angular tag selector for this component to create at runtime\n// input?: AXNgCompInputs; // serialized data for the component input fields\n// subGridOpts?: AXNgGridLayoutOptions; // nested grid options\n// }\n// export interface AXNgGridLayoutNode extends AXGridLayoutNode {\n// selector?: string; // component type to create as content\n// }\n// export interface AXNgGridLayoutOptions extends AXGridLayoutOptions {\n// children?: AXNgGridLayoutWidget[];\n// subGridOpts?: AXNgGridLayoutOptions;\n// }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -135,7 +135,6 @@ class AXLeafletService {
135
135
  this.drawControl = undefined;
136
136
  }
137
137
  if (this.map) {
138
- console.log(this.drawnItems.getLayers().length, this.maxMarkers);
139
138
  const createDrawControl = () => {
140
139
  return new this.L.Control.Draw({
141
140
  position: position,
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-map.mjs","sources":["../../../../libs/components/map/src/lib/map.config.ts","../../../../libs/components/map/src/lib/map.service.ts","../../../../libs/components/map/src/lib/map.component.ts","../../../../libs/components/map/src/lib/map.component.html","../../../../libs/components/map/src/lib/map.module.ts","../../../../libs/components/map/src/acorex-components-map.ts"],"sourcesContent":["import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\n\nexport interface AXMapConfig {\n layers: string;\n layers2x: string;\n markerIcon: string;\n markerIcon2x: string;\n markerShadow: string;\n}\n\nexport const AX_MAP_CONFIG = new InjectionToken<AXMapConfig>('AX_MAP_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'layout.map', AX_MAP_CONFIG);\n return AXMapDefaultConfig;\n },\n});\n\nexport const baseUrl = '/assets/images/leaflet/';\n\nexport const AXMapDefaultConfig: AXMapConfig = {\n layers: `${baseUrl}layers.png`,\n layers2x: `${baseUrl}layers-2x.png`,\n markerIcon: `${baseUrl}marker-icon.png`,\n markerIcon2x: `${baseUrl}marker-icon-2x.png`,\n markerShadow: `${baseUrl}marker-shadow.png`,\n};\n\nexport type PartialMapConfig = Partial<AXMapConfig>;\n\nexport function mapConfig(config: PartialMapConfig = {}): AXMapConfig {\n const result = {\n ...AXMapDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\n\nexport interface AXMapLocation {\n latitude: number;\n longitude: number;\n precision?: number;\n title?: string;\n}\nexport type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\n@Injectable()\nexport class AXLeafletService {\n mapConfig = inject(AX_MAP_CONFIG);\n icon: any;\n maxMarkers = 1;\n\n private L: typeof import('leaflet');\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private drawnItems: L.FeatureGroup;\n\n onMarkerChanged = new EventEmitter<AXMapLocation[]>();\n onMarkerAdded = new EventEmitter<AXMapLocation>();\n onLocationFound = new EventEmitter<AXMapLocation>();\n\n async loadLeaflet(): Promise<void> {\n try {\n this.L = await import('leaflet');\n await import('leaflet-draw');\n await import('leaflet.locatecontrol');\n this.icon = this.L.icon({\n iconUrl: this.mapConfig.markerIcon,\n shadowUrl: this.mapConfig.markerShadow,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n shadowSize: [41, 41],\n });\n } catch (error) {\n console.error('Error Loading Leaflet,', error);\n }\n }\n\n async initMap(mapElement: HTMLElement, location: AXMapLocation, zoom = 13) {\n await this.loadLeaflet();\n const map = this.L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n this.L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 20,\n attribution: '© ACoreX',\n }).addTo(map);\n this.drawnItems = new this.L.FeatureGroup();\n this.drawnItems.addTo(map);\n this.map = map;\n\n // let holdTimer;\n // const holdDuration = 1000;\n // map.on('mousedown', (e) => {\n // holdTimer = setTimeout(() => {\n // this.L.marker(e.latlng).addTo(map);\n // }, holdDuration);\n // });\n // map.on('mouseup', function () {\n // clearTimeout(holdTimer);\n // });\n // map.on('mouseleave', function () {\n // clearTimeout(holdTimer);\n // });\n\n map.on('click', (e) => {\n //this.L.marker(e.latlng).addTo(map);\n this.addMarker({ latitude: e.latlng.lat, longitude: e.latlng.lng });\n });\n }\n\n getMap(): L.Map | undefined {\n return this.map;\n }\n\n setZoomLevel(zoom: number): void {\n this.map?.setZoom(zoom);\n }\n\n setCenter(location: AXMapLocation): void {\n if (this.map && location) {\n this.map.setView([location.latitude, location.longitude], this.map.getZoom());\n }\n }\n\n flyTo(location: AXMapLocation, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map && location) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n this.map.once('moveend', () => {\n if (setMarker) {\n this.addMarker(location);\n }\n });\n }\n }\n\n addMarker(locations: AXMapLocation | AXMapLocation[]): void {\n if (this.drawnItems.getLayers().length < this.maxMarkers) {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n this.L.marker([location.latitude, location.longitude], { icon: this.icon }).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n });\n }\n }\n\n getMarkers(): AXMapLocation[] {\n return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n } as AXMapLocation;\n });\n }\n\n addDrawControl(position: AXMapControlPlace = 'topleft', maxMarkers = 1): void {\n this.maxMarkers = maxMarkers;\n if (this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawnItems.clearLayers();\n this.drawControl = undefined;\n }\n if (this.map) {\n console.log(this.drawnItems.getLayers().length, this.maxMarkers);\n const createDrawControl = () => {\n return new this.L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: this.drawnItems.getLayers().length < this.maxMarkers ? { icon: this.icon } : false,\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n };\n\n this.drawControl = createDrawControl();\n this.map.addControl(this.drawControl);\n\n const onCreated = (event: any) => {\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n const latLng = (layer as L.Marker).getLatLng();\n this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });\n this.onMarkerChanged.emit(this.getMarkers());\n\n if (this.drawnItems.getLayers().length >= this.maxMarkers) {\n this.map.removeControl(this.drawControl);\n this.drawControl = new this.L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: false,\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n this.map.addControl(this.drawControl);\n }\n };\n\n const onDeleted = () => {\n this.onMarkerChanged.emit(this.getMarkers());\n\n if (this.drawnItems.getLayers().length < this.maxMarkers) {\n this.map.removeControl(this.drawControl);\n this.drawControl = createDrawControl();\n this.map.addControl(this.drawControl);\n }\n };\n\n const onEdited = () => this.onMarkerChanged.emit(this.getMarkers());\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\n }\n }\n\n addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n if (this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n if (this.map) {\n const locateControl = this.L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => alert(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n const onLocationFound = (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n };\n\n this.map.on('locationfound', onLocationFound);\n }\n }\n\n removeDrawControl(): void {\n if (this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n // if (this.drawnItems) {\n // this.drawnItems.clearLayers();\n // }\n }\n\n removeLocateControl(): void {\n if (this.map && this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n }\n\n destroyMap(): void {\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { AXLeafletService, AXMapControlPlace, AXMapLocation } from './map.service';\n\n/**\n * @description\n * The `AXMapComponent` provides an interactive map powered by Leaflet. It supports markers, location tracking,\n * and configurable zoom, latitude, longitude, and marker behavior. The component allows easy integration and\n * manipulation of map features.\n *\n * @example\n * <ax-map [latitude]=\"51.505\" [longitude]=\"-0.09\" [zoomLevel]=\"13\" [hasMarker]=\"true\"></ax-map>\n */\n@Component({\n selector: 'ax-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss'],\n providers: [AXLeafletService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXMapComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n * @default 13\n */\n zoomLevel = input(13);\n\n /**\n * @description\n * Latitude of the map center.\n * @default 51.505\n */\n latitude = input(51.505);\n\n /**\n * @description\n * Longitude of the map center.\n * @default -0.09\n */\n longitude = input(-0.09);\n\n /**\n * @description\n * Maximum number of markers allowed on the map.\n * @default 1\n */\n maxMarker = input(1);\n\n /**\n * @description\n * Whether the map should have a marker control.\n * @default false\n */\n hasDraw = input(false);\n\n /**\n * @description\n * Whether the map should have a location control.\n * @default false\n */\n hasLocator = input(false);\n\n /**\n * @description\n * Position of the marker control on the map.\n * @default 'topleft'\n */\n markerPlace = input<AXMapControlPlace>('topleft');\n\n /**\n * @description\n * Position of the locate control on the map.\n * @default 'bottomright'\n */\n locatePlace = input<AXMapControlPlace>('bottomright');\n\n /**\n * @description\n * Array or single marker location(s) to be placed on the map.\n * @default undefined\n */\n markers = input<AXMapLocation | AXMapLocation[] | undefined>(undefined);\n\n /**\n * @description\n * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = output<AXMapLocation>();\n\n /**\n * @description\n * Event triggered when marker positions are changed on the map.\n */\n onMarkerChanged = output<AXMapLocation[]>();\n\n /**\n * @description\n * Event triggered when a location is found via the location control.\n */\n onLocationFound = output<AXMapLocation>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\n\n /**\n * @description\n * Adds a marker to the specified location on the map.\n * @param location - The location where the marker should be placed.\n */\n addMarker(location: AXMapLocation) {\n this.leafletService.addMarker(location);\n }\n\n /**\n * @description\n * Retrieves all markers currently placed on the map.\n * @returns An array of `AXMapLocation` representing all markers.\n */\n getMarkers(): AXMapLocation[] {\n return this.leafletService.getMarkers();\n }\n\n /**\n * @description\n * Flies the map to a specific location with optional zoom, marker placement, and animation duration.\n *\n * @param location - The target location to fly to.\n * @param zoom - Optional zoom level for the map.\n * @param setMarker - Whether to set a marker at the destination.\n * @param duration - Optional duration for the fly animation.\n */\n flyTo(location: AXMapLocation, zoom?: number, setMarker?: boolean, duration?: number) {\n this.leafletService.flyTo(location, zoom, setMarker, duration);\n }\n\n constructor() {\n afterNextRender(async () => {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude(), longitude: this.longitude() },\n this.zoomLevel(),\n );\n if (this.markers()) {\n this.leafletService.addMarker(this.markers());\n }\n this.rendered.set(true);\n });\n effect(() => {\n if (this.rendered()) {\n if (!this.hasLocator()) {\n this.leafletService.removeLocateControl();\n } else {\n this.leafletService.addLocateControl(this.locatePlace());\n this.leafletService.onLocationFound\n .pipe(\n distinctUntilChanged(\n (prev: AXMapLocation, curr: AXMapLocation) =>\n prev.latitude === curr.latitude && prev.longitude === curr.longitude,\n ),\n )\n .subscribe((location: AXMapLocation) => {\n this.onLocationFound.emit(location);\n });\n }\n }\n });\n effect(() => {\n if (this.rendered()) {\n if (!this.hasDraw()) {\n this.leafletService.removeDrawControl();\n } else {\n this.leafletService.addDrawControl(this.markerPlace(), this.maxMarker() || 1);\n this.leafletService.onMarkerChanged.subscribe((location: AXMapLocation[]) => {\n this.onMarkerChanged.emit(location);\n });\n this.leafletService.onMarkerAdded.subscribe((location: AXMapLocation) => {\n this.onMarkerAdded.emit(location);\n });\n }\n }\n });\n effect(() => {\n if (this.rendered()) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n }, {});\n effect(() => {\n if (this.rendered()) {\n this.leafletService.setCenter({\n latitude: this.latitude(),\n longitude: this.longitude(),\n } as AXMapLocation);\n }\n });\n }\n\n /**\n * @description\n * Cleanup function that destroys the map when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.leafletService.destroyMap();\n }\n}\n","<div #mapContainer class=\"ax-map-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXMapComponent } from './map.component';\n\n@NgModule({\n declarations: [AXMapComponent],\n imports: [CommonModule],\n exports: [AXMapComponent],\n})\nexport class AXMapModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-map.mjs","sources":["../../../../libs/components/map/src/lib/map.config.ts","../../../../libs/components/map/src/lib/map.service.ts","../../../../libs/components/map/src/lib/map.component.ts","../../../../libs/components/map/src/lib/map.component.html","../../../../libs/components/map/src/lib/map.module.ts","../../../../libs/components/map/src/acorex-components-map.ts"],"sourcesContent":["import { AX_GLOBAL_CONFIG } from '@acorex/core/config';\nimport { InjectionToken, inject } from '@angular/core';\nimport { set } from 'lodash-es';\n\nexport interface AXMapConfig {\n layers: string;\n layers2x: string;\n markerIcon: string;\n markerIcon2x: string;\n markerShadow: string;\n}\n\nexport const AX_MAP_CONFIG = new InjectionToken<AXMapConfig>('AX_MAP_CONFIG', {\n providedIn: 'root',\n factory: () => {\n const global = inject(AX_GLOBAL_CONFIG);\n set(global, 'layout.map', AX_MAP_CONFIG);\n return AXMapDefaultConfig;\n },\n});\n\nexport const baseUrl = '/assets/images/leaflet/';\n\nexport const AXMapDefaultConfig: AXMapConfig = {\n layers: `${baseUrl}layers.png`,\n layers2x: `${baseUrl}layers-2x.png`,\n markerIcon: `${baseUrl}marker-icon.png`,\n markerIcon2x: `${baseUrl}marker-icon-2x.png`,\n markerShadow: `${baseUrl}marker-shadow.png`,\n};\n\nexport type PartialMapConfig = Partial<AXMapConfig>;\n\nexport function mapConfig(config: PartialMapConfig = {}): AXMapConfig {\n const result = {\n ...AXMapDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { AX_MAP_CONFIG } from './map.config';\n\nexport interface AXMapLocation {\n latitude: number;\n longitude: number;\n precision?: number;\n title?: string;\n}\nexport type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';\n@Injectable()\nexport class AXLeafletService {\n mapConfig = inject(AX_MAP_CONFIG);\n icon: any;\n maxMarkers = 1;\n\n private L: typeof import('leaflet');\n private map?: L.Map;\n private drawControl?: L.Control.Draw;\n private locateControl?: L.Control.Locate;\n private drawnItems: L.FeatureGroup;\n\n onMarkerChanged = new EventEmitter<AXMapLocation[]>();\n onMarkerAdded = new EventEmitter<AXMapLocation>();\n onLocationFound = new EventEmitter<AXMapLocation>();\n\n async loadLeaflet(): Promise<void> {\n try {\n this.L = await import('leaflet');\n await import('leaflet-draw');\n await import('leaflet.locatecontrol');\n this.icon = this.L.icon({\n iconUrl: this.mapConfig.markerIcon,\n shadowUrl: this.mapConfig.markerShadow,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n shadowSize: [41, 41],\n });\n } catch (error) {\n console.error('Error Loading Leaflet,', error);\n }\n }\n\n async initMap(mapElement: HTMLElement, location: AXMapLocation, zoom = 13) {\n await this.loadLeaflet();\n const map = this.L.map(mapElement).setView([location.latitude, location.longitude], zoom);\n this.L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n maxZoom: 20,\n attribution: '© ACoreX',\n }).addTo(map);\n this.drawnItems = new this.L.FeatureGroup();\n this.drawnItems.addTo(map);\n this.map = map;\n\n // let holdTimer;\n // const holdDuration = 1000;\n // map.on('mousedown', (e) => {\n // holdTimer = setTimeout(() => {\n // this.L.marker(e.latlng).addTo(map);\n // }, holdDuration);\n // });\n // map.on('mouseup', function () {\n // clearTimeout(holdTimer);\n // });\n // map.on('mouseleave', function () {\n // clearTimeout(holdTimer);\n // });\n\n map.on('click', (e) => {\n //this.L.marker(e.latlng).addTo(map);\n this.addMarker({ latitude: e.latlng.lat, longitude: e.latlng.lng });\n });\n }\n\n getMap(): L.Map | undefined {\n return this.map;\n }\n\n setZoomLevel(zoom: number): void {\n this.map?.setZoom(zoom);\n }\n\n setCenter(location: AXMapLocation): void {\n if (this.map && location) {\n this.map.setView([location.latitude, location.longitude], this.map.getZoom());\n }\n }\n\n flyTo(location: AXMapLocation, zoom?: number, setMarker = false, duration = 1.0): void {\n if (this.map && location) {\n this.map.flyTo([location.latitude, location.longitude], zoom || this.map.getZoom(), {\n animate: true,\n duration: duration,\n });\n this.map.once('moveend', () => {\n if (setMarker) {\n this.addMarker(location);\n }\n });\n }\n }\n\n addMarker(locations: AXMapLocation | AXMapLocation[]): void {\n if (this.drawnItems.getLayers().length < this.maxMarkers) {\n const locationsArray = Array.isArray(locations) ? locations : [locations];\n locationsArray.forEach((location) => {\n this.L.marker([location.latitude, location.longitude], { icon: this.icon }).addTo(this.drawnItems);\n this.onMarkerAdded.emit(location);\n });\n }\n }\n\n getMarkers(): AXMapLocation[] {\n return this.drawnItems\n .getLayers()\n .filter((layer) => layer instanceof this.L.Marker)\n .map((marker) => {\n const latLng = (marker as L.Marker).getLatLng();\n return {\n latitude: latLng.lat,\n longitude: latLng.lng,\n } as AXMapLocation;\n });\n }\n\n addDrawControl(position: AXMapControlPlace = 'topleft', maxMarkers = 1): void {\n this.maxMarkers = maxMarkers;\n if (this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawnItems.clearLayers();\n this.drawControl = undefined;\n }\n if (this.map) {\n const createDrawControl = () => {\n return new this.L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: this.drawnItems.getLayers().length < this.maxMarkers ? { icon: this.icon } : false,\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n };\n\n this.drawControl = createDrawControl();\n this.map.addControl(this.drawControl);\n\n const onCreated = (event: any) => {\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n const latLng = (layer as L.Marker).getLatLng();\n this.onMarkerAdded.emit({ latitude: latLng.lat, longitude: latLng.lng });\n this.onMarkerChanged.emit(this.getMarkers());\n\n if (this.drawnItems.getLayers().length >= this.maxMarkers) {\n this.map.removeControl(this.drawControl);\n this.drawControl = new this.L.Control.Draw({\n position: position,\n edit: {\n featureGroup: this.drawnItems,\n },\n draw: {\n marker: false,\n polygon: false,\n polyline: false,\n rectangle: false,\n circle: false,\n circlemarker: false,\n },\n });\n this.map.addControl(this.drawControl);\n }\n };\n\n const onDeleted = () => {\n this.onMarkerChanged.emit(this.getMarkers());\n\n if (this.drawnItems.getLayers().length < this.maxMarkers) {\n this.map.removeControl(this.drawControl);\n this.drawControl = createDrawControl();\n this.map.addControl(this.drawControl);\n }\n };\n\n const onEdited = () => this.onMarkerChanged.emit(this.getMarkers());\n\n this.map.off('draw:created');\n this.map.off('draw:deleted');\n this.map.off('draw:edited');\n\n this.map.on('draw:created', onCreated);\n this.map.on('draw:deleted', onDeleted);\n this.map.on('draw:edited', onEdited);\n }\n }\n\n addLocateControl(position: AXMapControlPlace = 'bottomright'): void {\n if (this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n if (this.map) {\n const locateControl = this.L.control\n .locate({\n position: position,\n flyTo: true,\n setView: 'untilPanOrZoom',\n showPopup: true,\n onLocationError: (e) => alert(e.message),\n onLocationOutsideMapBounds: (control) => control.stop(),\n locateOptions: {\n enableHighAccuracy: true,\n },\n strings: {\n title: 'Show my location',\n popup: 'You are within {distance} meters from this point',\n outsideMapBoundsMsg: 'You seem to be outside the map bounds',\n },\n })\n .addTo(this.map);\n\n this.locateControl = locateControl;\n\n const onLocationFound = (event: any) => {\n const location: AXMapLocation = {\n latitude: event.latitude,\n longitude: event.longitude,\n precision: event.accuracy,\n };\n this.onLocationFound.emit(location);\n };\n\n this.map.on('locationfound', onLocationFound);\n }\n }\n\n removeDrawControl(): void {\n if (this.drawControl) {\n this.map.removeControl(this.drawControl);\n this.drawControl = undefined;\n }\n // if (this.drawnItems) {\n // this.drawnItems.clearLayers();\n // }\n }\n\n removeLocateControl(): void {\n if (this.map && this.locateControl) {\n this.map.removeControl(this.locateControl);\n this.locateControl = undefined;\n }\n }\n\n destroyMap(): void {\n if (this.map) {\n this.map.off();\n this.map.remove();\n this.map = undefined;\n }\n }\n}\n","import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { AXLeafletService, AXMapControlPlace, AXMapLocation } from './map.service';\n\n/**\n * @description\n * The `AXMapComponent` provides an interactive map powered by Leaflet. It supports markers, location tracking,\n * and configurable zoom, latitude, longitude, and marker behavior. The component allows easy integration and\n * manipulation of map features.\n *\n * @example\n * <ax-map [latitude]=\"51.505\" [longitude]=\"-0.09\" [zoomLevel]=\"13\" [hasMarker]=\"true\"></ax-map>\n */\n@Component({\n selector: 'ax-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss'],\n providers: [AXLeafletService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false\n})\nexport class AXMapComponent implements OnDestroy {\n /**\n * @description\n * Zoom level of the map.\n * @default 13\n */\n zoomLevel = input(13);\n\n /**\n * @description\n * Latitude of the map center.\n * @default 51.505\n */\n latitude = input(51.505);\n\n /**\n * @description\n * Longitude of the map center.\n * @default -0.09\n */\n longitude = input(-0.09);\n\n /**\n * @description\n * Maximum number of markers allowed on the map.\n * @default 1\n */\n maxMarker = input(1);\n\n /**\n * @description\n * Whether the map should have a marker control.\n * @default false\n */\n hasDraw = input(false);\n\n /**\n * @description\n * Whether the map should have a location control.\n * @default false\n */\n hasLocator = input(false);\n\n /**\n * @description\n * Position of the marker control on the map.\n * @default 'topleft'\n */\n markerPlace = input<AXMapControlPlace>('topleft');\n\n /**\n * @description\n * Position of the locate control on the map.\n * @default 'bottomright'\n */\n locatePlace = input<AXMapControlPlace>('bottomright');\n\n /**\n * @description\n * Array or single marker location(s) to be placed on the map.\n * @default undefined\n */\n markers = input<AXMapLocation | AXMapLocation[] | undefined>(undefined);\n\n /**\n * @description\n * Event triggered when a new marker is added to the map.\n */\n onMarkerAdded = output<AXMapLocation>();\n\n /**\n * @description\n * Event triggered when marker positions are changed on the map.\n */\n onMarkerChanged = output<AXMapLocation[]>();\n\n /**\n * @description\n * Event triggered when a location is found via the location control.\n */\n onLocationFound = output<AXMapLocation>();\n\n private mapContainer = viewChild<ElementRef>('mapContainer');\n private leafletService = inject(AXLeafletService);\n private rendered = signal(false);\n\n /**\n * @description\n * Adds a marker to the specified location on the map.\n * @param location - The location where the marker should be placed.\n */\n addMarker(location: AXMapLocation) {\n this.leafletService.addMarker(location);\n }\n\n /**\n * @description\n * Retrieves all markers currently placed on the map.\n * @returns An array of `AXMapLocation` representing all markers.\n */\n getMarkers(): AXMapLocation[] {\n return this.leafletService.getMarkers();\n }\n\n /**\n * @description\n * Flies the map to a specific location with optional zoom, marker placement, and animation duration.\n *\n * @param location - The target location to fly to.\n * @param zoom - Optional zoom level for the map.\n * @param setMarker - Whether to set a marker at the destination.\n * @param duration - Optional duration for the fly animation.\n */\n flyTo(location: AXMapLocation, zoom?: number, setMarker?: boolean, duration?: number) {\n this.leafletService.flyTo(location, zoom, setMarker, duration);\n }\n\n constructor() {\n afterNextRender(async () => {\n await this.leafletService.initMap(\n this.mapContainer().nativeElement,\n { latitude: this.latitude(), longitude: this.longitude() },\n this.zoomLevel(),\n );\n if (this.markers()) {\n this.leafletService.addMarker(this.markers());\n }\n this.rendered.set(true);\n });\n effect(() => {\n if (this.rendered()) {\n if (!this.hasLocator()) {\n this.leafletService.removeLocateControl();\n } else {\n this.leafletService.addLocateControl(this.locatePlace());\n this.leafletService.onLocationFound\n .pipe(\n distinctUntilChanged(\n (prev: AXMapLocation, curr: AXMapLocation) =>\n prev.latitude === curr.latitude && prev.longitude === curr.longitude,\n ),\n )\n .subscribe((location: AXMapLocation) => {\n this.onLocationFound.emit(location);\n });\n }\n }\n });\n effect(() => {\n if (this.rendered()) {\n if (!this.hasDraw()) {\n this.leafletService.removeDrawControl();\n } else {\n this.leafletService.addDrawControl(this.markerPlace(), this.maxMarker() || 1);\n this.leafletService.onMarkerChanged.subscribe((location: AXMapLocation[]) => {\n this.onMarkerChanged.emit(location);\n });\n this.leafletService.onMarkerAdded.subscribe((location: AXMapLocation) => {\n this.onMarkerAdded.emit(location);\n });\n }\n }\n });\n effect(() => {\n if (this.rendered()) {\n this.leafletService.setZoomLevel(this.zoomLevel());\n }\n }, {});\n effect(() => {\n if (this.rendered()) {\n this.leafletService.setCenter({\n latitude: this.latitude(),\n longitude: this.longitude(),\n } as AXMapLocation);\n }\n });\n }\n\n /**\n * @description\n * Cleanup function that destroys the map when the component is destroyed.\n */\n ngOnDestroy(): void {\n this.leafletService.destroyMap();\n }\n}\n","<div #mapContainer class=\"ax-map-container\"></div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXMapComponent } from './map.component';\n\n@NgModule({\n declarations: [AXMapComponent],\n imports: [CommonModule],\n exports: [AXMapComponent],\n})\nexport class AXMapModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}