@embedpdf/plugin-capture 1.3.13 → 1.3.14

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 CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),a=require("@embedpdf/models"),t="capture",i={id:t,name:"Capture Plugin",version:"1.0.0",provides:["capture"],requires:["render"],optional:["interaction-manager"],defaultConfig:{enabled:!0,scale:1,imageType:"image/png",withAnnotations:!1}};const r=class extends e.BasePlugin{constructor(a,t,i){var r;super(a,t),this.captureArea$=e.createEmitter(),this.config=i,this.renderCapability=this.registry.getPlugin("render").provides(),this.interactionManagerCapability=null==(r=this.registry.getPlugin("interaction-manager"))?void 0:r.provides(),this.interactionManagerCapability&&this.interactionManagerCapability.registerMode({id:"marqueeCapture",scope:"page",exclusive:!0,cursor:"crosshair"})}async initialize(e){}buildCapability(){return{onCaptureArea:this.captureArea$.on,captureArea:this.captureArea.bind(this),enableMarqueeCapture:this.enableMarqueeCapture.bind(this),disableMarqueeCapture:this.disableMarqueeCapture.bind(this),toggleMarqueeCapture:this.toggleMarqueeCapture.bind(this),isMarqueeCaptureActive:()=>{var e;return"marqueeCapture"===(null==(e=this.interactionManagerCapability)?void 0:e.getActiveMode())},registerMarqueeOnPage:e=>this.registerMarqueeOnPage(e)}}registerMarqueeOnPage(a){if(!this.interactionManagerCapability)return this.logger.warn("CapturePlugin","MissingDependency","Interaction manager plugin not loaded, marquee capture disabled"),()=>{};const t=this.coreState.core.document;if(!t)return this.logger.warn("CapturePlugin","DocumentNotFound","Document not found"),()=>{};const i=t.pages[a.pageIndex];if(!i)return this.logger.warn("CapturePlugin","PageNotFound",`Page ${a.pageIndex} not found`),()=>{};const r=function(a){const{pageSize:t,scale:i,minDragPx:r=5,onPreview:n,onCommit:l}=a;let o=null,u=null;return{onPointerDown:(e,a)=>{var t;o=e,u={origin:{x:e.x,y:e.y},size:{width:0,height:0}},null==n||n(u),null==(t=a.setPointerCapture)||t.call(a)},onPointerMove:a=>{if(!o)return;const i=e.clamp(a.x,0,t.width),r=e.clamp(a.y,0,t.height);u={origin:{x:Math.min(o.x,i),y:Math.min(o.y,r)},size:{width:Math.abs(i-o.x),height:Math.abs(r-o.y)}},null==n||n(u)},onPointerUp:(e,a)=>{var t;u&&Math.max(u.size.width,u.size.height)*i>r&&(null==l||l(u)),o=null,u=null,null==n||n(null),null==(t=a.releasePointerCapture)||t.call(a)},onPointerCancel:(e,a)=>{var t;o=null,u=null,null==n||n(null),null==(t=a.releasePointerCapture)||t.call(a)}}}({pageSize:i.size,scale:a.scale,onPreview:a.callback.onPreview,onCommit:e=>{var t,i;this.captureArea(a.pageIndex,e),null==(i=(t=a.callback).onCommit)||i.call(t,e)}});return this.interactionManagerCapability.registerHandlers({modeId:"marqueeCapture",handlers:r,pageIndex:a.pageIndex})}captureArea(e,t){this.disableMarqueeCapture();this.renderCapability.renderPageRect({pageIndex:e,rect:t,options:{imageType:this.config.imageType,scaleFactor:this.config.scale,withAnnotations:this.config.withAnnotations||!1}}).wait((a=>{this.captureArea$.emit({pageIndex:e,rect:t,blob:a,imageType:this.config.imageType||"image/png",scale:this.config.scale||1,withAnnotations:this.config.withAnnotations||!1})}),a.ignore)}enableMarqueeCapture(){var e;null==(e=this.interactionManagerCapability)||e.activate("marqueeCapture")}disableMarqueeCapture(){var e;null==(e=this.interactionManagerCapability)||e.activateDefaultMode()}toggleMarqueeCapture(){var e,a,t;"marqueeCapture"===(null==(e=this.interactionManagerCapability)?void 0:e.getActiveMode())?null==(a=this.interactionManagerCapability)||a.activateDefaultMode():null==(t=this.interactionManagerCapability)||t.activate("marqueeCapture")}};r.id="capture";let n=r;const l={manifest:i,create:(e,a)=>new n(t,e,a),reducer:()=>{},initialState:{}};exports.CAPTURE_PLUGIN_ID=t,exports.CapturePlugin=n,exports.CapturePluginPackage=l,exports.manifest=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),a=require("@embedpdf/models"),t="capture",i={id:t,name:"Capture Plugin",version:"1.0.0",provides:["capture"],requires:["render"],optional:["interaction-manager"],defaultConfig:{enabled:!0,scale:1,imageType:"image/png",withAnnotations:!1}};const r=class extends e.BasePlugin{constructor(a,t,i){var r;super(a,t),this.captureArea$=e.createEmitter(),this.marqueeCaptureActive$=e.createBehaviorEmitter(),this.config=i,this.renderCapability=this.registry.getPlugin("render").provides(),this.interactionManagerCapability=null==(r=this.registry.getPlugin("interaction-manager"))?void 0:r.provides(),this.interactionManagerCapability&&(this.interactionManagerCapability.registerMode({id:"marqueeCapture",scope:"page",exclusive:!0,cursor:"crosshair"}),this.interactionManagerCapability.onModeChange((e=>{"marqueeCapture"===e.activeMode?this.marqueeCaptureActive$.emit(!0):this.marqueeCaptureActive$.emit(!1)})))}async initialize(e){}buildCapability(){return{onCaptureArea:this.captureArea$.on,onMarqueeCaptureActiveChange:this.marqueeCaptureActive$.on,captureArea:this.captureArea.bind(this),enableMarqueeCapture:this.enableMarqueeCapture.bind(this),disableMarqueeCapture:this.disableMarqueeCapture.bind(this),toggleMarqueeCapture:this.toggleMarqueeCapture.bind(this),isMarqueeCaptureActive:()=>{var e;return"marqueeCapture"===(null==(e=this.interactionManagerCapability)?void 0:e.getActiveMode())},registerMarqueeOnPage:e=>this.registerMarqueeOnPage(e)}}registerMarqueeOnPage(a){if(!this.interactionManagerCapability)return this.logger.warn("CapturePlugin","MissingDependency","Interaction manager plugin not loaded, marquee capture disabled"),()=>{};const t=this.coreState.core.document;if(!t)return this.logger.warn("CapturePlugin","DocumentNotFound","Document not found"),()=>{};const i=t.pages[a.pageIndex];if(!i)return this.logger.warn("CapturePlugin","PageNotFound",`Page ${a.pageIndex} not found`),()=>{};const r=function(a){const{pageSize:t,scale:i,minDragPx:r=5,onPreview:n,onCommit:u}=a;let l=null,o=null;return{onPointerDown:(e,a)=>{var t;l=e,o={origin:{x:e.x,y:e.y},size:{width:0,height:0}},null==n||n(o),null==(t=a.setPointerCapture)||t.call(a)},onPointerMove:a=>{if(!l)return;const i=e.clamp(a.x,0,t.width),r=e.clamp(a.y,0,t.height);o={origin:{x:Math.min(l.x,i),y:Math.min(l.y,r)},size:{width:Math.abs(i-l.x),height:Math.abs(r-l.y)}},null==n||n(o)},onPointerUp:(e,a)=>{var t;o&&Math.max(o.size.width,o.size.height)*i>r&&(null==u||u(o)),l=null,o=null,null==n||n(null),null==(t=a.releasePointerCapture)||t.call(a)},onPointerCancel:(e,a)=>{var t;l=null,o=null,null==n||n(null),null==(t=a.releasePointerCapture)||t.call(a)}}}({pageSize:i.size,scale:a.scale,onPreview:a.callback.onPreview,onCommit:e=>{var t,i;this.captureArea(a.pageIndex,e),null==(i=(t=a.callback).onCommit)||i.call(t,e)}});return this.interactionManagerCapability.registerHandlers({modeId:"marqueeCapture",handlers:r,pageIndex:a.pageIndex})}captureArea(e,t){this.disableMarqueeCapture();this.renderCapability.renderPageRect({pageIndex:e,rect:t,options:{imageType:this.config.imageType,scaleFactor:this.config.scale,withAnnotations:this.config.withAnnotations||!1}}).wait((a=>{this.captureArea$.emit({pageIndex:e,rect:t,blob:a,imageType:this.config.imageType||"image/png",scale:this.config.scale||1,withAnnotations:this.config.withAnnotations||!1})}),a.ignore)}enableMarqueeCapture(){var e;null==(e=this.interactionManagerCapability)||e.activate("marqueeCapture")}disableMarqueeCapture(){var e;null==(e=this.interactionManagerCapability)||e.activateDefaultMode()}toggleMarqueeCapture(){var e,a,t;"marqueeCapture"===(null==(e=this.interactionManagerCapability)?void 0:e.getActiveMode())?null==(a=this.interactionManagerCapability)||a.activateDefaultMode():null==(t=this.interactionManagerCapability)||t.activate("marqueeCapture")}};r.id="capture";let n=r;const u={manifest:i,create:(e,a)=>new n(t,e,a),reducer:()=>{},initialState:{}};exports.CAPTURE_PLUGIN_ID=t,exports.CapturePlugin=n,exports.CapturePluginPackage=u,exports.manifest=i;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/capture-plugin.ts","../src/lib/handlers/marquee-capture.handler.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { CapturePluginConfig } from './types';\n\nexport const CAPTURE_PLUGIN_ID = 'capture';\n\nexport const manifest: PluginManifest<CapturePluginConfig> = {\n id: CAPTURE_PLUGIN_ID,\n name: 'Capture Plugin',\n version: '1.0.0',\n provides: ['capture'],\n requires: ['render'],\n optional: ['interaction-manager'],\n defaultConfig: {\n enabled: true,\n scale: 1,\n imageType: 'image/png',\n withAnnotations: false,\n },\n};\n","import { BasePlugin, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { ignore, Rect } from '@embedpdf/models';\nimport {\n InteractionManagerCapability,\n InteractionManagerPlugin,\n} from '@embedpdf/plugin-interaction-manager';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n CaptureAreaEvent,\n CaptureCapability,\n CapturePluginConfig,\n RegisterMarqueeOnPageOptions,\n} from './types';\nimport { createMarqueeHandler } from './handlers';\n\nexport class CapturePlugin extends BasePlugin<CapturePluginConfig, CaptureCapability> {\n static readonly id = 'capture' as const;\n\n private captureArea$ = createEmitter<CaptureAreaEvent>();\n\n private renderCapability: RenderCapability;\n private interactionManagerCapability: InteractionManagerCapability | undefined;\n private config: CapturePluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: CapturePluginConfig) {\n super(id, registry);\n\n this.config = config;\n\n this.renderCapability = this.registry.getPlugin<RenderPlugin>('render')!.provides();\n this.interactionManagerCapability = this.registry\n .getPlugin<InteractionManagerPlugin>('interaction-manager')\n ?.provides();\n\n if (this.interactionManagerCapability) {\n this.interactionManagerCapability.registerMode({\n id: 'marqueeCapture',\n scope: 'page',\n exclusive: true,\n cursor: 'crosshair',\n });\n }\n }\n\n async initialize(_: CapturePluginConfig): Promise<void> {}\n\n protected buildCapability(): CaptureCapability {\n return {\n onCaptureArea: this.captureArea$.on,\n captureArea: this.captureArea.bind(this),\n enableMarqueeCapture: this.enableMarqueeCapture.bind(this),\n disableMarqueeCapture: this.disableMarqueeCapture.bind(this),\n toggleMarqueeCapture: this.toggleMarqueeCapture.bind(this),\n isMarqueeCaptureActive: () =>\n this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture',\n registerMarqueeOnPage: (opts) => this.registerMarqueeOnPage(opts),\n };\n }\n\n public registerMarqueeOnPage(opts: RegisterMarqueeOnPageOptions) {\n if (!this.interactionManagerCapability) {\n this.logger.warn(\n 'CapturePlugin',\n 'MissingDependency',\n 'Interaction manager plugin not loaded, marquee capture disabled',\n );\n return () => {};\n }\n\n const document = this.coreState.core.document;\n if (!document) {\n this.logger.warn('CapturePlugin', 'DocumentNotFound', 'Document not found');\n return () => {};\n }\n\n const page = document.pages[opts.pageIndex];\n if (!page) {\n this.logger.warn('CapturePlugin', 'PageNotFound', `Page ${opts.pageIndex} not found`);\n return () => {};\n }\n\n const handlers = createMarqueeHandler({\n pageSize: page.size,\n scale: opts.scale,\n onPreview: opts.callback.onPreview,\n onCommit: (rect) => {\n // Capture the selected area\n this.captureArea(opts.pageIndex, rect);\n opts.callback.onCommit?.(rect);\n },\n });\n\n const off = this.interactionManagerCapability.registerHandlers({\n modeId: 'marqueeCapture',\n handlers,\n pageIndex: opts.pageIndex,\n });\n\n return off;\n }\n\n private captureArea(pageIndex: number, rect: Rect) {\n this.disableMarqueeCapture();\n\n const task = this.renderCapability.renderPageRect({\n pageIndex,\n rect,\n options: {\n imageType: this.config.imageType,\n scaleFactor: this.config.scale,\n withAnnotations: this.config.withAnnotations || false,\n },\n });\n\n task.wait((blob) => {\n this.captureArea$.emit({\n pageIndex,\n rect,\n blob,\n imageType: this.config.imageType || 'image/png',\n scale: this.config.scale || 1,\n withAnnotations: this.config.withAnnotations || false,\n });\n }, ignore);\n }\n\n private enableMarqueeCapture() {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n\n private disableMarqueeCapture() {\n this.interactionManagerCapability?.activateDefaultMode();\n }\n\n private toggleMarqueeCapture() {\n if (this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture') {\n this.interactionManagerCapability?.activateDefaultMode();\n } else {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n }\n}\n","import { Position, Rect, Size } from '@embedpdf/models';\nimport { clamp } from '@embedpdf/core';\nimport {\n EmbedPdfPointerEvent,\n PointerEventHandlersWithLifecycle,\n} from '@embedpdf/plugin-interaction-manager';\n\nexport function createMarqueeHandler(opts: {\n pageSize: Size;\n scale: number;\n minDragPx?: number;\n onPreview?: (rect: Rect | null) => void;\n onCommit?: (rect: Rect) => void;\n}): PointerEventHandlersWithLifecycle<EmbedPdfPointerEvent> {\n const { pageSize, scale, minDragPx = 5, onPreview, onCommit } = opts;\n\n let start: Position | null = null;\n let last: Rect | null = null;\n\n return {\n onPointerDown: (pos, evt) => {\n start = pos;\n last = { origin: { x: pos.x, y: pos.y }, size: { width: 0, height: 0 } };\n onPreview?.(last);\n evt.setPointerCapture?.();\n },\n onPointerMove: (pos) => {\n if (!start) return;\n const x = clamp(pos.x, 0, pageSize.width);\n const y = clamp(pos.y, 0, pageSize.height);\n last = {\n origin: { x: Math.min(start.x, x), y: Math.min(start.y, y) },\n size: { width: Math.abs(x - start.x), height: Math.abs(y - start.y) },\n };\n onPreview?.(last);\n },\n onPointerUp: (_pos, evt) => {\n if (last) {\n const dragPx = Math.max(last.size.width, last.size.height) * scale;\n if (dragPx > minDragPx) {\n onCommit?.(last);\n }\n }\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n onPointerCancel: (_pos, evt) => {\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n };\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, CAPTURE_PLUGIN_ID } from './manifest';\nimport { CapturePluginConfig } from './types';\nimport { CapturePlugin } from './capture-plugin';\n\nexport const CapturePluginPackage: PluginPackage<CapturePlugin, CapturePluginConfig> = {\n manifest,\n create: (registry, config) => new CapturePlugin(CAPTURE_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './capture-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["CAPTURE_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","enabled","scale","imageType","withAnnotations","_CapturePlugin","BasePlugin","constructor","registry","config","super","this","captureArea$","createEmitter","renderCapability","getPlugin","interactionManagerCapability","_a","registerMode","scope","exclusive","cursor","initialize","_","buildCapability","onCaptureArea","on","captureArea","bind","enableMarqueeCapture","disableMarqueeCapture","toggleMarqueeCapture","isMarqueeCaptureActive","getActiveMode","registerMarqueeOnPage","opts","logger","warn","document","coreState","core","page","pages","pageIndex","handlers","pageSize","minDragPx","onPreview","onCommit","start","last","onPointerDown","pos","evt","origin","x","y","size","width","height","setPointerCapture","call","onPointerMove","clamp","Math","min","abs","onPointerUp","_pos","max","releasePointerCapture","onPointerCancel","createMarqueeHandler","callback","rect","_b","registerHandlers","modeId","renderPageRect","options","scaleFactor","wait","blob","emit","ignore","activate","activateDefaultMode","_c","CapturePlugin","CapturePluginPackage","create","reducer","initialState"],"mappings":"gJAGaA,EAAoB,UAEpBC,EAAgD,CAC3DC,GAAIF,EACJG,KAAM,iBACNC,QAAS,QACTC,SAAU,CAAC,WACXC,SAAU,CAAC,UACXC,SAAU,CAAC,uBACXC,cAAe,CACbC,SAAS,EACTC,MAAO,EACPC,UAAW,YACXC,iBAAiB,ICAd,MAAMC,EAAN,cAA4BC,EAAAA,WASjC,WAAAC,CAAYb,EAAYc,EAA0BC,SAChDC,MAAMhB,EAAIc,GAPJG,KAAAC,aAAeC,kBASrBF,KAAKF,OAASA,EAEdE,KAAKG,iBAAmBH,KAAKH,SAASO,UAAwB,UAAWlB,WACzEc,KAAKK,6BAA+B,OAAAC,EAAKN,KAAAH,SACtCO,UAAoC,6BACnC,EAAAE,EAAApB,WAEAc,KAAKK,8BACPL,KAAKK,6BAA6BE,aAAa,CAC7CxB,GAAI,iBACJyB,MAAO,OACPC,WAAW,EACXC,OAAQ,aAEZ,CAGF,gBAAMC,CAAWC,GAAuC,CAE9C,eAAAC,GACD,MAAA,CACLC,cAAed,KAAKC,aAAac,GACjCC,YAAahB,KAAKgB,YAAYC,KAAKjB,MACnCkB,qBAAsBlB,KAAKkB,qBAAqBD,KAAKjB,MACrDmB,sBAAuBnB,KAAKmB,sBAAsBF,KAAKjB,MACvDoB,qBAAsBpB,KAAKoB,qBAAqBH,KAAKjB,MACrDqB,uBAAwB,WACjB,MAAkD,oBAAvD,OAAKf,EAAAN,KAAAK,uCAA8BiB,gBAAoB,EACzDC,sBAAwBC,GAASxB,KAAKuB,sBAAsBC,GAC9D,CAGK,qBAAAD,CAAsBC,GACvB,IAACxB,KAAKK,6BAMR,OALAL,KAAKyB,OAAOC,KACV,gBACA,oBACA,mEAEK,OAGH,MAAAC,EAAW3B,KAAK4B,UAAUC,KAAKF,SACrC,IAAKA,EAEH,OADA3B,KAAKyB,OAAOC,KAAK,gBAAiB,mBAAoB,sBAC/C,OAGT,MAAMI,EAAOH,EAASI,MAAMP,EAAKQ,WACjC,IAAKF,EAEH,OADA9B,KAAKyB,OAAOC,KAAK,gBAAiB,eAAgB,QAAQF,EAAKQ,uBACxD,OAGT,MAAMC,EC3EH,SAA8BT,GAOnC,MAAMU,SAAEA,EAAU3C,MAAAA,EAAA4C,UAAOA,EAAY,EAAGC,UAAAA,EAAAC,SAAWA,GAAab,EAEhE,IAAIc,EAAyB,KACzBC,EAAoB,KAEjB,MAAA,CACLC,cAAe,CAACC,EAAKC,WACXJ,EAAAG,EACRF,EAAO,CAAEI,OAAQ,CAAEC,EAAGH,EAAIG,EAAGC,EAAGJ,EAAII,GAAKC,KAAM,CAAEC,MAAO,EAAGC,OAAQ,IACvD,MAAAZ,GAAAA,EAAAG,GACZ,OAAAjC,EAAAoC,EAAIO,oBAAJ3C,EAAA4C,KAAAR,EAAA,EAEFS,cAAgBV,IACd,IAAKH,EAAO,OACZ,MAAMM,EAAIQ,EAAAA,MAAMX,EAAIG,EAAG,EAAGV,EAASa,OAC7BF,EAAIO,EAAAA,MAAMX,EAAII,EAAG,EAAGX,EAASc,QAC5BT,EAAA,CACLI,OAAQ,CAAEC,EAAGS,KAAKC,IAAIhB,EAAMM,EAAGA,GAAIC,EAAGQ,KAAKC,IAAIhB,EAAMO,EAAGA,IACxDC,KAAM,CAAEC,MAAOM,KAAKE,IAAIX,EAAIN,EAAMM,GAAII,OAAQK,KAAKE,IAAIV,EAAIP,EAAMO,KAEvD,MAAAT,GAAAA,EAAAG,EAAA,EAEdiB,YAAa,CAACC,EAAMf,WACdH,GACac,KAAKK,IAAInB,EAAKO,KAAKC,MAAOR,EAAKO,KAAKE,QAAUzD,EAChD4C,IACA,MAAAE,GAAAA,EAAAE,IAGPD,EAAA,KACDC,EAAA,KACK,MAAAH,GAAAA,EAAA,MACZ,OAAA9B,EAAAoC,EAAIiB,wBAAJrD,EAAA4C,KAAAR,EAAA,EAEFkB,gBAAiB,CAACH,EAAMf,WACdJ,EAAA,KACDC,EAAA,KACK,MAAAH,GAAAA,EAAA,MACZ,OAAA9B,EAAAoC,EAAIiB,wBAAJrD,EAAA4C,KAAAR,EAAA,EAGN,CD2BqBmB,CAAqB,CACpC3B,SAAUJ,EAAKgB,KACfvD,MAAOiC,EAAKjC,MACZ6C,UAAWZ,EAAKsC,SAAS1B,UACzBC,SAAW0B,YAEJ/D,KAAAgB,YAAYQ,EAAKQ,UAAW+B,GAC5B,OAAAC,GAAA1D,EAAAkB,EAAAsC,UAASzB,WAAW2B,EAAAd,KAAA5C,EAAAyD,EAAA,IAUtB,OANK/D,KAAKK,6BAA6B4D,iBAAiB,CAC7DC,OAAQ,iBACRjC,WACAD,UAAWR,EAAKQ,WAGX,CAGD,WAAAhB,CAAYgB,EAAmB+B,GACrC/D,KAAKmB,wBAEQnB,KAAKG,iBAAiBgE,eAAe,CAChDnC,YACA+B,OACAK,QAAS,CACP5E,UAAWQ,KAAKF,OAAON,UACvB6E,YAAarE,KAAKF,OAAOP,MACzBE,gBAAiBO,KAAKF,OAAOL,kBAAmB,KAI/C6E,MAAMC,IACTvE,KAAKC,aAAauE,KAAK,CACrBxC,YACA+B,OACAQ,OACA/E,UAAWQ,KAAKF,OAAON,WAAa,YACpCD,MAAOS,KAAKF,OAAOP,OAAS,EAC5BE,gBAAiBO,KAAKF,OAAOL,kBAAmB,GACjD,GACAgF,SAAM,CAGH,oBAAAvD,SACD,OAAAZ,EAAAN,KAAAK,iCAA8BqE,SAAS,iBAAgB,CAGtD,qBAAAvD,SACN,OAAAb,EAAAN,KAAKK,+BAA8BC,EAAAqE,qBAAoB,CAGjD,oBAAAvD,aACqD,oBAAvD,OAAAd,EAAKN,KAAAK,mCAA8B,EAAAC,EAAAgB,iBACrC,OAAA0C,EAAAhE,KAAKK,+BAA8B2D,EAAAW,sBAE9B,OAAAC,EAAA5E,KAAAK,iCAA8BqE,SAAS,iBAC9C,GA3HFhF,EAAgBX,GAAK,UADhB,IAAM8F,EAANnF,EEXA,MAAMoF,EAA0E,CACrFhG,WACAiG,OAAQ,CAAClF,EAAUC,IAAW,IAAI+E,EAAchG,EAAmBgB,EAAUC,GAC7EkF,QAAS,OACTC,aAAc,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/lib/manifest.ts","../src/lib/capture-plugin.ts","../src/lib/handlers/marquee-capture.handler.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { CapturePluginConfig } from './types';\n\nexport const CAPTURE_PLUGIN_ID = 'capture';\n\nexport const manifest: PluginManifest<CapturePluginConfig> = {\n id: CAPTURE_PLUGIN_ID,\n name: 'Capture Plugin',\n version: '1.0.0',\n provides: ['capture'],\n requires: ['render'],\n optional: ['interaction-manager'],\n defaultConfig: {\n enabled: true,\n scale: 1,\n imageType: 'image/png',\n withAnnotations: false,\n },\n};\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { ignore, Rect } from '@embedpdf/models';\nimport {\n InteractionManagerCapability,\n InteractionManagerPlugin,\n} from '@embedpdf/plugin-interaction-manager';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n CaptureAreaEvent,\n CaptureCapability,\n CapturePluginConfig,\n RegisterMarqueeOnPageOptions,\n} from './types';\nimport { createMarqueeHandler } from './handlers';\n\nexport class CapturePlugin extends BasePlugin<CapturePluginConfig, CaptureCapability> {\n static readonly id = 'capture' as const;\n\n private captureArea$ = createEmitter<CaptureAreaEvent>();\n private marqueeCaptureActive$ = createBehaviorEmitter<boolean>();\n\n private renderCapability: RenderCapability;\n private interactionManagerCapability: InteractionManagerCapability | undefined;\n private config: CapturePluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: CapturePluginConfig) {\n super(id, registry);\n\n this.config = config;\n\n this.renderCapability = this.registry.getPlugin<RenderPlugin>('render')!.provides();\n this.interactionManagerCapability = this.registry\n .getPlugin<InteractionManagerPlugin>('interaction-manager')\n ?.provides();\n\n if (this.interactionManagerCapability) {\n this.interactionManagerCapability.registerMode({\n id: 'marqueeCapture',\n scope: 'page',\n exclusive: true,\n cursor: 'crosshair',\n });\n\n this.interactionManagerCapability.onModeChange((state) => {\n if (state.activeMode === 'marqueeCapture') {\n this.marqueeCaptureActive$.emit(true);\n } else {\n this.marqueeCaptureActive$.emit(false);\n }\n });\n }\n }\n\n async initialize(_: CapturePluginConfig): Promise<void> {}\n\n protected buildCapability(): CaptureCapability {\n return {\n onCaptureArea: this.captureArea$.on,\n onMarqueeCaptureActiveChange: this.marqueeCaptureActive$.on,\n captureArea: this.captureArea.bind(this),\n enableMarqueeCapture: this.enableMarqueeCapture.bind(this),\n disableMarqueeCapture: this.disableMarqueeCapture.bind(this),\n toggleMarqueeCapture: this.toggleMarqueeCapture.bind(this),\n isMarqueeCaptureActive: () =>\n this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture',\n registerMarqueeOnPage: (opts) => this.registerMarqueeOnPage(opts),\n };\n }\n\n public registerMarqueeOnPage(opts: RegisterMarqueeOnPageOptions) {\n if (!this.interactionManagerCapability) {\n this.logger.warn(\n 'CapturePlugin',\n 'MissingDependency',\n 'Interaction manager plugin not loaded, marquee capture disabled',\n );\n return () => {};\n }\n\n const document = this.coreState.core.document;\n if (!document) {\n this.logger.warn('CapturePlugin', 'DocumentNotFound', 'Document not found');\n return () => {};\n }\n\n const page = document.pages[opts.pageIndex];\n if (!page) {\n this.logger.warn('CapturePlugin', 'PageNotFound', `Page ${opts.pageIndex} not found`);\n return () => {};\n }\n\n const handlers = createMarqueeHandler({\n pageSize: page.size,\n scale: opts.scale,\n onPreview: opts.callback.onPreview,\n onCommit: (rect) => {\n // Capture the selected area\n this.captureArea(opts.pageIndex, rect);\n opts.callback.onCommit?.(rect);\n },\n });\n\n const off = this.interactionManagerCapability.registerHandlers({\n modeId: 'marqueeCapture',\n handlers,\n pageIndex: opts.pageIndex,\n });\n\n return off;\n }\n\n private captureArea(pageIndex: number, rect: Rect) {\n this.disableMarqueeCapture();\n\n const task = this.renderCapability.renderPageRect({\n pageIndex,\n rect,\n options: {\n imageType: this.config.imageType,\n scaleFactor: this.config.scale,\n withAnnotations: this.config.withAnnotations || false,\n },\n });\n\n task.wait((blob) => {\n this.captureArea$.emit({\n pageIndex,\n rect,\n blob,\n imageType: this.config.imageType || 'image/png',\n scale: this.config.scale || 1,\n withAnnotations: this.config.withAnnotations || false,\n });\n }, ignore);\n }\n\n private enableMarqueeCapture() {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n\n private disableMarqueeCapture() {\n this.interactionManagerCapability?.activateDefaultMode();\n }\n\n private toggleMarqueeCapture() {\n if (this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture') {\n this.interactionManagerCapability?.activateDefaultMode();\n } else {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n }\n}\n","import { Position, Rect, Size } from '@embedpdf/models';\nimport { clamp } from '@embedpdf/core';\nimport {\n EmbedPdfPointerEvent,\n PointerEventHandlersWithLifecycle,\n} from '@embedpdf/plugin-interaction-manager';\n\nexport function createMarqueeHandler(opts: {\n pageSize: Size;\n scale: number;\n minDragPx?: number;\n onPreview?: (rect: Rect | null) => void;\n onCommit?: (rect: Rect) => void;\n}): PointerEventHandlersWithLifecycle<EmbedPdfPointerEvent> {\n const { pageSize, scale, minDragPx = 5, onPreview, onCommit } = opts;\n\n let start: Position | null = null;\n let last: Rect | null = null;\n\n return {\n onPointerDown: (pos, evt) => {\n start = pos;\n last = { origin: { x: pos.x, y: pos.y }, size: { width: 0, height: 0 } };\n onPreview?.(last);\n evt.setPointerCapture?.();\n },\n onPointerMove: (pos) => {\n if (!start) return;\n const x = clamp(pos.x, 0, pageSize.width);\n const y = clamp(pos.y, 0, pageSize.height);\n last = {\n origin: { x: Math.min(start.x, x), y: Math.min(start.y, y) },\n size: { width: Math.abs(x - start.x), height: Math.abs(y - start.y) },\n };\n onPreview?.(last);\n },\n onPointerUp: (_pos, evt) => {\n if (last) {\n const dragPx = Math.max(last.size.width, last.size.height) * scale;\n if (dragPx > minDragPx) {\n onCommit?.(last);\n }\n }\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n onPointerCancel: (_pos, evt) => {\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n };\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, CAPTURE_PLUGIN_ID } from './manifest';\nimport { CapturePluginConfig } from './types';\nimport { CapturePlugin } from './capture-plugin';\n\nexport const CapturePluginPackage: PluginPackage<CapturePlugin, CapturePluginConfig> = {\n manifest,\n create: (registry, config) => new CapturePlugin(CAPTURE_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './capture-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":["CAPTURE_PLUGIN_ID","manifest","id","name","version","provides","requires","optional","defaultConfig","enabled","scale","imageType","withAnnotations","_CapturePlugin","BasePlugin","constructor","registry","config","super","this","captureArea$","createEmitter","marqueeCaptureActive$","createBehaviorEmitter","renderCapability","getPlugin","interactionManagerCapability","_a","registerMode","scope","exclusive","cursor","onModeChange","state","activeMode","emit","initialize","_","buildCapability","onCaptureArea","on","onMarqueeCaptureActiveChange","captureArea","bind","enableMarqueeCapture","disableMarqueeCapture","toggleMarqueeCapture","isMarqueeCaptureActive","getActiveMode","registerMarqueeOnPage","opts","logger","warn","document","coreState","core","page","pages","pageIndex","handlers","pageSize","minDragPx","onPreview","onCommit","start","last","onPointerDown","pos","evt","origin","x","y","size","width","height","setPointerCapture","call","onPointerMove","clamp","Math","min","abs","onPointerUp","_pos","max","releasePointerCapture","onPointerCancel","createMarqueeHandler","callback","rect","_b","registerHandlers","modeId","renderPageRect","options","scaleFactor","wait","blob","ignore","activate","activateDefaultMode","_c","CapturePlugin","CapturePluginPackage","create","reducer","initialState"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { clamp, BasePlugin, createEmitter } from "@embedpdf/core";
1
+ import { clamp, BasePlugin, createEmitter, createBehaviorEmitter } from "@embedpdf/core";
2
2
  import { ignore } from "@embedpdf/models";
3
3
  const CAPTURE_PLUGIN_ID = "capture";
4
4
  const manifest = {
@@ -64,6 +64,7 @@ const _CapturePlugin = class _CapturePlugin extends BasePlugin {
64
64
  var _a;
65
65
  super(id, registry);
66
66
  this.captureArea$ = createEmitter();
67
+ this.marqueeCaptureActive$ = createBehaviorEmitter();
67
68
  this.config = config;
68
69
  this.renderCapability = this.registry.getPlugin("render").provides();
69
70
  this.interactionManagerCapability = (_a = this.registry.getPlugin("interaction-manager")) == null ? void 0 : _a.provides();
@@ -74,6 +75,13 @@ const _CapturePlugin = class _CapturePlugin extends BasePlugin {
74
75
  exclusive: true,
75
76
  cursor: "crosshair"
76
77
  });
78
+ this.interactionManagerCapability.onModeChange((state) => {
79
+ if (state.activeMode === "marqueeCapture") {
80
+ this.marqueeCaptureActive$.emit(true);
81
+ } else {
82
+ this.marqueeCaptureActive$.emit(false);
83
+ }
84
+ });
77
85
  }
78
86
  }
79
87
  async initialize(_) {
@@ -81,6 +89,7 @@ const _CapturePlugin = class _CapturePlugin extends BasePlugin {
81
89
  buildCapability() {
82
90
  return {
83
91
  onCaptureArea: this.captureArea$.on,
92
+ onMarqueeCaptureActiveChange: this.marqueeCaptureActive$.on,
84
93
  captureArea: this.captureArea.bind(this),
85
94
  enableMarqueeCapture: this.enableMarqueeCapture.bind(this),
86
95
  disableMarqueeCapture: this.disableMarqueeCapture.bind(this),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/handlers/marquee-capture.handler.ts","../src/lib/capture-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { CapturePluginConfig } from './types';\n\nexport const CAPTURE_PLUGIN_ID = 'capture';\n\nexport const manifest: PluginManifest<CapturePluginConfig> = {\n id: CAPTURE_PLUGIN_ID,\n name: 'Capture Plugin',\n version: '1.0.0',\n provides: ['capture'],\n requires: ['render'],\n optional: ['interaction-manager'],\n defaultConfig: {\n enabled: true,\n scale: 1,\n imageType: 'image/png',\n withAnnotations: false,\n },\n};\n","import { Position, Rect, Size } from '@embedpdf/models';\nimport { clamp } from '@embedpdf/core';\nimport {\n EmbedPdfPointerEvent,\n PointerEventHandlersWithLifecycle,\n} from '@embedpdf/plugin-interaction-manager';\n\nexport function createMarqueeHandler(opts: {\n pageSize: Size;\n scale: number;\n minDragPx?: number;\n onPreview?: (rect: Rect | null) => void;\n onCommit?: (rect: Rect) => void;\n}): PointerEventHandlersWithLifecycle<EmbedPdfPointerEvent> {\n const { pageSize, scale, minDragPx = 5, onPreview, onCommit } = opts;\n\n let start: Position | null = null;\n let last: Rect | null = null;\n\n return {\n onPointerDown: (pos, evt) => {\n start = pos;\n last = { origin: { x: pos.x, y: pos.y }, size: { width: 0, height: 0 } };\n onPreview?.(last);\n evt.setPointerCapture?.();\n },\n onPointerMove: (pos) => {\n if (!start) return;\n const x = clamp(pos.x, 0, pageSize.width);\n const y = clamp(pos.y, 0, pageSize.height);\n last = {\n origin: { x: Math.min(start.x, x), y: Math.min(start.y, y) },\n size: { width: Math.abs(x - start.x), height: Math.abs(y - start.y) },\n };\n onPreview?.(last);\n },\n onPointerUp: (_pos, evt) => {\n if (last) {\n const dragPx = Math.max(last.size.width, last.size.height) * scale;\n if (dragPx > minDragPx) {\n onCommit?.(last);\n }\n }\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n onPointerCancel: (_pos, evt) => {\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n };\n}\n","import { BasePlugin, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { ignore, Rect } from '@embedpdf/models';\nimport {\n InteractionManagerCapability,\n InteractionManagerPlugin,\n} from '@embedpdf/plugin-interaction-manager';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n CaptureAreaEvent,\n CaptureCapability,\n CapturePluginConfig,\n RegisterMarqueeOnPageOptions,\n} from './types';\nimport { createMarqueeHandler } from './handlers';\n\nexport class CapturePlugin extends BasePlugin<CapturePluginConfig, CaptureCapability> {\n static readonly id = 'capture' as const;\n\n private captureArea$ = createEmitter<CaptureAreaEvent>();\n\n private renderCapability: RenderCapability;\n private interactionManagerCapability: InteractionManagerCapability | undefined;\n private config: CapturePluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: CapturePluginConfig) {\n super(id, registry);\n\n this.config = config;\n\n this.renderCapability = this.registry.getPlugin<RenderPlugin>('render')!.provides();\n this.interactionManagerCapability = this.registry\n .getPlugin<InteractionManagerPlugin>('interaction-manager')\n ?.provides();\n\n if (this.interactionManagerCapability) {\n this.interactionManagerCapability.registerMode({\n id: 'marqueeCapture',\n scope: 'page',\n exclusive: true,\n cursor: 'crosshair',\n });\n }\n }\n\n async initialize(_: CapturePluginConfig): Promise<void> {}\n\n protected buildCapability(): CaptureCapability {\n return {\n onCaptureArea: this.captureArea$.on,\n captureArea: this.captureArea.bind(this),\n enableMarqueeCapture: this.enableMarqueeCapture.bind(this),\n disableMarqueeCapture: this.disableMarqueeCapture.bind(this),\n toggleMarqueeCapture: this.toggleMarqueeCapture.bind(this),\n isMarqueeCaptureActive: () =>\n this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture',\n registerMarqueeOnPage: (opts) => this.registerMarqueeOnPage(opts),\n };\n }\n\n public registerMarqueeOnPage(opts: RegisterMarqueeOnPageOptions) {\n if (!this.interactionManagerCapability) {\n this.logger.warn(\n 'CapturePlugin',\n 'MissingDependency',\n 'Interaction manager plugin not loaded, marquee capture disabled',\n );\n return () => {};\n }\n\n const document = this.coreState.core.document;\n if (!document) {\n this.logger.warn('CapturePlugin', 'DocumentNotFound', 'Document not found');\n return () => {};\n }\n\n const page = document.pages[opts.pageIndex];\n if (!page) {\n this.logger.warn('CapturePlugin', 'PageNotFound', `Page ${opts.pageIndex} not found`);\n return () => {};\n }\n\n const handlers = createMarqueeHandler({\n pageSize: page.size,\n scale: opts.scale,\n onPreview: opts.callback.onPreview,\n onCommit: (rect) => {\n // Capture the selected area\n this.captureArea(opts.pageIndex, rect);\n opts.callback.onCommit?.(rect);\n },\n });\n\n const off = this.interactionManagerCapability.registerHandlers({\n modeId: 'marqueeCapture',\n handlers,\n pageIndex: opts.pageIndex,\n });\n\n return off;\n }\n\n private captureArea(pageIndex: number, rect: Rect) {\n this.disableMarqueeCapture();\n\n const task = this.renderCapability.renderPageRect({\n pageIndex,\n rect,\n options: {\n imageType: this.config.imageType,\n scaleFactor: this.config.scale,\n withAnnotations: this.config.withAnnotations || false,\n },\n });\n\n task.wait((blob) => {\n this.captureArea$.emit({\n pageIndex,\n rect,\n blob,\n imageType: this.config.imageType || 'image/png',\n scale: this.config.scale || 1,\n withAnnotations: this.config.withAnnotations || false,\n });\n }, ignore);\n }\n\n private enableMarqueeCapture() {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n\n private disableMarqueeCapture() {\n this.interactionManagerCapability?.activateDefaultMode();\n }\n\n private toggleMarqueeCapture() {\n if (this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture') {\n this.interactionManagerCapability?.activateDefaultMode();\n } else {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, CAPTURE_PLUGIN_ID } from './manifest';\nimport { CapturePluginConfig } from './types';\nimport { CapturePlugin } from './capture-plugin';\n\nexport const CapturePluginPackage: PluginPackage<CapturePlugin, CapturePluginConfig> = {\n manifest,\n create: (registry, config) => new CapturePlugin(CAPTURE_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './capture-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/manifest.ts","../src/lib/handlers/marquee-capture.handler.ts","../src/lib/capture-plugin.ts","../src/lib/index.ts"],"sourcesContent":["import { PluginManifest } from '@embedpdf/core';\nimport { CapturePluginConfig } from './types';\n\nexport const CAPTURE_PLUGIN_ID = 'capture';\n\nexport const manifest: PluginManifest<CapturePluginConfig> = {\n id: CAPTURE_PLUGIN_ID,\n name: 'Capture Plugin',\n version: '1.0.0',\n provides: ['capture'],\n requires: ['render'],\n optional: ['interaction-manager'],\n defaultConfig: {\n enabled: true,\n scale: 1,\n imageType: 'image/png',\n withAnnotations: false,\n },\n};\n","import { Position, Rect, Size } from '@embedpdf/models';\nimport { clamp } from '@embedpdf/core';\nimport {\n EmbedPdfPointerEvent,\n PointerEventHandlersWithLifecycle,\n} from '@embedpdf/plugin-interaction-manager';\n\nexport function createMarqueeHandler(opts: {\n pageSize: Size;\n scale: number;\n minDragPx?: number;\n onPreview?: (rect: Rect | null) => void;\n onCommit?: (rect: Rect) => void;\n}): PointerEventHandlersWithLifecycle<EmbedPdfPointerEvent> {\n const { pageSize, scale, minDragPx = 5, onPreview, onCommit } = opts;\n\n let start: Position | null = null;\n let last: Rect | null = null;\n\n return {\n onPointerDown: (pos, evt) => {\n start = pos;\n last = { origin: { x: pos.x, y: pos.y }, size: { width: 0, height: 0 } };\n onPreview?.(last);\n evt.setPointerCapture?.();\n },\n onPointerMove: (pos) => {\n if (!start) return;\n const x = clamp(pos.x, 0, pageSize.width);\n const y = clamp(pos.y, 0, pageSize.height);\n last = {\n origin: { x: Math.min(start.x, x), y: Math.min(start.y, y) },\n size: { width: Math.abs(x - start.x), height: Math.abs(y - start.y) },\n };\n onPreview?.(last);\n },\n onPointerUp: (_pos, evt) => {\n if (last) {\n const dragPx = Math.max(last.size.width, last.size.height) * scale;\n if (dragPx > minDragPx) {\n onCommit?.(last);\n }\n }\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n onPointerCancel: (_pos, evt) => {\n start = null;\n last = null;\n onPreview?.(null);\n evt.releasePointerCapture?.();\n },\n };\n}\n","import { BasePlugin, createBehaviorEmitter, createEmitter, PluginRegistry } from '@embedpdf/core';\nimport { ignore, Rect } from '@embedpdf/models';\nimport {\n InteractionManagerCapability,\n InteractionManagerPlugin,\n} from '@embedpdf/plugin-interaction-manager';\nimport { RenderCapability, RenderPlugin } from '@embedpdf/plugin-render';\n\nimport {\n CaptureAreaEvent,\n CaptureCapability,\n CapturePluginConfig,\n RegisterMarqueeOnPageOptions,\n} from './types';\nimport { createMarqueeHandler } from './handlers';\n\nexport class CapturePlugin extends BasePlugin<CapturePluginConfig, CaptureCapability> {\n static readonly id = 'capture' as const;\n\n private captureArea$ = createEmitter<CaptureAreaEvent>();\n private marqueeCaptureActive$ = createBehaviorEmitter<boolean>();\n\n private renderCapability: RenderCapability;\n private interactionManagerCapability: InteractionManagerCapability | undefined;\n private config: CapturePluginConfig;\n\n constructor(id: string, registry: PluginRegistry, config: CapturePluginConfig) {\n super(id, registry);\n\n this.config = config;\n\n this.renderCapability = this.registry.getPlugin<RenderPlugin>('render')!.provides();\n this.interactionManagerCapability = this.registry\n .getPlugin<InteractionManagerPlugin>('interaction-manager')\n ?.provides();\n\n if (this.interactionManagerCapability) {\n this.interactionManagerCapability.registerMode({\n id: 'marqueeCapture',\n scope: 'page',\n exclusive: true,\n cursor: 'crosshair',\n });\n\n this.interactionManagerCapability.onModeChange((state) => {\n if (state.activeMode === 'marqueeCapture') {\n this.marqueeCaptureActive$.emit(true);\n } else {\n this.marqueeCaptureActive$.emit(false);\n }\n });\n }\n }\n\n async initialize(_: CapturePluginConfig): Promise<void> {}\n\n protected buildCapability(): CaptureCapability {\n return {\n onCaptureArea: this.captureArea$.on,\n onMarqueeCaptureActiveChange: this.marqueeCaptureActive$.on,\n captureArea: this.captureArea.bind(this),\n enableMarqueeCapture: this.enableMarqueeCapture.bind(this),\n disableMarqueeCapture: this.disableMarqueeCapture.bind(this),\n toggleMarqueeCapture: this.toggleMarqueeCapture.bind(this),\n isMarqueeCaptureActive: () =>\n this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture',\n registerMarqueeOnPage: (opts) => this.registerMarqueeOnPage(opts),\n };\n }\n\n public registerMarqueeOnPage(opts: RegisterMarqueeOnPageOptions) {\n if (!this.interactionManagerCapability) {\n this.logger.warn(\n 'CapturePlugin',\n 'MissingDependency',\n 'Interaction manager plugin not loaded, marquee capture disabled',\n );\n return () => {};\n }\n\n const document = this.coreState.core.document;\n if (!document) {\n this.logger.warn('CapturePlugin', 'DocumentNotFound', 'Document not found');\n return () => {};\n }\n\n const page = document.pages[opts.pageIndex];\n if (!page) {\n this.logger.warn('CapturePlugin', 'PageNotFound', `Page ${opts.pageIndex} not found`);\n return () => {};\n }\n\n const handlers = createMarqueeHandler({\n pageSize: page.size,\n scale: opts.scale,\n onPreview: opts.callback.onPreview,\n onCommit: (rect) => {\n // Capture the selected area\n this.captureArea(opts.pageIndex, rect);\n opts.callback.onCommit?.(rect);\n },\n });\n\n const off = this.interactionManagerCapability.registerHandlers({\n modeId: 'marqueeCapture',\n handlers,\n pageIndex: opts.pageIndex,\n });\n\n return off;\n }\n\n private captureArea(pageIndex: number, rect: Rect) {\n this.disableMarqueeCapture();\n\n const task = this.renderCapability.renderPageRect({\n pageIndex,\n rect,\n options: {\n imageType: this.config.imageType,\n scaleFactor: this.config.scale,\n withAnnotations: this.config.withAnnotations || false,\n },\n });\n\n task.wait((blob) => {\n this.captureArea$.emit({\n pageIndex,\n rect,\n blob,\n imageType: this.config.imageType || 'image/png',\n scale: this.config.scale || 1,\n withAnnotations: this.config.withAnnotations || false,\n });\n }, ignore);\n }\n\n private enableMarqueeCapture() {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n\n private disableMarqueeCapture() {\n this.interactionManagerCapability?.activateDefaultMode();\n }\n\n private toggleMarqueeCapture() {\n if (this.interactionManagerCapability?.getActiveMode() === 'marqueeCapture') {\n this.interactionManagerCapability?.activateDefaultMode();\n } else {\n this.interactionManagerCapability?.activate('marqueeCapture');\n }\n }\n}\n","import { PluginPackage } from '@embedpdf/core';\nimport { manifest, CAPTURE_PLUGIN_ID } from './manifest';\nimport { CapturePluginConfig } from './types';\nimport { CapturePlugin } from './capture-plugin';\n\nexport const CapturePluginPackage: PluginPackage<CapturePlugin, CapturePluginConfig> = {\n manifest,\n create: (registry, config) => new CapturePlugin(CAPTURE_PLUGIN_ID, registry, config),\n reducer: () => {},\n initialState: {},\n};\n\nexport * from './capture-plugin';\nexport * from './types';\nexport * from './manifest';\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { CaptureCapability, CapturePluginConfig, RegisterMarqueeOnPageOptions }
3
3
  export declare class CapturePlugin extends BasePlugin<CapturePluginConfig, CaptureCapability> {
4
4
  static readonly id: "capture";
5
5
  private captureArea$;
6
+ private marqueeCaptureActive$;
6
7
  private renderCapability;
7
8
  private interactionManagerCapability;
8
9
  private config;
@@ -24,6 +24,7 @@ export interface RegisterMarqueeOnPageOptions {
24
24
  }
25
25
  export interface CaptureCapability {
26
26
  onCaptureArea: EventHook<CaptureAreaEvent>;
27
+ onMarqueeCaptureActiveChange: EventHook<boolean>;
27
28
  captureArea(pageIndex: number, rect: Rect): void;
28
29
  enableMarqueeCapture: () => void;
29
30
  disableMarqueeCapture: () => void;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/preact"),r=require("@embedpdf/plugin-capture"),t=require("preact/jsx-runtime"),i=require("preact/hooks"),a=()=>e.useCapability(r.CapturePlugin.id);exports.MarqueeCapture=({pageIndex:e,scale:r,className:o,stroke:s="rgba(33,150,243,0.8)",fill:u="rgba(33,150,243,0.15)"})=>{const{provides:p}=a(),[l,n]=i.useState(null);return i.useEffect((()=>{if(p)return p.registerMarqueeOnPage({pageIndex:e,scale:r,callback:{onPreview:n}})}),[p,e,r]),l?t.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:l.origin.x*r,top:l.origin.y*r,width:l.size.width*r,height:l.size.height*r,border:`1px solid ${s}`,background:u,boxSizing:"border-box"},className:o}):null},exports.useCaptureCapability=a,exports.useCapturePlugin=()=>e.usePlugin(r.CapturePlugin.id),Object.keys(r).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/preact"),r=require("@embedpdf/plugin-capture"),t=require("preact/hooks"),i=require("preact/jsx-runtime"),a=()=>e.useCapability(r.CapturePlugin.id);exports.MarqueeCapture=({pageIndex:e,scale:r,className:s,stroke:u="rgba(33,150,243,0.8)",fill:o="rgba(33,150,243,0.15)"})=>{const{provides:p}=a(),[n,l]=t.useState(null);return t.useEffect((()=>{if(p)return p.registerMarqueeOnPage({pageIndex:e,scale:r,callback:{onPreview:l}})}),[p,e,r]),n?i.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:n.origin.x*r,top:n.origin.y*r,width:n.size.width*r,height:n.size.height*r,border:`1px solid ${u}`,background:o,boxSizing:"border-box"},className:s}):null},exports.useCapture=()=>{const{provides:e}=a(),[r,i]=t.useState(!1);return t.useEffect((()=>{if(e)return e.onMarqueeCaptureActiveChange((e=>{i(e)}))}),[e]),{provides:e,isMarqueeCaptureActive:r}},exports.useCaptureCapability=a,exports.useCapturePlugin=()=>e.usePlugin(r.CapturePlugin.id),Object.keys(r).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})}));
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","pageIndex","scale","className","stroke","fill","provides","capturePlugin","rect","setRect","useState","useEffect","registerMarqueeOnPage","callback","onPreview","jsxRuntime","jsx","style","position","pointerEvents","left","origin","x","top","y","width","size","height","border","background","boxSizing","usePlugin"],"mappings":"yNAGaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,2BCcvD,EAC5BC,YACAC,QACAC,YACAC,SAAS,uBACTC,OAAO,4BAEP,MAAQC,SAAUC,GAAkBV,KAC7BW,EAAMC,GAAWC,EAAAA,SAAsB,MAa1C,OAXJC,EAAAA,WAAU,KACR,GAAKJ,EACL,OAAOA,EAAcK,sBAAsB,CACzCX,YACAC,QACAW,SAAU,CACRC,UAAWL,IAEd,GACA,CAACF,EAAeN,EAAWC,IAEzBM,EAGHO,EAAAC,IAAC,MAAA,CACCC,MAAO,CACLC,SAAU,WACVC,cAAe,OACfC,KAAMZ,EAAKa,OAAOC,EAAIpB,EACtBqB,IAAKf,EAAKa,OAAOG,EAAItB,EACrBuB,MAAOjB,EAAKkB,KAAKD,MAAQvB,EACzByB,OAAQnB,EAAKkB,KAAKC,OAASzB,EAC3B0B,OAAQ,aAAaxB,IACrByB,WAAYxB,EACZyB,UAAW,cAEb3B,cAfc,IAgBhB,0DDlD4B,IAAM4B,YAAyBhC,EAAAA,cAAcC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { useState, useEffect } from '@framework';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive) => {\n setIsMarqueeCaptureActive(isMarqueeCaptureActive);\n });\n }, [provides]);\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","pageIndex","scale","className","stroke","fill","provides","capturePlugin","rect","setRect","useState","useEffect","registerMarqueeOnPage","callback","onPreview","jsxRuntime","jsx","style","position","pointerEvents","left","origin","x","top","y","width","size","height","border","background","boxSizing","isMarqueeCaptureActive","setIsMarqueeCaptureActive","onMarqueeCaptureActiveChange","usePlugin"],"mappings":"yNAIaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,2BCavD,EAC5BC,YACAC,QACAC,YACAC,SAAS,uBACTC,OAAO,4BAEP,MAAQC,SAAUC,GAAkBV,KAC7BW,EAAMC,GAAWC,EAAAA,SAAsB,MAa1C,OAXJC,EAAAA,WAAU,KACR,GAAKJ,EACL,OAAOA,EAAcK,sBAAsB,CACzCX,YACAC,QACAW,SAAU,CACRC,UAAWL,IAEd,GACA,CAACF,EAAeN,EAAWC,IAEzBM,EAGHO,EAAAC,IAAC,MAAA,CACCC,MAAO,CACLC,SAAU,WACVC,cAAe,OACfC,KAAMZ,EAAKa,OAAOC,EAAIpB,EACtBqB,IAAKf,EAAKa,OAAOG,EAAItB,EACrBuB,MAAOjB,EAAKkB,KAAKD,MAAQvB,EACzByB,OAAQnB,EAAKkB,KAAKC,OAASzB,EAC3B0B,OAAQ,aAAaxB,IACrByB,WAAYxB,EACZyB,UAAW,cAEb3B,cAfc,IAgBhB,qBD/CsB,KAClB,MAAAG,SAAEA,GAAaT,KACdkC,EAAwBC,GAA6BtB,EAAAA,UAAS,GAS9D,OAPPC,EAAAA,WAAU,KACR,GAAKL,EACE,OAAAA,EAAS2B,8BAA8BF,IAC5CC,EAA0BD,EAAsB,GACjD,GACA,CAACzB,IAEG,CACLA,WACAyB,yBACF,0DAhB8B,IAAMG,YAAyBnC,EAAAA,cAAcC"}
@@ -1,10 +1,24 @@
1
1
  import { useCapability, usePlugin } from "@embedpdf/core/preact";
2
2
  import { CapturePlugin } from "@embedpdf/plugin-capture";
3
3
  export * from "@embedpdf/plugin-capture";
4
- import { jsx } from "preact/jsx-runtime";
5
4
  import { useState, useEffect } from "preact/hooks";
5
+ import { jsx } from "preact/jsx-runtime";
6
6
  const useCaptureCapability = () => useCapability(CapturePlugin.id);
7
7
  const useCapturePlugin = () => usePlugin(CapturePlugin.id);
8
+ const useCapture = () => {
9
+ const { provides } = useCaptureCapability();
10
+ const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);
11
+ useEffect(() => {
12
+ if (!provides) return;
13
+ return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive2) => {
14
+ setIsMarqueeCaptureActive(isMarqueeCaptureActive2);
15
+ });
16
+ }, [provides]);
17
+ return {
18
+ provides,
19
+ isMarqueeCaptureActive
20
+ };
21
+ };
8
22
  const MarqueeCapture = ({
9
23
  pageIndex,
10
24
  scale,
@@ -45,6 +59,7 @@ const MarqueeCapture = ({
45
59
  };
46
60
  export {
47
61
  MarqueeCapture,
62
+ useCapture,
48
63
  useCaptureCapability,
49
64
  useCapturePlugin
50
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":[],"mappings":";;;;;AAGO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;ACaxE,MAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,MAA2B;AACzB,QAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACzD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAsB,IAAI;AAElD,YAAU,MAAM;AACd,QAAI,CAAC,cAAe;AACpB,WAAO,cAAc,sBAAsB;AAAA,MACzC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IACb,CACD;AAAA,EACA,GAAA,CAAC,eAAe,WAAW,KAAK,CAAC;AAEhC,MAAA,CAAC,KAAa,QAAA;AAGhB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,eAAe;AAAA,QACf,MAAM,KAAK,OAAO,IAAI;AAAA,QACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACrB,OAAO,KAAK,KAAK,QAAQ;AAAA,QACzB,QAAQ,KAAK,KAAK,SAAS;AAAA,QAC3B,QAAQ,aAAa,MAAM;AAAA,QAC3B,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { useState, useEffect } from '@framework';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive) => {\n setIsMarqueeCaptureActive(isMarqueeCaptureActive);\n });\n }, [provides]);\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["isMarqueeCaptureActive"],"mappings":";;;;;AAIO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;AAExE,MAAM,aAAa,MAAM;AACxB,QAAA,EAAE,SAAS,IAAI,qBAAqB;AAC1C,QAAM,CAAC,wBAAwB,yBAAyB,IAAI,SAAS,KAAK;AAE1E,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACR,WAAA,SAAS,6BAA6B,CAACA,4BAA2B;AACvE,gCAA0BA,uBAAsB;AAAA,IAAA,CACjD;AAAA,EAAA,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACLO,MAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,MAA2B;AACzB,QAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACzD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAsB,IAAI;AAElD,YAAU,MAAM;AACd,QAAI,CAAC,cAAe;AACpB,WAAO,cAAc,sBAAsB;AAAA,MACzC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IACb,CACD;AAAA,EACA,GAAA,CAAC,eAAe,WAAW,KAAK,CAAC;AAEhC,MAAA,CAAC,KAAa,QAAA;AAGhB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,eAAe;AAAA,QACf,MAAM,KAAK,OAAO,IAAI;AAAA,QACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACrB,OAAO,KAAK,KAAK,QAAQ;AAAA,QACzB,QAAQ,KAAK,KAAK,SAAS;AAAA,QAC3B,QAAQ,aAAa,MAAM;AAAA,QAC3B,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/react"),r=require("@embedpdf/plugin-capture"),t=require("react/jsx-runtime"),i=require("react"),a=()=>e.useCapability(r.CapturePlugin.id);exports.MarqueeCapture=({pageIndex:e,scale:r,className:s,stroke:o="rgba(33,150,243,0.8)",fill:u="rgba(33,150,243,0.15)"})=>{const{provides:l}=a(),[n,p]=i.useState(null);return i.useEffect((()=>{if(l)return l.registerMarqueeOnPage({pageIndex:e,scale:r,callback:{onPreview:p}})}),[l,e,r]),n?t.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:n.origin.x*r,top:n.origin.y*r,width:n.size.width*r,height:n.size.height*r,border:`1px solid ${o}`,background:u,boxSizing:"border-box"},className:s}):null},exports.useCaptureCapability=a,exports.useCapturePlugin=()=>e.usePlugin(r.CapturePlugin.id),Object.keys(r).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/react"),r=require("@embedpdf/plugin-capture"),t=require("react"),i=require("react/jsx-runtime"),a=()=>e.useCapability(r.CapturePlugin.id);exports.MarqueeCapture=({pageIndex:e,scale:r,className:u,stroke:s="rgba(33,150,243,0.8)",fill:o="rgba(33,150,243,0.15)"})=>{const{provides:n}=a(),[p,l]=t.useState(null);return t.useEffect((()=>{if(n)return n.registerMarqueeOnPage({pageIndex:e,scale:r,callback:{onPreview:l}})}),[n,e,r]),p?i.jsx("div",{style:{position:"absolute",pointerEvents:"none",left:p.origin.x*r,top:p.origin.y*r,width:p.size.width*r,height:p.size.height*r,border:`1px solid ${s}`,background:o,boxSizing:"border-box"},className:u}):null},exports.useCapture=()=>{const{provides:e}=a(),[r,i]=t.useState(!1);return t.useEffect((()=>{if(e)return e.onMarqueeCaptureActiveChange((e=>{i(e)}))}),[e]),{provides:e,isMarqueeCaptureActive:r}},exports.useCaptureCapability=a,exports.useCapturePlugin=()=>e.usePlugin(r.CapturePlugin.id),Object.keys(r).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})}));
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","pageIndex","scale","className","stroke","fill","provides","capturePlugin","rect","setRect","useState","useEffect","registerMarqueeOnPage","callback","onPreview","jsxRuntime","jsx","style","position","pointerEvents","left","origin","x","top","y","width","size","height","border","background","boxSizing","usePlugin"],"mappings":"gNAGaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,2BCcvD,EAC5BC,YACAC,QACAC,YACAC,SAAS,uBACTC,OAAO,4BAEP,MAAQC,SAAUC,GAAkBV,KAC7BW,EAAMC,GAAWC,EAAAA,SAAsB,MAa1C,OAXJC,EAAAA,WAAU,KACR,GAAKJ,EACL,OAAOA,EAAcK,sBAAsB,CACzCX,YACAC,QACAW,SAAU,CACRC,UAAWL,IAEd,GACA,CAACF,EAAeN,EAAWC,IAEzBM,EAGHO,EAAAC,IAAC,MAAA,CACCC,MAAO,CACLC,SAAU,WACVC,cAAe,OACfC,KAAMZ,EAAKa,OAAOC,EAAIpB,EACtBqB,IAAKf,EAAKa,OAAOG,EAAItB,EACrBuB,MAAOjB,EAAKkB,KAAKD,MAAQvB,EACzByB,OAAQnB,EAAKkB,KAAKC,OAASzB,EAC3B0B,OAAQ,aAAaxB,IACrByB,WAAYxB,EACZyB,UAAW,cAEb3B,cAfc,IAgBhB,0DDlD4B,IAAM4B,YAAyBhC,EAAAA,cAAcC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { useState, useEffect } from '@framework';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive) => {\n setIsMarqueeCaptureActive(isMarqueeCaptureActive);\n });\n }, [provides]);\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","pageIndex","scale","className","stroke","fill","provides","capturePlugin","rect","setRect","useState","useEffect","registerMarqueeOnPage","callback","onPreview","jsxRuntime","jsx","style","position","pointerEvents","left","origin","x","top","y","width","size","height","border","background","boxSizing","isMarqueeCaptureActive","setIsMarqueeCaptureActive","onMarqueeCaptureActiveChange","usePlugin"],"mappings":"gNAIaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,2BCavD,EAC5BC,YACAC,QACAC,YACAC,SAAS,uBACTC,OAAO,4BAEP,MAAQC,SAAUC,GAAkBV,KAC7BW,EAAMC,GAAWC,EAAAA,SAAsB,MAa1C,OAXJC,EAAAA,WAAU,KACR,GAAKJ,EACL,OAAOA,EAAcK,sBAAsB,CACzCX,YACAC,QACAW,SAAU,CACRC,UAAWL,IAEd,GACA,CAACF,EAAeN,EAAWC,IAEzBM,EAGHO,EAAAC,IAAC,MAAA,CACCC,MAAO,CACLC,SAAU,WACVC,cAAe,OACfC,KAAMZ,EAAKa,OAAOC,EAAIpB,EACtBqB,IAAKf,EAAKa,OAAOG,EAAItB,EACrBuB,MAAOjB,EAAKkB,KAAKD,MAAQvB,EACzByB,OAAQnB,EAAKkB,KAAKC,OAASzB,EAC3B0B,OAAQ,aAAaxB,IACrByB,WAAYxB,EACZyB,UAAW,cAEb3B,cAfc,IAgBhB,qBD/CsB,KAClB,MAAAG,SAAEA,GAAaT,KACdkC,EAAwBC,GAA6BtB,EAAAA,UAAS,GAS9D,OAPPC,EAAAA,WAAU,KACR,GAAKL,EACE,OAAAA,EAAS2B,8BAA8BF,IAC5CC,EAA0BD,EAAsB,GACjD,GACA,CAACzB,IAEG,CACLA,WACAyB,yBACF,0DAhB8B,IAAMG,YAAyBnC,EAAAA,cAAcC"}
@@ -1,10 +1,24 @@
1
1
  import { useCapability, usePlugin } from "@embedpdf/core/react";
