UNPKG

angular-twitter-timeline

Version:
1 lines 11.3 kB
{"version":3,"file":"angular-twitter-timeline.mjs","sources":["../../../projects/angular-twitter-timeline/src/lib/angular-twitter-timeline.service.ts","../../../projects/angular-twitter-timeline/src/lib/angular-twitter-timeline.component.ts","../../../projects/angular-twitter-timeline/src/lib/angular-twitter-timeline-data.interface.ts","../../../projects/angular-twitter-timeline/src/lib/angular-twitter-timeline-options.interface.ts","../../../projects/angular-twitter-timeline/src/public-api.ts","../../../projects/angular-twitter-timeline/src/angular-twitter-timeline.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable } from \"rxjs\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AngularTwitterTimelineService {\n private readonly TWITTER_SCRIPT_ID = 'twitter-wjs';\n private readonly TWITTER_WIDGET_URL = 'https://platform.twitter.com/widgets.js';\n\n loadScript(): Observable<any> {\n return new Observable((observer) => {\n this.startScriptLoad();\n\n (<any>window)['twttr'].ready((twttr: any) => {\n observer.next(twttr);\n observer.complete();\n });\n });\n }\n\n private startScriptLoad(): void {\n (<any>window)['twttr'] = (function (d, s, id, url) {\n let script: any;\n let firstScriptEl: any = d.getElementsByTagName(s)[0];\n let twitterScript: any = (<any>window)['twttr'] || {};\n\n if (d.getElementById(id)) {\n return twitterScript;\n }\n\n script = d.createElement(s);\n script.id = id;\n script.src = url;\n firstScriptEl.parentNode.insertBefore(script, firstScriptEl);\n\n twitterScript._e = [];\n\n twitterScript.ready = function (f: any) {\n twitterScript._e.push(f);\n };\n\n return twitterScript;\n }(document, 'script', this.TWITTER_SCRIPT_ID, this.TWITTER_WIDGET_URL));\n }\n}\n","import { Component, ElementRef, input, effect, inject } from '@angular/core';\nimport { AngularTwitterTimelineService } from \"./angular-twitter-timeline.service\";\nimport { AngularTwitterTimelineOptionsInterface } from \"./angular-twitter-timeline-options.interface\";\nimport { AngularTwitterTimelineDataInterface } from \"./angular-twitter-timeline-data.interface\";\n\n@Component({\n selector: 'angular-twitter-timeline',\n standalone: true,\n template: ``,\n providers: [AngularTwitterTimelineService]\n})\nexport class AngularTwitterTimelineComponent {\n // Modern Angular signals\n data = input<AngularTwitterTimelineDataInterface>();\n\n /**\n * A hash of additional options to configure the widget\n */\n opts = input<AngularTwitterTimelineOptionsInterface>();\n\n private element = inject(ElementRef);\n private twitterTimelineService = inject(AngularTwitterTimelineService);\n\n defaultOpts: AngularTwitterTimelineOptionsInterface = {\n theme: 'light',\n height: 600\n };\n\n defaultData: AngularTwitterTimelineDataInterface = {\n sourceType: 'url',\n url: 'https://twitter.com/mustafaer_dev',\n screenName: 'Mustafa ER'\n };\n\n constructor() {\n // Use effect to respond to input changes\n effect(() => {\n const currentData = this.data();\n if (currentData && currentData.sourceType) {\n switch (currentData.sourceType) {\n case 'url':\n delete this.defaultData.screenName;\n break;\n case 'profile':\n delete this.defaultData.url;\n break;\n default:\n break;\n }\n this.loadTwitterWidget();\n }\n });\n }\n\n loadTwitterWidget() {\n this.twitterTimelineService\n .loadScript()\n .subscribe({\n next: () => {\n let nativeElement = this.element.nativeElement;\n nativeElement.innerHTML = \"\";\n (<any>window)['twttr']\n .widgets\n .createTimeline(\n {...this.defaultData, ...this.data()},\n nativeElement,\n {...this.defaultOpts, ...this.opts()}\n )\n .then(() => {\n })\n .catch((error: any) => console.error(error))\n },\n error: (error: any) => console.error(error),\n });\n }\n\n}\n","/**\n * Interface for X (Twitter) Embedded Timeline data configuration\n * Updated for X platform changes (November 2024)\n */\nexport class AngularTwitterTimelineDataInterface {\n /**\n * Type of timeline to embed\n * 'profile' - User profile timeline\n * 'url' - Timeline from a specific URL (profile, likes, list, or collection)\n */\n sourceType: 'profile' | 'url' = 'profile';\n\n /**\n * Valid X (Twitter) username (without @ symbol)\n * Used when sourceType is 'profile'\n * Example: 'mustafaer_dev'\n */\n screenName?: string;\n\n /**\n * Absolute URL of an X (Twitter) profile, likes, list, or collection\n * Used when sourceType is 'url'\n * Example: 'https://twitter.com/angular' or 'https://x.com/angular'\n */\n url?: string;\n}\n","/**\n * Updated interface for X (Twitter) Embedded Timeline options\n * Based on the latest X platform changes (November 2024)\n * Reference: https://twittercommunity.com/t/embedded-timelines-update-parameters-support/177112\n *\n * DEPRECATED PARAMETERS (no longer supported):\n * - tweetLimit (removed)\n * - chrome (removed)\n * - ariaPolite (removed)\n * - borderColor (removed)\n */\nexport class AngularTwitterTimelineOptionsInterface {\n /**\n * Set a fixed height of the embedded widget\n * Positive integer (in pixels)\n * Recommended range: 200-2000\n */\n height?: number;\n\n /**\n * Set a fixed width of the embedded widget\n * Positive integer (in pixels)\n * Note: Timeline will be responsive if not specified\n */\n width?: number;\n\n /**\n * Sets the theme of the widget. Default = 'light'.\n * Supported values: 'light' or 'dark'\n */\n theme?: 'light' | 'dark';\n\n /**\n * Language code for the rendered timeline\n * BCP 47 language code (e.g., 'en', 'es', 'fr', 'de', 'ja')\n * Default: User's browser language\n */\n lang?: string;\n\n /**\n * @deprecated This parameter is no longer supported by X (Twitter)\n * Previously used to limit the number of tweets displayed\n */\n tweetLimit?: number;\n\n /**\n * @deprecated This parameter is no longer supported by X (Twitter)\n * Previously used to adjust border colors\n */\n borderColor?: string;\n\n /**\n * @deprecated This parameter is no longer supported by X (Twitter)\n * Previously used to toggle display elements (noheader, nofooter, etc.)\n */\n chrome?: string[];\n\n /**\n * @deprecated This parameter is no longer supported by X (Twitter)\n * Previously used for aria-polite behavior\n */\n ariaPolite?: string[];\n}\n","/*\n * Public API Surface of angular-twitter-timeline\n */\n\nexport * from './lib/angular-twitter-timeline.service';\nexport * from './lib/angular-twitter-timeline.component';\nexport * from './lib/angular-twitter-timeline-data.interface';\nexport * from './lib/angular-twitter-timeline-options.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}