@pdfslick/solid 3.0.0 → 3.1.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
@@ -5,7 +5,7 @@ export * from '@pdfslick/core';
5
5
  import { template, use, effect, className, 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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"}