2
2
  import { CapturePlugin } from "@embedpdf/plugin-capture";
3
3
  export * from "@embedpdf/plugin-capture";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import { useState, useEffect } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
6
  const useCaptureCapability = () => useCapability(CapturePlugin.id);
7
7
  const useCapturePlugin = () => usePlugin(CapturePlugin.id);
8
+ const useCapture = () => {
9
+ const { provides } = useCaptureCapability();
10
+ const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);
11
+ useEffect(() => {
12
+ if (!provides) return;
13
+ return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive2) => {
14
+ setIsMarqueeCaptureActive(isMarqueeCaptureActive2);
15
+ });
16
+ }, [provides]);
17
+ return {
18
+ provides,
19
+ isMarqueeCaptureActive
20
+ };
21
+ };
8
22
  const MarqueeCapture = ({
9
23
  pageIndex,
10
24
  scale,
@@ -45,6 +59,7 @@ const MarqueeCapture = ({
45
59
  };
46
60
  export {
47
61
  MarqueeCapture,
62
+ useCapture,
48
63
  useCaptureCapability,
49
64
  useCapturePlugin
50
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":[],"mappings":";;;;;AAGO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;ACaxE,MAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,MAA2B;AACzB,QAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACzD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAsB,IAAI;AAElD,YAAU,MAAM;AACd,QAAI,CAAC,cAAe;AACpB,WAAO,cAAc,sBAAsB;AAAA,MACzC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IACb,CACD;AAAA,EACA,GAAA,CAAC,eAAe,WAAW,KAAK,CAAC;AAEhC,MAAA,CAAC,KAAa,QAAA;AAGhB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,eAAe;AAAA,QACf,MAAM,KAAK,OAAO,IAAI;AAAA,QACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACrB,OAAO,KAAK,KAAK,QAAQ;AAAA,QACzB,QAAQ,KAAK,KAAK,SAAS;AAAA,QAC3B,QAAQ,aAAa,MAAM;AAAA,QAC3B,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-capture.ts","../../src/shared/components/marquee-capture.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { useState, useEffect } from '@framework';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const [isMarqueeCaptureActive, setIsMarqueeCaptureActive] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onMarqueeCaptureActiveChange((isMarqueeCaptureActive) => {\n setIsMarqueeCaptureActive(isMarqueeCaptureActive);\n });\n }, [provides]);\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","import { useEffect, useState } from '@framework';\nimport { Rect } from '@embedpdf/models';\n\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nexport const MarqueeCapture = ({\n pageIndex,\n scale,\n className,\n stroke = 'rgba(33,150,243,0.8)',\n fill = 'rgba(33,150,243,0.15)',\n}: MarqueeCaptureProps) => {\n const { provides: capturePlugin } = useCaptureCapability();\n const [rect, setRect] = useState<Rect | null>(null);\n\n useEffect(() => {\n if (!capturePlugin) return;\n return capturePlugin.registerMarqueeOnPage({\n pageIndex,\n scale,\n callback: {\n onPreview: setRect,\n },\n });\n }, [capturePlugin, pageIndex, scale]);\n\n if (!rect) return null;\n\n return (\n <div\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n left: rect.origin.x * scale,\n top: rect.origin.y * scale,\n width: rect.size.width * scale,\n height: rect.size.height * scale,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }}\n className={className}\n />\n );\n};\n"],"names":["isMarqueeCaptureActive"],"mappings":";;;;;AAIO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;AAExE,MAAM,aAAa,MAAM;AACxB,QAAA,EAAE,SAAS,IAAI,qBAAqB;AAC1C,QAAM,CAAC,wBAAwB,yBAAyB,IAAI,SAAS,KAAK;AAE1E,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACR,WAAA,SAAS,6BAA6B,CAACA,4BAA2B;AACvE,gCAA0BA,uBAAsB;AAAA,IAAA,CACjD;AAAA,EAAA,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACLO,MAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,OAAO;AACT,MAA2B;AACzB,QAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACzD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAsB,IAAI;AAElD,YAAU,MAAM;AACd,QAAI,CAAC,cAAe;AACpB,WAAO,cAAc,sBAAsB;AAAA,MACzC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IACb,CACD;AAAA,EACA,GAAA,CAAC,eAAe,WAAW,KAAK,CAAC;AAEhC,MAAA,CAAC,KAAa,QAAA;AAGhB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,eAAe;AAAA,QACf,MAAM,KAAK,OAAO,IAAI;AAAA,QACtB,KAAK,KAAK,OAAO,IAAI;AAAA,QACrB,OAAO,KAAK,KAAK,QAAQ;AAAA,QACzB,QAAQ,KAAK,KAAK,SAAS;AAAA,QAC3B,QAAQ,aAAa,MAAM;AAAA,QAC3B,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
@@ -9,3 +9,7 @@ export declare const useCapturePlugin: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
+ export declare const useCapture: () => {
13
+ provides: Readonly<import('../../lib/index.ts').CaptureCapability> | null;
14
+ isMarqueeCaptureActive: boolean;
15
+ };
@@ -9,3 +9,7 @@ export declare const useCapturePlugin: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
+ export declare const useCapture: () => {
13
+ provides: Readonly<import('../../lib/index.ts').CaptureCapability> | null;
14
+ isMarqueeCaptureActive: boolean;
15
+ };
@@ -1,3 +1,7 @@
1
1
  import { CapturePlugin } from '../../lib/index.ts';
