@embedpdf/plugin-spread 1.0.18 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core");var t=(e=>(e.None="none",e.Odd="odd",e.Even="even",e))(t||{});const a="SET_SPREAD_MODE";function r(e){return{type:a,payload:e}}const s=class extends e.BasePlugin{constructor(a,s,d){super(a,s),this.spreadEmitter$=e.createEmitter(),this.resetReady(),this.dispatch(r(d.defaultSpreadMode??t.None));s.getPlugin("loader").provides().onDocumentLoaded((e=>this.documentLoaded(e)))}async initialize(e){e.defaultSpreadMode&&this.dispatch(r(e.defaultSpreadMode))}documentLoaded(t){this.dispatchCoreAction(e.setPages(this.getSpreadPagesObjects(t.pages))),this.markReady()}getSpreadPagesObjects(e){if(!e.length)return[];switch(this.state.spreadMode){case t.None:return e.map((e=>[e]));case t.Odd:return Array.from({length:Math.ceil(e.length/2)},((t,a)=>e.slice(2*a,2*a+2)));case t.Even:return[[e[0]],...Array.from({length:Math.ceil((e.length-1)/2)},((t,a)=>e.slice(1+2*a,1+2*a+2)))];default:return e.map((e=>[e]))}}setSpreadMode(t){const a=this.state.spreadMode,s=this.coreState.core.document;if(!s)throw new Error("Document not loaded");a!==t&&(this.dispatch(r(t)),this.dispatchCoreAction(e.setPages(this.getSpreadPagesObjects(s.pages))),this.notifySpreadChange(t))}notifySpreadChange(e){this.spreadEmitter$.emit(e)}buildCapability(){return{onSpreadChange:this.spreadEmitter$.on,setSpreadMode:e=>this.setSpreadMode(e),getSpreadMode:()=>this.state.spreadMode,getSpreadPagesObjects:e=>this.getSpreadPagesObjects(e)}}async destroy(){this.spreadEmitter$.clear()}};s.id="spread";let d=s;const o="spread",i={id:o,name:"Spread Plugin",version:"1.0.0",provides:["spread"],requires:["loader"],optional:[],defaultConfig:{enabled:!0}},n={spreadMode:t.None},p={manifest:i,create:(e,t
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core");var t=(e=>(e.None="none",e.Odd="odd",e.Even="even",e))(t||{});const a="SET_SPREAD_MODE";function r(e){return{type:a,payload:e}}const s=class extends e.BasePlugin{constructor(a,s,d){super(a,s),this.spreadEmitter$=e.createEmitter(),this.resetReady(),this.dispatch(r(d.defaultSpreadMode??t.None));s.getPlugin("loader").provides().onDocumentLoaded((e=>this.documentLoaded(e)))}async initialize(e){e.defaultSpreadMode&&this.dispatch(r(e.defaultSpreadMode))}documentLoaded(t){this.dispatchCoreAction(e.setPages(this.getSpreadPagesObjects(t.pages))),this.markReady()}getSpreadPagesObjects(e){if(!e.length)return[];switch(this.state.spreadMode){case t.None:return e.map((e=>[e]));case t.Odd:return Array.from({length:Math.ceil(e.length/2)},((t,a)=>e.slice(2*a,2*a+2)));case t.Even:return[[e[0]],...Array.from({length:Math.ceil((e.length-1)/2)},((t,a)=>e.slice(1+2*a,1+2*a+2)))];default:return e.map((e=>[e]))}}setSpreadMode(t){const a=this.state.spreadMode,s=this.coreState.core.document;if(!s)throw new Error("Document not loaded");a!==t&&(this.dispatch(r(t)),this.dispatchCoreAction(e.setPages(this.getSpreadPagesObjects(s.pages))),this.notifySpreadChange(t))}notifySpreadChange(e){this.spreadEmitter$.emit(e)}buildCapability(){return{onSpreadChange:this.spreadEmitter$.on,setSpreadMode:e=>this.setSpreadMode(e),getSpreadMode:()=>this.state.spreadMode,getSpreadPagesObjects:e=>this.getSpreadPagesObjects(e)}}async destroy(){this.spreadEmitter$.clear()}};s.id="spread";let d=s;const o="spread",i={id:o,name:"Spread Plugin",version:"1.0.0",provides:["spread"],requires:["loader"],optional:[],defaultConfig:{enabled:!0}},n={spreadMode:t.None},p={manifest:i,create:(e,t)=>new d(o,e,t),reducer:(e=n,t)=>t.type===a?{...e,spreadMode:t.payload}:e,initialState:n};exports.SPREAD_PLUGIN_ID=o,exports.SpreadMode=t,exports.SpreadPlugin=d,exports.SpreadPluginPackage=p,exports.manifest=i;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/lib/types.ts","../src/lib/actions.ts","../src/lib/spread-plugin.ts","../src/lib/manifest.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { BasePluginConfig, EventHook } from '@embedpdf/core';\nimport { PdfPageObject } from '@embedpdf/models';\n\nexport interface SpreadPluginConfig extends BasePluginConfig {\n defaultSpreadMode?: SpreadMode;\n}\n\nexport enum SpreadMode {\n None = 'none',\n Odd = 'odd',\n Even = 'even',\n}\n\nexport interface SpreadCapability {\n onSpreadChange: EventHook<SpreadMode>;\n setSpreadMode(mode: SpreadMode): void;\n getSpreadMode(): SpreadMode;\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][];\n}\n\nexport interface SpreadState {\n spreadMode: SpreadMode;\n}\n","import { SpreadMode } from './types';\n\nexport const SET_SPREAD_MODE = 'SET_SPREAD_MODE';\n\nexport interface SetSpreadModeAction {\n type: typeof SET_SPREAD_MODE;\n payload: SpreadMode;\n}\n\nexport type SpreadAction = SetSpreadModeAction;\n\nexport function setSpreadMode(mode: SpreadMode): SetSpreadModeAction {\n return {\n type: SET_SPREAD_MODE,\n payload: mode,\n };\n}\n","import { BasePlugin, createEmitter, PluginRegistry, setPages } from '@embedpdf/core';\nimport { PdfDocumentObject, PdfPageObject } from '@embedpdf/models';\nimport { LoaderPlugin } from '@embedpdf/plugin-loader';\nimport { SpreadCapability, SpreadMode, SpreadPluginConfig, SpreadState } from './types';\nimport { setSpreadMode } from './actions';\nimport { SpreadAction } from './actions';\n\nexport class SpreadPlugin extends BasePlugin<\n SpreadPluginConfig,\n SpreadCapability,\n SpreadState,\n SpreadAction\n> {\n static readonly id = 'spread' as const;\n\n private readonly spreadEmitter$ = createEmitter<SpreadMode>();\n\n constructor(id: string, registry: PluginRegistry, cfg: SpreadPluginConfig) {\n super(id, registry);\n this.resetReady();\n this.dispatch(setSpreadMode(cfg.defaultSpreadMode ?? SpreadMode.None));\n const loaderPlugin = registry.getPlugin<LoaderPlugin>('loader');\n loaderPlugin!.provides().onDocumentLoaded((document) => this.documentLoaded(document));\n }\n\n async initialize(config: SpreadPluginConfig): Promise<void> {\n if (config.defaultSpreadMode) {\n this.dispatch(setSpreadMode(config.defaultSpreadMode));\n }\n }\n\n private documentLoaded(document: PdfDocumentObject): void {\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.markReady();\n }\n\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][] {\n if (!pages.length) return [];\n\n switch (this.state.spreadMode) {\n case SpreadMode.None:\n return pages.map((page) => [page]);\n\n case SpreadMode.Odd:\n return Array.from({ length: Math.ceil(pages.length / 2) }, (_, i) =>\n pages.slice(i * 2, i * 2 + 2),\n );\n\n case SpreadMode.Even:\n return [\n [pages[0]],\n ...Array.from({ length: Math.ceil((pages.length - 1) / 2) }, (_, i) =>\n pages.slice(1 + i * 2, 1 + i * 2 + 2),\n ),\n ];\n\n default:\n return pages.map((page) => [page]);\n }\n }\n\n setSpreadMode(mode: SpreadMode): void {\n const currentMode = this.state.spreadMode;\n const document = this.coreState.core.document;\n if (!document) {\n throw new Error('Document not loaded');\n }\n if (currentMode !== mode) {\n this.dispatch(setSpreadMode(mode));\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.notifySpreadChange(mode);\n }\n }\n\n private notifySpreadChange(spreadMode: SpreadMode): void {\n this.spreadEmitter$.emit(spreadMode);\n }\n\n protected buildCapability(): SpreadCapability {\n return {\n onSpreadChange: this.spreadEmitter$.on,\n setSpreadMode: (mode) => this.setSpreadMode(mode),\n getSpreadMode: () => this.state.spreadMode,\n getSpreadPagesObjects: (pages) => this.getSpreadPagesObjects(pages),\n };\n }\n\n async destroy(): Promise<void> {\n this.spreadEmitter$.clear();\n }\n}\n","import { PluginManifest } from '@embedpdf/core';\nimport { SpreadPluginConfig } from './types';\n\nexport const SPREAD_PLUGIN_ID = 'spread';\n\nexport const manifest: PluginManifest<SpreadPluginConfig> = {\n id: SPREAD_PLUGIN_ID,\n name: 'Spread Plugin',\n version: '1.0.0',\n provides: ['spread'],\n requires: ['loader'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Reducer } from '@embedpdf/core';\nimport { SpreadState, SpreadMode } from './types';\nimport { SET_SPREAD_MODE, SetSpreadModeAction } from './actions';\n\nexport const initialState: SpreadState = {\n spreadMode: SpreadMode.None,\n};\n\nexport const spreadReducer: Reducer<SpreadState, SetSpreadModeAction> = (\n state = initialState,\n action,\n) => {\n switch (action.type) {\n case SET_SPREAD_MODE:\n return {\n ...state,\n spreadMode: action.payload,\n };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { SpreadPlugin } from './spread-plugin';\nimport { manifest, SPREAD_PLUGIN_ID } from './manifest';\nimport { SpreadPluginConfig, SpreadState } from './types';\nimport { spreadReducer, initialState } from './reducer';\nimport { SpreadAction } from './actions';\n\nexport const SpreadPluginPackage: PluginPackage<\n SpreadPlugin,\n SpreadPluginConfig,\n SpreadState,\n SpreadAction\n> = {\n manifest,\n create: (registry,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/lib/types.ts","../src/lib/actions.ts","../src/lib/spread-plugin.ts","../src/lib/manifest.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { BasePluginConfig, EventHook } from '@embedpdf/core';\nimport { PdfPageObject } from '@embedpdf/models';\n\nexport interface SpreadPluginConfig extends BasePluginConfig {\n defaultSpreadMode?: SpreadMode;\n}\n\nexport enum SpreadMode {\n None = 'none',\n Odd = 'odd',\n Even = 'even',\n}\n\nexport interface SpreadCapability {\n onSpreadChange: EventHook<SpreadMode>;\n setSpreadMode(mode: SpreadMode): void;\n getSpreadMode(): SpreadMode;\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][];\n}\n\nexport interface SpreadState {\n spreadMode: SpreadMode;\n}\n","import { SpreadMode } from './types';\n\nexport const SET_SPREAD_MODE = 'SET_SPREAD_MODE';\n\nexport interface SetSpreadModeAction {\n type: typeof SET_SPREAD_MODE;\n payload: SpreadMode;\n}\n\nexport type SpreadAction = SetSpreadModeAction;\n\nexport function setSpreadMode(mode: SpreadMode): SetSpreadModeAction {\n return {\n type: SET_SPREAD_MODE,\n payload: mode,\n };\n}\n","import { BasePlugin, createEmitter, PluginRegistry, setPages } from '@embedpdf/core';\nimport { PdfDocumentObject, PdfPageObject } from '@embedpdf/models';\nimport { LoaderPlugin } from '@embedpdf/plugin-loader';\nimport { SpreadCapability, SpreadMode, SpreadPluginConfig, SpreadState } from './types';\nimport { setSpreadMode } from './actions';\nimport { SpreadAction } from './actions';\n\nexport class SpreadPlugin extends BasePlugin<\n SpreadPluginConfig,\n SpreadCapability,\n SpreadState,\n SpreadAction\n> {\n static readonly id = 'spread' as const;\n\n private readonly spreadEmitter$ = createEmitter<SpreadMode>();\n\n constructor(id: string, registry: PluginRegistry, cfg: SpreadPluginConfig) {\n super(id, registry);\n this.resetReady();\n this.dispatch(setSpreadMode(cfg.defaultSpreadMode ?? SpreadMode.None));\n const loaderPlugin = registry.getPlugin<LoaderPlugin>('loader');\n loaderPlugin!.provides().onDocumentLoaded((document) => this.documentLoaded(document));\n }\n\n async initialize(config: SpreadPluginConfig): Promise<void> {\n if (config.defaultSpreadMode) {\n this.dispatch(setSpreadMode(config.defaultSpreadMode));\n }\n }\n\n private documentLoaded(document: PdfDocumentObject): void {\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.markReady();\n }\n\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][] {\n if (!pages.length) return [];\n\n switch (this.state.spreadMode) {\n case SpreadMode.None:\n return pages.map((page) => [page]);\n\n case SpreadMode.Odd:\n return Array.from({ length: Math.ceil(pages.length / 2) }, (_, i) =>\n pages.slice(i * 2, i * 2 + 2),\n );\n\n case SpreadMode.Even:\n return [\n [pages[0]],\n ...Array.from({ length: Math.ceil((pages.length - 1) / 2) }, (_, i) =>\n pages.slice(1 + i * 2, 1 + i * 2 + 2),\n ),\n ];\n\n default:\n return pages.map((page) => [page]);\n }\n }\n\n setSpreadMode(mode: SpreadMode): void {\n const currentMode = this.state.spreadMode;\n const document = this.coreState.core.document;\n if (!document) {\n throw new Error('Document not loaded');\n }\n if (currentMode !== mode) {\n this.dispatch(setSpreadMode(mode));\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.notifySpreadChange(mode);\n }\n }\n\n private notifySpreadChange(spreadMode: SpreadMode): void {\n this.spreadEmitter$.emit(spreadMode);\n }\n\n protected buildCapability(): SpreadCapability {\n return {\n onSpreadChange: this.spreadEmitter$.on,\n setSpreadMode: (mode) => this.setSpreadMode(mode),\n getSpreadMode: () => this.state.spreadMode,\n getSpreadPagesObjects: (pages) => this.getSpreadPagesObjects(pages),\n };\n }\n\n async destroy(): Promise<void> {\n this.spreadEmitter$.clear();\n }\n}\n","import { PluginManifest } from '@embedpdf/core';\nimport { SpreadPluginConfig } from './types';\n\nexport const SPREAD_PLUGIN_ID = 'spread';\n\nexport const manifest: PluginManifest<SpreadPluginConfig> = {\n id: SPREAD_PLUGIN_ID,\n name: 'Spread Plugin',\n version: '1.0.0',\n provides: ['spread'],\n requires: ['loader'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Reducer } from '@embedpdf/core';\nimport { SpreadState, SpreadMode } from './types';\nimport { SET_SPREAD_MODE, SetSpreadModeAction } from './actions';\n\nexport const initialState: SpreadState = {\n spreadMode: SpreadMode.None,\n};\n\nexport const spreadReducer: Reducer<SpreadState, SetSpreadModeAction> = (\n state = initialState,\n action,\n) => {\n switch (action.type) {\n case SET_SPREAD_MODE:\n return {\n ...state,\n spreadMode: action.payload,\n };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { SpreadPlugin } from './spread-plugin';\nimport { manifest, SPREAD_PLUGIN_ID } from './manifest';\nimport { SpreadPluginConfig, SpreadState } from './types';\nimport { spreadReducer, initialState } from './reducer';\nimport { SpreadAction } from './actions';\n\nexport const SpreadPluginPackage: PluginPackage<\n SpreadPlugin,\n SpreadPluginConfig,\n SpreadState,\n SpreadAction\n> = {\n manifest,\n create: (registry, config) => new SpreadPlugin(SPREAD_PLUGIN_ID, registry, config),\n reducer: spreadReducer,\n initialState,\n};\n\nexport * from './spread-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["SpreadMode","SET_SPREAD_MODE","setSpreadMode","mode","type","payload","_SpreadPlugin","BasePlugin","constructor","id","registry","cfg","super","this","spreadEmitter$","createEmitter","resetReady","dispatch","defaultSpreadMode","None","getPlugin","provides","onDocumentLoaded","document","documentLoaded","initialize","config","dispatchCoreAction","setPages","getSpreadPagesObjects","pages","markReady","length","state","spreadMode","map","page","Odd","Array","from","Math","ceil","_","i","slice","Even","currentMode","coreState","core","Error","notifySpreadChange","emit","buildCapability","onSpreadChange","on","getSpreadMode","destroy","clear","SpreadPlugin","SPREAD_PLUGIN_ID","manifest","name","version","requires","optional","defaultConfig","enabled","initialState","SpreadPluginPackage","create","reducer","action"],"mappings":"kHAOY,IAAAA,GAAAA,IACVA,EAAO,KAAA,OACPA,EAAM,IAAA,MACNA,EAAO,KAAA,OAHGA,IAAAA,GAAA,CAAA,GCLL,MAAMC,EAAkB,kBASxB,SAASC,EAAcC,GACrB,MAAA,CACLC,KAAMH,EACNI,QAASF,EAEb,CCTO,MAAMG,EAAN,cAA2BC,EAAAA,WAUhC,WAAAC,CAAYC,EAAYC,EAA0BC,GAChDC,MAAMH,EAAIC,GAHKG,KAAAC,eAAiBC,kBAIhCF,KAAKG,aACLH,KAAKI,SAASf,EAAcS,EAAIO,mBAAqBlB,EAAWmB,OAC3CT,EAASU,UAAwB,UACxCC,WAAWC,kBAAkBC,GAAaV,KAAKW,eAAeD,IAAS,CAGvF,gBAAME,CAAWC,GACXA,EAAOR,mBACTL,KAAKI,SAASf,EAAcwB,EAAOR,mBACrC,CAGM,cAAAM,CAAeD,GAChBV,KAAAc,mBAAmBC,WAASf,KAAKgB,sBAAsBN,EAASO,SACrEjB,KAAKkB,WAAU,CAGjB,qBAAAF,CAAsBC,GACpB,IAAKA,EAAME,OAAQ,MAAO,GAElB,OAAAnB,KAAKoB,MAAMC,YACjB,KAAKlC,EAAWmB,KACd,OAAOW,EAAMK,KAAKC,GAAS,CAACA,KAE9B,KAAKpC,EAAWqC,IACd,OAAOC,MAAMC,KAAK,CAAEP,OAAQQ,KAAKC,KAAKX,EAAME,OAAS,KAAM,CAACU,EAAGC,IAC7Db,EAAMc,MAAU,EAAJD,EAAW,EAAJA,EAAQ,KAG/B,KAAK3C,EAAW6C,KACP,MAAA,CACL,CAACf,EAAM,OACJQ,MAAMC,KAAK,CAAEP,OAAQQ,KAAKC,MAAMX,EAAME,OAAS,GAAK,KAAM,CAACU,EAAGC,IAC/Db,EAAMc,MAAM,EAAQ,EAAJD,EAAO,EAAQ,EAAJA,EAAQ,MAIzC,QACE,OAAOb,EAAMK,KAAKC,GAAS,CAACA,KAChC,CAGF,aAAAlC,CAAcC,GACN,MAAA2C,EAAcjC,KAAKoB,MAAMC,WACzBX,EAAWV,KAAKkC,UAAUC,KAAKzB,SACrC,IAAKA,EACG,MAAA,IAAI0B,MAAM,uBAEdH,IAAgB3C,IACbU,KAAAI,SAASf,EAAcC,IACvBU,KAAAc,mBAAmBC,WAASf,KAAKgB,sBAAsBN,EAASO,SACrEjB,KAAKqC,mBAAmB/C,GAC1B,CAGM,kBAAA+C,CAAmBhB,GACpBrB,KAAAC,eAAeqC,KAAKjB,EAAU,CAG3B,eAAAkB,GACD,MAAA,CACLC,eAAgBxC,KAAKC,eAAewC,GACpCpD,cAAgBC,GAASU,KAAKX,cAAcC,GAC5CoD,cAAe,IAAM1C,KAAKoB,MAAMC,WAChCL,sBAAwBC,GAAUjB,KAAKgB,sBAAsBC,GAC/D,CAGF,aAAM0B,GACJ3C,KAAKC,eAAe2C,OAAM,GA3E5BnD,EAAgBG,GAAK,SANhB,IAAMiD,EAANpD,ECJA,MAAMqD,EAAmB,SAEnBC,EAA+C,CAC1DnD,GAAIkD,EACJE,KAAM,gBACNC,QAAS,QACTzC,SAAU,CAAC,UACX0C,SAAU,CAAC,UACXC,SAAU,GACVC,cAAe,CACbC,SAAS,ICTAC,EAA4B,CACvCjC,WAAYlC,EAAWmB,MCEZiD,EAKT,CACFR,WACAS,OAAQ,CAAC3D,EAAUgB,IAAW,IAAIgC,EAAaC,EAAkBjD,EAAUgB,GAC3E4C,QDPsE,CACtErC,EAAQkC,EACRI,IAEQA,EAAOnE,OACRH,EACI,IACFgC,EACHC,WAAYqC,EAAOlE,SAGd4B,ECHXkC"}
|
package/dist/index.js
CHANGED
|
@@ -109,7 +109,7 @@ const spreadReducer = (state = initialState, action) => {
|
|
|
109
109
|
};
|
|
110
110
|
const SpreadPluginPackage = {
|
|
111
111
|
manifest,
|
|
112
|
-
create: (registry,
|
|
112
|
+
create: (registry, config) => new SpreadPlugin(SPREAD_PLUGIN_ID, registry, config),
|
|
113
113
|
reducer: spreadReducer,
|
|
114
114
|
initialState
|
|
115
115
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lib/types.ts","../src/lib/actions.ts","../src/lib/spread-plugin.ts","../src/lib/manifest.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { BasePluginConfig, EventHook } from '@embedpdf/core';\nimport { PdfPageObject } from '@embedpdf/models';\n\nexport interface SpreadPluginConfig extends BasePluginConfig {\n defaultSpreadMode?: SpreadMode;\n}\n\nexport enum SpreadMode {\n None = 'none',\n Odd = 'odd',\n Even = 'even',\n}\n\nexport interface SpreadCapability {\n onSpreadChange: EventHook<SpreadMode>;\n setSpreadMode(mode: SpreadMode): void;\n getSpreadMode(): SpreadMode;\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][];\n}\n\nexport interface SpreadState {\n spreadMode: SpreadMode;\n}\n","import { SpreadMode } from './types';\n\nexport const SET_SPREAD_MODE = 'SET_SPREAD_MODE';\n\nexport interface SetSpreadModeAction {\n type: typeof SET_SPREAD_MODE;\n payload: SpreadMode;\n}\n\nexport type SpreadAction = SetSpreadModeAction;\n\nexport function setSpreadMode(mode: SpreadMode): SetSpreadModeAction {\n return {\n type: SET_SPREAD_MODE,\n payload: mode,\n };\n}\n","import { BasePlugin, createEmitter, PluginRegistry, setPages } from '@embedpdf/core';\nimport { PdfDocumentObject, PdfPageObject } from '@embedpdf/models';\nimport { LoaderPlugin } from '@embedpdf/plugin-loader';\nimport { SpreadCapability, SpreadMode, SpreadPluginConfig, SpreadState } from './types';\nimport { setSpreadMode } from './actions';\nimport { SpreadAction } from './actions';\n\nexport class SpreadPlugin extends BasePlugin<\n SpreadPluginConfig,\n SpreadCapability,\n SpreadState,\n SpreadAction\n> {\n static readonly id = 'spread' as const;\n\n private readonly spreadEmitter$ = createEmitter<SpreadMode>();\n\n constructor(id: string, registry: PluginRegistry, cfg: SpreadPluginConfig) {\n super(id, registry);\n this.resetReady();\n this.dispatch(setSpreadMode(cfg.defaultSpreadMode ?? SpreadMode.None));\n const loaderPlugin = registry.getPlugin<LoaderPlugin>('loader');\n loaderPlugin!.provides().onDocumentLoaded((document) => this.documentLoaded(document));\n }\n\n async initialize(config: SpreadPluginConfig): Promise<void> {\n if (config.defaultSpreadMode) {\n this.dispatch(setSpreadMode(config.defaultSpreadMode));\n }\n }\n\n private documentLoaded(document: PdfDocumentObject): void {\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.markReady();\n }\n\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][] {\n if (!pages.length) return [];\n\n switch (this.state.spreadMode) {\n case SpreadMode.None:\n return pages.map((page) => [page]);\n\n case SpreadMode.Odd:\n return Array.from({ length: Math.ceil(pages.length / 2) }, (_, i) =>\n pages.slice(i * 2, i * 2 + 2),\n );\n\n case SpreadMode.Even:\n return [\n [pages[0]],\n ...Array.from({ length: Math.ceil((pages.length - 1) / 2) }, (_, i) =>\n pages.slice(1 + i * 2, 1 + i * 2 + 2),\n ),\n ];\n\n default:\n return pages.map((page) => [page]);\n }\n }\n\n setSpreadMode(mode: SpreadMode): void {\n const currentMode = this.state.spreadMode;\n const document = this.coreState.core.document;\n if (!document) {\n throw new Error('Document not loaded');\n }\n if (currentMode !== mode) {\n this.dispatch(setSpreadMode(mode));\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.notifySpreadChange(mode);\n }\n }\n\n private notifySpreadChange(spreadMode: SpreadMode): void {\n this.spreadEmitter$.emit(spreadMode);\n }\n\n protected buildCapability(): SpreadCapability {\n return {\n onSpreadChange: this.spreadEmitter$.on,\n setSpreadMode: (mode) => this.setSpreadMode(mode),\n getSpreadMode: () => this.state.spreadMode,\n getSpreadPagesObjects: (pages) => this.getSpreadPagesObjects(pages),\n };\n }\n\n async destroy(): Promise<void> {\n this.spreadEmitter$.clear();\n }\n}\n","import { PluginManifest } from '@embedpdf/core';\nimport { SpreadPluginConfig } from './types';\n\nexport const SPREAD_PLUGIN_ID = 'spread';\n\nexport const manifest: PluginManifest<SpreadPluginConfig> = {\n id: SPREAD_PLUGIN_ID,\n name: 'Spread Plugin',\n version: '1.0.0',\n provides: ['spread'],\n requires: ['loader'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Reducer } from '@embedpdf/core';\nimport { SpreadState, SpreadMode } from './types';\nimport { SET_SPREAD_MODE, SetSpreadModeAction } from './actions';\n\nexport const initialState: SpreadState = {\n spreadMode: SpreadMode.None,\n};\n\nexport const spreadReducer: Reducer<SpreadState, SetSpreadModeAction> = (\n state = initialState,\n action,\n) => {\n switch (action.type) {\n case SET_SPREAD_MODE:\n return {\n ...state,\n spreadMode: action.payload,\n };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { SpreadPlugin } from './spread-plugin';\nimport { manifest, SPREAD_PLUGIN_ID } from './manifest';\nimport { SpreadPluginConfig, SpreadState } from './types';\nimport { spreadReducer, initialState } from './reducer';\nimport { SpreadAction } from './actions';\n\nexport const SpreadPluginPackage: PluginPackage<\n SpreadPlugin,\n SpreadPluginConfig,\n SpreadState,\n SpreadAction\n> = {\n manifest,\n create: (registry,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/lib/types.ts","../src/lib/actions.ts","../src/lib/spread-plugin.ts","../src/lib/manifest.ts","../src/lib/reducer.ts","../src/lib/index.ts"],"sourcesContent":["import { BasePluginConfig, EventHook } from '@embedpdf/core';\nimport { PdfPageObject } from '@embedpdf/models';\n\nexport interface SpreadPluginConfig extends BasePluginConfig {\n defaultSpreadMode?: SpreadMode;\n}\n\nexport enum SpreadMode {\n None = 'none',\n Odd = 'odd',\n Even = 'even',\n}\n\nexport interface SpreadCapability {\n onSpreadChange: EventHook<SpreadMode>;\n setSpreadMode(mode: SpreadMode): void;\n getSpreadMode(): SpreadMode;\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][];\n}\n\nexport interface SpreadState {\n spreadMode: SpreadMode;\n}\n","import { SpreadMode } from './types';\n\nexport const SET_SPREAD_MODE = 'SET_SPREAD_MODE';\n\nexport interface SetSpreadModeAction {\n type: typeof SET_SPREAD_MODE;\n payload: SpreadMode;\n}\n\nexport type SpreadAction = SetSpreadModeAction;\n\nexport function setSpreadMode(mode: SpreadMode): SetSpreadModeAction {\n return {\n type: SET_SPREAD_MODE,\n payload: mode,\n };\n}\n","import { BasePlugin, createEmitter, PluginRegistry, setPages } from '@embedpdf/core';\nimport { PdfDocumentObject, PdfPageObject } from '@embedpdf/models';\nimport { LoaderPlugin } from '@embedpdf/plugin-loader';\nimport { SpreadCapability, SpreadMode, SpreadPluginConfig, SpreadState } from './types';\nimport { setSpreadMode } from './actions';\nimport { SpreadAction } from './actions';\n\nexport class SpreadPlugin extends BasePlugin<\n SpreadPluginConfig,\n SpreadCapability,\n SpreadState,\n SpreadAction\n> {\n static readonly id = 'spread' as const;\n\n private readonly spreadEmitter$ = createEmitter<SpreadMode>();\n\n constructor(id: string, registry: PluginRegistry, cfg: SpreadPluginConfig) {\n super(id, registry);\n this.resetReady();\n this.dispatch(setSpreadMode(cfg.defaultSpreadMode ?? SpreadMode.None));\n const loaderPlugin = registry.getPlugin<LoaderPlugin>('loader');\n loaderPlugin!.provides().onDocumentLoaded((document) => this.documentLoaded(document));\n }\n\n async initialize(config: SpreadPluginConfig): Promise<void> {\n if (config.defaultSpreadMode) {\n this.dispatch(setSpreadMode(config.defaultSpreadMode));\n }\n }\n\n private documentLoaded(document: PdfDocumentObject): void {\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.markReady();\n }\n\n getSpreadPagesObjects(pages: PdfPageObject[]): PdfPageObject[][] {\n if (!pages.length) return [];\n\n switch (this.state.spreadMode) {\n case SpreadMode.None:\n return pages.map((page) => [page]);\n\n case SpreadMode.Odd:\n return Array.from({ length: Math.ceil(pages.length / 2) }, (_, i) =>\n pages.slice(i * 2, i * 2 + 2),\n );\n\n case SpreadMode.Even:\n return [\n [pages[0]],\n ...Array.from({ length: Math.ceil((pages.length - 1) / 2) }, (_, i) =>\n pages.slice(1 + i * 2, 1 + i * 2 + 2),\n ),\n ];\n\n default:\n return pages.map((page) => [page]);\n }\n }\n\n setSpreadMode(mode: SpreadMode): void {\n const currentMode = this.state.spreadMode;\n const document = this.coreState.core.document;\n if (!document) {\n throw new Error('Document not loaded');\n }\n if (currentMode !== mode) {\n this.dispatch(setSpreadMode(mode));\n this.dispatchCoreAction(setPages(this.getSpreadPagesObjects(document.pages)));\n this.notifySpreadChange(mode);\n }\n }\n\n private notifySpreadChange(spreadMode: SpreadMode): void {\n this.spreadEmitter$.emit(spreadMode);\n }\n\n protected buildCapability(): SpreadCapability {\n return {\n onSpreadChange: this.spreadEmitter$.on,\n setSpreadMode: (mode) => this.setSpreadMode(mode),\n getSpreadMode: () => this.state.spreadMode,\n getSpreadPagesObjects: (pages) => this.getSpreadPagesObjects(pages),\n };\n }\n\n async destroy(): Promise<void> {\n this.spreadEmitter$.clear();\n }\n}\n","import { PluginManifest } from '@embedpdf/core';\nimport { SpreadPluginConfig } from './types';\n\nexport const SPREAD_PLUGIN_ID = 'spread';\n\nexport const manifest: PluginManifest<SpreadPluginConfig> = {\n id: SPREAD_PLUGIN_ID,\n name: 'Spread Plugin',\n version: '1.0.0',\n provides: ['spread'],\n requires: ['loader'],\n optional: [],\n defaultConfig: {\n enabled: true,\n },\n};\n","import { Reducer } from '@embedpdf/core';\nimport { SpreadState, SpreadMode } from './types';\nimport { SET_SPREAD_MODE, SetSpreadModeAction } from './actions';\n\nexport const initialState: SpreadState = {\n spreadMode: SpreadMode.None,\n};\n\nexport const spreadReducer: Reducer<SpreadState, SetSpreadModeAction> = (\n state = initialState,\n action,\n) => {\n switch (action.type) {\n case SET_SPREAD_MODE:\n return {\n ...state,\n spreadMode: action.payload,\n };\n default:\n return state;\n }\n};\n","import { PluginPackage } from '@embedpdf/core';\nimport { SpreadPlugin } from './spread-plugin';\nimport { manifest, SPREAD_PLUGIN_ID } from './manifest';\nimport { SpreadPluginConfig, SpreadState } from './types';\nimport { spreadReducer, initialState } from './reducer';\nimport { SpreadAction } from './actions';\n\nexport const SpreadPluginPackage: PluginPackage<\n SpreadPlugin,\n SpreadPluginConfig,\n SpreadState,\n SpreadAction\n> = {\n manifest,\n create: (registry, config) => new SpreadPlugin(SPREAD_PLUGIN_ID, registry, config),\n reducer: spreadReducer,\n initialState,\n};\n\nexport * from './spread-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["SpreadMode"],"mappings":";AAOY,IAAA,+BAAAA,gBAAL;AACLA,cAAA,MAAO,IAAA;AACPA,cAAA,KAAM,IAAA;AACNA,cAAA,MAAO,IAAA;AAHGA,SAAAA;AAAA,GAAA,cAAA,CAAA,CAAA;ACLL,MAAM,kBAAkB;AASxB,SAAS,cAAc,MAAuC;AAC5D,SAAA;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;ACTO,MAAM,gBAAN,MAAM,sBAAqB,WAKhC;AAAA,EAKA,YAAY,IAAY,UAA0B,KAAyB;AACzE,UAAM,IAAI,QAAQ;AAHpB,SAAiB,iBAAiB,cAA0B;AAI1D,SAAK,WAAW;AAChB,SAAK,SAAS,cAAc,IAAI,qBAAqB,WAAW,IAAI,CAAC;AAC/D,UAAA,eAAe,SAAS,UAAwB,QAAQ;AAChD,iBAAA,WAAW,iBAAiB,CAAC,aAAa,KAAK,eAAe,QAAQ,CAAC;AAAA,EAAA;AAAA,EAGvF,MAAM,WAAW,QAA2C;AAC1D,QAAI,OAAO,mBAAmB;AAC5B,WAAK,SAAS,cAAc,OAAO,iBAAiB,CAAC;AAAA,IAAA;AAAA,EACvD;AAAA,EAGM,eAAe,UAAmC;AACxD,SAAK,mBAAmB,SAAS,KAAK,sBAAsB,SAAS,KAAK,CAAC,CAAC;AAC5E,SAAK,UAAU;AAAA,EAAA;AAAA,EAGjB,sBAAsB,OAA2C;AAC/D,QAAI,CAAC,MAAM,OAAQ,QAAO,CAAC;AAEnB,YAAA,KAAK,MAAM,YAAY;AAAA,MAC7B,KAAK,WAAW;AACd,eAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAAA,MAEnC,KAAK,WAAW;AACd,eAAO,MAAM;AAAA,UAAK,EAAE,QAAQ,KAAK,KAAK,MAAM,SAAS,CAAC,EAAE;AAAA,UAAG,CAAC,GAAG,MAC7D,MAAM,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;AAAA,QAC9B;AAAA,MAEF,KAAK,WAAW;AACP,eAAA;AAAA,UACL,CAAC,MAAM,CAAC,CAAC;AAAA,UACT,GAAG,MAAM;AAAA,YAAK,EAAE,QAAQ,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC,EAAE;AAAA,YAAG,CAAC,GAAG,MAC/D,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;AAAA,UAAA;AAAA,QAExC;AAAA,MAEF;AACE,eAAO,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAAA,IAAA;AAAA,EACrC;AAAA,EAGF,cAAc,MAAwB;AAC9B,UAAA,cAAc,KAAK,MAAM;AACzB,UAAA,WAAW,KAAK,UAAU,KAAK;AACrC,QAAI,CAAC,UAAU;AACP,YAAA,IAAI,MAAM,qBAAqB;AAAA,IAAA;AAEvC,QAAI,gBAAgB,MAAM;AACnB,WAAA,SAAS,cAAc,IAAI,CAAC;AACjC,WAAK,mBAAmB,SAAS,KAAK,sBAAsB,SAAS,KAAK,CAAC,CAAC;AAC5E,WAAK,mBAAmB,IAAI;AAAA,IAAA;AAAA,EAC9B;AAAA,EAGM,mBAAmB,YAA8B;AAClD,SAAA,eAAe,KAAK,UAAU;AAAA,EAAA;AAAA,EAG3B,kBAAoC;AACrC,WAAA;AAAA,MACL,gBAAgB,KAAK,eAAe;AAAA,MACpC,eAAe,CAAC,SAAS,KAAK,cAAc,IAAI;AAAA,MAChD,eAAe,MAAM,KAAK,MAAM;AAAA,MAChC,uBAAuB,CAAC,UAAU,KAAK,sBAAsB,KAAK;AAAA,IACpE;AAAA,EAAA;AAAA,EAGF,MAAM,UAAyB;AAC7B,SAAK,eAAe,MAAM;AAAA,EAAA;AAE9B;AA7EE,cAAgB,KAAK;AANhB,IAAM,eAAN;ACJA,MAAM,mBAAmB;AAEzB,MAAM,WAA+C;AAAA,EAC1D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU,CAAC,QAAQ;AAAA,EACnB,UAAU,CAAC,QAAQ;AAAA,EACnB,UAAU,CAAC;AAAA,EACX,eAAe;AAAA,IACb,SAAS;AAAA,EAAA;AAEb;ACXO,MAAM,eAA4B;AAAA,EACvC,YAAY,WAAW;AACzB;AAEO,MAAM,gBAA2D,CACtE,QAAQ,cACR,WACG;AACH,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACI,aAAA;AAAA,QACL,GAAG;AAAA,QACH,YAAY,OAAO;AAAA,MACrB;AAAA,IACF;AACS,aAAA;AAAA,EAAA;AAEb;ACdO,MAAM,sBAKT;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,UAAU,WAAW,IAAI,aAAa,kBAAkB,UAAU,MAAM;AAAA,EACjF,SAAS;AAAA,EACT;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@embedpdf/plugin-spread",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -23,21 +23,21 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@embedpdf/models": "1.0.
|
|
26
|
+
"@embedpdf/models": "1.0.19"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/react": "^18.2.0",
|
|
30
30
|
"typescript": "^5.0.0",
|
|
31
|
-
"@embedpdf/
|
|
32
|
-
"@embedpdf/
|
|
33
|
-
"@embedpdf/
|
|
31
|
+
"@embedpdf/core": "1.0.19",
|
|
32
|
+
"@embedpdf/plugin-loader": "1.0.19",
|
|
33
|
+
"@embedpdf/build": "1.0.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"react": ">=16.8.0",
|
|
37
37
|
"react-dom": ">=16.8.0",
|
|
38
38
|
"preact": "^10.26.4",
|
|
39
|
-
"@embedpdf/core": "1.0.
|
|
40
|
-
"@embedpdf/plugin-loader": "1.0.
|
|
39
|
+
"@embedpdf/core": "1.0.19",
|
|
40
|
+
"@embedpdf/plugin-loader": "1.0.19"
|
|
41
41
|
},
|
|
42
42
|
"files": [
|
|
43
43
|
"dist",
|