@aggdirect/coolmap-services 4.0.6 → 4.0.8
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.
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, InjectionToken, signal, computed, Injectable, inject, NgZone } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
|
-
import mapboxgl from 'mapbox-gl';
|
|
4
|
+
import mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp.js';
|
|
5
5
|
import * as turf from '@turf/turf';
|
|
6
6
|
import { HttpClient } from '@angular/common/http';
|
|
7
7
|
|
|
8
8
|
class CoolmapServices {
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: CoolmapServices, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: CoolmapServices, isStandalone: true, selector: "lib-coolmap-services", ngImport: i0, template: `
|
|
11
11
|
<p>
|
|
12
12
|
coolmap-services works!
|
|
13
13
|
</p>
|
|
14
14
|
`, isInline: true, styles: [""] });
|
|
15
15
|
}
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: CoolmapServices, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'lib-coolmap-services', imports: [], template: `
|
|
19
19
|
<p>
|
|
@@ -22,6 +22,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
22
22
|
` }]
|
|
23
23
|
}] });
|
|
24
24
|
|
|
25
|
+
/// <reference path="./mapbox-gl-csp.d.ts" />
|
|
26
|
+
/**
|
|
27
|
+
* Mapbox GL shares code between the main bundle and its Web Worker. When the host app
|
|
28
|
+
* (e.g. customer portal) bundles/transpiles mapbox-gl, the worker often breaks with
|
|
29
|
+
* errors like "Nn is not defined" / "_createClass is not defined" in syncRTLPluginState.
|
|
30
|
+
*
|
|
31
|
+
* Use the CSP build and load the worker from Mapbox's CDN (or window.__env.mapboxWorkerUrl).
|
|
32
|
+
* Keep MAPBOX_GL_VERSION in sync with the mapbox-gl peer dependency.
|
|
33
|
+
*/
|
|
34
|
+
/** Must match installed mapbox-gl version (see coolmap-v2 package.json) */
|
|
35
|
+
const MAPBOX_GL_VERSION = '3.24.0';
|
|
36
|
+
let workerConfigured = false;
|
|
37
|
+
function ensureMapboxWorker() {
|
|
38
|
+
if (workerConfigured || typeof window === 'undefined') {
|
|
39
|
+
return mapboxgl;
|
|
40
|
+
}
|
|
41
|
+
const win = window;
|
|
42
|
+
if (!mapboxgl.workerUrl) {
|
|
43
|
+
mapboxgl.workerUrl =
|
|
44
|
+
win.__env?.mapboxWorkerUrl ??
|
|
45
|
+
`https://api.mapbox.com/mapbox-gl-js/v${MAPBOX_GL_VERSION}/mapbox-gl-csp-worker.js`;
|
|
46
|
+
}
|
|
47
|
+
workerConfigured = true;
|
|
48
|
+
return mapboxgl;
|
|
49
|
+
}
|
|
50
|
+
|
|
25
51
|
const COOLMAP_CONFIG = new InjectionToken('COOLMAP_CONFIG');
|
|
26
52
|
function provideCoolmapConfig(config) {
|
|
27
53
|
return {
|
|
@@ -87,10 +113,10 @@ class AgToastService {
|
|
|
87
113
|
dismissAll() {
|
|
88
114
|
this._toasts.set([]);
|
|
89
115
|
}
|
|
90
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
91
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AgToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AgToastService, providedIn: 'root' });
|
|
92
118
|
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AgToastService, decorators: [{
|
|
94
120
|
type: Injectable,
|
|
95
121
|
args: [{
|
|
96
122
|
providedIn: 'root'
|
|
@@ -444,10 +470,10 @@ class UtilsService {
|
|
|
444
470
|
});
|
|
445
471
|
});
|
|
446
472
|
}
|
|
447
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
448
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
473
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
474
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
|
449
475
|
}
|
|
450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: UtilsService, decorators: [{
|
|
451
477
|
type: Injectable,
|
|
452
478
|
args: [{ providedIn: 'root' }]
|
|
453
479
|
}] });
|
|
@@ -476,6 +502,7 @@ class MapboxService {
|
|
|
476
502
|
config = inject(COOLMAP_CONFIG);
|
|
477
503
|
currentStyleIsDark = false;
|
|
478
504
|
constructor() {
|
|
505
|
+
ensureMapboxWorker();
|
|
479
506
|
this.customTopForCustomer = this.config.repository === 'customer' ? 65 : 0;
|
|
480
507
|
if (typeof window !== 'undefined') {
|
|
481
508
|
this.windowActualHeightWidth.availHeight = window.innerHeight > window.screen.availHeight ? window.innerHeight : window.screen.availHeight;
|
|
@@ -532,8 +559,9 @@ class MapboxService {
|
|
|
532
559
|
el.style.transition = 'opacity 0.5s ease-in-out';
|
|
533
560
|
el.style.opacity = '0';
|
|
534
561
|
const token = typeof window !== 'undefined' ? window.__env?.mapboxAccessToken || '' : '';
|
|
535
|
-
|
|
536
|
-
|
|
562
|
+
const mapbox = ensureMapboxWorker();
|
|
563
|
+
mapbox.accessToken = token;
|
|
564
|
+
this.map = new mapbox.Map({
|
|
537
565
|
container: el,
|
|
538
566
|
style: styleUrl,
|
|
539
567
|
center: [-77.036873, 38.907192],
|
|
@@ -1282,15 +1310,20 @@ class MapboxService {
|
|
|
1282
1310
|
}
|
|
1283
1311
|
});
|
|
1284
1312
|
// Recalculate bounds based on visible routes
|
|
1285
|
-
this.recalculateVisibleBounds(visibleIds);
|
|
1313
|
+
this.recalculateVisibleBounds(visibleIds, prefix, showAll);
|
|
1286
1314
|
}
|
|
1287
|
-
recalculateVisibleBounds(visibleIds) {
|
|
1288
|
-
const showAll = visibleIds.length === 0;
|
|
1315
|
+
recalculateVisibleBounds(visibleIds, prefix, showAllOverride) {
|
|
1316
|
+
const showAll = showAllOverride !== undefined ? showAllOverride : (visibleIds.length === 0);
|
|
1289
1317
|
this.bounds = new mapboxgl.LngLatBounds();
|
|
1290
1318
|
this.originDestinationCordinates.clear();
|
|
1291
1319
|
const normalizedVisibleIds = visibleIds.map(vid => String(vid).trim());
|
|
1292
1320
|
this.activeRoutesRegistry.forEach((data, id) => {
|
|
1293
1321
|
const registryId = String(id).trim();
|
|
1322
|
+
// If a prefix is provided, only include routes that match it for the bounding box.
|
|
1323
|
+
// This prevents "showAll" from zooming to hidden routes from other sections.
|
|
1324
|
+
if (prefix && !registryId.startsWith(`${prefix}-`)) {
|
|
1325
|
+
return;
|
|
1326
|
+
}
|
|
1294
1327
|
if (showAll || normalizedVisibleIds.includes(registryId)) {
|
|
1295
1328
|
if (data.bounds && !data.bounds.isEmpty()) {
|
|
1296
1329
|
this.bounds.extend(data.bounds);
|
|
@@ -1431,10 +1464,10 @@ class MapboxService {
|
|
|
1431
1464
|
setTimeout(() => this.map.resize(), 0);
|
|
1432
1465
|
}
|
|
1433
1466
|
}
|
|
1434
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1435
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1467
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MapboxService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1468
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MapboxService, providedIn: 'root' });
|
|
1436
1469
|
}
|
|
1437
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: MapboxService, decorators: [{
|
|
1438
1471
|
type: Injectable,
|
|
1439
1472
|
args: [{
|
|
1440
1473
|
providedIn: 'root'
|
|
@@ -1461,10 +1494,10 @@ class CoolmapService {
|
|
|
1461
1494
|
clearAllRoutes() {
|
|
1462
1495
|
return this.mapbox.clearAllRoutes();
|
|
1463
1496
|
}
|
|
1464
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1465
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1497
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: CoolmapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1498
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: CoolmapService, providedIn: 'root' });
|
|
1466
1499
|
}
|
|
1467
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1500
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: CoolmapService, decorators: [{
|
|
1468
1501
|
type: Injectable,
|
|
1469
1502
|
args: [{
|
|
1470
1503
|
providedIn: 'root'
|
|
@@ -1479,5 +1512,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
1479
1512
|
* Generated bundle index. Do not edit.
|
|
1480
1513
|
*/
|
|
1481
1514
|
|
|
1482
|
-
export { AgToastService, COOLMAP_CONFIG, CoolmapService, CoolmapServices, MapboxService, UtilsService, provideCoolmapConfig };
|
|
1515
|
+
export { AgToastService, COOLMAP_CONFIG, CoolmapService, CoolmapServices, MapboxService, UtilsService, ensureMapboxWorker, provideCoolmapConfig };
|
|
1483
1516
|
//# sourceMappingURL=aggdirect-coolmap-services.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggdirect-coolmap-services.mjs","sources":["../../../projects/coolmap-services/src/lib/coolmap-services.ts","../../../projects/coolmap-services/src/lib/services/config.ts","../../../projects/coolmap-services/src/lib/services/ag-toast.service.ts","../../../projects/coolmap-services/src/lib/services/utils.service.ts","../../../projects/coolmap-services/src/lib/services/mapbox.service.ts","../../../projects/coolmap-services/src/lib/services/coolmap.service.ts","../../../projects/coolmap-services/src/public-api.ts","../../../projects/coolmap-services/src/aggdirect-coolmap-services.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-coolmap-services',\n imports: [],\n template: `\n <p>\n coolmap-services works!\n </p>\n `,\n styles: ``,\n})\nexport class CoolmapServices {\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface CoolmapConfigModel {\n analyticsRESTURL: string | null;\n RESTURLPrefix: string | null;\n repository: string | null;\n mapboxStyle: string | null;\n mapboxAccessToken: string | null;\n}\n\nexport const COOLMAP_CONFIG = new InjectionToken<CoolmapConfigModel>('COOLMAP_CONFIG');\n\nexport function provideCoolmapConfig(config: CoolmapConfigModel) {\n return {\n provide: COOLMAP_CONFIG,\n useValue: config\n };\n}\n","import { Injectable, signal, computed } from '@angular/core';\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n\nexport interface ToastConfig {\n message: string;\n title?: string;\n variant?: ToastVariant;\n duration?: number;\n dismissible?: boolean;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface Toast extends ToastConfig {\n id: string;\n variant: ToastVariant;\n duration: number;\n dismissible: boolean;\n createdAt: Date;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgToastService {\n private _toasts = signal<Toast[]>([]);\n private defaultDuration = 5000;\n private position = signal<ToastPosition>('top-right');\n \n toasts = computed(() => this._toasts());\n toastPosition = computed(() => this.position());\n \n private generateId(): string {\n return `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n \n setPosition(pos: ToastPosition) {\n this.position.set(pos);\n }\n \n show(config: ToastConfig): string {\n // Prevent duplicate toasts\n const currentToasts = this._toasts();\n const incomingVariant = config.variant || 'info';\n const isDuplicate = currentToasts.find(\n t => t.message === config.message && t.variant === incomingVariant && t.title === config.title\n );\n \n if (isDuplicate) {\n return isDuplicate.id;\n }\n\n const toast: Toast = {\n id: this.generateId(),\n message: config.message,\n title: config.title,\n variant: incomingVariant,\n duration: config.duration ?? this.defaultDuration,\n dismissible: config.dismissible ?? true,\n action: config.action,\n createdAt: new Date()\n };\n \n this._toasts.update(toasts => [...toasts, toast]);\n \n // Auto-dismiss if duration > 0\n if (toast.duration > 0) {\n setTimeout(() => {\n this.dismiss(toast.id);\n }, toast.duration);\n }\n \n return toast.id;\n }\n \n success(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'success', duration });\n }\n \n error(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'error', duration });\n }\n \n warning(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'warning', duration });\n }\n \n info(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'info', duration });\n }\n \n dismiss(id: string): void {\n this._toasts.update(toasts => toasts.filter(t => t.id !== id));\n }\n \n dismissAll(): void {\n this._toasts.set([]);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject, NgZone } from '@angular/core';\nimport { AgToastService } from './ag-toast.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { COOLMAP_CONFIG } from './config';\nimport { CoolmapRoute } from './data-model';\n\n// Declare google for map types\ndeclare var google: any;\n\nexport interface LocationAll {\n city: string;\n latitude: string;\n location_id: string;\n longitude: string;\n name: string;\n state: string;\n street: string;\n suite: null;\n zip: string;\n formatted_address: string;\n complete_address: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UtilsService {\n private http = inject(HttpClient);\n private config = inject(COOLMAP_CONFIG);\n private ngZone = inject(NgZone);\n\n // BehaviorSubjects for state (converting to simple Signals later where practical)\n public preventnavChange = new BehaviorSubject(false);\n navChangeObserve = this.preventnavChange.asObservable();\n clearViewRouteforJobCode = new BehaviorSubject(false);\n clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();\n preVentJobdetailclose = new BehaviorSubject(false);\n getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();\n routeDetailsUtility = new BehaviorSubject({});\n getrouteDetailsUtility = this.routeDetailsUtility.asObservable();\n removeMapEntity = new BehaviorSubject<any>({});\n removeMapEntityUtility = this.removeMapEntity.asObservable();\n \n dict = new Map<string, string>();\n \n unitsList: any;\n materialsList: any;\n materialsListForCustomer: any;\n customersList: any;\n locationList: any;\n\n // Options filtering properties\n pickupOptions: any[] = [];\n destOptions: any[] = [];\n ownerOptions: any[] = [];\n customerOptions: any[] = [];\n unitOptions: any[] = [];\n materialOptions: any[] = [];\n jcodeOptions: any[] = [];\n driverOption: any[] = [];\n truckingCompanayOption: any[] = [];\n routeNameOptions: any[] = [];\n\n getDateFormat(strVal: Date | null, seprater?: string) {\n seprater = seprater ? seprater : '-';\n const mydate = strVal;\n if (!mydate) return '';\n \n const month = String(mydate.getMonth() + 1).padStart(2, '0');\n const day = String(mydate.getDate()).padStart(2, '0');\n \n return (\n mydate.getFullYear() +\n seprater +\n month +\n seprater +\n day\n );\n }\n\n getData(path: string) {\n return this.http.get(`${this.config.analyticsRESTURL}${this.config.repository}/${path}`);\n }\n \n getRestData(path: string) {\n return this.http.get(`${this.config.RESTURLPrefix}${path}`);\n }\n \n postdata(path: string, data: any) {\n return this.http.post(`${this.config.analyticsRESTURL}${this.config.repository}/${path}`, data);\n }\n \n postDataWithRestUrl(path: string, data: any) {\n return this.http.post(`${this.config.RESTURLPrefix}${path}`, data);\n }\n\n toastService = inject(AgToastService);\n\n // Instead of MatSnackBar, we use AgToastService.\n openSnackBar(message: string, className?: string) {\n if (className === 'success') {\n this.toastService.success(message);\n } else if (className === 'error') {\n this.toastService.error(message);\n } else if (className === 'warning') {\n this.toastService.warning(message);\n } else {\n this.toastService.info(message);\n }\n }\n\n clearOptions() {\n this.pickupOptions = [];\n this.destOptions = [];\n this.ownerOptions = [];\n this.customerOptions = [];\n this.unitOptions = [];\n this.materialOptions = [];\n this.jcodeOptions = [];\n this.routeNameOptions = [];\n }\n\n makeOptions(item: CoolmapRoute) {\n // Porting V1 makeOptions safely\n if (item.order_number) {\n if (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) {\n this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id });\n }\n // Assuming tasks structure if Mapbox Route logic was merged, else driver_list from V1\n const driver_list = (item as any).driver_list || [];\n if (driver_list.length > 0) {\n driver_list.forEach((driver: any) => {\n if (this.driverOption.findIndex((elem) => elem === driver.driver_name) === -1) {\n this.driverOption.push(driver.driver_name);\n }\n if (this.truckingCompanayOption.findIndex((elem) => elem === driver.trucking_company) === -1) {\n this.truckingCompanayOption.push(driver.trucking_company);\n }\n });\n }\n }\n if (item.pickup_location && this.pickupOptions.findIndex((elem) => elem === item.pickup_location) === -1)\n this.pickupOptions.push(item.pickup_location);\n if (item.delivery_location && this.destOptions.findIndex((elem) => elem === item.delivery_location) === -1)\n this.destOptions.push(item.delivery_location);\n if (item.customer_name && this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1)\n this.customerOptions.push(item.customer_name);\n if (item.unit && this.unitOptions.findIndex((elem) => elem === item.unit) === -1)\n this.unitOptions.push(item.unit);\n if (item.material && this.materialOptions.findIndex((elem) => elem === item.material) === -1)\n this.materialOptions.push(item.material);\n if (item.route_name && this.routeNameOptions.findIndex((elem) => elem === item.route_name) === -1)\n this.routeNameOptions.push(item.route_name);\n }\n\n setdictValue(key: string, value: string) {\n this.dict.set(key, value);\n }\n \n getdictValue(key: string) {\n const val = this.dict.get(key);\n return val ? JSON.parse(val) : null;\n }\n \n removedictValue(key: string) {\n this.dict.delete(key);\n }\n\n filter(value: string, filters: any[]) {\n if (typeof value !== 'string') {\n return [];\n }\n const filterValue = value.toLowerCase();\n if (filterValue === '') {\n return [];\n }\n const searchResults: any[] = [];\n this.unitOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'unit', label: unit, value: unit });\n }\n });\n this.customerOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'customer', label: unit, value: unit });\n }\n });\n\n if(this.materialOptions && this.materialOptions.length) {\n this.materialOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'material', label: unit, value: unit });\n }\n });\n }\n this.pickupOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'pickup location',\n label: unit,\n value: unit,\n });\n }\n });\n this.destOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'destination location',\n label: unit,\n value: unit,\n });\n }\n });\n this.jcodeOptions.forEach((unit) => {\n if (unit.job_code.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'job',\n label: unit['job_code'],\n value: unit,\n });\n }\n });\n this.driverOption.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'Driver', label: unit, value: unit });\n }\n });\n\n this.truckingCompanayOption.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'Trucking Company',\n label: unit,\n value: unit,\n });\n }\n });\n this.routeNameOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'Route name', label: unit, value: unit });\n }\n });\n \n // Filter out options that are already selected in the filters array\n const searchDict: any = {};\n filters.forEach((filter: any) => {\n searchDict[filter['name'] + filter['type']] = filter;\n });\n const furtherFilter: any[] = [];\n searchResults.forEach((search) => {\n if (!(search['label'] + search['type'] in searchDict)) {\n furtherFilter.push(search);\n }\n });\n return furtherFilter;\n }\n\n getSearchResults(list: CoolmapRoute[], filterval: any[]): any[] {\n return list.filter((element: any) => {\n const result_list_boolean: boolean[] = [];\n if (filterval.length > 0) {\n if (filterval[0]['type'] === 'unit') {\n result_list_boolean.push(\n filterval[0]['name'] === element['unit']\n );\n }\n if (filterval[0]['type'] === 'customer') {\n result_list_boolean.push(\n filterval[0]['name'] === element['customer_name']\n );\n }\n if (filterval[0]['type'] === 'material') {\n result_list_boolean.push(\n filterval[0]['name'] === element['material']\n );\n }\n if (filterval[0]['type'] === 'pickup location') {\n result_list_boolean.push(\n filterval[0]['name'] === element['pickup_location']\n );\n }\n if (filterval[0]['type'] === 'destination location') {\n result_list_boolean.push(\n filterval[0]['name'] === element['delivery_location']\n );\n }\n if (filterval[0]['type'] === 'job') {\n result_list_boolean.push(\n filterval[0]['name'] === element['order_number']\n );\n }\n if (filterval[0]['type'] === 'Route name') {\n result_list_boolean.push(\n filterval[0]['name'] === element['route_name']\n );\n }\n if (filterval[0]['type'] === 'Driver') {\n const driverList = element.driver_list || [];\n const index = driverList.findIndex((ele: any) => {\n return filterval[0]['name'] === ele['driver_name'];\n });\n if (index !== -1) result_list_boolean.push(true);\n }\n if (filterval[0]['type'] === 'Trucking Company') {\n const driverList = element.driver_list || [];\n const index = driverList.findIndex((ele: any) => {\n return filterval[0]['name'] === ele['trucking_company'];\n });\n if (index !== -1) result_list_boolean.push(true);\n }\n }\n if (result_list_boolean.length > 0) {\n return result_list_boolean.reduce((prev, curr) => prev && curr);\n }\n return false;\n });\n }\n\n fetchUnitsList() {\n return new Promise((resolve) => {\n if (!this.unitsList) {\n this.getData('unit/list/view').subscribe((res: any) => {\n if (res) {\n this.unitsList = res.data;\n resolve(this.unitsList);\n }\n });\n } else {\n resolve(this.unitsList);\n }\n });\n }\n\n fetchMaterialsListForCustomer() {\n return new Promise((resolve) => {\n if (!this.materialsListForCustomer) {\n this.getData('material/list/view').subscribe((res: any) => {\n this.materialsListForCustomer = this.filtermaterialList(res.data);\n resolve(this.materialsListForCustomer);\n });\n } else {\n resolve(this.materialsListForCustomer);\n }\n });\n }\n\n filtermaterialList(list: any[]) {\n let meterialList: any[] = [];\n list.forEach((item) => {\n if (item.sub && item.sub.length > 0) {\n item.sub.forEach((subItem: any) => {\n if (subItem.add_to_marketplace) {\n subItem.material = item.material;\n subItem.material_id = item.material_id;\n subItem.label = item.material + ' | ' + subItem.sub_material;\n meterialList.push(subItem);\n }\n });\n }\n });\n meterialList.sort((a, b) => a.label.localeCompare(b.label));\n return meterialList;\n }\n\n fetchCustomersList() {\n return new Promise((resolve) => {\n if (!this.customersList) {\n this.getData('company/list/view').subscribe((res: any) => {\n if (res) {\n this.customersList = res.data;\n resolve(this.customersList);\n }\n });\n } else {\n resolve(this.customersList);\n }\n });\n }\n\n fetchLocationlist() {\n return new Promise((resolve, reject) => {\n this.getRestData('locations/all').subscribe({\n next: (res: any) => {\n if (res) {\n this.locationList = res.data.map((object: any) => {\n object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;\n return {\n city: object.city,\n lng: object.longitude,\n location_id: object.location_id,\n lat: object.latitude,\n name: object.name,\n state: object.state,\n street: object.street,\n zip: object.zip,\n formatted_address: object.formatted_address\n };\n });\n resolve(this.locationList);\n }\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n });\n }\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport mapboxgl from 'mapbox-gl';\nimport * as turf from '@turf/turf';\nimport { COOLMAP_CONFIG } from './config';\nimport { UtilsService } from './utils.service';\n\nexport interface PopupData {\n coordinate: [number, number];\n pickup?: string;\n drop?: string;\n jobCode?: string;\n customer?: string;\n routeType?: string;\n title?: string;\n material?: string;\n type?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MapboxService {\n map!: mapboxgl.Map;\n mapContainer: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n markerOriginList = new Map<string, mapboxgl.Marker>();\n markerDestinationList = new Map<string, mapboxgl.Marker>();\n private activeRoutesRegistry = new Map<string, any>();\n private pathCache = new Map<string, any[]>();\n \n // Native 3D Simulation Engine \n svgOverlay: SVGSVGElement | null = null;\n activeArcs: { \n [index: string]: { \n origin: [number, number], \n destination: [number, number], \n color: string, \n pathEl: SVGPathElement \n } \n } = {};\n \n initiatecoolmap = new BehaviorSubject(true);\n reintiatecoolmap = this.initiatecoolmap.asObservable();\n \n isMapReady = signal(false);\n bounds = new mapboxgl.LngLatBounds();\n private originDestinationCordinates = new Map<string, any[]>();\n padding: any;\n windowActualHeightWidth: any = { availHeight: 0 };\n popup!: mapboxgl.Popup;\n customTopForCustomer: number;\n\n utils = inject(UtilsService);\n config = inject(COOLMAP_CONFIG);\n private currentStyleIsDark = false;\n\n constructor() {\n this.customTopForCustomer = this.config.repository === 'customer' ? 65 : 0;\n if (typeof window !== 'undefined') {\n this.windowActualHeightWidth.availHeight = window.innerHeight > window.screen.availHeight ? window.innerHeight : window.screen.availHeight;\n window.addEventListener('resize', this.onResize.bind(this));\n }\n }\n\n updateTheme(isDark: boolean) {\n if (!this.map) {\n this.currentStyleIsDark = isDark;\n return;\n }\n \n if (this.currentStyleIsDark === isDark) return;\n this.currentStyleIsDark = isDark;\n\n const style = isDark \n ? 'mapbox://styles/mapbox/dark-v11' \n : 'mapbox://styles/mapbox/light-v11';\n \n this.map.setStyle(style);\n \n this.map.once('style.load', () => {\n this.reAddLayers();\n });\n }\n\n getRegistryKeys(): string[] {\n return Array.from(this.activeRoutesRegistry.keys());\n }\n\n // Renamed to initializeMap to preserve the existing bindings in coolmap.component.ts\n initializeMap(el: HTMLElement, isDark: boolean = false) {\n this.currentStyleIsDark = isDark;\n const styleUrl = isDark ? 'mapbox://styles/mapbox/dark-v11' : 'mapbox://styles/mapbox/light-v11';\n\n // If map already exists for this container, just update style and clear routes to avoid flickering\n if (this.map && this.mapContainer === el) {\n el.style.transition = 'opacity 0.3s ease-in-out';\n el.style.opacity = '0.7';\n this.map.setStyle(styleUrl);\n return new Promise((resolve) => {\n this.map.once('style.load', () => {\n this.clearAllRoutes();\n this.isMapReady.set(true);\n el.style.opacity = '1';\n resolve(this.map);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n this.mapContainer = el;\n if (this.map) {\n this.map.remove();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n \n // Add a smooth fade-in for fresh initialization\n el.style.transition = 'opacity 0.5s ease-in-out';\n el.style.opacity = '0';\n \n const token = typeof window !== 'undefined' ? (window as any).__env?.mapboxAccessToken || '' : '';\n (mapboxgl as any).accessToken = token;\n\n this.map = new mapboxgl.Map({\n container: el,\n style: styleUrl,\n center: [-77.036873, 38.907192],\n zoom: 10,\n bearing: 0,\n pitch: 65,\n interactive: true,\n attributionControl: false,\n antialias: true,\n projection: { name: 'globe' } as any\n });\n \n this.map.addControl(new mapboxgl.AttributionControl({ compact: true }), 'bottom-right');\n this.map.addControl(new mapboxgl.NavigationControl({ showCompass: false }), 'top-right');\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.map) {\n this.map.resize();\n }\n });\n this.resizeObserver.observe(el);\n\n this.map.once('load', (res) => {\n this.isMapReady.set(true);\n if (this.mapContainer) this.mapContainer.style.opacity = '1';\n resolve(res);\n });\n });\n }\n\n // Animated gradient path\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, routeProps?: any, bottom?: number) {\n return new Promise((resolve) => {\n if (!this.map || !this.isMapReady()) return resolve(false);\n\n const origin = pinRouteGeojson.features[0].geometry.coordinates[0];\n const linecolor = unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1';\n const destination = pinRouteGeojson.features[0].geometry.coordinates[\n pinRouteGeojson.features[0].geometry.coordinates.length - 1\n ];\n\n const registryId = `addroute-${index}`;\n this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true, registryId).then(() => {\n const point: any = {\n type: 'FeatureCollection',\n features: [\n { type: 'Feature', properties: {}, geometry: { type: 'Point', coordinates: origin } },\n ],\n };\n\n const lineDistance = turf.length(pinRouteGeojson.features[0]);\n const arc = [];\n const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;\n for (let i = 0; i < lineDistance; i += lineDistance / steps) {\n const segment = turf.along(pinRouteGeojson.features[0], i);\n arc.push(segment.geometry.coordinates);\n }\n pinRouteGeojson.features[0].geometry.coordinates = arc;\n const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;\n\n if (pinRoute && pinRoute.length) {\n const marker = new mapboxgl.Marker(document.createElement('div'))\n .setLngLat(pinRoute[0])\n .addTo(this.map)\n .togglePopup();\n\n if (this.map.getSource(`line${index}`)) {\n this.removeRouteAndMarker(index, 'addroute').then(() => {});\n }\n\n this.map.addSource(`line${index}`, {\n type: 'geojson',\n lineMetrics: true,\n data: pinRouteGeojson,\n });\n\n this.map.addLayer({\n type: 'line',\n source: `line${index}`,\n id: `line${index}`,\n paint: {\n 'line-width': 2,\n 'line-gradient': [\n 'interpolate', ['linear'], ['line-progress'],\n 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',\n 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',\n ],\n },\n layout: { 'line-cap': 'round', 'line-join': 'round' },\n });\n\n const dataSetForMap = {\n counter: 0,\n pinRouteGeojson,\n steps,\n point,\n pointId: `point${index}`,\n marker,\n pinRoute,\n lineId: `line${index}`,\n index,\n origin,\n destination,\n lineDistance,\n linecolor,\n route: routeProps,\n routeType: 'addroute',\n isViewRoute: true,\n };\n\n this.createMarker(dataSetForMap);\n\n this.map.on('mouseenter', `line${index}`, (e: any) => {\n this.map.setPaintProperty(`line${index}`, 'line-width', 5);\n this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);\n const datasetForPopup: PopupData = {\n coordinate: [e.lngLat.lng, e.lngLat.lat],\n pickup: routeProps?.pickup_location || '',\n drop: routeProps?.delivery_location || '',\n routeType: routeProps?.project ? 'Project' : 'Route',\n title: routeProps?.project ? routeProps.project : routeProps?.route_name || '',\n material: routeProps?.material || '',\n type: routeProps?.unit || '',\n };\n if(this.popup) this.popup.remove();\n this.createPopup(datasetForPopup);\n });\n\n this.map.on('mouseleave', `line${index}`, () => {\n this.map.setPaintProperty(`line${index}`, 'line-width', 2);\n if (this.popup) this.popup.remove();\n });\n }\n });\n\n this.map.once('idle', () => {\n resolve(true);\n });\n });\n }\n\n\n createMarker(routeDetails: any) {\n if (!this.map || !routeDetails.origin[0] || !routeDetails.origin[1] || !routeDetails.destination[0] || !routeDetails.destination[1]) return;\n \n const popup = new mapboxgl.Popup({ closeButton: false, className: 'pointer-events-none', offset: 20 }).setHTML('<div class=\"p-3\"><b>Pickup: </b>' + (routeDetails.route?.pickup_location || '') + '</div>');\n const popupForDestination = new mapboxgl.Popup({ closeButton: false, className: 'pointer-events-none', offset: 20 }).setHTML('<div class=\"p-3\"><b>Delivery: </b>' + (routeDetails.route?.delivery_location || '') + '</div>');\n\n // Origin Marker (Pickup)\n const el = document.createElement('div');\n el.className = 'cursor-pointer active:scale-95 transition-transform duration-200 drop-shadow-lg';\n el.style.zIndex = '100';\n const pickupLabel = 'P';\n el.innerHTML = `\n <svg width=\"30\" height=\"38\" viewBox=\"0 0 30 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 0C6.71573 0 0 6.71573 0 15C0 26.25 15 38 15 38C15 38 30 26.25 30 15C30 6.71573 23.2843 0 15 0Z\" fill=\"${routeDetails.linecolor}\"/>\n <circle cx=\"15\" cy=\"15\" r=\"9\" fill=\"white\"/>\n <text x=\"15\" y=\"19\" text-anchor=\"middle\" fill=\"black\" style=\"font-family: Inter, sans-serif; font-size: 13px; font-weight: 800;\">${pickupLabel}</text>\n </svg>\n `;\n\n const originMarker = new mapboxgl.Marker({ element: el, anchor: 'bottom' })\n .setLngLat(routeDetails.origin)\n .addTo(this.map);\n\n originMarker.getElement().addEventListener('mouseenter', () => {\n popup.setLngLat(routeDetails.origin).addTo(this.map);\n });\n originMarker.getElement().addEventListener('mouseleave', () => {\n popup.remove();\n });\n\n // Destination Marker (Delivery)\n const elementForDestination = document.createElement('div');\n elementForDestination.className = 'cursor-pointer active:scale-95 transition-transform duration-200 drop-shadow-lg';\n elementForDestination.style.zIndex = '100';\n const deliveryLabel = 'D';\n elementForDestination.innerHTML = `\n <svg width=\"30\" height=\"38\" viewBox=\"0 0 30 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 0C6.71573 0 0 6.71573 0 15C0 26.25 15 38 15 38C15 38 30 26.25 30 15C30 6.71573 23.2843 0 15 0Z\" fill=\"${routeDetails.linecolor}\"/>\n <circle cx=\"15\" cy=\"15\" r=\"9\" fill=\"white\"/>\n <text x=\"15\" y=\"19\" text-anchor=\"middle\" fill=\"black\" style=\"font-family: Inter, sans-serif; font-size: 13px; font-weight: 800;\">${deliveryLabel}</text>\n </svg>\n `;\n\n const destinationMarker = new mapboxgl.Marker({ element: elementForDestination, anchor: 'bottom' })\n .setLngLat(routeDetails.destination)\n .addTo(this.map);\n \n destinationMarker.getElement().addEventListener('mouseenter', () => {\n popupForDestination.setLngLat(routeDetails.destination).addTo(this.map);\n });\n destinationMarker.getElement().addEventListener('mouseleave', () => {\n popupForDestination.remove();\n });\n\n const id = `${routeDetails.routeType}-${routeDetails.index}`;\n this.markerOriginList.set(id, originMarker);\n this.markerDestinationList.set(id, destinationMarker);\n\n // True 3D Elevated Arc Simulation Engine using Native SVG Overlays\n try {\n this.initSvgOverlay();\n\n const pathEl = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n pathEl.setAttribute('fill', 'none');\n pathEl.setAttribute('stroke-width', '3');\n pathEl.style.cursor = 'pointer';\n pathEl.style.pointerEvents = 'stroke'; // Allow interactivity!\n \n const gradId = `arc-grad-${id}`;\n const defs = this.svgOverlay!.querySelector('defs')!;\n let grad = defs.querySelector(`#${gradId}`);\n if (!grad) {\n grad = document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient');\n grad.setAttribute('id', gradId);\n defs.appendChild(grad);\n }\n \n grad.innerHTML = `\n <stop offset=\"0%\" stop-color=\"${routeDetails.linecolor}\" stop-opacity=\"1\"/>\n <stop offset=\"100%\" stop-color=\"#ffffff\" stop-opacity=\"0.8\"/>\n `;\n \n pathEl.setAttribute('stroke', `url(#${gradId})`);\n this.svgOverlay!.appendChild(pathEl);\n\n this.activeArcs[id] = {\n origin: routeDetails.origin,\n destination: routeDetails.destination,\n color: routeDetails.linecolor,\n pathEl\n };\n\n // Native tooltips hovering strictly matching V1 Deck.GL behaviors\n pathEl.addEventListener('mouseenter', (e: MouseEvent) => {\n pathEl.setAttribute('stroke-width', '6');\n \n // Find geo coordinate exactly under cursor natively\n const rect = this.svgOverlay!.getBoundingClientRect();\n const lngLat = this.map.unproject([e.clientX - rect.left, e.clientY - rect.top]);\n\n const payload = {\n layer: { props: { data: { route: routeDetails.route, index: routeDetails.index, routeType: routeDetails.routeType } } },\n coordinate: [lngLat.lng, lngLat.lat],\n color: routeDetails.linecolor\n };\n this.showRoutePopup(payload, e, routeDetails.isViewRoute);\n });\n\n pathEl.addEventListener('mouseleave', () => {\n pathEl.setAttribute('stroke-width', '3');\n const payload = { color: null, layer: { props: { data: { index: routeDetails.index, routeType: routeDetails.routeType } } } };\n this.showRoutePopup(payload, null, routeDetails.isViewRoute);\n });\n\n this.updateSvgPaths(); // Force plot\n } catch(e) {\n console.warn(\"Native overarching arc generation skipped:\", e);\n }\n }\n\n\n showRoutePopup(arcDetails: any, event: any, isViewRoute?: boolean): void {\n const data = arcDetails.layer.props.data;\n const layerId = isViewRoute \n ? `line${data.index}` \n : `route-layer-${data.routeType || 'jobcode'}-${data.index}`;\n \n if (this.popup) {\n this.popup.remove();\n if (this.map.getLayer(layerId)) {\n this.map.setPaintProperty(layerId, 'line-width', 2);\n }\n }\n \n if (arcDetails.color && this.map.getLayer(layerId) && this.map.getLayoutProperty(layerId, 'visibility') !== 'none') {\n this.map.setPaintProperty(layerId, 'line-width', 5);\n \n // Removed line-opacity overwrite here because bezier lines inherit opacity and break if set raw on a gradient.\n\n const datasetForPopup: PopupData = {\n coordinate: arcDetails.coordinate,\n pickup: arcDetails.layer.props.data.route.pickup_location || '',\n drop: arcDetails.layer.props.data.route.delivery_location || '',\n jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',\n customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',\n routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',\n title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name || '',\n material: arcDetails.layer.props.data.route.material || '',\n type: arcDetails.layer.props.data.route.unit || '',\n };\n this.createPopup(datasetForPopup);\n }\n }\n\n\n\n createPopup(datasetForPopup: PopupData): void {\n if(!this.map) return;\n this.popup = new mapboxgl.Popup({\n closeButton: false,\n closeOnClick: false,\n closeOnMove: true,\n className: 'pointer-events-none',\n anchor: 'bottom-left',\n });\n \n // Extract location short names\n const pickupDisplay = datasetForPopup.pickup?.split('|')[1] || datasetForPopup.pickup || 'Unknown Pickup';\n const dropDisplay = datasetForPopup.drop?.split('|')[1] || datasetForPopup.drop || 'Unknown Delivery';\n\n this.popup\n .setLngLat(datasetForPopup.coordinate)\n .setHTML(\n `<div class=\"destination p-3 bg-white dark:bg-slate-800 rounded shadow-lg text-sm text-gray-800 dark:text-gray-200\">\n <div class=\"duration space-y-1 mb-2 bg-gray-100 dark:bg-slate-900 border border-gray-300 dark:border-slate-700 px-2 py-2 rounded-lg text-[12px]\">\n <p class=\"pickprt text-green-600 dark:text-green-400\"><b>Pickup Location:</b> ${pickupDisplay}</p>\n <p class=\"dropprt text-red-600\"><b>Drop Location:</b> ${dropDisplay}</p>\n </div>\n ${datasetForPopup.jobCode ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Job Code:</b> ${datasetForPopup.jobCode}</span>` : ''}\n ${datasetForPopup.customer ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Customer:</b> ${datasetForPopup.customer}</span>` : ''}\n <span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>\n ${datasetForPopup.material ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Material:</b> ${datasetForPopup.material}</span>` : ''}\n <span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Type:</b> ${datasetForPopup.type}</span>\n </div>`\n )\n .addTo(this.map);\n }\n\n // Draw Line\n drawLine(\n cordinates?: any,\n index?: number | any,\n route?: any,\n enablefitbound?: boolean,\n routeType?: string,\n isStyleRefresh?: boolean\n ): Promise<void> {\n return new Promise((resolve) => {\n if (!this.map || !this.isMapReady()) {\n resolve();\n return;\n }\n\n // Calculate bounds for this specific route\n const routeBounds = new mapboxgl.LngLatBounds();\n if (cordinates && cordinates.length > 0) {\n cordinates.forEach((coord: any) => routeBounds.extend(coord));\n }\n\n const registryId = `${routeType}-${index}`;\n // Register the route with its coordinates and pre-calculated bounds\n this.activeRoutesRegistry.set(registryId, { \n cordinates, \n route, \n routeType,\n bounds: routeBounds,\n index\n });\n \n let origin = cordinates[0];\n let destination = cordinates[cordinates.length - 1];\n \n if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {\n // Execute plotting logic IMMEDIATELY to trigger the map's render cycle\n const linecolor = this.provideLineColor(route['unit'], routeType);\n \n if (enablefitbound) {\n const padTop = Math.max(0, (this.padding?.top || 0) + this.customTopForCustomer + 50);\n const padBot = Math.max(0, (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)) + 50);\n const padLeft = Math.max(0, (this.padding?.left || 0) + 350);\n const padRight = Math.max(0, (this.padding?.right || 0) + 50);\n\n const customPadding = { top: padTop, bottom: padBot, left: padLeft, right: padRight };\n this.map.fitBounds([origin, destination], { padding: customPadding, pitch: 65 }, { fitboundCompleteJob: true } as any);\n }\n\n const sourceId = `route-source-${routeType}-${index}`;\n const layerId = `route-layer-${routeType}-${index}`;\n\n if (this.map.getSource(sourceId)) {\n this.removeRouteAndMarker(index, routeType).then(() => {\n this.extendBound(cordinates, enablefitbound, registryId);\n });\n }\n\n this.map.addSource(sourceId, {\n type: 'geojson',\n data: {\n type: 'Feature',\n properties: {},\n geometry: { type: 'LineString', coordinates: cordinates },\n },\n });\n\n this.map.addLayer({\n id: layerId,\n type: 'line',\n source: sourceId,\n paint: { 'line-color': linecolor, 'line-width': 2 },\n layout: { 'line-cap': 'round', 'line-join': 'round' },\n });\n\n if (!isStyleRefresh) {\n const dataSetForMap = { origin, destination, index, linecolor, route, routeType };\n this.createMarker(dataSetForMap);\n }\n\n this.map.on('mouseenter', layerId, (e: any) => {\n if (this.popup) this.popup.remove();\n this.map.setPaintProperty(layerId, 'line-width', 5);\n this.map.setPaintProperty(layerId, 'line-opacity', 1);\n \n const datasetForPopup: PopupData = {\n coordinate: [e.lngLat.lng, e.lngLat.lat],\n pickup: route.pickup_location || '',\n drop: route.delivery_location || '',\n jobCode: route.project ? route.order_number : null,\n customer: route.project ? route.customer_name : null,\n routeType: route.project ? 'Project' : 'Route',\n title: route.project ? route.project : route.route_name || '',\n material: route.material || '',\n type: route.unit || '',\n };\n this.createPopup(datasetForPopup);\n });\n\n this.map.on('mouseleave', layerId, () => {\n this.map.setPaintProperty(layerId, 'line-width', 2);\n if (this.popup) this.popup.remove();\n });\n\n // SAFETY: Use a timeout to ensure resolve() is always called even if 'idle' event skips\n let resolved = false;\n const complete = () => {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n };\n\n this.map.once('idle', complete);\n setTimeout(complete, 500); // 500ms safety timeout\n\n } else {\n resolve();\n }\n });\n }\n\n provideLineColor(unitType: string, type?: string) {\n let checkType = type && !['jobrouteList', 'addroute', 'viewroute'].includes(type) ? true : false;\n let color;\n switch (unitType) {\n case 'Ton':\n color = checkType ? '#39c471' : '#ff7272';\n break;\n case 'Load':\n color = checkType ? '#326ad3' : '#a3c52e';\n break;\n case 'Hourly':\n color = checkType ? '#ffad56' : '#ae23d1';\n break;\n default:\n color = '#3b82f6';\n break;\n }\n return color;\n }\n\n hexToRGB(hex: any): [number, number, number] {\n return hex\n .replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m: any, r: any, g: any, b: any) => '#' + r + r + g + g + b + b)\n .substring(1)\n .match(/.{2}/g)\n .map((x: any) => parseInt(x, 16));\n }\n\n // --- SVG 3D Engine Methods ---\n initSvgOverlay() {\n if (this.svgOverlay || !this.mapContainer) return;\n\n this.svgOverlay = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this.svgOverlay.style.position = 'absolute';\n this.svgOverlay.style.top = '0';\n this.svgOverlay.style.left = '0';\n this.svgOverlay.style.width = '100%';\n this.svgOverlay.style.height = '100%';\n this.svgOverlay.style.pointerEvents = 'none';\n this.svgOverlay.style.zIndex = '10';\n\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n this.svgOverlay.appendChild(defs);\n\n this.mapContainer.appendChild(this.svgOverlay);\n\n this.map.on('render', () => this.updateSvgPaths());\n }\n\n updateSvgPaths() {\n if (!this.svgOverlay || !this.map) return;\n \n for (const key in this.activeArcs) {\n const arc = this.activeArcs[key];\n const p1 = this.map.project(arc.origin);\n const p2 = this.map.project(arc.destination);\n \n // Safety Guard: Check for Infinity and extreme numbers (Number.MAX_VALUE) \n // which Mapbox can return during transitions. \n // 1e15 is a safe threshold for JS math and SVG rendering engines.\n const isUsable = (p: mapboxgl.Point) => \n Number.isFinite(p.x) && Math.abs(p.x) < 1e15 && \n Number.isFinite(p.y) && Math.abs(p.y) < 1e15;\n\n if (!isUsable(p1) || !isUsable(p2)) continue;\n\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n const dist = Math.sqrt(dx*dx + dy*dy);\n \n // Secondary check for distance finiteness\n if (!Number.isFinite(dist) || dist > 1e15) continue;\n\n const mx = (p1.x + p2.x) / 2;\n let controlY = ((p1.y + p2.y) / 2) - (dist * 1.05); \n \n // Final sanity check for calculated curve peaks\n controlY = Math.max(100, controlY);\n if (!Number.isFinite(controlY) || !Number.isFinite(mx)) continue;\n \n // Update with rounded values to ensure clean and valid attribute data\n arc.pathEl.setAttribute('d', `M ${p1.x.toFixed(2)} ${p1.y.toFixed(2)} Q ${mx.toFixed(2)} ${controlY.toFixed(2)} ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`);\n\n // Sync the gradient positioning physically mapped to coordinate space\n const grad = this.svgOverlay.querySelector(`#arc-grad-${key}`) as SVGLinearGradientElement;\n if (grad) {\n const minX = Math.min(p1.x, p2.x);\n const maxX = Math.max(p1.x, p2.x);\n const minY = Math.min(p1.y, p2.y, controlY);\n const maxY = Math.max(p1.y, p2.y, controlY);\n const w = Math.max(1, maxX - minX);\n const h = Math.max(1, maxY - minY);\n \n grad.setAttribute('x1', `${((p1.x - minX) / w) * 100}%`);\n grad.setAttribute('y1', `${((p1.y - minY) / h) * 100}%`);\n grad.setAttribute('x2', `${((p2.x - minX) / w) * 100}%`);\n grad.setAttribute('y2', `${((p2.y - minY) / h) * 100}%`);\n }\n }\n }\n\n async removeRouteAndMarker(index: number | string | any, routeType: string = 'jobcode') {\n const registryId = `${routeType}-${index}`;\n // Clean up registry\n if (this.activeRoutesRegistry.has(registryId)) {\n this.activeRoutesRegistry.delete(registryId);\n }\n if (!this.map) return true;\n try {\n if (this.activeArcs[registryId]) {\n const arc = this.activeArcs[registryId];\n if (arc.pathEl.parentNode) arc.pathEl.parentNode.removeChild(arc.pathEl);\n delete this.activeArcs[registryId];\n }\n if (this.svgOverlay) {\n const grad = this.svgOverlay.querySelector(`defs #arc-grad-${registryId}`);\n if (grad && grad.parentNode) grad.parentNode.removeChild(grad);\n }\n \n const layerId = `route-layer-${routeType}-${index}`;\n const sourceId = `route-source-${routeType}-${index}`;\n\n this.map.getLayer(layerId) ? this.map.removeLayer(layerId) : null;\n this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : null;\n this.map.getSource(sourceId) ? this.map.removeSource(sourceId) : null;\n this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : null;\n \n this.markerOriginList.get(registryId)?.remove();\n this.markerOriginList.delete(registryId);\n \n this.markerDestinationList.get(registryId)?.remove();\n this.markerDestinationList.delete(registryId);\n\n this.markerOriginList.get(String(index))?.remove();\n this.markerDestinationList.get(String(index))?.remove();\n\n this.originDestinationCordinates.delete(registryId);\n this.originDestinationCordinates.delete(String(index));\n\n if (this.popup) this.popup.remove();\n return true;\n } catch (e) {\n console.warn('Error removing route/marker:', e);\n return false;\n }\n }\n\n private reAddLayers() {\n this.activeRoutesRegistry.forEach((data, regId) => {\n // Use the stored raw index instead of the composite registry key\n this.drawLine(data.cordinates, data.index, data.route, false, data.routeType, true);\n });\n }\n\n findMarkerBound(index: any) {\n const id = String(index);\n const originMarker = this.markerOriginList.get(id);\n const originLng = originMarker?.getLngLat()?.lng;\n const originLat = originMarker?.getLngLat()?.lat;\n if (originLng !== undefined && originLat !== undefined) {\n for (const [key, x] of this.originDestinationCordinates.entries()) {\n if (\n x[0][0].toFixed(6) === originLng.toFixed(6) &&\n x[0][1].toFixed(6) === originLat.toFixed(6)\n ) {\n this.originDestinationCordinates.delete(key);\n break;\n }\n }\n }\n }\n\n async filterRoute(ID: any, visibility: 'visible' | 'none', showAllFitbound?: boolean) {\n if (ID && this.map) {\n if (this.map.getLayer(`route-for-job-code${ID}`)) {\n this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);\n const id = String(ID);\n const originM = this.markerOriginList.get(id);\n if (originM) {\n originM.getElement().style.display = visibility === 'visible' ? 'block' : 'none';\n }\n const destinationM = this.markerDestinationList.get(id);\n if (destinationM) {\n destinationM.getElement().style.display = visibility === 'visible' ? 'block' : 'none';\n }\n if (this.activeArcs[ID]) {\n this.activeArcs[ID].pathEl.style.display = visibility === 'visible' ? 'block' : 'none';\n }\n if (visibility === 'none' && showAllFitbound) {\n this.findMarkerBound(ID);\n this.extendReBound();\n }\n }\n if (this.map.getLayer(`arc-layer${ID}`)) {\n this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);\n }\n }\n return true;\n }\n\n extendBound(route: any, showAllFitbound: boolean | undefined, id?: string) {\n return new Promise((resolve) => {\n if (route && this.map && id) {\n if (typeof route === 'string') {\n let path: any = route.split(';');\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n route = path;\n }\n if (route[0] && route[0][0] && route[0][1] && route[route.length - 1] && route[route.length - 1][0] && route[route.length - 1][1]) {\n this.originDestinationCordinates.set(id, route);\n }\n }\n\n const localBounds = new mapboxgl.LngLatBounds();\n if (this.originDestinationCordinates.size > 0) {\n this.originDestinationCordinates.forEach((routeItem: any) => {\n routeItem.forEach((coord: any) => {\n localBounds.extend(coord as mapboxgl.LngLatLike);\n });\n });\n }\n this.bounds = localBounds;\n\n if (showAllFitbound && this.map && !localBounds.isEmpty()) {\n requestAnimationFrame(() => {\n this.map.stop();\n this.map.fitBounds(localBounds, { \n pitch: 65, \n maxZoom: 12, \n padding: 100, \n duration: 1000 \n }, { fitboundComplete: true } as any);\n });\n\n this.map.once('moveend', (event: any) => {\n if (event.fitboundComplete) {\n resolve(true);\n }\n });\n } else {\n resolve(true); \n }\n });\n }\n\n extendReBound(bottom?: number) {\n return new Promise((resolve) => {\n const localBounds = new mapboxgl.LngLatBounds();\n if (this.originDestinationCordinates.size > 0) {\n this.originDestinationCordinates.forEach((item: any) => {\n item.forEach((route: any) => {\n localBounds.extend(route as mapboxgl.LngLatLike);\n });\n });\n this.bounds = localBounds;\n\n const padTop = Math.max(0, (this.padding?.top || 0) + this.customTopForCustomer + 80);\n const padBot = Math.max(0, (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)) + 80);\n const padLeft = Math.max(0, (this.padding?.left || 0) + 350);\n const padRight = Math.max(0, (this.padding?.right || 0) + 80);\n\n const customPadding = {\n top: padTop, bottom: padBot,\n left: padLeft, right: padRight,\n };\n\n requestAnimationFrame(() => {\n if (!localBounds.isEmpty() && this.map) {\n this.map.stop();\n this.map.fitBounds(localBounds, { \n padding: customPadding, \n pitch: 65, \n maxZoom: 12,\n duration: 1000\n });\n }\n });\n resolve(true);\n } else {\n resolve(true);\n }\n });\n }\n\n async plotRoute(\n route: any,\n i: number | any,\n type: string,\n enablefitbound?: boolean,\n showAllFitbound?: boolean\n ): Promise<boolean> {\n const cacheKey = route['job_id'] || route['route_id'];\n \n // 1. Check cache FIRST\n if (this.pathCache.has(cacheKey)) {\n const path = this.pathCache.get(cacheKey)!;\n route['path'] = path;\n this.extendBound(path, showAllFitbound);\n await this.drawLine(path, i, route, enablefitbound, type);\n route['index'] = i;\n return true;\n }\n\n // 2. Check for inline path (Avoid API if already available)\n if (route['path'] && (Array.isArray(route['path']) || typeof route['path'] === 'string')) {\n let path = typeof route['path'] === 'string' ? route['path'].split(';') : route['path'];\n \n if (Array.isArray(path) && path.length > 0) {\n // Format if they are still strings\n if (typeof path[0] === 'string') {\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n }\n \n if (path.length > 0) {\n this.pathCache.set(cacheKey, path);\n route['path'] = path;\n this.extendBound(path, showAllFitbound);\n await this.drawLine(path, i, route, enablefitbound, type);\n route['index'] = i;\n return true;\n }\n }\n }\n\n // 3. Fallback to API call ONLY for jobcode (if path was missing)\n return new Promise((resolve, reject) => {\n if (['jobcode'].includes(type) || route['job_id']) {\n let param: any = { job: route['job_id'] };\n this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe({\n next: async (res: any) => {\n let path: any[] = [];\n if (res['data'] && res['data']['route']) {\n path = res['data']['route'].split(';');\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n this.pathCache.set(cacheKey, path);\n }\n\n if (path && path.length > 0) {\n route['path'] = path;\n this.extendBound(route['path'], showAllFitbound);\n await this.drawLine(route['path'], i, route, enablefitbound, type);\n route['index'] = i;\n } else {\n this.extendBound(null, showAllFitbound);\n }\n resolve(true);\n },\n error: (err) => {\n console.warn('Failed path retrieval', err);\n reject(false);\n }\n });\n } else {\n this.extendBound(null, showAllFitbound);\n resolve(true);\n }\n });\n }\n\n /**\n * Batch toggle visibility for routes on the map.\n * If visibleIds is empty, shows everything in the registry.\n * Otherwise, shows only those in visibleIds and hides the rest.\n */\n setRoutesVisibility(visibleIds: string[], showAllOverride?: boolean, prefix?: string) {\n const showAll = showAllOverride !== undefined ? showAllOverride : (visibleIds.length === 0);\n \n this.activeRoutesRegistry.forEach((data, id) => {\n const registryId = String(id).trim();\n \n // If a prefix is provided, only operate on routes matching that prefix.\n if (prefix && !registryId.startsWith(`${prefix}-`)) {\n return;\n }\n\n const isVisible = showAll || visibleIds.includes(registryId);\n const visibility = isVisible ? 'visible' : 'none';\n const display = isVisible ? 'block' : 'none';\n\n // Toggle New Layer Format\n const newLayerId = `route-layer-${data.routeType}-${data.index || id}`;\n if (this.map.getLayer(newLayerId)) {\n this.map.setLayoutProperty(newLayerId, 'visibility', visibility);\n }\n\n // Legacy/Alternate Layer Formats\n const legacyId = `route-for-job-code${id}`;\n if (this.map.getLayer(legacyId)) {\n this.map.setLayoutProperty(legacyId, 'visibility', visibility);\n }\n if (this.map.getLayer(`line${id}`)) {\n this.map.setLayoutProperty(`line${id}`, 'visibility', visibility);\n }\n\n // Toggle Markers\n const originM = this.markerOriginList.get(registryId);\n if (originM) originM.getElement().style.display = display;\n \n const destM = this.markerDestinationList.get(registryId);\n if (destM) destM.getElement().style.display = display;\n\n // Toggle Arcs\n if (this.activeArcs[registryId]) {\n this.activeArcs[registryId].pathEl.style.display = display;\n }\n });\n \n // Recalculate bounds based on visible routes\n this.recalculateVisibleBounds(visibleIds);\n }\n\n private recalculateVisibleBounds(visibleIds: string[]) {\n const showAll = visibleIds.length === 0;\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n const normalizedVisibleIds = visibleIds.map(vid => String(vid).trim());\n\n this.activeRoutesRegistry.forEach((data, id) => {\n const registryId = String(id).trim();\n if (showAll || normalizedVisibleIds.includes(registryId)) {\n if (data.bounds && !data.bounds.isEmpty()) {\n this.bounds.extend(data.bounds);\n this.originDestinationCordinates.set(registryId, data.cordinates);\n } else if (data.cordinates && data.cordinates.length > 0) {\n // Fallback if bounds weren't pre-calculated\n data.cordinates.forEach((coord: any) => this.bounds.extend(coord));\n this.originDestinationCordinates.set(registryId, data.cordinates);\n }\n }\n });\n\n if (!this.bounds.isEmpty() && this.map) {\n const canvas = this.map.getCanvas();\n const mapW = canvas.clientWidth;\n const mapH = canvas.clientHeight;\n\n let padTop = Math.max(0, (Number(this.padding?.top) || 0) + (Number(this.customTopForCustomer) || 0) + 80);\n let padBot = Math.max(0, (Number(this.padding?.bottom) || 0) + (Math.max(0, Number(this.windowActualHeightWidth.availHeight) - (Number(window.innerHeight) - 65))) + 80);\n let padLeft = Math.max(0, (Number(this.padding?.left) || 0) + (window.innerWidth > 1000 ? 350 : 50));\n let padRight = Math.max(0, (Number(this.padding?.right) || 0) + 80);\n\n // Safety Clamps: Ensure padding doesn't exceed canvas size\n const maxHorizPad = mapW * 0.8;\n const maxVertPad = mapH * 0.8;\n\n if (padLeft + padRight > maxHorizPad) {\n const factor = maxHorizPad / (padLeft + padRight);\n padLeft *= factor;\n padRight *= factor;\n }\n\n if (padTop + padBot > maxVertPad) {\n const factor = maxVertPad / (padTop + padBot);\n padTop *= factor;\n padBot *= factor;\n }\n\n try {\n this.map.fitBounds(this.bounds, {\n padding: { top: padTop, bottom: padBot, left: padLeft, right: padRight },\n pitch: 65,\n maxZoom: 12,\n duration: 800\n });\n } catch (err) {\n console.warn('fitBounds failed, trying with default padding', err);\n this.map.fitBounds(this.bounds, { padding: 50, pitch: 65, maxZoom: 12 });\n }\n }\n }\n\n async clearAllRoutes() {\n // 1. Remove all markers\n this.markerOriginList.forEach(marker => marker.remove());\n this.markerDestinationList.forEach(marker => marker.remove());\n this.markerOriginList.clear();\n this.markerDestinationList.clear();\n\n // 2. Remove all arcs\n Object.keys(this.activeArcs).forEach(index => {\n const arc = this.activeArcs[index];\n if (arc.pathEl.parentNode) arc.pathEl.parentNode.removeChild(arc.pathEl);\n if (this.svgOverlay) {\n const grad = this.svgOverlay.querySelector(`defs #arc-grad-${index}`);\n if (grad && grad.parentNode) grad.parentNode.removeChild(grad);\n }\n });\n this.activeArcs = {};\n\n // 3. Remove all line layers and sources using registry metadata\n this.activeRoutesRegistry.forEach((data, regId) => {\n const type = data.routeType || 'jobcode';\n const idx = data.index || regId.split('-').pop();\n\n const layerId = `route-layer-${type}-${idx}`;\n const sourceId = `route-source-${type}-${idx}`;\n\n this.map.getLayer(layerId) ? this.map.removeLayer(layerId) : null;\n this.map.getSource(sourceId) ? this.map.removeSource(sourceId) : null;\n \n // Legacy fallback cleanup\n this.map.getLayer(`line${idx}`) ? this.map.removeLayer(`line${idx}`) : null;\n this.map.getSource(`line${idx}`) ? this.map.removeSource(`line${idx}`) : null;\n this.map.getLayer(`route-for-job-code${idx}`) ? this.map.removeLayer(`route-for-job-code${idx}`) : null;\n this.map.getSource(`route-source-for-job-code${idx}`) ? this.map.removeSource(`route-source-for-job-code${idx}`) : null;\n });\n\n // 4. Reset registries and bounds\n this.activeRoutesRegistry.clear();\n this.originDestinationCordinates.clear();\n this.bounds = new mapboxgl.LngLatBounds();\n \n if (this.popup) this.popup.remove();\n \n return true;\n }\n\n clearBound() {\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n this.clearPadding();\n }\n\n formateLatLong(latlong: string) {\n return latlong ? latlong.split(',').map((x) => +x).reverse() : null;\n }\n\n clearBoundWithCordinates() {\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n }\n\n onResize(event: any) {\n if (!this.bounds.isEmpty() && this.map) {\n this.windowActualHeightWidth.availHeight =\n window.innerHeight > window.screen.availHeight ? window.innerHeight : window.screen.availHeight;\n setTimeout(() => {\n const hRes = event.target ? event.target.innerHeight : window.innerHeight;\n this.map.fitBounds(this.bounds, {\n padding: {\n top: (this.padding?.top || 0) + this.customTopForCustomer,\n bottom: (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (hRes - 65)),\n left: (this.padding?.left || 0),\n right: (this.padding?.right || 0),\n },\n pitch: 65,\n });\n }, 500);\n }\n }\n\n setWindowHeight(screen: any) {\n this.windowActualHeightWidth.availHeight = screen;\n }\n\n setPadding(padding: any) {\n this.padding = padding;\n }\n\n clearPadding() {\n this.padding = null;\n }\n\n removeJobFromMap(data: any[]) {\n data.forEach((ele: any, index: number) => {\n const id = ele['job_id'] ? ele['job_id'] : ele['route_id'];\n this.removeRouteAndMarker(id);\n if (index === data.length - 1) {\n this.extendReBound();\n }\n });\n }\n\n resize() {\n if (this.map) {\n setTimeout(() => this.map.resize(), 0);\n }\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { MapboxService } from './mapbox.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CoolmapService {\n public mapbox = inject(MapboxService);\n public isLoading = signal(true);\n public isDataFetched = signal(false);\n public plottingIds = signal<Set<string>>(new Set());\n public resetModals = signal<number>(0);\n\n plotRoute(route: any, i?: number | any, type: string = 'jobcode', enablefitbound?: boolean, showAllFitbound?: boolean) {\n if (!route) return;\n return this.mapbox.plotRoute(route, i, type, enablefitbound, showAllFitbound);\n }\n\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, routeProps?: any) {\n this.mapbox.loadMapProperty(pinRouteGeojson, index, unit, routeProps);\n }\n\n removeRouteAndMarker(index: number | any, type: string = 'jobcode') {\n return this.mapbox.removeRouteAndMarker(index, type);\n }\n\n clearAllRoutes() {\n return this.mapbox.clearAllRoutes();\n }\n}\n","/*\n * Public API Surface of coolmap-services\n */\n\nexport * from './lib/coolmap-services';\nexport * from './lib/services/mapbox.service';\nexport * from './lib/services/config';\nexport * from './lib/services/data-model';\nexport * from './lib/services/coolmap.service';\nexport * from './lib/services/utils.service';\nexport * from './lib/services/ag-toast.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aggdirect-coolmap-services.mjs","sources":["../../../projects/coolmap-services/src/lib/coolmap-services.ts","../../../projects/coolmap-services/src/lib/services/mapbox-gl-setup.ts","../../../projects/coolmap-services/src/lib/services/config.ts","../../../projects/coolmap-services/src/lib/services/ag-toast.service.ts","../../../projects/coolmap-services/src/lib/services/utils.service.ts","../../../projects/coolmap-services/src/lib/services/mapbox.service.ts","../../../projects/coolmap-services/src/lib/services/coolmap.service.ts","../../../projects/coolmap-services/src/public-api.ts","../../../projects/coolmap-services/src/aggdirect-coolmap-services.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-coolmap-services',\n imports: [],\n template: `\n <p>\n coolmap-services works!\n </p>\n `,\n styles: ``,\n})\nexport class CoolmapServices {\n\n}\n","/// <reference path=\"./mapbox-gl-csp.d.ts\" />\n\n/**\n * Mapbox GL shares code between the main bundle and its Web Worker. When the host app\n * (e.g. customer portal) bundles/transpiles mapbox-gl, the worker often breaks with\n * errors like \"Nn is not defined\" / \"_createClass is not defined\" in syncRTLPluginState.\n *\n * Use the CSP build and load the worker from Mapbox's CDN (or window.__env.mapboxWorkerUrl).\n * Keep MAPBOX_GL_VERSION in sync with the mapbox-gl peer dependency.\n */\nimport mapboxgl from 'mapbox-gl/dist/mapbox-gl-csp.js';\n\n/** Must match installed mapbox-gl version (see coolmap-v2 package.json) */\nconst MAPBOX_GL_VERSION = '3.24.0';\n\nlet workerConfigured = false;\n\nexport function ensureMapboxWorker(): typeof mapboxgl {\n if (workerConfigured || typeof window === 'undefined') {\n return mapboxgl;\n }\n\n const win = window as typeof window & {\n __env?: { mapboxWorkerUrl?: string };\n };\n\n if (!(mapboxgl as { workerUrl?: string }).workerUrl) {\n (mapboxgl as { workerUrl?: string }).workerUrl =\n win.__env?.mapboxWorkerUrl ??\n `https://api.mapbox.com/mapbox-gl-js/v${MAPBOX_GL_VERSION}/mapbox-gl-csp-worker.js`;\n }\n\n workerConfigured = true;\n return mapboxgl;\n}\n\nexport { mapboxgl };\n","import { InjectionToken } from '@angular/core';\n\nexport interface CoolmapConfigModel {\n analyticsRESTURL: string | null;\n RESTURLPrefix: string | null;\n repository: string | null;\n mapboxStyle: string | null;\n mapboxAccessToken: string | null;\n}\n\nexport const COOLMAP_CONFIG = new InjectionToken<CoolmapConfigModel>('COOLMAP_CONFIG');\n\nexport function provideCoolmapConfig(config: CoolmapConfigModel) {\n return {\n provide: COOLMAP_CONFIG,\n useValue: config\n };\n}\n","import { Injectable, signal, computed } from '@angular/core';\n\nexport type ToastVariant = 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n\nexport interface ToastConfig {\n message: string;\n title?: string;\n variant?: ToastVariant;\n duration?: number;\n dismissible?: boolean;\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface Toast extends ToastConfig {\n id: string;\n variant: ToastVariant;\n duration: number;\n dismissible: boolean;\n createdAt: Date;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgToastService {\n private _toasts = signal<Toast[]>([]);\n private defaultDuration = 5000;\n private position = signal<ToastPosition>('top-right');\n \n toasts = computed(() => this._toasts());\n toastPosition = computed(() => this.position());\n \n private generateId(): string {\n return `toast-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n \n setPosition(pos: ToastPosition) {\n this.position.set(pos);\n }\n \n show(config: ToastConfig): string {\n // Prevent duplicate toasts\n const currentToasts = this._toasts();\n const incomingVariant = config.variant || 'info';\n const isDuplicate = currentToasts.find(\n t => t.message === config.message && t.variant === incomingVariant && t.title === config.title\n );\n \n if (isDuplicate) {\n return isDuplicate.id;\n }\n\n const toast: Toast = {\n id: this.generateId(),\n message: config.message,\n title: config.title,\n variant: incomingVariant,\n duration: config.duration ?? this.defaultDuration,\n dismissible: config.dismissible ?? true,\n action: config.action,\n createdAt: new Date()\n };\n \n this._toasts.update(toasts => [...toasts, toast]);\n \n // Auto-dismiss if duration > 0\n if (toast.duration > 0) {\n setTimeout(() => {\n this.dismiss(toast.id);\n }, toast.duration);\n }\n \n return toast.id;\n }\n \n success(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'success', duration });\n }\n \n error(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'error', duration });\n }\n \n warning(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'warning', duration });\n }\n \n info(message: string, title?: string, duration?: number): string {\n return this.show({ message, title, variant: 'info', duration });\n }\n \n dismiss(id: string): void {\n this._toasts.update(toasts => toasts.filter(t => t.id !== id));\n }\n \n dismissAll(): void {\n this._toasts.set([]);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject, NgZone } from '@angular/core';\nimport { AgToastService } from './ag-toast.service';\nimport { BehaviorSubject } from 'rxjs';\nimport { COOLMAP_CONFIG } from './config';\nimport { CoolmapRoute } from './data-model';\n\n// Declare google for map types\ndeclare var google: any;\n\nexport interface LocationAll {\n city: string;\n latitude: string;\n location_id: string;\n longitude: string;\n name: string;\n state: string;\n street: string;\n suite: null;\n zip: string;\n formatted_address: string;\n complete_address: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UtilsService {\n private http = inject(HttpClient);\n private config = inject(COOLMAP_CONFIG);\n private ngZone = inject(NgZone);\n\n // BehaviorSubjects for state (converting to simple Signals later where practical)\n public preventnavChange = new BehaviorSubject(false);\n navChangeObserve = this.preventnavChange.asObservable();\n clearViewRouteforJobCode = new BehaviorSubject(false);\n clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();\n preVentJobdetailclose = new BehaviorSubject(false);\n getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();\n routeDetailsUtility = new BehaviorSubject({});\n getrouteDetailsUtility = this.routeDetailsUtility.asObservable();\n removeMapEntity = new BehaviorSubject<any>({});\n removeMapEntityUtility = this.removeMapEntity.asObservable();\n \n dict = new Map<string, string>();\n \n unitsList: any;\n materialsList: any;\n materialsListForCustomer: any;\n customersList: any;\n locationList: any;\n\n // Options filtering properties\n pickupOptions: any[] = [];\n destOptions: any[] = [];\n ownerOptions: any[] = [];\n customerOptions: any[] = [];\n unitOptions: any[] = [];\n materialOptions: any[] = [];\n jcodeOptions: any[] = [];\n driverOption: any[] = [];\n truckingCompanayOption: any[] = [];\n routeNameOptions: any[] = [];\n\n getDateFormat(strVal: Date | null, seprater?: string) {\n seprater = seprater ? seprater : '-';\n const mydate = strVal;\n if (!mydate) return '';\n \n const month = String(mydate.getMonth() + 1).padStart(2, '0');\n const day = String(mydate.getDate()).padStart(2, '0');\n \n return (\n mydate.getFullYear() +\n seprater +\n month +\n seprater +\n day\n );\n }\n\n getData(path: string) {\n return this.http.get(`${this.config.analyticsRESTURL}${this.config.repository}/${path}`);\n }\n \n getRestData(path: string) {\n return this.http.get(`${this.config.RESTURLPrefix}${path}`);\n }\n \n postdata(path: string, data: any) {\n return this.http.post(`${this.config.analyticsRESTURL}${this.config.repository}/${path}`, data);\n }\n \n postDataWithRestUrl(path: string, data: any) {\n return this.http.post(`${this.config.RESTURLPrefix}${path}`, data);\n }\n\n toastService = inject(AgToastService);\n\n // Instead of MatSnackBar, we use AgToastService.\n openSnackBar(message: string, className?: string) {\n if (className === 'success') {\n this.toastService.success(message);\n } else if (className === 'error') {\n this.toastService.error(message);\n } else if (className === 'warning') {\n this.toastService.warning(message);\n } else {\n this.toastService.info(message);\n }\n }\n\n clearOptions() {\n this.pickupOptions = [];\n this.destOptions = [];\n this.ownerOptions = [];\n this.customerOptions = [];\n this.unitOptions = [];\n this.materialOptions = [];\n this.jcodeOptions = [];\n this.routeNameOptions = [];\n }\n\n makeOptions(item: CoolmapRoute) {\n // Porting V1 makeOptions safely\n if (item.order_number) {\n if (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) {\n this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id });\n }\n // Assuming tasks structure if Mapbox Route logic was merged, else driver_list from V1\n const driver_list = (item as any).driver_list || [];\n if (driver_list.length > 0) {\n driver_list.forEach((driver: any) => {\n if (this.driverOption.findIndex((elem) => elem === driver.driver_name) === -1) {\n this.driverOption.push(driver.driver_name);\n }\n if (this.truckingCompanayOption.findIndex((elem) => elem === driver.trucking_company) === -1) {\n this.truckingCompanayOption.push(driver.trucking_company);\n }\n });\n }\n }\n if (item.pickup_location && this.pickupOptions.findIndex((elem) => elem === item.pickup_location) === -1)\n this.pickupOptions.push(item.pickup_location);\n if (item.delivery_location && this.destOptions.findIndex((elem) => elem === item.delivery_location) === -1)\n this.destOptions.push(item.delivery_location);\n if (item.customer_name && this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1)\n this.customerOptions.push(item.customer_name);\n if (item.unit && this.unitOptions.findIndex((elem) => elem === item.unit) === -1)\n this.unitOptions.push(item.unit);\n if (item.material && this.materialOptions.findIndex((elem) => elem === item.material) === -1)\n this.materialOptions.push(item.material);\n if (item.route_name && this.routeNameOptions.findIndex((elem) => elem === item.route_name) === -1)\n this.routeNameOptions.push(item.route_name);\n }\n\n setdictValue(key: string, value: string) {\n this.dict.set(key, value);\n }\n \n getdictValue(key: string) {\n const val = this.dict.get(key);\n return val ? JSON.parse(val) : null;\n }\n \n removedictValue(key: string) {\n this.dict.delete(key);\n }\n\n filter(value: string, filters: any[]) {\n if (typeof value !== 'string') {\n return [];\n }\n const filterValue = value.toLowerCase();\n if (filterValue === '') {\n return [];\n }\n const searchResults: any[] = [];\n this.unitOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'unit', label: unit, value: unit });\n }\n });\n this.customerOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'customer', label: unit, value: unit });\n }\n });\n\n if(this.materialOptions && this.materialOptions.length) {\n this.materialOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'material', label: unit, value: unit });\n }\n });\n }\n this.pickupOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'pickup location',\n label: unit,\n value: unit,\n });\n }\n });\n this.destOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'destination location',\n label: unit,\n value: unit,\n });\n }\n });\n this.jcodeOptions.forEach((unit) => {\n if (unit.job_code.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'job',\n label: unit['job_code'],\n value: unit,\n });\n }\n });\n this.driverOption.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'Driver', label: unit, value: unit });\n }\n });\n\n this.truckingCompanayOption.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({\n type: 'Trucking Company',\n label: unit,\n value: unit,\n });\n }\n });\n this.routeNameOptions.forEach((unit) => {\n if (unit.toLowerCase().includes(filterValue)) {\n searchResults.push({ type: 'Route name', label: unit, value: unit });\n }\n });\n \n // Filter out options that are already selected in the filters array\n const searchDict: any = {};\n filters.forEach((filter: any) => {\n searchDict[filter['name'] + filter['type']] = filter;\n });\n const furtherFilter: any[] = [];\n searchResults.forEach((search) => {\n if (!(search['label'] + search['type'] in searchDict)) {\n furtherFilter.push(search);\n }\n });\n return furtherFilter;\n }\n\n getSearchResults(list: CoolmapRoute[], filterval: any[]): any[] {\n return list.filter((element: any) => {\n const result_list_boolean: boolean[] = [];\n if (filterval.length > 0) {\n if (filterval[0]['type'] === 'unit') {\n result_list_boolean.push(\n filterval[0]['name'] === element['unit']\n );\n }\n if (filterval[0]['type'] === 'customer') {\n result_list_boolean.push(\n filterval[0]['name'] === element['customer_name']\n );\n }\n if (filterval[0]['type'] === 'material') {\n result_list_boolean.push(\n filterval[0]['name'] === element['material']\n );\n }\n if (filterval[0]['type'] === 'pickup location') {\n result_list_boolean.push(\n filterval[0]['name'] === element['pickup_location']\n );\n }\n if (filterval[0]['type'] === 'destination location') {\n result_list_boolean.push(\n filterval[0]['name'] === element['delivery_location']\n );\n }\n if (filterval[0]['type'] === 'job') {\n result_list_boolean.push(\n filterval[0]['name'] === element['order_number']\n );\n }\n if (filterval[0]['type'] === 'Route name') {\n result_list_boolean.push(\n filterval[0]['name'] === element['route_name']\n );\n }\n if (filterval[0]['type'] === 'Driver') {\n const driverList = element.driver_list || [];\n const index = driverList.findIndex((ele: any) => {\n return filterval[0]['name'] === ele['driver_name'];\n });\n if (index !== -1) result_list_boolean.push(true);\n }\n if (filterval[0]['type'] === 'Trucking Company') {\n const driverList = element.driver_list || [];\n const index = driverList.findIndex((ele: any) => {\n return filterval[0]['name'] === ele['trucking_company'];\n });\n if (index !== -1) result_list_boolean.push(true);\n }\n }\n if (result_list_boolean.length > 0) {\n return result_list_boolean.reduce((prev, curr) => prev && curr);\n }\n return false;\n });\n }\n\n fetchUnitsList() {\n return new Promise((resolve) => {\n if (!this.unitsList) {\n this.getData('unit/list/view').subscribe((res: any) => {\n if (res) {\n this.unitsList = res.data;\n resolve(this.unitsList);\n }\n });\n } else {\n resolve(this.unitsList);\n }\n });\n }\n\n fetchMaterialsListForCustomer() {\n return new Promise((resolve) => {\n if (!this.materialsListForCustomer) {\n this.getData('material/list/view').subscribe((res: any) => {\n this.materialsListForCustomer = this.filtermaterialList(res.data);\n resolve(this.materialsListForCustomer);\n });\n } else {\n resolve(this.materialsListForCustomer);\n }\n });\n }\n\n filtermaterialList(list: any[]) {\n let meterialList: any[] = [];\n list.forEach((item) => {\n if (item.sub && item.sub.length > 0) {\n item.sub.forEach((subItem: any) => {\n if (subItem.add_to_marketplace) {\n subItem.material = item.material;\n subItem.material_id = item.material_id;\n subItem.label = item.material + ' | ' + subItem.sub_material;\n meterialList.push(subItem);\n }\n });\n }\n });\n meterialList.sort((a, b) => a.label.localeCompare(b.label));\n return meterialList;\n }\n\n fetchCustomersList() {\n return new Promise((resolve) => {\n if (!this.customersList) {\n this.getData('company/list/view').subscribe((res: any) => {\n if (res) {\n this.customersList = res.data;\n resolve(this.customersList);\n }\n });\n } else {\n resolve(this.customersList);\n }\n });\n }\n\n fetchLocationlist() {\n return new Promise((resolve, reject) => {\n this.getRestData('locations/all').subscribe({\n next: (res: any) => {\n if (res) {\n this.locationList = res.data.map((object: any) => {\n object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;\n return {\n city: object.city,\n lng: object.longitude,\n location_id: object.location_id,\n lat: object.latitude,\n name: object.name,\n state: object.state,\n street: object.street,\n zip: object.zip,\n formatted_address: object.formatted_address\n };\n });\n resolve(this.locationList);\n }\n },\n error: (err) => {\n console.error(err);\n reject(err);\n }\n });\n });\n }\n}\n","import { Injectable, inject, signal, effect } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ensureMapboxWorker, mapboxgl } from './mapbox-gl-setup';\nimport * as turf from '@turf/turf';\nimport { COOLMAP_CONFIG } from './config';\nimport { UtilsService } from './utils.service';\n\nexport interface PopupData {\n coordinate: [number, number];\n pickup?: string;\n drop?: string;\n jobCode?: string;\n customer?: string;\n routeType?: string;\n title?: string;\n material?: string;\n type?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MapboxService {\n map!: mapboxgl.Map;\n mapContainer: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n markerOriginList = new Map<string, mapboxgl.Marker>();\n markerDestinationList = new Map<string, mapboxgl.Marker>();\n private activeRoutesRegistry = new Map<string, any>();\n private pathCache = new Map<string, any[]>();\n \n // Native 3D Simulation Engine \n svgOverlay: SVGSVGElement | null = null;\n activeArcs: { \n [index: string]: { \n origin: [number, number], \n destination: [number, number], \n color: string, \n pathEl: SVGPathElement \n } \n } = {};\n \n initiatecoolmap = new BehaviorSubject(true);\n reintiatecoolmap = this.initiatecoolmap.asObservable();\n \n isMapReady = signal(false);\n bounds = new mapboxgl.LngLatBounds();\n private originDestinationCordinates = new Map<string, any[]>();\n padding: any;\n windowActualHeightWidth: any = { availHeight: 0 };\n popup!: mapboxgl.Popup;\n customTopForCustomer: number;\n\n utils = inject(UtilsService);\n config = inject(COOLMAP_CONFIG);\n private currentStyleIsDark = false;\n\n constructor() {\n ensureMapboxWorker();\n this.customTopForCustomer = this.config.repository === 'customer' ? 65 : 0;\n if (typeof window !== 'undefined') {\n this.windowActualHeightWidth.availHeight = window.innerHeight > window.screen.availHeight ? window.innerHeight : window.screen.availHeight;\n window.addEventListener('resize', this.onResize.bind(this));\n }\n }\n\n updateTheme(isDark: boolean) {\n if (!this.map) {\n this.currentStyleIsDark = isDark;\n return;\n }\n \n if (this.currentStyleIsDark === isDark) return;\n this.currentStyleIsDark = isDark;\n\n const style = isDark \n ? 'mapbox://styles/mapbox/dark-v11' \n : 'mapbox://styles/mapbox/light-v11';\n \n this.map.setStyle(style);\n \n this.map.once('style.load', () => {\n this.reAddLayers();\n });\n }\n\n getRegistryKeys(): string[] {\n return Array.from(this.activeRoutesRegistry.keys());\n }\n\n // Renamed to initializeMap to preserve the existing bindings in coolmap.component.ts\n initializeMap(el: HTMLElement, isDark: boolean = false) {\n this.currentStyleIsDark = isDark;\n const styleUrl = isDark ? 'mapbox://styles/mapbox/dark-v11' : 'mapbox://styles/mapbox/light-v11';\n\n // If map already exists for this container, just update style and clear routes to avoid flickering\n if (this.map && this.mapContainer === el) {\n el.style.transition = 'opacity 0.3s ease-in-out';\n el.style.opacity = '0.7';\n this.map.setStyle(styleUrl);\n return new Promise((resolve) => {\n this.map.once('style.load', () => {\n this.clearAllRoutes();\n this.isMapReady.set(true);\n el.style.opacity = '1';\n resolve(this.map);\n });\n });\n }\n\n return new Promise((resolve, reject) => {\n this.mapContainer = el;\n if (this.map) {\n this.map.remove();\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n \n // Add a smooth fade-in for fresh initialization\n el.style.transition = 'opacity 0.5s ease-in-out';\n el.style.opacity = '0';\n \n const token = typeof window !== 'undefined' ? (window as any).__env?.mapboxAccessToken || '' : '';\n const mapbox = ensureMapboxWorker();\n mapbox.accessToken = token;\n\n this.map = new mapbox.Map({\n container: el,\n style: styleUrl,\n center: [-77.036873, 38.907192],\n zoom: 10,\n bearing: 0,\n pitch: 65,\n interactive: true,\n attributionControl: false,\n antialias: true,\n projection: { name: 'globe' } as any\n });\n \n this.map.addControl(new mapboxgl.AttributionControl({ compact: true }), 'bottom-right');\n this.map.addControl(new mapboxgl.NavigationControl({ showCompass: false }), 'top-right');\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.map) {\n this.map.resize();\n }\n });\n this.resizeObserver.observe(el);\n\n this.map.once('load', (res: mapboxgl.MapboxEvent) => {\n this.isMapReady.set(true);\n if (this.mapContainer) this.mapContainer.style.opacity = '1';\n resolve(res);\n });\n });\n }\n\n // Animated gradient path\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, routeProps?: any, bottom?: number) {\n return new Promise((resolve) => {\n if (!this.map || !this.isMapReady()) return resolve(false);\n\n const origin = pinRouteGeojson.features[0].geometry.coordinates[0];\n const linecolor = unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1';\n const destination = pinRouteGeojson.features[0].geometry.coordinates[\n pinRouteGeojson.features[0].geometry.coordinates.length - 1\n ];\n\n const registryId = `addroute-${index}`;\n this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true, registryId).then(() => {\n const point: any = {\n type: 'FeatureCollection',\n features: [\n { type: 'Feature', properties: {}, geometry: { type: 'Point', coordinates: origin } },\n ],\n };\n\n const lineDistance = turf.length(pinRouteGeojson.features[0]);\n const arc = [];\n const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;\n for (let i = 0; i < lineDistance; i += lineDistance / steps) {\n const segment = turf.along(pinRouteGeojson.features[0], i);\n arc.push(segment.geometry.coordinates);\n }\n pinRouteGeojson.features[0].geometry.coordinates = arc;\n const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;\n\n if (pinRoute && pinRoute.length) {\n const marker = new mapboxgl.Marker(document.createElement('div'))\n .setLngLat(pinRoute[0])\n .addTo(this.map)\n .togglePopup();\n\n if (this.map.getSource(`line${index}`)) {\n this.removeRouteAndMarker(index, 'addroute').then(() => {});\n }\n\n this.map.addSource(`line${index}`, {\n type: 'geojson',\n lineMetrics: true,\n data: pinRouteGeojson,\n });\n\n this.map.addLayer({\n type: 'line',\n source: `line${index}`,\n id: `line${index}`,\n paint: {\n 'line-width': 2,\n 'line-gradient': [\n 'interpolate', ['linear'], ['line-progress'],\n 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',\n 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',\n ],\n },\n layout: { 'line-cap': 'round', 'line-join': 'round' },\n });\n\n const dataSetForMap = {\n counter: 0,\n pinRouteGeojson,\n steps,\n point,\n pointId: `point${index}`,\n marker,\n pinRoute,\n lineId: `line${index}`,\n index,\n origin,\n destination,\n lineDistance,\n linecolor,\n route: routeProps,\n routeType: 'addroute',\n isViewRoute: true,\n };\n\n this.createMarker(dataSetForMap);\n\n this.map.on('mouseenter', `line${index}`, (e: any) => {\n this.map.setPaintProperty(`line${index}`, 'line-width', 5);\n this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);\n const datasetForPopup: PopupData = {\n coordinate: [e.lngLat.lng, e.lngLat.lat],\n pickup: routeProps?.pickup_location || '',\n drop: routeProps?.delivery_location || '',\n routeType: routeProps?.project ? 'Project' : 'Route',\n title: routeProps?.project ? routeProps.project : routeProps?.route_name || '',\n material: routeProps?.material || '',\n type: routeProps?.unit || '',\n };\n if(this.popup) this.popup.remove();\n this.createPopup(datasetForPopup);\n });\n\n this.map.on('mouseleave', `line${index}`, () => {\n this.map.setPaintProperty(`line${index}`, 'line-width', 2);\n if (this.popup) this.popup.remove();\n });\n }\n });\n\n this.map.once('idle', () => {\n resolve(true);\n });\n });\n }\n\n\n createMarker(routeDetails: any) {\n if (!this.map || !routeDetails.origin[0] || !routeDetails.origin[1] || !routeDetails.destination[0] || !routeDetails.destination[1]) return;\n \n const popup = new mapboxgl.Popup({ closeButton: false, className: 'pointer-events-none', offset: 20 }).setHTML('<div class=\"p-3\"><b>Pickup: </b>' + (routeDetails.route?.pickup_location || '') + '</div>');\n const popupForDestination = new mapboxgl.Popup({ closeButton: false, className: 'pointer-events-none', offset: 20 }).setHTML('<div class=\"p-3\"><b>Delivery: </b>' + (routeDetails.route?.delivery_location || '') + '</div>');\n\n // Origin Marker (Pickup)\n const el = document.createElement('div');\n el.className = 'cursor-pointer active:scale-95 transition-transform duration-200 drop-shadow-lg';\n el.style.zIndex = '100';\n const pickupLabel = 'P';\n el.innerHTML = `\n <svg width=\"30\" height=\"38\" viewBox=\"0 0 30 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 0C6.71573 0 0 6.71573 0 15C0 26.25 15 38 15 38C15 38 30 26.25 30 15C30 6.71573 23.2843 0 15 0Z\" fill=\"${routeDetails.linecolor}\"/>\n <circle cx=\"15\" cy=\"15\" r=\"9\" fill=\"white\"/>\n <text x=\"15\" y=\"19\" text-anchor=\"middle\" fill=\"black\" style=\"font-family: Inter, sans-serif; font-size: 13px; font-weight: 800;\">${pickupLabel}</text>\n </svg>\n `;\n\n const originMarker = new mapboxgl.Marker({ element: el, anchor: 'bottom' })\n .setLngLat(routeDetails.origin)\n .addTo(this.map);\n\n originMarker.getElement().addEventListener('mouseenter', () => {\n popup.setLngLat(routeDetails.origin).addTo(this.map);\n });\n originMarker.getElement().addEventListener('mouseleave', () => {\n popup.remove();\n });\n\n // Destination Marker (Delivery)\n const elementForDestination = document.createElement('div');\n elementForDestination.className = 'cursor-pointer active:scale-95 transition-transform duration-200 drop-shadow-lg';\n elementForDestination.style.zIndex = '100';\n const deliveryLabel = 'D';\n elementForDestination.innerHTML = `\n <svg width=\"30\" height=\"38\" viewBox=\"0 0 30 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 0C6.71573 0 0 6.71573 0 15C0 26.25 15 38 15 38C15 38 30 26.25 30 15C30 6.71573 23.2843 0 15 0Z\" fill=\"${routeDetails.linecolor}\"/>\n <circle cx=\"15\" cy=\"15\" r=\"9\" fill=\"white\"/>\n <text x=\"15\" y=\"19\" text-anchor=\"middle\" fill=\"black\" style=\"font-family: Inter, sans-serif; font-size: 13px; font-weight: 800;\">${deliveryLabel}</text>\n </svg>\n `;\n\n const destinationMarker = new mapboxgl.Marker({ element: elementForDestination, anchor: 'bottom' })\n .setLngLat(routeDetails.destination)\n .addTo(this.map);\n \n destinationMarker.getElement().addEventListener('mouseenter', () => {\n popupForDestination.setLngLat(routeDetails.destination).addTo(this.map);\n });\n destinationMarker.getElement().addEventListener('mouseleave', () => {\n popupForDestination.remove();\n });\n\n const id = `${routeDetails.routeType}-${routeDetails.index}`;\n this.markerOriginList.set(id, originMarker);\n this.markerDestinationList.set(id, destinationMarker);\n\n // True 3D Elevated Arc Simulation Engine using Native SVG Overlays\n try {\n this.initSvgOverlay();\n\n const pathEl = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n pathEl.setAttribute('fill', 'none');\n pathEl.setAttribute('stroke-width', '3');\n pathEl.style.cursor = 'pointer';\n pathEl.style.pointerEvents = 'stroke'; // Allow interactivity!\n \n const gradId = `arc-grad-${id}`;\n const defs = this.svgOverlay!.querySelector('defs')!;\n let grad = defs.querySelector(`#${gradId}`);\n if (!grad) {\n grad = document.createElementNS('http://www.w3.org/2000/svg', 'linearGradient');\n grad.setAttribute('id', gradId);\n defs.appendChild(grad);\n }\n \n grad.innerHTML = `\n <stop offset=\"0%\" stop-color=\"${routeDetails.linecolor}\" stop-opacity=\"1\"/>\n <stop offset=\"100%\" stop-color=\"#ffffff\" stop-opacity=\"0.8\"/>\n `;\n \n pathEl.setAttribute('stroke', `url(#${gradId})`);\n this.svgOverlay!.appendChild(pathEl);\n\n this.activeArcs[id] = {\n origin: routeDetails.origin,\n destination: routeDetails.destination,\n color: routeDetails.linecolor,\n pathEl\n };\n\n // Native tooltips hovering strictly matching V1 Deck.GL behaviors\n pathEl.addEventListener('mouseenter', (e: MouseEvent) => {\n pathEl.setAttribute('stroke-width', '6');\n \n // Find geo coordinate exactly under cursor natively\n const rect = this.svgOverlay!.getBoundingClientRect();\n const lngLat = this.map.unproject([e.clientX - rect.left, e.clientY - rect.top]);\n\n const payload = {\n layer: { props: { data: { route: routeDetails.route, index: routeDetails.index, routeType: routeDetails.routeType } } },\n coordinate: [lngLat.lng, lngLat.lat],\n color: routeDetails.linecolor\n };\n this.showRoutePopup(payload, e, routeDetails.isViewRoute);\n });\n\n pathEl.addEventListener('mouseleave', () => {\n pathEl.setAttribute('stroke-width', '3');\n const payload = { color: null, layer: { props: { data: { index: routeDetails.index, routeType: routeDetails.routeType } } } };\n this.showRoutePopup(payload, null, routeDetails.isViewRoute);\n });\n\n this.updateSvgPaths(); // Force plot\n } catch(e) {\n console.warn(\"Native overarching arc generation skipped:\", e);\n }\n }\n\n\n showRoutePopup(arcDetails: any, event: any, isViewRoute?: boolean): void {\n const data = arcDetails.layer.props.data;\n const layerId = isViewRoute \n ? `line${data.index}` \n : `route-layer-${data.routeType || 'jobcode'}-${data.index}`;\n \n if (this.popup) {\n this.popup.remove();\n if (this.map.getLayer(layerId)) {\n this.map.setPaintProperty(layerId, 'line-width', 2);\n }\n }\n \n if (arcDetails.color && this.map.getLayer(layerId) && this.map.getLayoutProperty(layerId, 'visibility') !== 'none') {\n this.map.setPaintProperty(layerId, 'line-width', 5);\n \n // Removed line-opacity overwrite here because bezier lines inherit opacity and break if set raw on a gradient.\n\n const datasetForPopup: PopupData = {\n coordinate: arcDetails.coordinate,\n pickup: arcDetails.layer.props.data.route.pickup_location || '',\n drop: arcDetails.layer.props.data.route.delivery_location || '',\n jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',\n customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',\n routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',\n title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name || '',\n material: arcDetails.layer.props.data.route.material || '',\n type: arcDetails.layer.props.data.route.unit || '',\n };\n this.createPopup(datasetForPopup);\n }\n }\n\n\n\n createPopup(datasetForPopup: PopupData): void {\n if(!this.map) return;\n this.popup = new mapboxgl.Popup({\n closeButton: false,\n closeOnClick: false,\n closeOnMove: true,\n className: 'pointer-events-none',\n anchor: 'bottom-left',\n });\n \n // Extract location short names\n const pickupDisplay = datasetForPopup.pickup?.split('|')[1] || datasetForPopup.pickup || 'Unknown Pickup';\n const dropDisplay = datasetForPopup.drop?.split('|')[1] || datasetForPopup.drop || 'Unknown Delivery';\n\n this.popup\n .setLngLat(datasetForPopup.coordinate)\n .setHTML(\n `<div class=\"destination p-3 bg-white dark:bg-slate-800 rounded shadow-lg text-sm text-gray-800 dark:text-gray-200\">\n <div class=\"duration space-y-1 mb-2 bg-gray-100 dark:bg-slate-900 border border-gray-300 dark:border-slate-700 px-2 py-2 rounded-lg text-[12px]\">\n <p class=\"pickprt text-green-600 dark:text-green-400\"><b>Pickup Location:</b> ${pickupDisplay}</p>\n <p class=\"dropprt text-red-600\"><b>Drop Location:</b> ${dropDisplay}</p>\n </div>\n ${datasetForPopup.jobCode ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Job Code:</b> ${datasetForPopup.jobCode}</span>` : ''}\n ${datasetForPopup.customer ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Customer:</b> ${datasetForPopup.customer}</span>` : ''}\n <span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>\n ${datasetForPopup.material ? `<span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Material:</b> ${datasetForPopup.material}</span>` : ''}\n <span class=\"block text-xs text-gray-600 dark:text-gray-300 mb-1\"><b>Type:</b> ${datasetForPopup.type}</span>\n </div>`\n )\n .addTo(this.map);\n }\n\n // Draw Line\n drawLine(\n cordinates?: any,\n index?: number | any,\n route?: any,\n enablefitbound?: boolean,\n routeType?: string,\n isStyleRefresh?: boolean\n ): Promise<void> {\n return new Promise((resolve) => {\n if (!this.map || !this.isMapReady()) {\n resolve();\n return;\n }\n\n // Calculate bounds for this specific route\n const routeBounds = new mapboxgl.LngLatBounds();\n if (cordinates && cordinates.length > 0) {\n cordinates.forEach((coord: any) => routeBounds.extend(coord));\n }\n\n const registryId = `${routeType}-${index}`;\n // Register the route with its coordinates and pre-calculated bounds\n this.activeRoutesRegistry.set(registryId, { \n cordinates, \n route, \n routeType,\n bounds: routeBounds,\n index\n });\n \n let origin = cordinates[0];\n let destination = cordinates[cordinates.length - 1];\n \n if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {\n // Execute plotting logic IMMEDIATELY to trigger the map's render cycle\n const linecolor = this.provideLineColor(route['unit'], routeType);\n \n if (enablefitbound) {\n const padTop = Math.max(0, (this.padding?.top || 0) + this.customTopForCustomer + 50);\n const padBot = Math.max(0, (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)) + 50);\n const padLeft = Math.max(0, (this.padding?.left || 0) + 350);\n const padRight = Math.max(0, (this.padding?.right || 0) + 50);\n\n const customPadding = { top: padTop, bottom: padBot, left: padLeft, right: padRight };\n this.map.fitBounds([origin, destination], { padding: customPadding, pitch: 65 }, { fitboundCompleteJob: true } as any);\n }\n\n const sourceId = `route-source-${routeType}-${index}`;\n const layerId = `route-layer-${routeType}-${index}`;\n\n if (this.map.getSource(sourceId)) {\n this.removeRouteAndMarker(index, routeType).then(() => {\n this.extendBound(cordinates, enablefitbound, registryId);\n });\n }\n\n this.map.addSource(sourceId, {\n type: 'geojson',\n data: {\n type: 'Feature',\n properties: {},\n geometry: { type: 'LineString', coordinates: cordinates },\n },\n });\n\n this.map.addLayer({\n id: layerId,\n type: 'line',\n source: sourceId,\n paint: { 'line-color': linecolor, 'line-width': 2 },\n layout: { 'line-cap': 'round', 'line-join': 'round' },\n });\n\n if (!isStyleRefresh) {\n const dataSetForMap = { origin, destination, index, linecolor, route, routeType };\n this.createMarker(dataSetForMap);\n }\n\n this.map.on('mouseenter', layerId, (e: any) => {\n if (this.popup) this.popup.remove();\n this.map.setPaintProperty(layerId, 'line-width', 5);\n this.map.setPaintProperty(layerId, 'line-opacity', 1);\n \n const datasetForPopup: PopupData = {\n coordinate: [e.lngLat.lng, e.lngLat.lat],\n pickup: route.pickup_location || '',\n drop: route.delivery_location || '',\n jobCode: route.project ? route.order_number : null,\n customer: route.project ? route.customer_name : null,\n routeType: route.project ? 'Project' : 'Route',\n title: route.project ? route.project : route.route_name || '',\n material: route.material || '',\n type: route.unit || '',\n };\n this.createPopup(datasetForPopup);\n });\n\n this.map.on('mouseleave', layerId, () => {\n this.map.setPaintProperty(layerId, 'line-width', 2);\n if (this.popup) this.popup.remove();\n });\n\n // SAFETY: Use a timeout to ensure resolve() is always called even if 'idle' event skips\n let resolved = false;\n const complete = () => {\n if (!resolved) {\n resolved = true;\n resolve();\n }\n };\n\n this.map.once('idle', complete);\n setTimeout(complete, 500); // 500ms safety timeout\n\n } else {\n resolve();\n }\n });\n }\n\n provideLineColor(unitType: string, type?: string) {\n let checkType = type && !['jobrouteList', 'addroute', 'viewroute'].includes(type) ? true : false;\n let color;\n switch (unitType) {\n case 'Ton':\n color = checkType ? '#39c471' : '#ff7272';\n break;\n case 'Load':\n color = checkType ? '#326ad3' : '#a3c52e';\n break;\n case 'Hourly':\n color = checkType ? '#ffad56' : '#ae23d1';\n break;\n default:\n color = '#3b82f6';\n break;\n }\n return color;\n }\n\n hexToRGB(hex: any): [number, number, number] {\n return hex\n .replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m: any, r: any, g: any, b: any) => '#' + r + r + g + g + b + b)\n .substring(1)\n .match(/.{2}/g)\n .map((x: any) => parseInt(x, 16));\n }\n\n // --- SVG 3D Engine Methods ---\n initSvgOverlay() {\n if (this.svgOverlay || !this.mapContainer) return;\n\n this.svgOverlay = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this.svgOverlay.style.position = 'absolute';\n this.svgOverlay.style.top = '0';\n this.svgOverlay.style.left = '0';\n this.svgOverlay.style.width = '100%';\n this.svgOverlay.style.height = '100%';\n this.svgOverlay.style.pointerEvents = 'none';\n this.svgOverlay.style.zIndex = '10';\n\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n this.svgOverlay.appendChild(defs);\n\n this.mapContainer.appendChild(this.svgOverlay);\n\n this.map.on('render', () => this.updateSvgPaths());\n }\n\n updateSvgPaths() {\n if (!this.svgOverlay || !this.map) return;\n \n for (const key in this.activeArcs) {\n const arc = this.activeArcs[key];\n const p1 = this.map.project(arc.origin);\n const p2 = this.map.project(arc.destination);\n \n // Safety Guard: Check for Infinity and extreme numbers (Number.MAX_VALUE) \n // which Mapbox can return during transitions. \n // 1e15 is a safe threshold for JS math and SVG rendering engines.\n const isUsable = (p: mapboxgl.Point) => \n Number.isFinite(p.x) && Math.abs(p.x) < 1e15 && \n Number.isFinite(p.y) && Math.abs(p.y) < 1e15;\n\n if (!isUsable(p1) || !isUsable(p2)) continue;\n\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n const dist = Math.sqrt(dx*dx + dy*dy);\n \n // Secondary check for distance finiteness\n if (!Number.isFinite(dist) || dist > 1e15) continue;\n\n const mx = (p1.x + p2.x) / 2;\n let controlY = ((p1.y + p2.y) / 2) - (dist * 1.05); \n \n // Final sanity check for calculated curve peaks\n controlY = Math.max(100, controlY);\n if (!Number.isFinite(controlY) || !Number.isFinite(mx)) continue;\n \n // Update with rounded values to ensure clean and valid attribute data\n arc.pathEl.setAttribute('d', `M ${p1.x.toFixed(2)} ${p1.y.toFixed(2)} Q ${mx.toFixed(2)} ${controlY.toFixed(2)} ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`);\n\n // Sync the gradient positioning physically mapped to coordinate space\n const grad = this.svgOverlay.querySelector(`#arc-grad-${key}`) as SVGLinearGradientElement;\n if (grad) {\n const minX = Math.min(p1.x, p2.x);\n const maxX = Math.max(p1.x, p2.x);\n const minY = Math.min(p1.y, p2.y, controlY);\n const maxY = Math.max(p1.y, p2.y, controlY);\n const w = Math.max(1, maxX - minX);\n const h = Math.max(1, maxY - minY);\n \n grad.setAttribute('x1', `${((p1.x - minX) / w) * 100}%`);\n grad.setAttribute('y1', `${((p1.y - minY) / h) * 100}%`);\n grad.setAttribute('x2', `${((p2.x - minX) / w) * 100}%`);\n grad.setAttribute('y2', `${((p2.y - minY) / h) * 100}%`);\n }\n }\n }\n\n async removeRouteAndMarker(index: number | string | any, routeType: string = 'jobcode') {\n const registryId = `${routeType}-${index}`;\n // Clean up registry\n if (this.activeRoutesRegistry.has(registryId)) {\n this.activeRoutesRegistry.delete(registryId);\n }\n if (!this.map) return true;\n try {\n if (this.activeArcs[registryId]) {\n const arc = this.activeArcs[registryId];\n if (arc.pathEl.parentNode) arc.pathEl.parentNode.removeChild(arc.pathEl);\n delete this.activeArcs[registryId];\n }\n if (this.svgOverlay) {\n const grad = this.svgOverlay.querySelector(`defs #arc-grad-${registryId}`);\n if (grad && grad.parentNode) grad.parentNode.removeChild(grad);\n }\n \n const layerId = `route-layer-${routeType}-${index}`;\n const sourceId = `route-source-${routeType}-${index}`;\n\n this.map.getLayer(layerId) ? this.map.removeLayer(layerId) : null;\n this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : null;\n this.map.getSource(sourceId) ? this.map.removeSource(sourceId) : null;\n this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : null;\n \n this.markerOriginList.get(registryId)?.remove();\n this.markerOriginList.delete(registryId);\n \n this.markerDestinationList.get(registryId)?.remove();\n this.markerDestinationList.delete(registryId);\n\n this.markerOriginList.get(String(index))?.remove();\n this.markerDestinationList.get(String(index))?.remove();\n\n this.originDestinationCordinates.delete(registryId);\n this.originDestinationCordinates.delete(String(index));\n\n if (this.popup) this.popup.remove();\n return true;\n } catch (e) {\n console.warn('Error removing route/marker:', e);\n return false;\n }\n }\n\n private reAddLayers() {\n this.activeRoutesRegistry.forEach((data, regId) => {\n // Use the stored raw index instead of the composite registry key\n this.drawLine(data.cordinates, data.index, data.route, false, data.routeType, true);\n });\n }\n\n findMarkerBound(index: any) {\n const id = String(index);\n const originMarker = this.markerOriginList.get(id);\n const originLng = originMarker?.getLngLat()?.lng;\n const originLat = originMarker?.getLngLat()?.lat;\n if (originLng !== undefined && originLat !== undefined) {\n for (const [key, x] of this.originDestinationCordinates.entries()) {\n if (\n x[0][0].toFixed(6) === originLng.toFixed(6) &&\n x[0][1].toFixed(6) === originLat.toFixed(6)\n ) {\n this.originDestinationCordinates.delete(key);\n break;\n }\n }\n }\n }\n\n async filterRoute(ID: any, visibility: 'visible' | 'none', showAllFitbound?: boolean) {\n if (ID && this.map) {\n if (this.map.getLayer(`route-for-job-code${ID}`)) {\n this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);\n const id = String(ID);\n const originM = this.markerOriginList.get(id);\n if (originM) {\n originM.getElement().style.display = visibility === 'visible' ? 'block' : 'none';\n }\n const destinationM = this.markerDestinationList.get(id);\n if (destinationM) {\n destinationM.getElement().style.display = visibility === 'visible' ? 'block' : 'none';\n }\n if (this.activeArcs[ID]) {\n this.activeArcs[ID].pathEl.style.display = visibility === 'visible' ? 'block' : 'none';\n }\n if (visibility === 'none' && showAllFitbound) {\n this.findMarkerBound(ID);\n this.extendReBound();\n }\n }\n if (this.map.getLayer(`arc-layer${ID}`)) {\n this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);\n }\n }\n return true;\n }\n\n extendBound(route: any, showAllFitbound: boolean | undefined, id?: string) {\n return new Promise((resolve) => {\n if (route && this.map && id) {\n if (typeof route === 'string') {\n let path: any = route.split(';');\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n route = path;\n }\n if (route[0] && route[0][0] && route[0][1] && route[route.length - 1] && route[route.length - 1][0] && route[route.length - 1][1]) {\n this.originDestinationCordinates.set(id, route);\n }\n }\n\n const localBounds = new mapboxgl.LngLatBounds();\n if (this.originDestinationCordinates.size > 0) {\n this.originDestinationCordinates.forEach((routeItem: any) => {\n routeItem.forEach((coord: any) => {\n localBounds.extend(coord as mapboxgl.LngLatLike);\n });\n });\n }\n this.bounds = localBounds;\n\n if (showAllFitbound && this.map && !localBounds.isEmpty()) {\n requestAnimationFrame(() => {\n this.map.stop();\n this.map.fitBounds(localBounds, { \n pitch: 65, \n maxZoom: 12, \n padding: 100, \n duration: 1000 \n }, { fitboundComplete: true } as any);\n });\n\n this.map.once('moveend', (event: any) => {\n if (event.fitboundComplete) {\n resolve(true);\n }\n });\n } else {\n resolve(true); \n }\n });\n }\n\n extendReBound(bottom?: number) {\n return new Promise((resolve) => {\n const localBounds = new mapboxgl.LngLatBounds();\n if (this.originDestinationCordinates.size > 0) {\n this.originDestinationCordinates.forEach((item: any) => {\n item.forEach((route: any) => {\n localBounds.extend(route as mapboxgl.LngLatLike);\n });\n });\n this.bounds = localBounds;\n\n const padTop = Math.max(0, (this.padding?.top || 0) + this.customTopForCustomer + 80);\n const padBot = Math.max(0, (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)) + 80);\n const padLeft = Math.max(0, (this.padding?.left || 0) + 350);\n const padRight = Math.max(0, (this.padding?.right || 0) + 80);\n\n const customPadding = {\n top: padTop, bottom: padBot,\n left: padLeft, right: padRight,\n };\n\n requestAnimationFrame(() => {\n if (!localBounds.isEmpty() && this.map) {\n this.map.stop();\n this.map.fitBounds(localBounds, { \n padding: customPadding, \n pitch: 65, \n maxZoom: 12,\n duration: 1000\n });\n }\n });\n resolve(true);\n } else {\n resolve(true);\n }\n });\n }\n\n async plotRoute(\n route: any,\n i: number | any,\n type: string,\n enablefitbound?: boolean,\n showAllFitbound?: boolean\n ): Promise<boolean> {\n const cacheKey = route['job_id'] || route['route_id'];\n \n // 1. Check cache FIRST\n if (this.pathCache.has(cacheKey)) {\n const path = this.pathCache.get(cacheKey)!;\n route['path'] = path;\n this.extendBound(path, showAllFitbound);\n await this.drawLine(path, i, route, enablefitbound, type);\n route['index'] = i;\n return true;\n }\n\n // 2. Check for inline path (Avoid API if already available)\n if (route['path'] && (Array.isArray(route['path']) || typeof route['path'] === 'string')) {\n let path = typeof route['path'] === 'string' ? route['path'].split(';') : route['path'];\n \n if (Array.isArray(path) && path.length > 0) {\n // Format if they are still strings\n if (typeof path[0] === 'string') {\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n }\n \n if (path.length > 0) {\n this.pathCache.set(cacheKey, path);\n route['path'] = path;\n this.extendBound(path, showAllFitbound);\n await this.drawLine(path, i, route, enablefitbound, type);\n route['index'] = i;\n return true;\n }\n }\n }\n\n // 3. Fallback to API call ONLY for jobcode (if path was missing)\n return new Promise((resolve, reject) => {\n if (['jobcode'].includes(type) || route['job_id']) {\n let param: any = { job: route['job_id'] };\n this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe({\n next: async (res: any) => {\n let path: any[] = [];\n if (res['data'] && res['data']['route']) {\n path = res['data']['route'].split(';');\n path = path.map((ele: string | any) => this.formateLatLong(ele));\n path = path.filter((ele: any) => ele && ele.length > 1);\n this.pathCache.set(cacheKey, path);\n }\n\n if (path && path.length > 0) {\n route['path'] = path;\n this.extendBound(route['path'], showAllFitbound);\n await this.drawLine(route['path'], i, route, enablefitbound, type);\n route['index'] = i;\n } else {\n this.extendBound(null, showAllFitbound);\n }\n resolve(true);\n },\n error: (err) => {\n console.warn('Failed path retrieval', err);\n reject(false);\n }\n });\n } else {\n this.extendBound(null, showAllFitbound);\n resolve(true);\n }\n });\n }\n\n /**\n * Batch toggle visibility for routes on the map.\n * If visibleIds is empty, shows everything in the registry.\n * Otherwise, shows only those in visibleIds and hides the rest.\n */\n setRoutesVisibility(visibleIds: string[], showAllOverride?: boolean, prefix?: string) {\n const showAll = showAllOverride !== undefined ? showAllOverride : (visibleIds.length === 0);\n \n this.activeRoutesRegistry.forEach((data, id) => {\n const registryId = String(id).trim();\n \n // If a prefix is provided, only operate on routes matching that prefix.\n if (prefix && !registryId.startsWith(`${prefix}-`)) {\n return;\n }\n\n const isVisible = showAll || visibleIds.includes(registryId);\n const visibility = isVisible ? 'visible' : 'none';\n const display = isVisible ? 'block' : 'none';\n\n // Toggle New Layer Format\n const newLayerId = `route-layer-${data.routeType}-${data.index || id}`;\n if (this.map.getLayer(newLayerId)) {\n this.map.setLayoutProperty(newLayerId, 'visibility', visibility);\n }\n\n // Legacy/Alternate Layer Formats\n const legacyId = `route-for-job-code${id}`;\n if (this.map.getLayer(legacyId)) {\n this.map.setLayoutProperty(legacyId, 'visibility', visibility);\n }\n if (this.map.getLayer(`line${id}`)) {\n this.map.setLayoutProperty(`line${id}`, 'visibility', visibility);\n }\n\n // Toggle Markers\n const originM = this.markerOriginList.get(registryId);\n if (originM) originM.getElement().style.display = display;\n \n const destM = this.markerDestinationList.get(registryId);\n if (destM) destM.getElement().style.display = display;\n\n // Toggle Arcs\n if (this.activeArcs[registryId]) {\n this.activeArcs[registryId].pathEl.style.display = display;\n }\n });\n \n // Recalculate bounds based on visible routes\n this.recalculateVisibleBounds(visibleIds, prefix, showAll);\n }\n\n private recalculateVisibleBounds(visibleIds: string[], prefix?: string, showAllOverride?: boolean) {\n const showAll = showAllOverride !== undefined ? showAllOverride : (visibleIds.length === 0);\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n const normalizedVisibleIds = visibleIds.map(vid => String(vid).trim());\n\n this.activeRoutesRegistry.forEach((data, id) => {\n const registryId = String(id).trim();\n \n // If a prefix is provided, only include routes that match it for the bounding box.\n // This prevents \"showAll\" from zooming to hidden routes from other sections.\n if (prefix && !registryId.startsWith(`${prefix}-`)) {\n return;\n }\n\n if (showAll || normalizedVisibleIds.includes(registryId)) {\n if (data.bounds && !data.bounds.isEmpty()) {\n this.bounds.extend(data.bounds);\n this.originDestinationCordinates.set(registryId, data.cordinates);\n } else if (data.cordinates && data.cordinates.length > 0) {\n // Fallback if bounds weren't pre-calculated\n data.cordinates.forEach((coord: any) => this.bounds.extend(coord));\n this.originDestinationCordinates.set(registryId, data.cordinates);\n }\n }\n });\n\n if (!this.bounds.isEmpty() && this.map) {\n const canvas = this.map.getCanvas();\n const mapW = canvas.clientWidth;\n const mapH = canvas.clientHeight;\n\n let padTop = Math.max(0, (Number(this.padding?.top) || 0) + (Number(this.customTopForCustomer) || 0) + 80);\n let padBot = Math.max(0, (Number(this.padding?.bottom) || 0) + (Math.max(0, Number(this.windowActualHeightWidth.availHeight) - (Number(window.innerHeight) - 65))) + 80);\n let padLeft = Math.max(0, (Number(this.padding?.left) || 0) + (window.innerWidth > 1000 ? 350 : 50));\n let padRight = Math.max(0, (Number(this.padding?.right) || 0) + 80);\n\n // Safety Clamps: Ensure padding doesn't exceed canvas size\n const maxHorizPad = mapW * 0.8;\n const maxVertPad = mapH * 0.8;\n\n if (padLeft + padRight > maxHorizPad) {\n const factor = maxHorizPad / (padLeft + padRight);\n padLeft *= factor;\n padRight *= factor;\n }\n\n if (padTop + padBot > maxVertPad) {\n const factor = maxVertPad / (padTop + padBot);\n padTop *= factor;\n padBot *= factor;\n }\n\n try {\n this.map.fitBounds(this.bounds, {\n padding: { top: padTop, bottom: padBot, left: padLeft, right: padRight },\n pitch: 65,\n maxZoom: 12,\n duration: 800\n });\n } catch (err) {\n console.warn('fitBounds failed, trying with default padding', err);\n this.map.fitBounds(this.bounds, { padding: 50, pitch: 65, maxZoom: 12 });\n }\n }\n }\n\n async clearAllRoutes() {\n // 1. Remove all markers\n this.markerOriginList.forEach(marker => marker.remove());\n this.markerDestinationList.forEach(marker => marker.remove());\n this.markerOriginList.clear();\n this.markerDestinationList.clear();\n\n // 2. Remove all arcs\n Object.keys(this.activeArcs).forEach(index => {\n const arc = this.activeArcs[index];\n if (arc.pathEl.parentNode) arc.pathEl.parentNode.removeChild(arc.pathEl);\n if (this.svgOverlay) {\n const grad = this.svgOverlay.querySelector(`defs #arc-grad-${index}`);\n if (grad && grad.parentNode) grad.parentNode.removeChild(grad);\n }\n });\n this.activeArcs = {};\n\n // 3. Remove all line layers and sources using registry metadata\n this.activeRoutesRegistry.forEach((data, regId) => {\n const type = data.routeType || 'jobcode';\n const idx = data.index || regId.split('-').pop();\n\n const layerId = `route-layer-${type}-${idx}`;\n const sourceId = `route-source-${type}-${idx}`;\n\n this.map.getLayer(layerId) ? this.map.removeLayer(layerId) : null;\n this.map.getSource(sourceId) ? this.map.removeSource(sourceId) : null;\n \n // Legacy fallback cleanup\n this.map.getLayer(`line${idx}`) ? this.map.removeLayer(`line${idx}`) : null;\n this.map.getSource(`line${idx}`) ? this.map.removeSource(`line${idx}`) : null;\n this.map.getLayer(`route-for-job-code${idx}`) ? this.map.removeLayer(`route-for-job-code${idx}`) : null;\n this.map.getSource(`route-source-for-job-code${idx}`) ? this.map.removeSource(`route-source-for-job-code${idx}`) : null;\n });\n\n // 4. Reset registries and bounds\n this.activeRoutesRegistry.clear();\n this.originDestinationCordinates.clear();\n this.bounds = new mapboxgl.LngLatBounds();\n \n if (this.popup) this.popup.remove();\n \n return true;\n }\n\n clearBound() {\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n this.clearPadding();\n }\n\n formateLatLong(latlong: string) {\n return latlong ? latlong.split(',').map((x) => +x).reverse() : null;\n }\n\n clearBoundWithCordinates() {\n this.bounds = new mapboxgl.LngLatBounds();\n this.originDestinationCordinates.clear();\n }\n\n onResize(event: any) {\n if (!this.bounds.isEmpty() && this.map) {\n this.windowActualHeightWidth.availHeight =\n window.innerHeight > window.screen.availHeight ? window.innerHeight : window.screen.availHeight;\n setTimeout(() => {\n const hRes = event.target ? event.target.innerHeight : window.innerHeight;\n this.map.fitBounds(this.bounds, {\n padding: {\n top: (this.padding?.top || 0) + this.customTopForCustomer,\n bottom: (this.padding?.bottom || 0) + (this.windowActualHeightWidth.availHeight - (hRes - 65)),\n left: (this.padding?.left || 0),\n right: (this.padding?.right || 0),\n },\n pitch: 65,\n });\n }, 500);\n }\n }\n\n setWindowHeight(screen: any) {\n this.windowActualHeightWidth.availHeight = screen;\n }\n\n setPadding(padding: any) {\n this.padding = padding;\n }\n\n clearPadding() {\n this.padding = null;\n }\n\n removeJobFromMap(data: any[]) {\n data.forEach((ele: any, index: number) => {\n const id = ele['job_id'] ? ele['job_id'] : ele['route_id'];\n this.removeRouteAndMarker(id);\n if (index === data.length - 1) {\n this.extendReBound();\n }\n });\n }\n\n resize() {\n if (this.map) {\n setTimeout(() => this.map.resize(), 0);\n }\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { MapboxService } from './mapbox.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CoolmapService {\n public mapbox = inject(MapboxService);\n public isLoading = signal(true);\n public isDataFetched = signal(false);\n public plottingIds = signal<Set<string>>(new Set());\n public resetModals = signal<number>(0);\n\n plotRoute(route: any, i?: number | any, type: string = 'jobcode', enablefitbound?: boolean, showAllFitbound?: boolean) {\n if (!route) return;\n return this.mapbox.plotRoute(route, i, type, enablefitbound, showAllFitbound);\n }\n\n loadMapProperty(pinRouteGeojson: any, index: number, unit: any, routeProps?: any) {\n this.mapbox.loadMapProperty(pinRouteGeojson, index, unit, routeProps);\n }\n\n removeRouteAndMarker(index: number | any, type: string = 'jobcode') {\n return this.mapbox.removeRouteAndMarker(index, type);\n }\n\n clearAllRoutes() {\n return this.mapbox.clearAllRoutes();\n }\n}\n","/*\n * Public API Surface of coolmap-services\n */\n\nexport * from './lib/coolmap-services';\nexport * from './lib/services/mapbox.service';\nexport { ensureMapboxWorker } from './lib/services/mapbox-gl-setup';\nexport * from './lib/services/config';\nexport * from './lib/services/data-model';\nexport * from './lib/services/coolmap.service';\nexport * from './lib/services/utils.service';\nexport * from './lib/services/ag-toast.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as _aggdirect_coolmap_services from '@aggdirect/coolmap-services';
|
|
|
4
4
|
import * as rxjs from 'rxjs';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
import * as mapbox_gl from 'mapbox-gl';
|
|
7
|
+
import mapboxgl$1 from 'mapbox-gl/dist/mapbox-gl-csp.js';
|
|
7
8
|
|
|
8
9
|
declare class CoolmapServices {
|
|
9
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<CoolmapServices, never>;
|
|
@@ -224,6 +225,17 @@ declare class MapboxService {
|
|
|
224
225
|
static ɵprov: i0.ɵɵInjectableDeclaration<MapboxService>;
|
|
225
226
|
}
|
|
226
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Mapbox GL shares code between the main bundle and its Web Worker. When the host app
|
|
230
|
+
* (e.g. customer portal) bundles/transpiles mapbox-gl, the worker often breaks with
|
|
231
|
+
* errors like "Nn is not defined" / "_createClass is not defined" in syncRTLPluginState.
|
|
232
|
+
*
|
|
233
|
+
* Use the CSP build and load the worker from Mapbox's CDN (or window.__env.mapboxWorkerUrl).
|
|
234
|
+
* Keep MAPBOX_GL_VERSION in sync with the mapbox-gl peer dependency.
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
declare function ensureMapboxWorker(): typeof mapboxgl$1;
|
|
238
|
+
|
|
227
239
|
interface CoolmapConfigModel {
|
|
228
240
|
analyticsRESTURL: string | null;
|
|
229
241
|
RESTURLPrefix: string | null;
|
|
@@ -251,5 +263,5 @@ declare class CoolmapService {
|
|
|
251
263
|
static ɵprov: i0.ɵɵInjectableDeclaration<CoolmapService>;
|
|
252
264
|
}
|
|
253
265
|
|
|
254
|
-
export { AgToastService, COOLMAP_CONFIG, CoolmapService, CoolmapServices, MapboxService, UtilsService, provideCoolmapConfig };
|
|
266
|
+
export { AgToastService, COOLMAP_CONFIG, CoolmapService, CoolmapServices, MapboxService, UtilsService, ensureMapboxWorker, provideCoolmapConfig };
|
|
255
267
|
export type { CoolmapConfigModel, CoolmapRoute, LocationAll, PopupData, Toast, ToastConfig, ToastPosition, ToastVariant };
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aggdirect/coolmap-services",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.8",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^20.3.0",
|
|
6
|
-
"@angular/core": "^20.3.0"
|
|
6
|
+
"@angular/core": "^20.3.0",
|
|
7
|
+
"mapbox-gl": "^3.0.0"
|
|
7
8
|
},
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"tslib": "^2.3.0"
|
|
@@ -19,20 +20,5 @@
|
|
|
19
20
|
"types": "./index.d.ts",
|
|
20
21
|
"default": "./fesm2022/aggdirect-coolmap-services.mjs"
|
|
21
22
|
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
"main": "index.js",
|
|
25
|
-
"scripts": {
|
|
26
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
27
|
-
},
|
|
28
|
-
"repository": {
|
|
29
|
-
"type": "git",
|
|
30
|
-
"url": "git+https://github.com/bulldog-dev/npm-packages.git#coolmap-v2"
|
|
31
|
-
},
|
|
32
|
-
"author": "navin.ogma@gmail.com",
|
|
33
|
-
"license": "ISC",
|
|
34
|
-
"bugs": {
|
|
35
|
-
"url": "https://github.com/bulldog-dev/npm-packages/issues"
|
|
36
|
-
},
|
|
37
|
-
"homepage": "https://github.com/bulldog-dev/npm-packages/tree/coolmap-v2#readme"
|
|
38
|
-
}
|
|
23
|
+
}
|
|
24
|
+
}
|