2
2
  export declare const useCaptureCapability: () => import('@embedpdf/core/vue').CapabilityState<Readonly<import('../../lib/index.ts').CaptureCapability>>;
3
3
  export declare const useCapturePlugin: () => import('@embedpdf/core/vue').PluginState<CapturePlugin>;
4
+ export declare const useCapture: () => {
5
+ provides: import('vue').Ref<Readonly<import('../../lib/index.ts').CaptureCapability> | null, Readonly<import('../../lib/index.ts').CaptureCapability> | null>;
6
+ isMarqueeCaptureActive: import('vue').Ref<boolean, boolean>;
7
+ };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/vue"),a=require("@embedpdf/plugin-capture"),t=require("vue"),l=()=>e.useCapability(a.CapturePlugin.id),r=t.defineComponent({__name:"marquee-capture",props:{pageIndex:{},scale:{},className:{},stroke:{default:"rgba(33,150,243,0.8)"},fill:{default:"rgba(33,150,243,0.15)"}},setup(e){const a=e,{provides:r}=l(),o=t.ref(null);let u;return t.onMounted((()=>{r.value&&(u=r.value.registerMarqueeOnPage({pageIndex:a.pageIndex,scale:a.scale,callback:{onPreview:e=>{o.value=e}}}))})),t.onUnmounted((()=>{null==u||u()})),(e,a)=>o.value?(t.openBlock(),t.createElementBlock("div",{key:0,style:t.normalizeStyle({position:"absolute",pointerEvents:"none",left:o.value.origin.x*e.scale+"px",top:o.value.origin.y*e.scale+"px",width:o.value.size.width*e.scale+"px",height:o.value.size.height*e.scale+"px",border:`1px solid ${e.stroke}`,background:e.fill,boxSizing:"border-box"}),class:t.normalizeClass(e.className)},null,6)):t.createCommentVNode("",!0)}});exports.MarqueeCapture=r,exports.useCaptureCapability=l,exports.useCapturePlugin=()=>e.usePlugin(a.CapturePlugin.id),Object.keys(a).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>a[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core/vue"),r=require("@embedpdf/plugin-capture"),t=require("vue"),a=()=>e.useCapability(r.CapturePlugin.id),l=t.defineComponent({__name:"marquee-capture",props:{pageIndex:{},scale:{},className:{},stroke:{default:"rgba(33,150,243,0.8)"},fill:{default:"rgba(33,150,243,0.15)"}},setup(e){const r=e,{provides:l}=a(),u=t.ref(null);let o;return t.onMounted((()=>{l.value&&(o=l.value.registerMarqueeOnPage({pageIndex:r.pageIndex,scale:r.scale,callback:{onPreview:e=>{u.value=e}}}))})),t.onUnmounted((()=>{null==o||o()})),(e,r)=>u.value?(t.openBlock(),t.createElementBlock("div",{key:0,style:t.normalizeStyle({position:"absolute",pointerEvents:"none",left:u.value.origin.x*e.scale+"px",top:u.value.origin.y*e.scale+"px",width:u.value.size.width*e.scale+"px",height:u.value.size.height*e.scale+"px",border:`1px solid ${e.stroke}`,background:e.fill,boxSizing:"border-box"}),class:t.normalizeClass(e.className)},null,6)):t.createCommentVNode("",!0)}});exports.MarqueeCapture=l,exports.useCapture=()=>{const{provides:e}=a(),r=t.ref(!1);return t.watch(e,((e,t,a)=>{if(e){a(e.onMarqueeCaptureActiveChange((e=>{r.value=e})))}}),{immediate:!0}),{provides:e,isMarqueeCaptureActive:r}},exports.useCaptureCapability=a,exports.useCapturePlugin=()=>e.usePlugin(r.CapturePlugin.id),Object.keys(r).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})}));
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-capture.ts","../../src/vue/components/marquee-capture.vue"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","<template>\n <div\n v-if=\"rect\"\n :style=\"{\n position: 'absolute',\n pointerEvents: 'none',\n left: `${rect.origin.x * scale}px`,\n top: `${rect.origin.y * scale}px`,\n width: `${rect.size.width * scale}px`,\n height: `${rect.size.height * scale}px`,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }\"\n :class=\"className\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nconst props = withDefaults(defineProps<MarqueeCaptureProps>(), {\n stroke: 'rgba(33,150,243,0.8)',\n fill: 'rgba(33,150,243,0.15)',\n});\n\nconst { provides: capturePlugin } = useCaptureCapability();\nconst rect = ref<Rect | null>(null);\n\nlet unregister: (() => void) | undefined;\n\nonMounted(() => {\n if (!capturePlugin.value) return;\n\n unregister = capturePlugin.value.registerMarqueeOnPage({\n pageIndex: props.pageIndex,\n scale: props.scale,\n callback: {\n onPreview: (newRect) => {\n rect.value = newRect;\n },\n },\n });\n});\n\nonUnmounted(() => {\n unregister?.();\n});\n</script>\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","props","__props","provides","capturePlugin","rect","ref","unregister","onMounted","value","registerMarqueeOnPage","pageIndex","scale","callback","onPreview","newRect","onUnmounted","_createElementBlock","style","_normalizeStyle","left","origin","x","top","y","width","size","height","stroke","fill","class","className","usePlugin"],"mappings":"6KAGaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,qLCgCrF,MAAMC,EAAQC,GAKNC,SAAUC,GAAkBP,IAC9BQ,EAAOC,MAAiB,MAE1B,IAAAC,SAEJC,EAAAA,WAAU,KACHJ,EAAcK,QAENF,EAAAH,EAAcK,MAAMC,sBAAsB,CACrDC,UAAWV,EAAMU,UACjBC,MAAOX,EAAMW,MACbC,SAAU,CACRC,UAAYC,IACVV,EAAKI,MAAQM,CAAA,KAGlB,IAGHC,EAAAA,aAAY,KACG,MAAAT,GAAAA,GAAA,WA1DLF,EAAII,qBADZQ,EAAAA,mBAcE,MAAA,OAZCC,MAAKC,EAAAA,eAAA,0CAA4EC,KAAAf,EAAAI,MAAKY,OAAOC,EAAIV,EAAKA,MAArB,KAAyCW,IAAAlB,EAAAI,MAAKY,OAAOG,EAAIZ,EAAKA,MAArB,KAA2Ca,MAAApB,EAAAI,MAAKiB,KAAKD,MAAQb,EAAKA,MAAvB,KAA8Ce,OAAAtB,EAAAI,MAAKiB,KAAKC,OAASf,EAAKA,MAAxB,yBAAyDgB,EAAMA,oBAAsBC,EAAIA,8BAW5SC,uBAAOC,EAASA,qIDVW,IAAMC,YAAyBjC,EAAAA,cAAcC"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-capture.ts","../../src/vue/components/marquee-capture.vue"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { ref, watch } from 'vue';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const isMarqueeCaptureActive = ref(false);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (providesValue) {\n const unsubscribe = providesValue.onMarqueeCaptureActiveChange((active) => {\n isMarqueeCaptureActive.value = active;\n });\n onCleanup(unsubscribe);\n }\n },\n { immediate: true },\n );\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","<template>\n <div\n v-if=\"rect\"\n :style=\"{\n position: 'absolute',\n pointerEvents: 'none',\n left: `${rect.origin.x * scale}px`,\n top: `${rect.origin.y * scale}px`,\n width: `${rect.size.width * scale}px`,\n height: `${rect.size.height * scale}px`,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }\"\n :class=\"className\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nconst props = withDefaults(defineProps<MarqueeCaptureProps>(), {\n stroke: 'rgba(33,150,243,0.8)',\n fill: 'rgba(33,150,243,0.15)',\n});\n\nconst { provides: capturePlugin } = useCaptureCapability();\nconst rect = ref<Rect | null>(null);\n\nlet unregister: (() => void) | undefined;\n\nonMounted(() => {\n if (!capturePlugin.value) return;\n\n unregister = capturePlugin.value.registerMarqueeOnPage({\n pageIndex: props.pageIndex,\n scale: props.scale,\n callback: {\n onPreview: (newRect) => {\n rect.value = newRect;\n },\n },\n });\n});\n\nonUnmounted(() => {\n unregister?.();\n});\n</script>\n"],"names":["useCaptureCapability","useCapability","CapturePlugin","id","props","__props","provides","capturePlugin","rect","ref","unregister","onMounted","value","registerMarqueeOnPage","pageIndex","scale","callback","onPreview","newRect","onUnmounted","_createElementBlock","style","_normalizeStyle","left","origin","x","top","y","width","size","height","stroke","fill","class","className","isMarqueeCaptureActive","vue$1","watch","providesValue","_","onCleanup","onMarqueeCaptureActiveChange","active","immediate","usePlugin"],"mappings":"6KAIaA,EAAuB,IAAMC,gBAA6BC,EAAAA,cAAcC,qLC+BrF,MAAMC,EAAQC,GAKNC,SAAUC,GAAkBP,IAC9BQ,EAAOC,MAAiB,MAE1B,IAAAC,SAEJC,EAAAA,WAAU,KACHJ,EAAcK,QAENF,EAAAH,EAAcK,MAAMC,sBAAsB,CACrDC,UAAWV,EAAMU,UACjBC,MAAOX,EAAMW,MACbC,SAAU,CACRC,UAAYC,IACVV,EAAKI,MAAQM,CAAA,KAGlB,IAGHC,EAAAA,aAAY,KACG,MAAAT,GAAAA,GAAA,WA1DLF,EAAII,qBADZQ,EAAAA,mBAcE,MAAA,OAZCC,MAAKC,EAAAA,eAAA,0CAA4EC,KAAAf,EAAAI,MAAKY,OAAOC,EAAIV,EAAKA,MAArB,KAAyCW,IAAAlB,EAAAI,MAAKY,OAAOG,EAAIZ,EAAKA,MAArB,KAA2Ca,MAAApB,EAAAI,MAAKiB,KAAKD,MAAQb,EAAKA,MAAvB,KAA8Ce,OAAAtB,EAAAI,MAAKiB,KAAKC,OAASf,EAAKA,MAAxB,yBAAyDgB,EAAMA,oBAAsBC,EAAIA,8BAW5SC,uBAAOC,EAASA,gGDPK,KAClB,MAAA5B,SAAEA,GAAaN,IACfmC,EAAyB1B,OAAI,GAe5B,OAbP2B,EAAAC,MACE/B,GACA,CAACgC,EAAeC,EAAGC,KACjB,GAAIF,EAAe,CAIjBE,EAHoBF,EAAcG,8BAA8BC,IAC9DP,EAAuBvB,MAAQ8B,CAAA,IAEZ,IAGzB,CAAEC,WAAW,IAGR,CACLrC,WACA6B,yBACF,0DAtB8B,IAAMS,YAAyB1C,EAAAA,cAAcC"}
package/dist/vue/index.js CHANGED
@@ -1,9 +1,29 @@
1
1
  import { useCapability, usePlugin } from "@embedpdf/core/vue";
