{
  "$schema": "https://ai.syncfusion.com/schema/registry-item.json",
  "name": "scheduler-sync-google-calendar",
  "framework": "angular",
  "type": "registry:component",
  "component": "Scheduler",
  "variant": "sync-google-calendar",
  "dependencies": [
    "@syncfusion/ej2-angular-schedule"
  ],
  "description": "Read-only month scheduler that loads public US holiday events from a Google Calendar URL feed.",
  "meta": {
    "essentialStudioRelease": "2026 Volume 2 (v34.1.29)",
    "license": "commercial-or-community",
    "licenseNote": "The Syncfusion package is licensed. The composition in this file is source you own and edit. See https://ai.syncfusion.com/licensing.md",
    "requiresLicenseKey": true,
    "requiresServerEndpoint": true,
    "platformIndex": "https://ai.syncfusion.com/angular/llms.txt",
    "skillPack": "syncfusion/angular-ui-components-skills",
    "docs": "https://ai.syncfusion.com/gallery/angular/scheduler-sync-google-calendar.md"
  },
  "files": [
    {
      "target": "src/components/scheduler-sync-google-calendar/calendar-integration.component.ts",
      "content": "import { Component } from '@angular/core';\nimport { View, EventSettingsModel, DayService, WeekService, WorkWeekService, MonthService, AgendaService, ScheduleModule } from '@syncfusion/ej2-angular-schedule';\nimport { DataManager, WebApiAdaptor } from '@syncfusion/ej2-data';\n\n@Component({\n    // tslint:disable-next-line:component-selector\n    selector: 'control-content',\n    templateUrl: 'calendar-integration.html',\n    providers: [DayService, WeekService, WorkWeekService, MonthService, AgendaService],\n    standalone: true,\n    imports: [ScheduleModule]\n})\nexport class CalendarIntegrationComponent {\n  public readonly = true;\n  public currentView: View = 'Month';\n  private calendarId = 'en.usa%23holiday@group.v.calendar.google.com';\n  private publicKey = 'AIzaSyBgbX_tgmVanBP4yafDPPXxWr70sjbKAXM';\n  private dataManger: DataManager = new DataManager({\n    url: 'https://www.googleapis.com/calendar/v3/calendars/' + this.calendarId + '/events?key=' + this.publicKey,\n    adaptor: new WebApiAdaptor(),\n    crossDomain: true\n  });\n  public eventSettings: EventSettingsModel = { dataSource: this.dataManger };\n\n  public onDataBinding(e: Record<string, any>): void {\n    const items: Record<string, any>[] = (e['result'] as Record<string, Record<string, any>[]>)['items'];\n    const scheduleData: Record<string, any>[] = [];\n    if (items.length > 0) {\n      for (const event of items) {\n        let when: string = event['start']['dateTime'] as string;\n        let start: string = event['start']['dateTime'] as string;\n        let end: string = event['end']['dateTime'] as string;\n        if (!when) {\n          when = event['start']['date'] as string;\n          start = event['start']['date'] as string;\n          end = event['end']['date'] as string;\n        }\n        scheduleData.push({\n          Id: event['id'],\n          Subject: event['summary'],\n          StartTime: start,\n          EndTime: end,\n          IsAllDay: !event['start']['dateTime']\n        });\n      }\n    }\n    e['result'] = scheduleData;\n  }\n}\n"
    },
    {
      "target": "src/components/scheduler-sync-google-calendar/calendar-integration.html",
      "content": "<div class=\"control-section\">\n  <ejs-schedule #scheduleObj width='100%' height='650px' [eventSettings]=\"eventSettings\"\n    (dataBinding)=\"onDataBinding($event)\" [readonly]=\"readonly\" [(currentView)]=\"currentView\" timezone='UTC'>\n    <e-views>\n      <e-view option=\"Day\"></e-view>\n      <e-view option=\"Week\"></e-view>\n      <e-view option=\"WorkWeek\"></e-view>\n      <e-view option=\"Month\"></e-view>\n      <e-view option=\"Agenda\"></e-view>\n    </e-views>\n  </ejs-schedule>\n</div>\n"
    }
  ]
}