@camp2gether/c2g-ui 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/camp2gether-c2g-ui-charts.mjs +12 -12
- package/fesm2022/camp2gether-c2g-ui-charts.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui-layout.mjs +84 -84
- package/fesm2022/camp2gether-c2g-ui-layout.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui-maps.mjs +8 -8
- package/fesm2022/camp2gether-c2g-ui-maps.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui-presets.mjs +164 -164
- package/fesm2022/camp2gether-c2g-ui-presets.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui-theme.mjs +6 -6
- package/fesm2022/camp2gether-c2g-ui-theme.mjs.map +1 -1
- package/fesm2022/camp2gether-c2g-ui.mjs +342 -86
- package/fesm2022/camp2gether-c2g-ui.mjs.map +1 -1
- package/index.d.ts +61 -2
- package/package.json +1 -1
|
@@ -161,16 +161,16 @@ class MapComponent {
|
|
|
161
161
|
return [16, 46];
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
165
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: MapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: MapComponent, isStandalone: true, selector: "c2g-map", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, markers: { classPropertyName: "markers", publicName: "markers", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mapReady: "mapReady", mapClick: "mapClick", markerClick: "markerClick" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true, static: true }], ngImport: i0, template: "<div\n #mapContainer\n class=\"c2g-map\"\n [style.height]=\"height()\"\n [style.width]=\"width()\"\n></div>\n", styles: [".c2g-map-marker{position:relative;cursor:pointer;transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker--small .c2g-map-marker__pin{width:24px;height:36px}.c2g-map-marker--small .c2g-map-marker__circle{width:24px;height:24px}.c2g-map-marker--small .c2g-map-marker__icon{font-size:14px}.c2g-map-marker--small .c2g-map-marker__point{border-left-width:5px;border-right-width:5px;border-top-width:7.5px}.c2g-map-marker--small .c2g-map-marker__point:before{border-left-width:3px;border-right-width:3px;border-top-width:4.5px}.c2g-map-marker--medium .c2g-map-marker__pin{width:32px;height:46px}.c2g-map-marker--medium .c2g-map-marker__circle{width:32px;height:32px}.c2g-map-marker--medium .c2g-map-marker__icon{font-size:18px}.c2g-map-marker--medium .c2g-map-marker__point{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker--medium .c2g-map-marker__point:before{border-left-width:4px;border-right-width:4px;border-top-width:6px}.c2g-map-marker--large .c2g-map-marker__pin{width:40px;height:56px}.c2g-map-marker--large .c2g-map-marker__circle{width:40px;height:40px}.c2g-map-marker--large .c2g-map-marker__icon{font-size:22px}.c2g-map-marker--large .c2g-map-marker__point{border-left-width:8px;border-right-width:8px;border-top-width:12px}.c2g-map-marker--large .c2g-map-marker__point:before{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker__pin{position:relative;filter:drop-shadow(var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .2)));transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker__circle{position:absolute;top:0;left:50%;transform:translate(-50%);z-index:2;border-radius:50%;border:2px solid #fff;display:flex;align-items:center;justify-content:center}.c2g-map-marker__point{position:absolute;bottom:0;left:50%;transform:translate(-50%);z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-top-color:#fff}.c2g-map-marker__point:before{content:\"\";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:0;height:0;border-style:solid;border-color:transparent}.c2g-map-marker__icon{color:#fff;font-weight:700;line-height:1}.c2g-map-marker--water .c2g-map-marker__circle{background:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--water .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--forest .c2g-map-marker__circle{background:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--forest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--mountain .c2g-map-marker__circle{background:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--mountain .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--desert .c2g-map-marker__circle{background:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--desert .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--urban .c2g-map-marker__circle{background:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--urban .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--adventure .c2g-map-marker__circle{background:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--adventure .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--point-of-interest .c2g-map-marker__circle{background:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--point-of-interest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--status-declined .c2g-map-marker__circle{background:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-declined .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-completed .c2g-map-marker__circle{background:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-completed .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-current .c2g-map-marker__circle{background:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-current .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-upcoming .c2g-map-marker__circle{background:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--status-upcoming .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--new-tour .c2g-map-marker__circle{background:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__point:before{border-top-color:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__circle{border:2px solid #fff}.c2g-map-marker--selected{z-index:10}.c2g-map-marker--selected .c2g-map-marker__pin{transform:scale(1.15)}.c2g-map{border-radius:var(--c2g-radius-md, 12px);overflow:hidden;background-color:var(--c2g-neutral-100, #f2f2f2)}.c2g-map .leaflet-control-attribution{background:#fffc;font-size:10px;padding:2px 4px;border-radius:var(--c2g-radius-sm, 6px)}.c2g-map .leaflet-control-zoom{border:none;border-radius:var(--c2g-radius-md, 12px);overflow:hidden;box-shadow:var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .15))}.c2g-map .leaflet-control-zoom a{background-color:var(--c2g-neutral-50, #fff);color:var(--c2g-neutral-700, #444);border:none}.c2g-map-div-icon{background:transparent;border:none}.c2g-map-tooltip{background:var(--c2g-neutral-900, #111);color:var(--c2g-neutral-50, #fff);border:none;border-radius:var(--c2g-radius-sm, 6px);padding:2px 6px;font-size:12px;font-weight:500}.c2g-map-tooltip:before{border-top-color:var(--c2g-neutral-900, #111)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
166
166
|
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: MapComponent, decorators: [{
|
|
168
168
|
type: Component,
|
|
169
169
|
args: [{ selector: 'c2g-map', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n #mapContainer\n class=\"c2g-map\"\n [style.height]=\"height()\"\n [style.width]=\"width()\"\n></div>\n", styles: [".c2g-map-marker{position:relative;cursor:pointer;transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker--small .c2g-map-marker__pin{width:24px;height:36px}.c2g-map-marker--small .c2g-map-marker__circle{width:24px;height:24px}.c2g-map-marker--small .c2g-map-marker__icon{font-size:14px}.c2g-map-marker--small .c2g-map-marker__point{border-left-width:5px;border-right-width:5px;border-top-width:7.5px}.c2g-map-marker--small .c2g-map-marker__point:before{border-left-width:3px;border-right-width:3px;border-top-width:4.5px}.c2g-map-marker--medium .c2g-map-marker__pin{width:32px;height:46px}.c2g-map-marker--medium .c2g-map-marker__circle{width:32px;height:32px}.c2g-map-marker--medium .c2g-map-marker__icon{font-size:18px}.c2g-map-marker--medium .c2g-map-marker__point{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker--medium .c2g-map-marker__point:before{border-left-width:4px;border-right-width:4px;border-top-width:6px}.c2g-map-marker--large .c2g-map-marker__pin{width:40px;height:56px}.c2g-map-marker--large .c2g-map-marker__circle{width:40px;height:40px}.c2g-map-marker--large .c2g-map-marker__icon{font-size:22px}.c2g-map-marker--large .c2g-map-marker__point{border-left-width:8px;border-right-width:8px;border-top-width:12px}.c2g-map-marker--large .c2g-map-marker__point:before{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker__pin{position:relative;filter:drop-shadow(var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .2)));transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker__circle{position:absolute;top:0;left:50%;transform:translate(-50%);z-index:2;border-radius:50%;border:2px solid #fff;display:flex;align-items:center;justify-content:center}.c2g-map-marker__point{position:absolute;bottom:0;left:50%;transform:translate(-50%);z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-top-color:#fff}.c2g-map-marker__point:before{content:\"\";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:0;height:0;border-style:solid;border-color:transparent}.c2g-map-marker__icon{color:#fff;font-weight:700;line-height:1}.c2g-map-marker--water .c2g-map-marker__circle{background:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--water .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--forest .c2g-map-marker__circle{background:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--forest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--mountain .c2g-map-marker__circle{background:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--mountain .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--desert .c2g-map-marker__circle{background:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--desert .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--urban .c2g-map-marker__circle{background:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--urban .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--adventure .c2g-map-marker__circle{background:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--adventure .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--point-of-interest .c2g-map-marker__circle{background:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--point-of-interest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--status-declined .c2g-map-marker__circle{background:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-declined .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-completed .c2g-map-marker__circle{background:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-completed .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-current .c2g-map-marker__circle{background:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-current .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-upcoming .c2g-map-marker__circle{background:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--status-upcoming .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--new-tour .c2g-map-marker__circle{background:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__point:before{border-top-color:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__circle{border:2px solid #fff}.c2g-map-marker--selected{z-index:10}.c2g-map-marker--selected .c2g-map-marker__pin{transform:scale(1.15)}.c2g-map{border-radius:var(--c2g-radius-md, 12px);overflow:hidden;background-color:var(--c2g-neutral-100, #f2f2f2)}.c2g-map .leaflet-control-attribution{background:#fffc;font-size:10px;padding:2px 4px;border-radius:var(--c2g-radius-sm, 6px)}.c2g-map .leaflet-control-zoom{border:none;border-radius:var(--c2g-radius-md, 12px);overflow:hidden;box-shadow:var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .15))}.c2g-map .leaflet-control-zoom a{background-color:var(--c2g-neutral-50, #fff);color:var(--c2g-neutral-700, #444);border:none}.c2g-map-div-icon{background:transparent;border:none}.c2g-map-tooltip{background:var(--c2g-neutral-900, #111);color:var(--c2g-neutral-50, #fff);border:none;border-radius:var(--c2g-radius-sm, 6px);padding:2px 6px;font-size:12px;font-weight:500}.c2g-map-tooltip:before{border-top-color:var(--c2g-neutral-900, #111)}\n"] }]
|
|
170
170
|
}], ctorParameters: () => [], propDecorators: { mapContainer: [{
|
|
171
171
|
type: ViewChild,
|
|
172
172
|
args: ['mapContainer', { static: true }]
|
|
173
|
-
}]
|
|
173
|
+
}] } });
|
|
174
174
|
|
|
175
175
|
class MapMarkerComponent {
|
|
176
176
|
activityType = input('adventure', ...(ngDevMode ? [{ debugName: "activityType" }] : []));
|
|
@@ -207,13 +207,13 @@ class MapMarkerComponent {
|
|
|
207
207
|
};
|
|
208
208
|
return activityIconMap[this.activityType()];
|
|
209
209
|
}, ...(ngDevMode ? [{ debugName: "markerIcon" }] : []));
|
|
210
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
211
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
210
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: MapMarkerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.1", type: MapMarkerComponent, isStandalone: true, selector: "c2g-map-marker", inputs: { activityType: { classPropertyName: "activityType", publicName: "activityType", isSignal: true, isRequired: false, transformFunction: null }, tourStatus: { classPropertyName: "tourStatus", publicName: "tourStatus", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"c2g-map-marker\"\n [class.c2g-map-marker--selected]=\"selected()\"\n [class.c2g-map-marker--small]=\"size() === 'small'\"\n [class.c2g-map-marker--medium]=\"size() === 'medium'\"\n [class.c2g-map-marker--large]=\"size() === 'large'\"\n [class.c2g-map-marker--new-tour]=\"variant() === 'new-tour'\"\n [class]=\"'c2g-map-marker--' + markerType()\"\n>\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">{{ markerIcon() }}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n</div>\n", styles: [".c2g-map-marker{position:relative;cursor:pointer;transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker--small .c2g-map-marker__pin{width:24px;height:36px}.c2g-map-marker--small .c2g-map-marker__circle{width:24px;height:24px}.c2g-map-marker--small .c2g-map-marker__icon{font-size:14px}.c2g-map-marker--small .c2g-map-marker__point{border-left-width:5px;border-right-width:5px;border-top-width:7.5px}.c2g-map-marker--small .c2g-map-marker__point:before{border-left-width:3px;border-right-width:3px;border-top-width:4.5px}.c2g-map-marker--medium .c2g-map-marker__pin{width:32px;height:46px}.c2g-map-marker--medium .c2g-map-marker__circle{width:32px;height:32px}.c2g-map-marker--medium .c2g-map-marker__icon{font-size:18px}.c2g-map-marker--medium .c2g-map-marker__point{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker--medium .c2g-map-marker__point:before{border-left-width:4px;border-right-width:4px;border-top-width:6px}.c2g-map-marker--large .c2g-map-marker__pin{width:40px;height:56px}.c2g-map-marker--large .c2g-map-marker__circle{width:40px;height:40px}.c2g-map-marker--large .c2g-map-marker__icon{font-size:22px}.c2g-map-marker--large .c2g-map-marker__point{border-left-width:8px;border-right-width:8px;border-top-width:12px}.c2g-map-marker--large .c2g-map-marker__point:before{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker__pin{position:relative;filter:drop-shadow(var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .2)));transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker__circle{position:absolute;top:0;left:50%;transform:translate(-50%);z-index:2;border-radius:50%;border:2px solid #fff;display:flex;align-items:center;justify-content:center}.c2g-map-marker__point{position:absolute;bottom:0;left:50%;transform:translate(-50%);z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-top-color:#fff}.c2g-map-marker__point:before{content:\"\";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:0;height:0;border-style:solid;border-color:transparent}.c2g-map-marker__icon{color:#fff;font-weight:700;line-height:1}.c2g-map-marker--water .c2g-map-marker__circle{background:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--water .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--forest .c2g-map-marker__circle{background:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--forest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--mountain .c2g-map-marker__circle{background:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--mountain .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--desert .c2g-map-marker__circle{background:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--desert .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--urban .c2g-map-marker__circle{background:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--urban .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--adventure .c2g-map-marker__circle{background:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--adventure .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--point-of-interest .c2g-map-marker__circle{background:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--point-of-interest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--status-declined .c2g-map-marker__circle{background:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-declined .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-completed .c2g-map-marker__circle{background:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-completed .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-current .c2g-map-marker__circle{background:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-current .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-upcoming .c2g-map-marker__circle{background:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--status-upcoming .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--new-tour .c2g-map-marker__circle{background:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__point:before{border-top-color:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__circle{border:2px solid #fff}.c2g-map-marker--selected{z-index:10}.c2g-map-marker--selected .c2g-map-marker__pin{transform:scale(1.15)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
212
212
|
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: MapMarkerComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
215
|
args: [{ selector: 'c2g-map-marker', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"c2g-map-marker\"\n [class.c2g-map-marker--selected]=\"selected()\"\n [class.c2g-map-marker--small]=\"size() === 'small'\"\n [class.c2g-map-marker--medium]=\"size() === 'medium'\"\n [class.c2g-map-marker--large]=\"size() === 'large'\"\n [class.c2g-map-marker--new-tour]=\"variant() === 'new-tour'\"\n [class]=\"'c2g-map-marker--' + markerType()\"\n>\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">{{ markerIcon() }}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n</div>\n", styles: [".c2g-map-marker{position:relative;cursor:pointer;transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker--small .c2g-map-marker__pin{width:24px;height:36px}.c2g-map-marker--small .c2g-map-marker__circle{width:24px;height:24px}.c2g-map-marker--small .c2g-map-marker__icon{font-size:14px}.c2g-map-marker--small .c2g-map-marker__point{border-left-width:5px;border-right-width:5px;border-top-width:7.5px}.c2g-map-marker--small .c2g-map-marker__point:before{border-left-width:3px;border-right-width:3px;border-top-width:4.5px}.c2g-map-marker--medium .c2g-map-marker__pin{width:32px;height:46px}.c2g-map-marker--medium .c2g-map-marker__circle{width:32px;height:32px}.c2g-map-marker--medium .c2g-map-marker__icon{font-size:18px}.c2g-map-marker--medium .c2g-map-marker__point{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker--medium .c2g-map-marker__point:before{border-left-width:4px;border-right-width:4px;border-top-width:6px}.c2g-map-marker--large .c2g-map-marker__pin{width:40px;height:56px}.c2g-map-marker--large .c2g-map-marker__circle{width:40px;height:40px}.c2g-map-marker--large .c2g-map-marker__icon{font-size:22px}.c2g-map-marker--large .c2g-map-marker__point{border-left-width:8px;border-right-width:8px;border-top-width:12px}.c2g-map-marker--large .c2g-map-marker__point:before{border-left-width:6px;border-right-width:6px;border-top-width:9px}.c2g-map-marker__pin{position:relative;filter:drop-shadow(var(--c2g-shadow-md, 0 3px 8px rgba(0, 0, 0, .2)));transition:all var(--c2g-transition-fast, .15s ease)}.c2g-map-marker__circle{position:absolute;top:0;left:50%;transform:translate(-50%);z-index:2;border-radius:50%;border:2px solid #fff;display:flex;align-items:center;justify-content:center}.c2g-map-marker__point{position:absolute;bottom:0;left:50%;transform:translate(-50%);z-index:1;width:0;height:0;border-style:solid;border-color:transparent;border-top-color:#fff}.c2g-map-marker__point:before{content:\"\";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:0;height:0;border-style:solid;border-color:transparent}.c2g-map-marker__icon{color:#fff;font-weight:700;line-height:1}.c2g-map-marker--water .c2g-map-marker__circle{background:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--water .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-water, #1976d2)}.c2g-map-marker--forest .c2g-map-marker__circle{background:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--forest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-forest, #2e7d32)}.c2g-map-marker--mountain .c2g-map-marker__circle{background:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--mountain .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-mountain, #6d4c41)}.c2g-map-marker--desert .c2g-map-marker__circle{background:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--desert .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-desert, #f9a825)}.c2g-map-marker--urban .c2g-map-marker__circle{background:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--urban .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-urban, #546e7a)}.c2g-map-marker--adventure .c2g-map-marker__circle{background:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--adventure .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-adventure, #8e24aa)}.c2g-map-marker--point-of-interest .c2g-map-marker__circle{background:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--point-of-interest .c2g-map-marker__point:before{border-top-color:var(--c2g-activity-point-of-interest, #d81b60)}.c2g-map-marker--status-declined .c2g-map-marker__circle{background:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-declined .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-declined, #b71c1c)}.c2g-map-marker--status-completed .c2g-map-marker__circle{background:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-completed .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-completed, #2e7d32)}.c2g-map-marker--status-current .c2g-map-marker__circle{background:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-current .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-current, #ef6c00)}.c2g-map-marker--status-upcoming .c2g-map-marker__circle{background:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--status-upcoming .c2g-map-marker__point:before{border-top-color:var(--c2g-tour-upcoming, #1565c0)}.c2g-map-marker--new-tour .c2g-map-marker__circle{background:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__point:before{border-top-color:var(--c2g-primary, #16213e)}.c2g-map-marker--new-tour .c2g-map-marker__circle{border:2px solid #fff}.c2g-map-marker--selected{z-index:10}.c2g-map-marker--selected .c2g-map-marker__pin{transform:scale(1.15)}\n"] }]
|
|
216
|
-
}]
|
|
216
|
+
}] });
|
|
217
217
|
|
|
218
218
|
/**
|
|
219
219
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camp2gether-c2g-ui-maps.mjs","sources":["../../../projects/c2g-ui/maps/map/map.component.ts","../../../projects/c2g-ui/maps/map/map.component.html","../../../projects/c2g-ui/maps/map/map-marker.component.ts","../../../projects/c2g-ui/maps/map/map-marker.component.html","../../../projects/c2g-ui/maps/camp2gether-c2g-ui-maps.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n effect,\n input,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as L from 'leaflet';\nimport { C2gMapMarkerData } from './map.types';\n\n@Component({\n selector: 'c2g-map',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class MapComponent implements AfterViewInit, OnDestroy {\n @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef<HTMLDivElement>;\n\n readonly center = input<[number, number]>([47.6, 9.6]);\n readonly zoom = input<number>(7);\n readonly height = input<string>('400px');\n readonly width = input<string>('100%');\n readonly markers = input<C2gMapMarkerData[]>([]);\n readonly interactive = input<boolean>(true);\n\n readonly mapReady = output<L.Map>();\n readonly mapClick = output<L.LeafletMouseEvent>();\n readonly markerClick = output<{ marker: C2gMapMarkerData; event: L.LeafletMouseEvent }>();\n\n private map?: L.Map;\n private markerGroup?: L.LayerGroup;\n\n constructor() {\n effect(() => {\n const currentMarkers = this.markers();\n if (this.markerGroup) {\n this.updateMarkers(currentMarkers);\n }\n });\n\n effect(() => {\n const currentCenter = this.center();\n const currentZoom = this.zoom();\n if (this.map) {\n this.map.setView(L.latLng(currentCenter[0], currentCenter[1]), currentZoom, {\n animate: true,\n duration: 0.5\n });\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initializeMap();\n }\n\n ngOnDestroy(): void {\n // ViewEncapsulation.None is required for Leaflet to render tile layers and popups correctly\n // outside Angular's shadow DOM — clean up the instance explicitly to prevent memory leaks\n if (this.map) {\n this.map.remove();\n this.map = undefined;\n }\n this.markerGroup = undefined;\n }\n\n private initializeMap(): void {\n this.markerGroup = L.layerGroup();\n\n this.map = L.map(this.mapContainer.nativeElement, {\n center: L.latLng(this.center()[0], this.center()[1]),\n zoom: this.zoom(),\n zoomControl: this.interactive(),\n dragging: this.interactive(),\n touchZoom: this.interactive(),\n doubleClickZoom: this.interactive(),\n scrollWheelZoom: this.interactive(),\n boxZoom: this.interactive(),\n keyboard: this.interactive(),\n attributionControl: true\n });\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution: '© OpenStreetMap contributors',\n maxZoom: 19\n }).addTo(this.map);\n\n this.markerGroup.addTo(this.map);\n\n if (this.interactive()) {\n this.map.on('click', (event: L.LeafletMouseEvent) => {\n this.mapClick.emit(event);\n });\n }\n\n this.updateMarkers(this.markers());\n this.mapReady.emit(this.map);\n }\n\n private updateMarkers(currentMarkers: C2gMapMarkerData[]): void {\n if (!this.markerGroup) {\n return;\n }\n\n this.markerGroup.clearLayers();\n\n currentMarkers.forEach((markerData) => {\n const icon = L.divIcon({\n className: 'c2g-map-div-icon',\n html: this.buildMarkerHtml(markerData),\n iconSize: this.markerSize(markerData.size),\n iconAnchor: this.markerAnchor(markerData.size)\n });\n\n const marker = L.marker([markerData.latitude, markerData.longitude], { icon });\n\n marker.on('click', (event: L.LeafletMouseEvent) => {\n this.markerClick.emit({ marker: markerData, event });\n });\n\n if (markerData.title) {\n marker.bindTooltip(markerData.title, {\n className: 'c2g-map-tooltip',\n direction: 'top',\n offset: [0, -16]\n });\n }\n\n this.markerGroup!.addLayer(marker);\n });\n }\n\n private buildMarkerHtml(marker: C2gMapMarkerData): string {\n const markerType = marker.tourStatus ? `status-${marker.tourStatus}` : (marker.activityType ?? 'adventure');\n const markerSize = marker.size ?? 'medium';\n const markerVariant = marker.variant ?? 'default';\n const selectedClass = marker.selected ? ' c2g-map-marker--selected' : '';\n const variantClass = markerVariant === 'new-tour' ? ' c2g-map-marker--new-tour' : '';\n\n return `\n <div class=\"c2g-map-marker c2g-map-marker--${markerSize} c2g-map-marker--${markerType}${selectedClass}${variantClass}\">\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">${this.markerIcon(marker)}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n </div>\n `;\n }\n\n private markerIcon(marker: C2gMapMarkerData): string {\n if (marker.variant === 'new-tour') {\n return 'add';\n }\n\n if (marker.tourStatus) {\n const statusIconMap: Record<NonNullable<C2gMapMarkerData['tourStatus']>, string> = {\n declined: 'close',\n completed: 'check',\n current: 'radio_button_checked',\n upcoming: 'radio_button_unchecked'\n };\n return statusIconMap[marker.tourStatus];\n }\n\n const activity = marker.activityType ?? 'adventure';\n const activityIconMap: Record<NonNullable<C2gMapMarkerData['activityType']>, string> = {\n water: 'waves',\n forest: 'park',\n mountain: 'terrain',\n desert: 'wb_sunny',\n urban: 'location_city',\n adventure: 'outdoor_grill',\n 'point-of-interest': 'star'\n };\n\n return activityIconMap[activity];\n }\n\n private markerSize(size: C2gMapMarkerData['size']): L.PointExpression {\n switch (size) {\n case 'small':\n return [24, 36];\n case 'large':\n return [40, 56];\n default:\n return [32, 46];\n }\n }\n\n private markerAnchor(size: C2gMapMarkerData['size']): L.PointExpression {\n switch (size) {\n case 'small':\n return [12, 36];\n case 'large':\n return [20, 56];\n default:\n return [16, 46];\n }\n }\n}\n","<div\n #mapContainer\n class=\"c2g-map\"\n [style.height]=\"height()\"\n [style.width]=\"width()\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ActivityType, MarkerSize, TourStatus } from './map.types';\n\n@Component({\n selector: 'c2g-map-marker',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './map-marker.component.html',\n styleUrls: ['./map-marker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MapMarkerComponent {\n readonly activityType = input<ActivityType>('adventure');\n readonly tourStatus = input<TourStatus | null>(null);\n readonly selected = input<boolean>(false);\n readonly size = input<MarkerSize>('medium');\n readonly variant = input<'default' | 'new-tour'>('default');\n\n readonly markerType = computed(() => {\n const status = this.tourStatus();\n return status ? `status-${status}` : this.activityType();\n });\n\n readonly markerIcon = computed(() => {\n if (this.variant() === 'new-tour') {\n return 'add';\n }\n\n const status = this.tourStatus();\n if (status) {\n const statusIconMap: Record<TourStatus, string> = {\n declined: 'close',\n completed: 'check',\n current: 'radio_button_checked',\n upcoming: 'radio_button_unchecked'\n };\n return statusIconMap[status];\n }\n\n const activityIconMap: Record<ActivityType, string> = {\n water: 'waves',\n forest: 'park',\n mountain: 'terrain',\n desert: 'wb_sunny',\n urban: 'location_city',\n adventure: 'outdoor_grill',\n 'point-of-interest': 'star'\n };\n\n return activityIconMap[this.activityType()];\n });\n}\n","<div\n class=\"c2g-map-marker\"\n [class.c2g-map-marker--selected]=\"selected()\"\n [class.c2g-map-marker--small]=\"size() === 'small'\"\n [class.c2g-map-marker--medium]=\"size() === 'medium'\"\n [class.c2g-map-marker--large]=\"size() === 'large'\"\n [class.c2g-map-marker--new-tour]=\"variant() === 'new-tour'\"\n [class]=\"'c2g-map-marker--' + markerType()\"\n>\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">{{ markerIcon() }}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAyBa,YAAY,CAAA;AACsB,IAAA,YAAY;IAEhD,MAAM,GAAG,KAAK,CAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC7C,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;AACvB,IAAA,MAAM,GAAG,KAAK,CAAS,OAAO,kDAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAS,MAAM,iDAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAqB,EAAE,mDAAC;AACvC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;IAElC,QAAQ,GAAG,MAAM,EAAS;IAC1B,QAAQ,GAAG,MAAM,EAAuB;IACxC,WAAW,GAAG,MAAM,EAA4D;AAEjF,IAAA,GAAG;AACH,IAAA,WAAW;AAEnB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YACpC;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;AAC1E,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,QAAQ,EAAE;AACX,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;;;AAGT,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,GAAG,GAAG,SAAS;QACtB;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;IAC9B;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,EAAE;AAEjC,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;AACnC,YAAA,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;AAC3B,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,kBAAkB,EAAE;AACrB,SAAA,CAAC;AAEF,QAAA,CAAC,CAAC,SAAS,CAAC,oDAAoD,EAAE;AAChE,YAAA,WAAW,EAAE,8BAA8B;AAC3C,YAAA,OAAO,EAAE;AACV,SAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAElB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA0B,KAAI;AAClD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,CAAC,CAAC;QACJ;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9B;AAEQ,IAAA,aAAa,CAAC,cAAkC,EAAA;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAE9B,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;AACpC,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC;AACrB,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;gBACtC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI;AAC9C,aAAA,CAAC;YAEF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;YAE9E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA0B,KAAI;AAChD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACtD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AACpB,gBAAA,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE;AACnC,oBAAA,SAAS,EAAE,iBAAiB;AAC5B,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;AAChB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,WAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpC,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,MAAwB,EAAA;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,CAAA,OAAA,EAAU,MAAM,CAAC,UAAU,CAAA,CAAE,IAAI,MAAM,CAAC,YAAY,IAAI,WAAW,CAAC;AAC3G,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ;AAC1C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS;AACjD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,GAAG,2BAA2B,GAAG,EAAE;AACxE,QAAA,MAAM,YAAY,GAAG,aAAa,KAAK,UAAU,GAAG,2BAA2B,GAAG,EAAE;QAEpF,OAAO;AACwC,iDAAA,EAAA,UAAU,CAAA,iBAAA,EAAoB,UAAU,CAAA,EAAG,aAAa,GAAG,YAAY,CAAA;;;AAG1D,8DAAA,EAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;;;;;KAKlF;IACH;AAEQ,IAAA,UAAU,CAAC,MAAwB,EAAA;AACzC,QAAA,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE;AACjC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,YAAA,MAAM,aAAa,GAAgE;AACjF,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE;aACX;AACD,YAAA,OAAO,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QACzC;AAEA,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,IAAI,WAAW;AACnD,QAAA,MAAM,eAAe,GAAkE;AACrF,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,mBAAmB,EAAE;SACtB;AAED,QAAA,OAAO,eAAe,CAAC,QAAQ,CAAC;IAClC;AAEQ,IAAA,UAAU,CAAC,IAA8B,EAAA;QAC/C,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,YAAA;AACE,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;;IAErB;AAEQ,IAAA,YAAY,CAAC,IAA8B,EAAA;QACjD,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,YAAA;AACE,gBAAA,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;;IAErB;wGAzLW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBzB,mHAMA,EAAA,MAAA,EAAA,CAAA,skLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAMX,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mHAAA,EAAA,MAAA,EAAA,CAAA,skLAAA,CAAA,EAAA;;sBAGpC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEdhC,kBAAkB,CAAA;AACpB,IAAA,YAAY,GAAG,KAAK,CAAe,WAAW,wDAAC;AAC/C,IAAA,UAAU,GAAG,KAAK,CAAoB,IAAI,sDAAC;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,IAAA,OAAO,GAAG,KAAK,CAAyB,SAAS,mDAAC;AAElD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,OAAO,MAAM,GAAG,UAAU,MAAM,CAAA,CAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AAC1D,IAAA,CAAC,sDAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE;AACjC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAChC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,aAAa,GAA+B;AAChD,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE;aACX;AACD,YAAA,OAAO,aAAa,CAAC,MAAM,CAAC;QAC9B;AAEA,QAAA,MAAM,eAAe,GAAiC;AACpD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,mBAAmB,EAAE;SACtB;AAED,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,IAAA,CAAC,sDAAC;wGAvCS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ/B,6mBAgBA,EAAA,MAAA,EAAA,CAAA,6vJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDTY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6mBAAA,EAAA,MAAA,EAAA,CAAA,6vJAAA,CAAA,EAAA;;;AEVjD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"camp2gether-c2g-ui-maps.mjs","sources":["../../../projects/c2g-ui/maps/map/map.component.ts","../../../projects/c2g-ui/maps/map/map.component.html","../../../projects/c2g-ui/maps/map/map-marker.component.ts","../../../projects/c2g-ui/maps/map/map-marker.component.html","../../../projects/c2g-ui/maps/camp2gether-c2g-ui-maps.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n effect,\n input,\n output\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as L from 'leaflet';\nimport { C2gMapMarkerData } from './map.types';\n\n@Component({\n selector: 'c2g-map',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class MapComponent implements AfterViewInit, OnDestroy {\n @ViewChild('mapContainer', { static: true }) mapContainer!: ElementRef<HTMLDivElement>;\n\n readonly center = input<[number, number]>([47.6, 9.6]);\n readonly zoom = input<number>(7);\n readonly height = input<string>('400px');\n readonly width = input<string>('100%');\n readonly markers = input<C2gMapMarkerData[]>([]);\n readonly interactive = input<boolean>(true);\n\n readonly mapReady = output<L.Map>();\n readonly mapClick = output<L.LeafletMouseEvent>();\n readonly markerClick = output<{ marker: C2gMapMarkerData; event: L.LeafletMouseEvent }>();\n\n private map?: L.Map;\n private markerGroup?: L.LayerGroup;\n\n constructor() {\n effect(() => {\n const currentMarkers = this.markers();\n if (this.markerGroup) {\n this.updateMarkers(currentMarkers);\n }\n });\n\n effect(() => {\n const currentCenter = this.center();\n const currentZoom = this.zoom();\n if (this.map) {\n this.map.setView(L.latLng(currentCenter[0], currentCenter[1]), currentZoom, {\n animate: true,\n duration: 0.5\n });\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initializeMap();\n }\n\n ngOnDestroy(): void {\n // ViewEncapsulation.None is required for Leaflet to render tile layers and popups correctly\n // outside Angular's shadow DOM — clean up the instance explicitly to prevent memory leaks\n if (this.map) {\n this.map.remove();\n this.map = undefined;\n }\n this.markerGroup = undefined;\n }\n\n private initializeMap(): void {\n this.markerGroup = L.layerGroup();\n\n this.map = L.map(this.mapContainer.nativeElement, {\n center: L.latLng(this.center()[0], this.center()[1]),\n zoom: this.zoom(),\n zoomControl: this.interactive(),\n dragging: this.interactive(),\n touchZoom: this.interactive(),\n doubleClickZoom: this.interactive(),\n scrollWheelZoom: this.interactive(),\n boxZoom: this.interactive(),\n keyboard: this.interactive(),\n attributionControl: true\n });\n\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution: '© OpenStreetMap contributors',\n maxZoom: 19\n }).addTo(this.map);\n\n this.markerGroup.addTo(this.map);\n\n if (this.interactive()) {\n this.map.on('click', (event: L.LeafletMouseEvent) => {\n this.mapClick.emit(event);\n });\n }\n\n this.updateMarkers(this.markers());\n this.mapReady.emit(this.map);\n }\n\n private updateMarkers(currentMarkers: C2gMapMarkerData[]): void {\n if (!this.markerGroup) {\n return;\n }\n\n this.markerGroup.clearLayers();\n\n currentMarkers.forEach((markerData) => {\n const icon = L.divIcon({\n className: 'c2g-map-div-icon',\n html: this.buildMarkerHtml(markerData),\n iconSize: this.markerSize(markerData.size),\n iconAnchor: this.markerAnchor(markerData.size)\n });\n\n const marker = L.marker([markerData.latitude, markerData.longitude], { icon });\n\n marker.on('click', (event: L.LeafletMouseEvent) => {\n this.markerClick.emit({ marker: markerData, event });\n });\n\n if (markerData.title) {\n marker.bindTooltip(markerData.title, {\n className: 'c2g-map-tooltip',\n direction: 'top',\n offset: [0, -16]\n });\n }\n\n this.markerGroup!.addLayer(marker);\n });\n }\n\n private buildMarkerHtml(marker: C2gMapMarkerData): string {\n const markerType = marker.tourStatus ? `status-${marker.tourStatus}` : (marker.activityType ?? 'adventure');\n const markerSize = marker.size ?? 'medium';\n const markerVariant = marker.variant ?? 'default';\n const selectedClass = marker.selected ? ' c2g-map-marker--selected' : '';\n const variantClass = markerVariant === 'new-tour' ? ' c2g-map-marker--new-tour' : '';\n\n return `\n <div class=\"c2g-map-marker c2g-map-marker--${markerSize} c2g-map-marker--${markerType}${selectedClass}${variantClass}\">\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">${this.markerIcon(marker)}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n </div>\n `;\n }\n\n private markerIcon(marker: C2gMapMarkerData): string {\n if (marker.variant === 'new-tour') {\n return 'add';\n }\n\n if (marker.tourStatus) {\n const statusIconMap: Record<NonNullable<C2gMapMarkerData['tourStatus']>, string> = {\n declined: 'close',\n completed: 'check',\n current: 'radio_button_checked',\n upcoming: 'radio_button_unchecked'\n };\n return statusIconMap[marker.tourStatus];\n }\n\n const activity = marker.activityType ?? 'adventure';\n const activityIconMap: Record<NonNullable<C2gMapMarkerData['activityType']>, string> = {\n water: 'waves',\n forest: 'park',\n mountain: 'terrain',\n desert: 'wb_sunny',\n urban: 'location_city',\n adventure: 'outdoor_grill',\n 'point-of-interest': 'star'\n };\n\n return activityIconMap[activity];\n }\n\n private markerSize(size: C2gMapMarkerData['size']): L.PointExpression {\n switch (size) {\n case 'small':\n return [24, 36];\n case 'large':\n return [40, 56];\n default:\n return [32, 46];\n }\n }\n\n private markerAnchor(size: C2gMapMarkerData['size']): L.PointExpression {\n switch (size) {\n case 'small':\n return [12, 36];\n case 'large':\n return [20, 56];\n default:\n return [16, 46];\n }\n }\n}\n","<div\n #mapContainer\n class=\"c2g-map\"\n [style.height]=\"height()\"\n [style.width]=\"width()\"\n></div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { ActivityType, MarkerSize, TourStatus } from './map.types';\n\n@Component({\n selector: 'c2g-map-marker',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './map-marker.component.html',\n styleUrls: ['./map-marker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MapMarkerComponent {\n readonly activityType = input<ActivityType>('adventure');\n readonly tourStatus = input<TourStatus | null>(null);\n readonly selected = input<boolean>(false);\n readonly size = input<MarkerSize>('medium');\n readonly variant = input<'default' | 'new-tour'>('default');\n\n readonly markerType = computed(() => {\n const status = this.tourStatus();\n return status ? `status-${status}` : this.activityType();\n });\n\n readonly markerIcon = computed(() => {\n if (this.variant() === 'new-tour') {\n return 'add';\n }\n\n const status = this.tourStatus();\n if (status) {\n const statusIconMap: Record<TourStatus, string> = {\n declined: 'close',\n completed: 'check',\n current: 'radio_button_checked',\n upcoming: 'radio_button_unchecked'\n };\n return statusIconMap[status];\n }\n\n const activityIconMap: Record<ActivityType, string> = {\n water: 'waves',\n forest: 'park',\n mountain: 'terrain',\n desert: 'wb_sunny',\n urban: 'location_city',\n adventure: 'outdoor_grill',\n 'point-of-interest': 'star'\n };\n\n return activityIconMap[this.activityType()];\n });\n}\n","<div\n class=\"c2g-map-marker\"\n [class.c2g-map-marker--selected]=\"selected()\"\n [class.c2g-map-marker--small]=\"size() === 'small'\"\n [class.c2g-map-marker--medium]=\"size() === 'medium'\"\n [class.c2g-map-marker--large]=\"size() === 'large'\"\n [class.c2g-map-marker--new-tour]=\"variant() === 'new-tour'\"\n [class]=\"'c2g-map-marker--' + markerType()\"\n>\n <div class=\"c2g-map-marker__pin\">\n <div class=\"c2g-map-marker__circle\">\n <span class=\"c2g-map-marker__icon material-icons\">{{ markerIcon() }}</span>\n </div>\n <div class=\"c2g-map-marker__point\"></div>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|