2
2
  import { CapturePlugin } from "@embedpdf/plugin-capture";
3
3
  export * from "@embedpdf/plugin-capture";
4
- import { defineComponent, ref, onMounted, onUnmounted, createElementBlock, createCommentVNode, openBlock, normalizeClass, normalizeStyle } from "vue";
4
+ import { ref, watch, defineComponent, onMounted, onUnmounted, createElementBlock, createCommentVNode, openBlock, normalizeClass, normalizeStyle } from "vue";
5
5
  const useCaptureCapability = () => useCapability(CapturePlugin.id);
6
6
  const useCapturePlugin = () => usePlugin(CapturePlugin.id);
7
+ const useCapture = () => {
8
+ const { provides } = useCaptureCapability();
9
+ const isMarqueeCaptureActive = ref(false);
10
+ watch(
11
+ provides,
12
+ (providesValue, _, onCleanup) => {
13
+ if (providesValue) {
14
+ const unsubscribe = providesValue.onMarqueeCaptureActiveChange((active) => {
15
+ isMarqueeCaptureActive.value = active;
16
+ });
17
+ onCleanup(unsubscribe);
18
+ }
19
+ },
20
+ { immediate: true }
21
+ );
22
+ return {
23
+ provides,
24
+ isMarqueeCaptureActive
25
+ };
26
+ };
7
27
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
28
  __name: "marquee-capture",
