@pdfslick/solid 3.0.0 → 4.0.0

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/README.md CHANGED
@@ -96,6 +96,10 @@ Provided with the PDF Document path and options object, the `usePDFSlick()` hook
96
96
 
97
97
  [More on using PDFSlick with Solid](https://pdfslick.dev/docs/solid) | [Checkout the SolidJS Examples](./apps/solidweb/src/examples)
98
98
 
99
+ ## Author
100
+
101
+ PDFSlick was conceived and developed, and is currently maintained by [Vancho Stojkov](https://github.com/van100j), who embarked on this project with the vision of simplifying PDF integration for modern web frameworks, leveraging the power of PDF.js while providing a developer-friendly API.
102
+
99
103
  ## Thanks
100
104
 
101
105
  - [Vane Kosturanov](https://kosturanov.com/portfolio/logo-branding-design) for designing the logo
package/dist/esm/index.js CHANGED
@@ -2,10 +2,10 @@ import { createStore, reconcile } from 'solid-js/store';
2
2
  import { createSignal, createEffect, For, onCleanup } from 'solid-js';
3
3
  import { create, PDFSlick } from '@pdfslick/core';
4
4
  export * from '@pdfslick/core';
5
- import { template, use, effect, className, insert, createComponent, Portal, classList } from 'solid-js/web';
5
+ import { use, effect, className, template, insert, createComponent, Portal, classList } from 'solid-js/web';
6
6
  import { createElementSize } from '@solid-primitives/resize-observer';
7
7
 
8
- var _tmpl$$1 = /*#__PURE__*/template(`<div id=viewerContainer><div id=viewer class="pdfSlickViewer pdfViewer">`);
8
+ var _tmpl$$1 = /*#__PURE__*/template(`<div id=viewerContainer style=position:absolute;inset:0;overflow:auto><div id=viewer class="pdfSlickViewer pdfViewer">`);
9
9
  function PDFSlickViewer(props) {
10
10
  const [resizeRef, setResizeRef] = createSignal();
11
11
  const size = createElementSize(resizeRef);
@@ -23,15 +23,12 @@ function PDFSlickViewer(props) {
23
23
  props.viewerRef(el);
24
24
  setResizeRef(el);
25
25
  }, _el$);
26
- _el$.style.setProperty("position", "absolute");
27
- _el$.style.setProperty("inset", "0");
28
- _el$.style.setProperty("overflow", "auto");
29
26
  effect(() => className(_el$, `pdfSlickContainer ${props.class ?? ""}`));
30
27
  return _el$;
31
28
  })();
32
29
  }
33
30
 
34
- var _tmpl$ = /*#__PURE__*/template(`<div>`);
31
+ var _tmpl$ = /*#__PURE__*/template(`<div style=position:absolute;overflow:auto;inset:0>`);
35
32
  function PDFSlickThumbnails(props) {
36
33
  const [resizeRef, setResizeRef] = createSignal();
37
34
  const size = createElementSize(resizeRef);
@@ -46,9 +43,6 @@ function PDFSlickThumbnails(props) {
46
43
  props.thumbsRef(el);
47
44
  setResizeRef(el);
48
45
  }, _el$);
