{"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/actions.ts","../src/lib/fullscreen-plugin.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { FullscreenPluginConfig } from './types';\n\nexport const FULLSCREEN_PLUGIN_ID = 'fullscreen';\n\nexport const manifest: PluginManifest<FullscreenPluginConfig> = {\n  id: FULLSCREEN_PLUGIN_ID,\n  name: 'Fullscreen Plugin',\n  version: '1.0.0',\n  provides: ['fullscreen'],\n  requires: [],\n  optional: [],\n  defaultConfig: {},\n};\n","import { Action } from '@embedpdf/core';\n\nexport const SET_FULLSCREEN = 'SET_FULLSCREEN';\n\nexport interface SetFullscreenAction extends Action {\n  type: typeof SET_FULLSCREEN;\n  payload: boolean;\n}\n\nexport type FullscreenAction = SetFullscreenAction;\n\nexport function setFullscreen(payload: boolean): SetFullscreenAction {\n  return { type: SET_FULLSCREEN, payload };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport {\n  FullscreenCapability,\n  FullscreenPluginConfig,\n  FullscreenState,\n  FullscreenRequestEvent,\n} from './types';\nimport { FullscreenAction, setFullscreen } from './actions';\n\nexport class FullscreenPlugin extends BasePlugin<\n  FullscreenPluginConfig,\n  FullscreenCapability,\n  FullscreenState,\n  FullscreenAction\n> {\n  static readonly id = 'fullscreen' as const;\n\n  private readonly onStateChange$ = createBehaviorEmitter<FullscreenState>();\n  private readonly fullscreenRequest$ = createEmitter<FullscreenRequestEvent>();\n  private config: FullscreenPluginConfig;\n  private currentTargetElement?: string;\n\n  constructor(id: string, registry: PluginRegistry, config: FullscreenPluginConfig) {\n    super(id, registry);\n    this.config = config;\n  }\n\n  async initialize(_: FullscreenPluginConfig): Promise<void> {}\n\n  protected buildCapability(): FullscreenCapability {\n    return {\n      isFullscreen: () => this.state.isFullscreen,\n      enableFullscreen: (targetElement?: string) => this.enableFullscreen(targetElement),\n      exitFullscreen: () => this.exitFullscreen(),\n      toggleFullscreen: (targetElement?: string) => this.toggleFullscreen(targetElement),\n      onRequest: this.fullscreenRequest$.on,\n      onStateChange: this.onStateChange$.on,\n    };\n  }\n\n  public getTargetSelector(): string | undefined {\n    // Return the current target (from last request) or fall back to config default\n    return this.currentTargetElement ?? this.config.targetElement;\n  }\n\n  private toggleFullscreen(targetElement?: string): void {\n    if (this.state.isFullscreen) {\n      this.exitFullscreen();\n    } else {\n      this.enableFullscreen(targetElement);\n    }\n  }\n\n  private enableFullscreen(targetElement?: string): void {\n    // Store the target element for this request\n    this.currentTargetElement = targetElement ?? this.config.targetElement;\n\n    this.fullscreenRequest$.emit({\n      action: 'enter',\n      targetElement: this.currentTargetElement,\n    });\n  }\n\n  private exitFullscreen(): void {\n    this.fullscreenRequest$.emit({\n      action: 'exit',\n    });\n\n    // Clear the current target when exiting\n    this.currentTargetElement = undefined;\n  }\n\n  override onStoreUpdated(_: FullscreenState, newState: FullscreenState): void {\n    this.onStateChange$.emit(newState);\n  }\n\n  public setFullscreenState(isFullscreen: boolean): void {\n    this.dispatch(setFullscreen(isFullscreen));\n  }\n\n  async destroy(): Promise<void> {\n    this.fullscreenRequest$.clear();\n    super.destroy();\n  }\n}\n","import { Reducer } from '@embedpdf/core';\nimport { FullscreenState } from './types';\nimport { FullscreenAction, SET_FULLSCREEN } from './actions';\n\nexport const initialState: FullscreenState = {\n  isFullscreen: false,\n};\n\nexport const reducer: Reducer<FullscreenState, FullscreenAction> = (state, action) => {\n  switch (action.type) {\n    case SET_FULLSCREEN:\n      return { ...state, isFullscreen: action.payload };\n    default:\n      return state;\n  }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, FULLSCREEN_PLUGIN_ID } from './manifest';\nimport { FullscreenPluginConfig, FullscreenState } from './types';\nimport { FullscreenPlugin } from './fullscreen-plugin';\nimport { initialState } from './reducer';\nimport { reducer } from './reducer';\nimport { FullscreenAction } from './actions';\n\nexport const FullscreenPluginPackage: PluginPackage<\n  FullscreenPlugin,\n  FullscreenPluginConfig,\n  FullscreenState,\n  FullscreenAction\n> = {\n  manifest,\n  create: (registry, config) => new FullscreenPlugin(FULLSCREEN_PLUGIN_ID, registry, config),\n  reducer,\n  initialState,\n};\n\nexport * from './fullscreen-plugin';\nexport * from './types';\nexport * from './manifest';\nexport * from './actions';\nexport { initialState };\n"],"names":["FULLSCREEN_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","SET_FULLSCREEN","setFullscreen","payload","type","_FullscreenPlugin","BasePlugin","constructor","registry","config","super","this","onStateChange$","createBehaviorEmitter","fullscreenRequest$","createEmitter","initialize","_","buildCapability","isFullscreen","state","enableFullscreen","targetElement","exitFullscreen","toggleFullscreen","onRequest","on","onStateChange","getTargetSelector","currentTargetElement","emit","action","onStoreUpdated","newState","setFullscreenState","dispatch","destroy","clear","FullscreenPlugin","initialState","FullscreenPluginPackage","create","reducer"],"mappings":"kHAGaA,EAAuB,aAEvBC,EAAmD,CAC9DC,GAAIF,EACJG,KAAM,oBACNC,QAAS,QACTC,SAAU,CAAC,cACXC,SAAU,GACVC,SAAU,GACVC,cAAe,CAAA,GCVJC,EAAiB,iBASvB,SAASC,EAAcC,GAC5B,MAAO,CAAEC,KAAMH,EAAgBE,UACjC,CCJO,MAAME,EAAN,cAA+BC,EAAAA,WAapC,WAAAC,CAAYb,EAAYc,EAA0BC,GAChDC,MAAMhB,EAAIc,GANZG,KAAiBC,eAAiBC,0BAClCF,KAAiBG,mBAAqBC,kBAMpCJ,KAAKF,OAASA,CAChB,CAEA,gBAAMO,CAAWC,GAA2C,CAElD,eAAAC,GACR,MAAO,CACLC,aAAc,IAAMR,KAAKS,MAAMD,aAC/BE,iBAAmBC,GAA2BX,KAAKU,iBAAiBC,GACpEC,eAAgB,IAAMZ,KAAKY,iBAC3BC,iBAAmBF,GAA2BX,KAAKa,iBAAiBF,GACpEG,UAAWd,KAAKG,mBAAmBY,GACnCC,cAAehB,KAAKC,eAAec,GAEvC,CAEO,iBAAAE,GAEL,OAAOjB,KAAKkB,sBAAwBlB,KAAKF,OAAOa,aAClD,CAEQ,gBAAAE,CAAiBF,GACnBX,KAAKS,MAAMD,aACbR,KAAKY,iBAELZ,KAAKU,iBAAiBC,EAE1B,CAEQ,gBAAAD,CAAiBC,GAEvBX,KAAKkB,qBAAuBP,GAAiBX,KAAKF,OAAOa,cAEzDX,KAAKG,mBAAmBgB,KAAK,CAC3BC,OAAQ,QACRT,cAAeX,KAAKkB,sBAExB,CAEQ,cAAAN,GACNZ,KAAKG,mBAAmBgB,KAAK,CAC3BC,OAAQ,SAIVpB,KAAKkB,0BAAuB,CAC9B,CAES,cAAAG,CAAef,EAAoBgB,GAC1CtB,KAAKC,eAAekB,KAAKG,EAC3B,CAEO,kBAAAC,CAAmBf,GACxBR,KAAKwB,SAASjC,EAAciB,GAC9B,CAEA,aAAMiB,GACJzB,KAAKG,mBAAmBuB,QACxB3B,MAAM0B,SACR,GApEA/B,EAAgBX,GAAK,aANhB,IAAM4C,EAANjC,ECLA,MAAMkC,EAAgC,CAC3CpB,cAAc,GCGHqB,EAKT,CACF/C,WACAgD,OAAQ,CAACjC,EAAUC,IAAW,IAAI6B,EAAiB9C,EAAsBgB,EAAUC,GACnFiC,QDRiE,CAACtB,EAAOW,IACjEA,EAAO3B,OACRH,EACI,IAAKmB,EAAOD,aAAcY,EAAO5B,SAEjCiB,ECIXmB"}