9
29
  props: {
@@ -54,6 +74,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
54
74
  });
55
75
  export {
56
76
  _sfc_main as MarqueeCapture,
77
+ useCapture,
57
78
  useCaptureCapability,
58
79
  useCapturePlugin
59
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-capture.ts","../../src/vue/components/marquee-capture.vue"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n","<template>\n <div\n v-if=\"rect\"\n :style=\"{\n position: 'absolute',\n pointerEvents: 'none',\n left: `${rect.origin.x * scale}px`,\n top: `${rect.origin.y * scale}px`,\n width: `${rect.size.width * scale}px`,\n height: `${rect.size.height * scale}px`,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }\"\n :class=\"className\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nconst props = withDefaults(defineProps<MarqueeCaptureProps>(), {\n stroke: 'rgba(33,150,243,0.8)',\n fill: 'rgba(33,150,243,0.15)',\n});\n\nconst { provides: capturePlugin } = useCaptureCapability();\nconst rect = ref<Rect | null>(null);\n\nlet unregister: (() => void) | undefined;\n\nonMounted(() => {\n if (!capturePlugin.value) return;\n\n unregister = capturePlugin.value.registerMarqueeOnPage({\n pageIndex: props.pageIndex,\n scale: props.scale,\n callback: {\n onPreview: (newRect) => {\n rect.value = newRect;\n },\n },\n });\n});\n\nonUnmounted(() => {\n unregister?.();\n});\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","scale","stroke","fill","className"],"mappings":";;;;AAGO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;;;;;;;;;;;AC+B/E,UAAM,QAAQ;AAKd,UAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACnD,UAAA,OAAO,IAAiB,IAAI;AAE9B,QAAA;AAEJ,cAAU,MAAM;AACV,UAAA,CAAC,cAAc,MAAO;AAEb,mBAAA,cAAc,MAAM,sBAAsB;AAAA,QACrD,WAAW,MAAM;AAAA,QACjB,OAAO,MAAM;AAAA,QACb,UAAU;AAAA,UACR,WAAW,CAAC,YAAY;AACtB,iBAAK,QAAQ;AAAA,UAAA;AAAA,QACf;AAAA,MACF,CACD;AAAA,IAAA,CACF;AAED,gBAAY,MAAM;AACH;AAAA,IAAA,CACd;;aA3DS,KAAI,sBADZA,mBAcE,OAAA;AAAA;QAZC,OAAKC,eAAA;AAAA;;UAA4E,MAAA,GAAA,KAAA,MAAK,OAAO,IAAIC,KAAK,KAAA;AAAA,UAAoB,KAAA,GAAA,KAAA,MAAK,OAAO,IAAIA,KAAK,KAAA;AAAA,UAAsB,OAAA,GAAA,KAAA,MAAK,KAAK,QAAQA,KAAK,KAAA;AAAA,UAAuB,QAAA,GAAA,KAAA,MAAK,KAAK,SAASA,KAAK,KAAA;AAAA,+BAAiCC,KAAM,MAAA;AAAA,sBAAsBC,KAAI;AAAA;;QAW5S,sBAAOC,KAAS,SAAA;AAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-capture.ts","../../src/vue/components/marquee-capture.vue"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { CapturePlugin } from '@embedpdf/plugin-capture';\nimport { ref, watch } from 'vue';\n\nexport const useCaptureCapability = () => useCapability<CapturePlugin>(CapturePlugin.id);\nexport const useCapturePlugin = () => usePlugin<CapturePlugin>(CapturePlugin.id);\n\nexport const useCapture = () => {\n const { provides } = useCaptureCapability();\n const isMarqueeCaptureActive = ref(false);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (providesValue) {\n const unsubscribe = providesValue.onMarqueeCaptureActiveChange((active) => {\n isMarqueeCaptureActive.value = active;\n });\n onCleanup(unsubscribe);\n }\n },\n { immediate: true },\n );\n\n return {\n provides,\n isMarqueeCaptureActive,\n };\n};\n","<template>\n <div\n v-if=\"rect\"\n :style=\"{\n position: 'absolute',\n pointerEvents: 'none',\n left: `${rect.origin.x * scale}px`,\n top: `${rect.origin.y * scale}px`,\n width: `${rect.size.width * scale}px`,\n height: `${rect.size.height * scale}px`,\n border: `1px solid ${stroke}`,\n background: fill,\n boxSizing: 'border-box',\n }\"\n :class=\"className\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, onUnmounted } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport { useCaptureCapability } from '../hooks/use-capture';\n\ninterface MarqueeCaptureProps {\n /** Index of the page this layer lives on */\n pageIndex: number;\n /** Scale of the page */\n scale: number;\n /** Optional CSS class applied to the marquee rectangle */\n className?: string;\n /** Stroke / fill colours (defaults below) */\n stroke?: string;\n fill?: string;\n}\n\nconst props = withDefaults(defineProps<MarqueeCaptureProps>(), {\n stroke: 'rgba(33,150,243,0.8)',\n fill: 'rgba(33,150,243,0.15)',\n});\n\nconst { provides: capturePlugin } = useCaptureCapability();\nconst rect = ref<Rect | null>(null);\n\nlet unregister: (() => void) | undefined;\n\nonMounted(() => {\n if (!capturePlugin.value) return;\n\n unregister = capturePlugin.value.registerMarqueeOnPage({\n pageIndex: props.pageIndex,\n scale: props.scale,\n callback: {\n onPreview: (newRect) => {\n rect.value = newRect;\n },\n },\n });\n});\n\nonUnmounted(() => {\n unregister?.();\n});\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","scale","stroke","fill","className"],"mappings":";;;;AAIO,MAAM,uBAAuB,MAAM,cAA6B,cAAc,EAAE;AAChF,MAAM,mBAAmB,MAAM,UAAyB,cAAc,EAAE;AAExE,MAAM,aAAa,MAAM;AACxB,QAAA,EAAE,SAAS,IAAI,qBAAqB;AACpC,QAAA,yBAAyB,IAAI,KAAK;AAExC;AAAA,IACE;AAAA,IACA,CAAC,eAAe,GAAG,cAAc;AAC/B,UAAI,eAAe;AACjB,cAAM,cAAc,cAAc,6BAA6B,CAAC,WAAW;AACzE,iCAAuB,QAAQ;AAAA,QAAA,CAChC;AACD,kBAAU,WAAW;AAAA,MAAA;AAAA,IAEzB;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;;;;;;;;;ACOA,UAAM,QAAQ;AAKd,UAAM,EAAE,UAAU,cAAc,IAAI,qBAAqB;AACnD,UAAA,OAAO,IAAiB,IAAI;AAE9B,QAAA;AAEJ,cAAU,MAAM;AACV,UAAA,CAAC,cAAc,MAAO;AAEb,mBAAA,cAAc,MAAM,sBAAsB;AAAA,QACrD,WAAW,MAAM;AAAA,QACjB,OAAO,MAAM;AAAA,QACb,UAAU;AAAA,UACR,WAAW,CAAC,YAAY;AACtB,iBAAK,QAAQ;AAAA,UAAA;AAAA,QACf;AAAA,MACF,CACD;AAAA,IAAA,CACF;AAED,gBAAY,MAAM;AACH;AAAA,IAAA,CACd;;aA3DS,KAAI,sBADZA,mBAcE,OAAA;AAAA;QAZC,OAAKC,eAAA;AAAA;;UAA4E,MAAA,GAAA,KAAA,MAAK,OAAO,IAAIC,KAAK,KAAA;AAAA,UAAoB,KAAA,GAAA,KAAA,MAAK,OAAO,IAAIA,KAAK,KAAA;AAAA,UAAsB,OAAA,GAAA,KAAA,MAAK,KAAK,QAAQA,KAAK,KAAA;AAAA,UAAuB,QAAA,GAAA,KAAA,MAAK,KAAK,SAASA,KAAK,KAAA;AAAA,+BAAiCC,KAAM,MAAA;AAAA,sBAAsBC,KAAI;AAAA;;QAW5S,sBAAOC,KAAS,SAAA;AAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embedpdf/plugin-capture",
3
- "version": "1.3.13",
3
+ "version": "1.3.14",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.cjs",
@@ -29,24 +29,24 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@embedpdf/models": "1.3.13"
32
+ "@embedpdf/models": "1.3.14"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/react": "^18.2.0",
36
36
  "typescript": "^5.0.0",
37
+ "@embedpdf/plugin-render": "1.3.14",
37
38
  "@embedpdf/build": "1.0.1",
38
- "@embedpdf/plugin-render": "1.3.13",
39
- "@embedpdf/plugin-interaction-manager": "1.3.13",
40
- "@embedpdf/core": "1.3.13"
39
+ "@embedpdf/core": "1.3.14",
40
+ "@embedpdf/plugin-interaction-manager": "1.3.14"
41
41
  },
42
42
  "peerDependencies": {
43
43
  "react": ">=16.8.0",
44
44
  "react-dom": ">=16.8.0",
45
45
  "preact": "^10.26.4",
46
46
  "vue": ">=3.2.0",
47
- "@embedpdf/core": "1.3.13",
48
- "@embedpdf/plugin-render": "1.3.13",
49
- "@embedpdf/plugin-interaction-manager": "1.3.13"
47
+ "@embedpdf/core": "1.3.14",
48
+ "@embedpdf/plugin-render": "1.3.14",
49
+ "@embedpdf/plugin-interaction-manager": "1.3.14"
50
50
  },
51
51
  "files": [
52
52
  "dist",