florale-emotion/.angular/cache/17.3.17/babel-webpack/cb1221f2443514b973f37590baf...

1 line
18 KiB
JSON

{"ast":null,"code":"import * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/platform-browser\";\nexport class SEOService {\n constructor(meta, titleService) {\n this.meta = meta;\n this.titleService = titleService;\n }\n updateSEO(data) {\n // Update title\n this.titleService.setTitle(data.title);\n // Update meta description\n this.meta.updateTag({\n name: 'description',\n content: data.description\n });\n // Update keywords if provided\n if (data.keywords) {\n this.meta.updateTag({\n name: 'keywords',\n content: data.keywords\n });\n }\n // Open Graph tags\n this.meta.updateTag({\n property: 'og:title',\n content: data.title\n });\n this.meta.updateTag({\n property: 'og:description',\n content: data.description\n });\n this.meta.updateTag({\n property: 'og:type',\n content: data.type || 'website'\n });\n if (data.url) {\n this.meta.updateTag({\n property: 'og:url',\n content: data.url\n });\n }\n if (data.image) {\n this.meta.updateTag({\n property: 'og:image',\n content: data.image\n });\n }\n // Twitter Card tags\n this.meta.updateTag({\n name: 'twitter:card',\n content: 'summary_large_image'\n });\n this.meta.updateTag({\n name: 'twitter:title',\n content: data.title\n });\n this.meta.updateTag({\n name: 'twitter:description',\n content: data.description\n });\n if (data.image) {\n this.meta.updateTag({\n name: 'twitter:image',\n content: data.image\n });\n }\n // Additional SEO tags\n this.meta.updateTag({\n name: 'robots',\n content: 'index, follow'\n });\n this.meta.updateTag({\n name: 'author',\n content: 'Florale Emotion - Veronika & Corinna'\n });\n this.meta.updateTag({\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n });\n // Structured data for local business\n this.updateStructuredData();\n }\n updateStructuredData() {\n const structuredData = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"LocalBusiness\",\n \"name\": \"Florale Emotion\",\n \"description\": \"Spezialist für Blumenarrangements bei Hochzeiten, Beerdigungen und Events\",\n \"url\": \"https://florale-emotion.de\",\n \"telephone\": \"+49-XXX-XXXXXXX\",\n \"email\": \"info@florale-emotion.de\",\n \"address\": {\n \"@type\": \"PostalAddress\",\n \"addressCountry\": \"DE\",\n \"addressLocality\": \"Deutschland\"\n },\n \"geo\": {\n \"@type\": \"GeoCoordinates\",\n \"latitude\": \"51.1657\",\n \"longitude\": \"10.4515\"\n },\n \"openingHours\": [\"Mo-Fr 09:00-18:00\", \"Sa 10:00-16:00\"],\n \"serviceArea\": {\n \"@type\": \"Country\",\n \"name\": \"Deutschland\"\n },\n \"services\": [{\n \"@type\": \"Service\",\n \"name\": \"Hochzeitsfloristik\",\n \"description\": \"Brautsträuße, Kirchenschmuck und Hochzeitsdekorationen\"\n }, {\n \"@type\": \"Service\",\n \"name\": \"Trauerfloristik\",\n \"description\": \"Trauerkränze, Gestecke und Grabschmuck\"\n }, {\n \"@type\": \"Service\",\n \"name\": \"Event-Floristik\",\n \"description\": \"Florale Arrangements für Corporate Events und private Feiern\"\n }],\n \"founder\": [{\n \"@type\": \"Person\",\n \"name\": \"Veronika\",\n \"jobTitle\": \"Floristmeisterin\"\n }, {\n \"@type\": \"Person\",\n \"name\": \"Corinna\",\n \"jobTitle\": \"Floristin\"\n }],\n \"sameAs\": [\"https://www.instagram.com/florale_emotion\", \"https://www.facebook.com/floraleemotion\", \"https://www.tiktok.com/@floraleemotion\"]\n };\n // Remove existing structured data\n const existingScript = document.querySelector('script[type=\"application/ld+json\"]');\n if (existingScript) {\n existingScript.remove();\n }\n // Add new structured data\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n script.text = JSON.stringify(structuredData);\n document.head.appendChild(script);\n }\n getPageSEO(page) {\n const baseUrl = 'https://florale-emotion.de';\n const seoData = {\n home: {\n title: 'Florale Emotion - Blumen für Hochzeiten, Beerdigungen & Events',\n description: 'Professionelle Floristik für Ihre besonderen Momente. Spezialist für Hochzeiten, Beerdigungen und Events. Individuelle Beratung und hochwertige Blumenarrangements.',\n keywords: 'Floristik, Hochzeit, Beerdigung, Events, Blumen, Brautstrauß, Trauerfloristik, Deutschland',\n url: baseUrl,\n type: 'website'\n },\n portfolio: {\n title: 'Portfolio - Unsere schönsten Blumenarrangements | Florale Emotion',\n description: 'Entdecken Sie unsere vielfältigen Blumenarrangements für Hochzeiten, Beerdigungen und Events. Lassen Sie sich von unseren Arbeiten inspirieren.',\n keywords: 'Portfolio, Blumenarrangements, Hochzeitsfloristik, Trauerfloristik, Galerie, Inspiration',\n url: `${baseUrl}/portfolio`,\n type: 'website'\n },\n services: {\n title: 'Services - Professionelle Floristik für jeden Anlass | Florale Emotion',\n description: 'Unsere Services: Hochzeitsfloristik, Trauerfloristik, Corporate Events. Von der Beratung bis zur Umsetzung - wir begleiten Sie bei jedem Schritt.',\n keywords: 'Services, Hochzeitsfloristik, Trauerfloristik, Corporate Events, Beratung, Floristik-Services',\n url: `${baseUrl}/services`,\n type: 'service'\n },\n about: {\n title: 'Über uns - Das Team von Florale Emotion | Veronika & Corinna',\n description: 'Lernen Sie Veronika und Corinna kennen - das Team hinter Florale Emotion. Erfahren Sie mehr über unsere Leidenschaft für die Floristik.',\n keywords: 'Über uns, Team, Veronika, Corinna, Floristmeisterin, Floristin, Leidenschaft',\n url: `${baseUrl}/about`,\n type: 'website'\n },\n contact: {\n title: 'Kontakt - Beratung anfragen | Florale Emotion',\n description: 'Kontaktieren Sie uns für eine persönliche Beratung. Wir erstellen Ihnen gerne ein individuelles Angebot für Ihr Event.',\n keywords: 'Kontakt, Beratung, Angebot, Anfrage, Termin, Floristik-Beratung',\n url: `${baseUrl}/contact`,\n type: 'website'\n }\n };\n return seoData[page] || seoData.home;\n }\n static {\n this.ɵfac = function SEOService_Factory(t) {\n return new (t || SEOService)(i0.ɵɵinject(i1.Meta), i0.ɵɵinject(i1.Title));\n };\n }\n static {\n this.ɵprov = /*@__PURE__*/i0.ɵɵdefineInjectable({\n token: SEOService,\n factory: SEOService.ɵfac,\n providedIn: 'root'\n });\n }\n}","map":{"version":3,"names":["SEOService","constructor","meta","titleService","updateSEO","data","setTitle","title","updateTag","name","content","description","keywords","property","type","url","image","updateStructuredData","structuredData","existingScript","document","querySelector","remove","script","createElement","text","JSON","stringify","head","appendChild","getPageSEO","page","baseUrl","seoData","home","portfolio","services","about","contact","i0","ɵɵinject","i1","Meta","Title","factory","ɵfac","providedIn"],"sources":["/Users/julianvollmer/workspace/florale-emotion/src/app/services/seo.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nexport interface SEOData {\n title: string;\n description: string;\n keywords?: string;\n image?: string;\n url?: string;\n type?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SEOService {\n constructor(\n private meta: Meta,\n private titleService: Title\n ) {}\n\n updateSEO(data: SEOData) {\n // Update title\n this.titleService.setTitle(data.title);\n\n // Update meta description\n this.meta.updateTag({ name: 'description', content: data.description });\n\n // Update keywords if provided\n if (data.keywords) {\n this.meta.updateTag({ name: 'keywords', content: data.keywords });\n }\n\n // Open Graph tags\n this.meta.updateTag({ property: 'og:title', content: data.title });\n this.meta.updateTag({ property: 'og:description', content: data.description });\n this.meta.updateTag({ property: 'og:type', content: data.type || 'website' });\n \n if (data.url) {\n this.meta.updateTag({ property: 'og:url', content: data.url });\n }\n \n if (data.image) {\n this.meta.updateTag({ property: 'og:image', content: data.image });\n }\n\n // Twitter Card tags\n this.meta.updateTag({ name: 'twitter:card', content: 'summary_large_image' });\n this.meta.updateTag({ name: 'twitter:title', content: data.title });\n this.meta.updateTag({ name: 'twitter:description', content: data.description });\n \n if (data.image) {\n this.meta.updateTag({ name: 'twitter:image', content: data.image });\n }\n\n // Additional SEO tags\n this.meta.updateTag({ name: 'robots', content: 'index, follow' });\n this.meta.updateTag({ name: 'author', content: 'Florale Emotion - Veronika & Corinna' });\n this.meta.updateTag({ name: 'viewport', content: 'width=device-width, initial-scale=1' });\n \n // Structured data for local business\n this.updateStructuredData();\n }\n\n private updateStructuredData() {\n const structuredData = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"LocalBusiness\",\n \"name\": \"Florale Emotion\",\n \"description\": \"Spezialist für Blumenarrangements bei Hochzeiten, Beerdigungen und Events\",\n \"url\": \"https://florale-emotion.de\",\n \"telephone\": \"+49-XXX-XXXXXXX\",\n \"email\": \"info@florale-emotion.de\",\n \"address\": {\n \"@type\": \"PostalAddress\",\n \"addressCountry\": \"DE\",\n \"addressLocality\": \"Deutschland\"\n },\n \"geo\": {\n \"@type\": \"GeoCoordinates\",\n \"latitude\": \"51.1657\",\n \"longitude\": \"10.4515\"\n },\n \"openingHours\": [\n \"Mo-Fr 09:00-18:00\",\n \"Sa 10:00-16:00\"\n ],\n \"serviceArea\": {\n \"@type\": \"Country\",\n \"name\": \"Deutschland\"\n },\n \"services\": [\n {\n \"@type\": \"Service\",\n \"name\": \"Hochzeitsfloristik\",\n \"description\": \"Brautsträuße, Kirchenschmuck und Hochzeitsdekorationen\"\n },\n {\n \"@type\": \"Service\", \n \"name\": \"Trauerfloristik\",\n \"description\": \"Trauerkränze, Gestecke und Grabschmuck\"\n },\n {\n \"@type\": \"Service\",\n \"name\": \"Event-Floristik\",\n \"description\": \"Florale Arrangements für Corporate Events und private Feiern\"\n }\n ],\n \"founder\": [\n {\n \"@type\": \"Person\",\n \"name\": \"Veronika\",\n \"jobTitle\": \"Floristmeisterin\"\n },\n {\n \"@type\": \"Person\",\n \"name\": \"Corinna\", \n \"jobTitle\": \"Floristin\"\n }\n ],\n \"sameAs\": [\n \"https://www.instagram.com/florale_emotion\",\n \"https://www.facebook.com/floraleemotion\",\n \"https://www.tiktok.com/@floraleemotion\"\n ]\n };\n\n // Remove existing structured data\n const existingScript = document.querySelector('script[type=\"application/ld+json\"]');\n if (existingScript) {\n existingScript.remove();\n }\n\n // Add new structured data\n const script = document.createElement('script');\n script.type = 'application/ld+json';\n script.text = JSON.stringify(structuredData);\n document.head.appendChild(script);\n }\n\n getPageSEO(page: string): SEOData {\n const baseUrl = 'https://florale-emotion.de';\n \n const seoData: { [key: string]: SEOData } = {\n home: {\n title: 'Florale Emotion - Blumen für Hochzeiten, Beerdigungen & Events',\n description: 'Professionelle Floristik für Ihre besonderen Momente. Spezialist für Hochzeiten, Beerdigungen und Events. Individuelle Beratung und hochwertige Blumenarrangements.',\n keywords: 'Floristik, Hochzeit, Beerdigung, Events, Blumen, Brautstrauß, Trauerfloristik, Deutschland',\n url: baseUrl,\n type: 'website'\n },\n portfolio: {\n title: 'Portfolio - Unsere schönsten Blumenarrangements | Florale Emotion',\n description: 'Entdecken Sie unsere vielfältigen Blumenarrangements für Hochzeiten, Beerdigungen und Events. Lassen Sie sich von unseren Arbeiten inspirieren.',\n keywords: 'Portfolio, Blumenarrangements, Hochzeitsfloristik, Trauerfloristik, Galerie, Inspiration',\n url: `${baseUrl}/portfolio`,\n type: 'website'\n },\n services: {\n title: 'Services - Professionelle Floristik für jeden Anlass | Florale Emotion',\n description: 'Unsere Services: Hochzeitsfloristik, Trauerfloristik, Corporate Events. Von der Beratung bis zur Umsetzung - wir begleiten Sie bei jedem Schritt.',\n keywords: 'Services, Hochzeitsfloristik, Trauerfloristik, Corporate Events, Beratung, Floristik-Services',\n url: `${baseUrl}/services`,\n type: 'service'\n },\n about: {\n title: 'Über uns - Das Team von Florale Emotion | Veronika & Corinna',\n description: 'Lernen Sie Veronika und Corinna kennen - das Team hinter Florale Emotion. Erfahren Sie mehr über unsere Leidenschaft für die Floristik.',\n keywords: 'Über uns, Team, Veronika, Corinna, Floristmeisterin, Floristin, Leidenschaft',\n url: `${baseUrl}/about`,\n type: 'website'\n },\n contact: {\n title: 'Kontakt - Beratung anfragen | Florale Emotion',\n description: 'Kontaktieren Sie uns für eine persönliche Beratung. Wir erstellen Ihnen gerne ein individuelles Angebot für Ihr Event.',\n keywords: 'Kontakt, Beratung, Angebot, Anfrage, Termin, Floristik-Beratung',\n url: `${baseUrl}/contact`,\n type: 'website'\n }\n };\n\n return seoData[page] || seoData.home;\n }\n}"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}