49
- _el$.style.setProperty("position", "absolute");
50
- _el$.style.setProperty("overflow", "auto");
51
- _el$.style.setProperty("inset", "0");
52
46
  insert(_el$, createComponent(For, {
53
47
  get each() {
54
48
  return Array.from(props.store.thumbnailViews);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../PDFSlickViewer.tsx","../../PDFSlickThumbnails.tsx","../../usePDFSlick.tsx"],"sourcesContent":["/** @jsxImportSource solid-js */\nimport { createEffect, createSignal } from \"solid-js\";\nimport { createElementSize } from \"@solid-primitives/resize-observer\";\nimport type { PDFSlickState } from \"@pdfslick/core\";\n\nexport type PDFSlickViewerProps = {\n viewerRef: (instance: HTMLElement) => void;\n store: PDFSlickState;\n class?: string;\n};\n\nexport default function PDFSlickViewer(props: PDFSlickViewerProps) {\n const [resizeRef, setResizeRef] = createSignal<HTMLElement>();\n\n const size = createElementSize(resizeRef);\n createEffect(() => {\n if (size.width && size.height) {\n if (\n props.store.pdfSlick &&\n (props.store.scaleValue === \"auto\" ||\n props.store.scaleValue === \"page-fit\" ||\n props.store.scaleValue === \"page-width\")\n ) {\n props.store.pdfSlick.viewer.currentScaleValue = props.store.scaleValue;\n }\n props.store.pdfSlick?.viewer.update();\n }\n });\n\n return (\n <div\n ref={(el) => {\n props.viewerRef(el);\n setResizeRef(el);\n }}\n id=\"viewerContainer\"\n class={`pdfSlickContainer ${props.class ?? \"\"}`}\n style={{\n \"position\": \"absolute\",\n \"inset\": 0,\n \"overflow\": \"auto\"\n }}\n >\n <div id=\"viewer\" class=\"pdfSlickViewer pdfViewer\" />\n </div>\n );\n}\n","import { JSXElement, For, createSignal, createEffect } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { createElementSize } from \"@solid-primitives/resize-observer\";\nimport type { PDFSlickState } from \"@pdfslick/solid\";\n\nexport type PDFSlickThumbProps = {\n pageNumber: number;\n width: number;\n height: number;\n scale: number;\n rotation: number;\n loaded: boolean;\n pageLabel: string | null;\n src: string | null;\n};\n\nexport type PDFSlickThumbnailsContainerProps = {\n children: ({\n pageNumber,\n src,\n width,\n height,\n scale,\n rotation,\n pageLabel,\n loaded,\n }: PDFSlickThumbProps) => JSXElement;\n thumbsRef: (instance: HTMLElement) => void;\n store: PDFSlickState;\n class?: string;\n classList?: Record<string, boolean>;\n};\n\nexport function PDFSlickThumbnails(props: PDFSlickThumbnailsContainerProps) {\n const [resizeRef, setResizeRef] = createSignal<HTMLElement>();\n const size = createElementSize(resizeRef);\n\n createEffect(() => {\n if (size.width && size.height) {\n props.store.pdfSlick?.forceRendering();\n }\n });\n\n return (\n <div\n ref={(el) => {\n props.thumbsRef(el);\n setResizeRef(el);\n }}\n class={props.class ?? \"\"}\n classList={props.classList ?? {}}\n style={{\n position: \"absolute\",\n overflow: \"auto\",\n inset: 0,\n }}\n >\n <For each={Array.from(props.store.thumbnailViews)}>\n {([pageNumber, view]) => (\n <Portal mount={view.div}>\n {props.children({\n pageNumber,\n width: view.canvasWidth,\n height: view.canvasHeight,\n scale: view.scale,\n src: view?.src ?? null,\n rotation: view.rotation,\n pageLabel: view.pageLabel,\n loaded: view.loaded,\n })}\n </Portal>\n )}\n </For>\n </div>\n );\n}\n","import { createStore, reconcile } from \"solid-js/store\";\nimport { createEffect, createSignal, type Accessor } from \"solid-js\";\nimport { onCleanup } from \"solid-js\";\nimport { create, PDFSlick } from \"@pdfslick/core\";\nimport type {\n PDFSlickOptions,\n PDFSlickState,\n PDFException,\n} from \"@pdfslick/core\";\nimport { StoreApi } from \"zustand\";\nimport PDFSlickViewer from \"./PDFSlickViewer\";\nimport { PDFSlickThumbnails } from \"./PDFSlickThumbnails\";\n\ntype TUsePDFSlick = (\n url: string | URL | ArrayBuffer | undefined,\n options?: PDFSlickOptions\n) => {\n isDocumentLoaded: Accessor<boolean>;\n viewerRef: (node: HTMLElement) => void;\n thumbsRef: (node: HTMLElement) => void;\n pdfSlick: Accessor<PDFSlick | null>;\n pdfSlickStore: PDFSlickState;\n PDFSlickViewer: typeof PDFSlickViewer;\n PDFSlickThumbnails: typeof PDFSlickThumbnails;\n error: Accessor<PDFException | null>;\n};\n\ntype ExtractState<S> = S extends { getState: () => infer T } ? T : never;\nfunction useStore<S extends StoreApi<unknown>>(api: S): ExtractState<S>;\nfunction useStore<S extends StoreApi<unknown>, U>(\n api: S,\n selector: (state: ExtractState<S>) => U,\n equalityFn?: (a: U, b: U) => boolean\n): U;\n\nfunction useStore<TState extends object, StateSlice>(\n api: StoreApi<TState>,\n selector: (state: TState) => StateSlice = api.getState as any,\n equalityFn?: (a: StateSlice, b: StateSlice) => boolean\n) {\n const initialValue = selector(api.getState()) as any;\n const [state, setState] = createStore(initialValue);\n\n const listener = (nextState: TState, previousState: TState) => {\n const prevStateSlice = selector(previousState);\n const nextStateSlice = selector(nextState);\n\n if (equalityFn !== undefined) {\n if (!equalityFn(prevStateSlice, nextStateSlice))\n setState(reconcile(nextStateSlice));\n } else {\n setState(reconcile(nextStateSlice));\n }\n };\n\n const unsubscribe = api.subscribe(listener);\n onCleanup(() => unsubscribe());\n return state;\n}\n\nexport const usePDFSlick: TUsePDFSlick = (url, options) => {\n const [isDocumentLoaded, setIsDocumentLoaded] = createSignal(false);\n const [areContainersMounted, setContainersMounted] = createSignal(false);\n const [container, setContainer] = createSignal<HTMLElement | null>(null);\n const [thumbs, setThumbs] = createSignal<HTMLElement | null>(null);\n const [error, setError] = createSignal<PDFException | null>(null);\n\n const [pdfSlick, setPdfSlick] = createSignal<PDFSlick | null>(null);\n\n const zustandStore = create();\n const pdfSlickStore = useStore(zustandStore);\n\n const viewerRef = (node: HTMLElement) => {\n setContainer(node);\n setContainersMounted(true);\n };\n\n const thumbsRef = (node: HTMLElement) => {\n setThumbs(node);\n };\n\n createEffect(() => {\n if (url && areContainersMounted()) {\n const pdfSlick = new PDFSlick({\n container: container()! as HTMLDivElement,\n thumbs: thumbs()! as HTMLDivElement,\n store: zustandStore,\n options,\n onError: (err) => setError(err),\n });\n setPdfSlick(pdfSlick);\n zustandStore.setState({ pdfSlick });\n\n pdfSlick.loadDocument(url, options).then(() => {\n setIsDocumentLoaded(true);\n });\n }\n });\n\n return {\n isDocumentLoaded,\n viewerRef,\n thumbsRef,\n pdfSlick,\n pdfSlickStore,\n PDFSlickViewer,\n PDFSlickThumbnails,\n error,\n };\n};\n"],"names":["PDFSlickViewer","props","resizeRef","setResizeRef","createSignal","size","createElementSize","createEffect","width","height","store","pdfSlick","scaleValue","viewer","currentScaleValue","update","_el$","_tmpl$","_$use","el","viewerRef","style","setProperty","_$effect","_$className","class","PDFSlickThumbnails","forceRendering","thumbsRef","_$insert","_$createComponent","For","each","Array","from","thumbnailViews","children","pageNumber","view","Portal","mount","div","canvasWidth","canvasHeight","scale","src","rotation","pageLabel","loaded","_p$","_v$","_v$2","classList","e","t","_$classList","undefined","useStore","api","selector","getState","equalityFn","initialValue","state","setState","createStore","listener","nextState","previousState","nextStateSlice","reconcile","unsubscribe","subscribe","onCleanup","usePDFSlick","url","options","isDocumentLoaded","setIsDocumentLoaded","areContainersMounted","setContainersMounted","container","setContainer","thumbs","setThumbs","error","setError","setPdfSlick","zustandStore","create","pdfSlickStore","node","PDFSlick","onError","err","loadDocument","then"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../PDFSlickViewer.tsx","../../PDFSlickThumbnails.tsx","../../usePDFSlick.tsx"],"sourcesContent":["/** @jsxImportSource solid-js */\nimport { createEffect, createSignal } from \"solid-js\";\nimport { createElementSize } from \"@solid-primitives/resize-observer\";\nimport type { PDFSlickState } from \"@pdfslick/core\";\n\nexport type PDFSlickViewerProps = {\n viewerRef: (instance: HTMLElement) => void;\n store: PDFSlickState;\n class?: string;\n};\n\nexport default function PDFSlickViewer(props: PDFSlickViewerProps) {\n const [resizeRef, setResizeRef] = createSignal<HTMLElement>();\n\n const size = createElementSize(resizeRef);\n createEffect(() => {\n if (size.width && size.height) {\n if (\n props.store.pdfSlick &&\n (props.store.scaleValue === \"auto\" ||\n props.store.scaleValue === \"page-fit\" ||\n props.store.scaleValue === \"page-width\")\n ) {\n props.store.pdfSlick.viewer.currentScaleValue = props.store.scaleValue;\n }\n props.store.pdfSlick?.viewer.update();\n }\n });\n\n return (\n <div\n ref={(el) => {\n props.viewerRef(el);\n setResizeRef(el);\n }}\n id=\"viewerContainer\"\n class={`pdfSlickContainer ${props.class ?? \"\"}`}\n style={{\n \"position\": \"absolute\",\n \"inset\": 0,\n \"overflow\": \"auto\"\n }}\n >\n <div id=\"viewer\" class=\"pdfSlickViewer pdfViewer\" />\n </div>\n );\n}\n","import { JSXElement, For, createSignal, createEffect } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { createElementSize } from \"@solid-primitives/resize-observer\";\nimport type { PDFSlickState } from \"@pdfslick/solid\";\n\nexport type PDFSlickThumbProps = {\n pageNumber: number;\n width: number;\n height: number;\n scale: number;\n rotation: number;\n loaded: boolean;\n pageLabel: string | null;\n src: string | null;\n};\n\nexport type PDFSlickThumbnailsContainerProps = {\n children: ({\n pageNumber,\n src,\n width,\n height,\n scale,\n rotation,\n pageLabel,\n loaded,\n }: PDFSlickThumbProps) => JSXElement;\n thumbsRef: (instance: HTMLElement) => void;\n store: PDFSlickState;\n class?: string;\n classList?: Record<string, boolean>;\n};\n\nexport function PDFSlickThumbnails(props: PDFSlickThumbnailsContainerProps) {\n const [resizeRef, setResizeRef] = createSignal<HTMLElement>();\n const size = createElementSize(resizeRef);\n\n createEffect(() => {\n if (size.width && size.height) {\n props.store.pdfSlick?.forceRendering();\n }\n });\n\n return (\n <div\n ref={(el) => {\n props.thumbsRef(el);\n setResizeRef(el);\n }}\n class={props.class ?? \"\"}\n classList={props.classList ?? {}}\n style={{\n position: \"absolute\",\n overflow: \"auto\",\n inset: 0,\n }}\n >\n <For each={Array.from(props.store.thumbnailViews)}>\n {([pageNumber, view]) => (\n <Portal mount={view.div}>\n {props.children({\n pageNumber,\n width: view.canvasWidth,\n height: view.canvasHeight,\n scale: view.scale,\n src: view?.src ?? null,\n rotation: view.rotation,\n pageLabel: view.pageLabel,\n loaded: view.loaded,\n })}\n </Portal>\n )}\n </For>\n </div>\n );\n}\n","import { createStore, reconcile } from \"solid-js/store\";\nimport { createEffect, createSignal, type Accessor } from \"solid-js\";\nimport { onCleanup } from \"solid-js\";\nimport { create, PDFSlick } from \"@pdfslick/core\";\nimport type {\n PDFSlickOptions,\n PDFSlickState,\n PDFException,\n} from \"@pdfslick/core\";\nimport { StoreApi } from \"zustand\";\nimport PDFSlickViewer from \"./PDFSlickViewer\";\nimport { PDFSlickThumbnails } from \"./PDFSlickThumbnails\";\n\ntype TUsePDFSlick = (\n url: string | URL | ArrayBuffer | undefined,\n options?: PDFSlickOptions\n) => {\n isDocumentLoaded: Accessor<boolean>;\n viewerRef: (node: HTMLElement) => void;\n thumbsRef: (node: HTMLElement) => void;\n pdfSlick: Accessor<PDFSlick | null>;\n pdfSlickStore: PDFSlickState;\n PDFSlickViewer: typeof PDFSlickViewer;\n PDFSlickThumbnails: typeof PDFSlickThumbnails;\n error: Accessor<PDFException | null>;\n};\n\ntype ExtractState<S> = S extends { getState: () => infer T } ? T : never;\nfunction useStore<S extends StoreApi<unknown>>(api: S): ExtractState<S>;\nfunction useStore<S extends StoreApi<unknown>, U>(\n api: S,\n selector: (state: ExtractState<S>) => U,\n equalityFn?: (a: U, b: U) => boolean\n): U;\n\nfunction useStore<TState extends object, StateSlice>(\n api: StoreApi<TState>,\n selector: (state: TState) => StateSlice = api.getState as any,\n equalityFn?: (a: StateSlice, b: StateSlice) => boolean\n) {\n const initialValue = selector(api.getState()) as any;\n const [state, setState] = createStore(initialValue);\n\n const listener = (nextState: TState, previousState: TState) => {\n const prevStateSlice = selector(previousState);\n const nextStateSlice = selector(nextState);\n\n if (equalityFn !== undefined) {\n if (!equalityFn(prevStateSlice, nextStateSlice))\n setState(reconcile(nextStateSlice));\n } else {\n setState(reconcile(nextStateSlice));\n }\n };\n\n const unsubscribe = api.subscribe(listener);\n onCleanup(() => unsubscribe());\n return state;\n}\n\nexport const usePDFSlick: TUsePDFSlick = (url, options) => {\n const [isDocumentLoaded, setIsDocumentLoaded] = createSignal(false);\n const [areContainersMounted, setContainersMounted] = createSignal(false);\n const [container, setContainer] = createSignal<HTMLElement | null>(null);\n const [thumbs, setThumbs] = createSignal<HTMLElement | null>(null);\n const [error, setError] = createSignal<PDFException | null>(null);\n\n const [pdfSlick, setPdfSlick] = createSignal<PDFSlick | null>(null);\n\n const zustandStore = create();\n const pdfSlickStore = useStore(zustandStore);\n\n const viewerRef = (node: HTMLElement) => {\n setContainer(node);\n setContainersMounted(true);\n };\n\n const thumbsRef = (node: HTMLElement) => {\n setThumbs(node);\n };\n\n createEffect(() => {\n if (url && areContainersMounted()) {\n const pdfSlick = new PDFSlick({\n container: container()! as HTMLDivElement,\n thumbs: thumbs()! as HTMLDivElement,\n store: zustandStore,\n options,\n onError: (err) => setError(err),\n });\n setPdfSlick(pdfSlick);\n zustandStore.setState({ pdfSlick });\n\n pdfSlick.loadDocument(url, options).then(() => {\n setIsDocumentLoaded(true);\n });\n }\n });\n\n return {\n isDocumentLoaded,\n viewerRef,\n thumbsRef,\n pdfSlick,\n pdfSlickStore,\n PDFSlickViewer,\n PDFSlickThumbnails,\n error,\n };\n};\n"],"names":["PDFSlickViewer","props","resizeRef","setResizeRef","createSignal","size","createElementSize","createEffect","width","height","store","pdfSlick","scaleValue","viewer","currentScaleValue","update","_el$","_tmpl$","_$use","el","viewerRef","_$effect","_$className","class","PDFSlickThumbnails","forceRendering","thumbsRef","_$insert","_$createComponent","For","each","Array","from","thumbnailViews","children","pageNumber","view","Portal","mount","div","canvasWidth","canvasHeight","scale","src","rotation","pageLabel","loaded","_p$","_v$","_v$2","classList","e","t","_$classList","undefined","useStore","api","selector","getState","equalityFn","initialValue","state","setState","createStore","listener","nextState","previousState","nextStateSlice","reconcile","unsubscribe","subscribe","onCleanup","usePDFSlick","url","options","isDocumentLoaded","setIsDocumentLoaded","areContainersMounted","setContainersMounted","container","setContainer","thumbs","setThumbs","error","setError","setPdfSlick","zustandStore","create","pdfSlickStore","node","PDFSlick","onError","err","loadDocument","then"],"mappings":"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"}