ngx-serp-preview
Version:
SERP (Search Engine Result Page) Preview Component for Angular
1 lines • 31.8 kB
Source Map (JSON)
{"version":3,"file":"ngx-serp-preview.mjs","sources":["../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-google/ngx-serp-google.component.ts","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-google/ngx-serp-google.component.html","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-google-mobile/ngx-serp-google-mobile.component.ts","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-google-mobile/ngx-serp-google-mobile.component.html","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-bing/ngx-serp-bing.component.ts","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-bing/ngx-serp-bing.component.html","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-yahoo/ngx-serp-yahoo.component.ts","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-yahoo/ngx-serp-yahoo.component.html","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-tabs/ngx-serp-tabs.component.ts","../../../projects/ngx-serp-preview/src/lib/components/ngx-serp-tabs/ngx-serp-tabs.component.html","../../../projects/ngx-serp-preview/src/public-api.ts","../../../projects/ngx-serp-preview/src/ngx-serp-preview.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgxMdIconModule } from 'ngx-md-icon';\nimport { mdiDotsVertical, mdiEarth, mdiGlobeModel } from '@mdi/js';\nimport { NgIf, NgOptimizedImage } from '@angular/common';\n\n@Component({\n selector: 'ngx-serp-google',\n standalone: true,\n imports: [NgxMdIconModule, NgOptimizedImage, NgIf],\n templateUrl: './ngx-serp-google.component.html',\n styleUrls: ['./ngx-serp-google.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSerpGoogleComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding()\n public class = 'ngx-serp-google';\n\n @Input()\n public siteName?: string;\n\n @Input()\n public title?: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public url: string = 'example.com';\n\n @Input()\n public faviconUrl?: string;\n\n public formattedUrl: string = '';\n public formattedDescription: string = '';\n public formattedTitle: string = '';\n\n public siteIcon = mdiEarth;\n public menuIcon = mdiDotsVertical;\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['url']) {\n this.formattedUrl = this.formatUrl(this.url);\n }\n if (changes['description'] && this.description?.length) {\n this.formattedDescription = this.truncateString(this.description, 155);\n }\n if (changes['title'] && this.title?.length) {\n this.formattedTitle = this.truncateString(this.title, 60);\n }\n }\n\n ngOnDestroy(): void {}\n\n private formatUrl(url: string): string {\n return 'https://' + url.replace(/https?:\\/\\//, '').replace(/\\//g, ' › ');\n }\n\n /**\n * Truncate String\n */\n private truncateString(inputStr: string, maxLength: number): string {\n const words = inputStr.split(' ');\n let str = '';\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n if (str.length + word.length > maxLength) {\n str += ' ...';\n break;\n } else {\n str += ' ' + word;\n }\n }\n str = str.trim();\n\n return str;\n }\n}\n","<div class=\"ngx-serp-google__header\">\n <div class=\"\">\n <div class=\"ngx-serp-google__header-icon\">\n <ng-container *ngIf=\"faviconUrl; else mdIcon\">\n <img [src]=\"faviconUrl\" fill>\n </ng-container>\n <ng-template #mdIcon>\n <md-icon [icon]=\"siteIcon\"></md-icon>\n </ng-template>\n </div>\n </div>\n <div class=\"\">\n <div class=\"ngx-serp-google__header-title\">{{ siteName }}</div>\n <div class=\"ngx-serp-google__header-url\">\n {{ formattedUrl }}\n </div>\n </div>\n <div class=\"ngx-serp-google__header-menu\">\n <md-icon [icon]=\"menuIcon\" middle></md-icon>\n </div>\n</div>\n<div class=\"ngx-serp-google__title\">{{ formattedTitle }}</div>\n<div class=\"ngx-serp-google__description\">{{ formattedDescription }}</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgIf } from '@angular/common';\nimport { NgxMdIconModule } from 'ngx-md-icon';\nimport { mdiDotsVertical, mdiEarth } from '@mdi/js';\n\n@Component({\n selector: 'ngx-serp-google-mobile',\n standalone: true,\n imports: [NgIf, NgxMdIconModule],\n templateUrl: './ngx-serp-google-mobile.component.html',\n styleUrls: ['./ngx-serp-google-mobile.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSerpGoogleMobileComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding()\n public class = 'ngx-serp-google-mobile';\n\n @Input()\n public siteName?: string;\n\n @Input()\n public title?: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public url: string = 'example.com';\n\n @Input()\n public faviconUrl?: string;\n\n public formattedUrl: string = '';\n public formattedDescription: string = '';\n public formattedTitle: string = '';\n\n public siteIcon = mdiEarth;\n public menuIcon = mdiDotsVertical;\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['url']) {\n this.formattedUrl = this.formatUrl(this.url);\n }\n if (changes['description'] && this.description?.length) {\n this.formattedDescription = this.truncateString(this.description, 155);\n }\n if (changes['title'] && this.title?.length) {\n this.formattedTitle = this.truncateString(this.title, 82);\n }\n }\n\n ngOnDestroy(): void {}\n\n private formatUrl(url: string): string {\n return 'https://' + url.replace(/https?:\\/\\//, '').replace(/\\//g, ' › ');\n }\n\n /**\n * Truncate String\n */\n private truncateString(inputStr: string, maxLength: number): string {\n const words = inputStr.split(' ');\n let str = '';\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n if (str.length + word.length > maxLength) {\n str += ' ...';\n break;\n } else {\n str += ' ' + word;\n }\n }\n str = str.trim();\n\n return str;\n }\n}\n","<div class=\"ngx-serp-google-mobile__container\">\n <div class=\"ngx-serp-google-mobile__card\">\n\n <div class=\"ngx-serp-google-mobile__header\">\n <div class=\"\">\n <div class=\"ngx-serp-google-mobile__header-icon\">\n <ng-container *ngIf=\"faviconUrl; else mdIcon\">\n <img [src]=\"faviconUrl\" fill>\n </ng-container>\n <ng-template #mdIcon>\n <md-icon [icon]=\"siteIcon\"></md-icon>\n </ng-template>\n </div>\n </div>\n <div class=\"\">\n <div class=\"ngx-serp-google-mobile__header-title\">{{ siteName }}</div>\n <div class=\"ngx-serp-google-mobile__header-url\">\n {{ formattedUrl }}\n </div>\n </div>\n <div class=\"ngx-serp-google-mobile__header-menu\">\n <md-icon [icon]=\"menuIcon\" middle></md-icon>\n </div>\n </div>\n <div class=\"ngx-serp-google-mobile__title\">{{ formattedTitle }}</div>\n <div class=\"ngx-serp-google-mobile__description\">{{ formattedDescription }}</div>\n\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgIf } from '@angular/common';\nimport { NgxMdIconModule } from 'ngx-md-icon';\nimport { mdiDotsVertical, mdiEarth, mdiMenuDown } from '@mdi/js';\n\n@Component({\n selector: 'ngx-serp-bing',\n standalone: true,\n imports: [NgIf, NgxMdIconModule],\n templateUrl: './ngx-serp-bing.component.html',\n styleUrls: ['./ngx-serp-bing.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSerpBingComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding()\n public class = 'ngx-serp-bing';\n\n @Input()\n public title?: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public url: string = 'example.com';\n\n public formattedUrl: string = '';\n public formattedDescription: string = '';\n public formattedTitle: string = '';\n\n public downIcon = mdiMenuDown;\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['url']) {\n this.formattedUrl = this.formatUrl(this.url);\n }\n if (changes['description'] && this.description?.length) {\n this.formattedDescription = this.truncateString(this.description, 176);\n }\n if (changes['title'] && this.title?.length) {\n this.formattedTitle = this.truncateString(this.title, 60);\n }\n }\n\n ngOnDestroy(): void {}\n\n private formatUrl(url: string): string {\n const match = url.match(/^(?:https?:\\/\\/)?(?:[^@\\/\\n]+@)?(?:www\\.)?([^:\\/?\\n]+)/);\n return match ? match[0] + '…' : url;\n }\n\n /**\n * Truncate String\n */\n private truncateString(inputStr: string, maxLength: number): string {\n const words = inputStr.split(' ');\n let str = '';\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n if (str.length + word.length > maxLength) {\n str += '…';\n break;\n } else {\n str += ' ' + word;\n }\n }\n str = str.trim();\n\n return str;\n }\n}\n","<div class=\"ngx-serp-bing__title\">{{ formattedTitle }}</div>\n<div class=\"ngx-serp-bing__url\">\n {{ formattedUrl }}\n <md-icon class=\"ngx-serp-bing__url-icon\" [icon]=\"downIcon\" middle></md-icon>\n</div>\n<div class=\"ngx-serp-bing__description\">\n <span class=\"ngx-serp-bing__description-web\">Web</span>\n {{ formattedDescription }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgxMdIconModule } from 'ngx-md-icon';\nimport { mdiChevronDown, mdiMenuDown } from '@mdi/js';\n\n@Component({\n selector: 'ngx-serp-yahoo',\n standalone: true,\n imports: [NgxMdIconModule],\n templateUrl: './ngx-serp-yahoo.component.html',\n styleUrls: ['./ngx-serp-yahoo.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSerpYahooComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding()\n public class = 'ngx-serp-yahoo';\n\n @Input()\n public title?: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public url: string = 'example.com';\n\n public formattedUrl: string = '';\n public formattedDescription: string = '';\n public formattedTitle: string = '';\n\n public downIcon = mdiChevronDown;\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['url']) {\n this.formattedUrl = this.formatUrl(this.url);\n }\n if (changes['description'] && this.description?.length) {\n this.formattedDescription = this.truncateString(this.description, 176);\n }\n if (changes['title'] && this.title?.length) {\n this.formattedTitle = this.truncateString(this.title, 60);\n }\n }\n\n ngOnDestroy(): void {}\n\n private formatUrl(url: string): string {\n url = url.replace(/https?:\\/\\//, '');\n const match = url.match(/^(?:https?:\\/\\/)?(?:[^@\\/\\n]+@)?(?:www\\.)?([^:\\/?\\n]+)/);\n return match ? match[0] : url;\n }\n\n /**\n * Truncate String\n */\n private truncateString(inputStr: string, maxLength: number): string {\n const words = inputStr.split(' ');\n let str = '';\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n if (str.length + word.length > maxLength) {\n str += '…';\n break;\n } else {\n str += ' ' + word;\n }\n }\n str = str.trim();\n\n return str;\n }\n}\n","<div class=\"ngx-serp-yahoo__url\">\n {{ formattedUrl }}\n <md-icon class=\"ngx-serp-yahoo__url-icon\" [icon]=\"downIcon\" middle></md-icon>\n</div>\n<div class=\"ngx-serp-yahoo__title\">{{ formattedTitle }}</div>\n<div class=\"ngx-serp-yahoo__description\">\n {{ formattedDescription }}\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgSwitch, NgSwitchCase } from '@angular/common';\nimport { NgxSerpGoogleComponent } from '../ngx-serp-google/ngx-serp-google.component';\nimport { NgxSerpGoogleMobileComponent } from '../ngx-serp-google-mobile/ngx-serp-google-mobile.component';\nimport { NgxSerpBingComponent } from '../ngx-serp-bing/ngx-serp-bing.component';\nimport { NgxSerpYahooComponent } from '../ngx-serp-yahoo/ngx-serp-yahoo.component';\nimport { mdiCellphone, mdiGoogle, mdiMicrosoftBing, mdiPhone, mdiYahoo } from '@mdi/js';\nimport { NgxMdIconModule } from 'ngx-md-icon';\n\n@Component({\n selector: 'ngx-serp-tabs',\n standalone: true,\n imports: [\n NgSwitchCase,\n NgxSerpGoogleComponent,\n NgSwitch,\n NgxSerpGoogleMobileComponent,\n NgxSerpBingComponent,\n NgxSerpYahooComponent,\n NgxMdIconModule,\n ],\n templateUrl: './ngx-serp-tabs.component.html',\n styleUrls: ['./ngx-serp-tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class NgxSerpTabsComponent implements OnInit, OnChanges, OnDestroy {\n @HostBinding()\n public class = 'ngx-serp-tabs';\n\n @Input()\n public siteName?: string;\n\n @Input()\n public title?: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public url: string = 'example.com';\n\n @Input()\n public faviconUrl?: string;\n\n @Input()\n public activeTabIndex = 0;\n\n public icons = {\n google: mdiGoogle,\n mobile: mdiCellphone,\n bing: mdiMicrosoftBing,\n yahoo: mdiYahoo,\n };\n\n constructor(private cdRef: ChangeDetectorRef) {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n ngOnDestroy(): void {}\n}\n","<div class=\"ngx-serp-tabs__panel\">\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 0\" (click)=\"activeTabIndex = 0\">\n <md-icon [icon]=\"icons.google\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Google</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 1\" (click)=\"activeTabIndex = 1\">\n <md-icon [icon]=\"icons.mobile\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Mobile</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 2\" (click)=\"activeTabIndex = 2\">\n <md-icon [icon]=\"icons.bing\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Bing</span>\n </div>\n <div class=\"ngx-serp-tabs__panel-btn\" [class.active]=\"activeTabIndex === 3\" (click)=\"activeTabIndex = 3\">\n <md-icon [icon]=\"icons.yahoo\"></md-icon>\n <span class=\"ngx-serp-tabs__panel-label\">Yahoo</span>\n </div>\n</div>\n\n<div class=\"ngx-serp-tabs__content\">\n <ng-container [ngSwitch]=\"activeTabIndex\">\n <ngx-serp-google *ngSwitchCase=\"0\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google>\n\n <ngx-serp-google-mobile *ngSwitchCase=\"1\" [siteName]=\"siteName\" [title]=\"title\" [description]=\"description\" [url]=\"url\"\n [faviconUrl]=\"faviconUrl\"></ngx-serp-google-mobile>\n\n <ngx-serp-bing *ngSwitchCase=\"2\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-bing>\n\n <ngx-serp-yahoo *ngSwitchCase=\"3\" [title]=\"title\" [description]=\"description\" [url]=\"url\"></ngx-serp-yahoo>\n </ng-container>\n</div>\n","/*\n * Public API Surface of ngx-serp-preview\n */\n\nexport * from './lib/components/ngx-serp-tabs/ngx-serp-tabs.component';\nexport * from './lib/components/ngx-serp-google/ngx-serp-google.component';\nexport * from './lib/components/ngx-serp-google-mobile/ngx-serp-google-mobile.component';\nexport * from './lib/components/ngx-serp-bing/ngx-serp-bing.component';\nexport * from './lib/components/ngx-serp-yahoo/ngx-serp-yahoo.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}