flipbookengine 0.6.0 → 1.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/CHANGELOG.md +37 -3
- package/README.md +150 -11
- package/dist/components/App.d.ts +19 -0
- package/dist/components/HotspotLayer.d.ts +14 -0
- package/dist/components/NotesPanel.d.ts +14 -0
- package/dist/components/PluginPanels.d.ts +5 -0
- package/dist/components/SearchPanel.d.ts +11 -0
- package/dist/components/Toolbar.d.ts +6 -0
- package/dist/components/Viewer.d.ts +6 -0
- package/dist/core/LayoutManager.d.ts +1 -1
- package/dist/core/PdfRenderer.d.ts +23 -2
- package/dist/core-entry.d.ts +13 -0
- package/dist/core.d.ts +1 -0
- package/dist/embed.d.ts +80 -0
- package/dist/engine-Dt2Fn6O-.js +4060 -0
- package/dist/engine-Dt2Fn6O-.js.map +1 -0
- package/dist/engine.d.ts +111 -1
- package/dist/feature-Cicli9ie.js +17 -0
- package/dist/feature-Cicli9ie.js.map +1 -0
- package/dist/flipbook-engine.core.js +8 -0
- package/dist/flipbook-engine.core.js.map +1 -0
- package/dist/flipbook-engine.css +1 -1
- package/dist/flipbook-engine.iife.js +56 -47
- package/dist/flipbook-engine.iife.js.map +1 -1
- package/dist/flipbook-engine.js +9 -4
- package/dist/flipbook-engine.js.map +1 -1
- package/dist/flipbook-engine.plugins-annotations.js +14 -0
- package/dist/flipbook-engine.plugins-annotations.js.map +1 -0
- package/dist/flipbook-engine.plugins-bookmarks.js +16 -0
- package/dist/flipbook-engine.plugins-bookmarks.js.map +1 -0
- package/dist/flipbook-engine.plugins-deep-link.js +14 -0
- package/dist/flipbook-engine.plugins-deep-link.js.map +1 -0
- package/dist/flipbook-engine.plugins-hotspots.js +15 -0
- package/dist/flipbook-engine.plugins-hotspots.js.map +1 -0
- package/dist/flipbook-engine.plugins-notes.js +16 -0
- package/dist/flipbook-engine.plugins-notes.js.map +1 -0
- package/dist/flipbook-engine.plugins-search.js +15 -0
- package/dist/flipbook-engine.plugins-search.js.map +1 -0
- package/dist/flipbook-engine.plugins-share.js +13 -0
- package/dist/flipbook-engine.plugins-share.js.map +1 -0
- package/dist/flipbook-engine.plugins-toc.js +14 -0
- package/dist/flipbook-engine.plugins-toc.js.map +1 -0
- package/dist/flipbook-engine.plugins.js +5 -0
- package/dist/flipbook-engine.plugins.js.map +1 -0
- package/dist/flipbook-engine.react.js +1 -1
- package/dist/flipbook-engine.vue.js +1 -1
- package/dist/i18n/locales/en.d.ts +17 -0
- package/dist/i18n/locales/tr.d.ts +17 -0
- package/dist/i18n/service.d.ts +51 -0
- package/dist/index-BhTR2SK6.js +366 -0
- package/dist/index-BhTR2SK6.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/model/annotations.d.ts +14 -0
- package/dist/model/hotspots.d.ts +40 -0
- package/dist/model/pages.d.ts +2 -0
- package/dist/model/search.d.ts +25 -0
- package/dist/plugins/annotations.d.ts +4 -0
- package/dist/plugins/bookmarks.d.ts +4 -0
- package/dist/plugins/deep-link.d.ts +4 -0
- package/dist/plugins/feature.d.ts +5 -0
- package/dist/plugins/hotspots.d.ts +4 -0
- package/dist/plugins/index.d.ts +65 -0
- package/dist/plugins/notes.d.ts +4 -0
- package/dist/plugins/search.d.ts +4 -0
- package/dist/plugins/share.d.ts +4 -0
- package/dist/plugins/toc.d.ts +4 -0
- package/dist/plugins-annotations.d.ts +1 -0
- package/dist/plugins-bookmarks.d.ts +1 -0
- package/dist/plugins-deep-link.d.ts +1 -0
- package/dist/plugins-hotspots.d.ts +1 -0
- package/dist/plugins-notes.d.ts +1 -0
- package/dist/plugins-search.d.ts +1 -0
- package/dist/plugins-share.d.ts +1 -0
- package/dist/plugins-toc.d.ts +1 -0
- package/dist/plugins.d.ts +1 -0
- package/dist/state/store.d.ts +19 -5
- package/dist/theme/theme.d.ts +16 -0
- package/dist/vue/index.d.ts +1 -1
- package/docs/api-reference.md +206 -0
- package/docs/frameworks.md +73 -0
- package/docs/getting-started.md +128 -0
- package/docs/i18n.md +47 -0
- package/docs/migration-0.4.0.md +24 -0
- package/docs/migration-0.5.0.md +25 -0
- package/docs/migration-1.0.0.md +59 -0
- package/docs/plugin-architecture.md +103 -0
- package/docs/release-checklist.md +37 -0
- package/docs/theming.md +61 -0
- package/package.json +165 -114
- package/dist/engine-MdZzt6R9.js +0 -3474
- package/dist/engine-MdZzt6R9.js.map +0 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# 1.0.0 migration guide
|
|
2
|
+
|
|
3
|
+
FlipbookEngine 1.0.0 is the first stable open-source release. The 0.x line was
|
|
4
|
+
alpha/beta and does not provide a compatibility guarantee. Test the viewer and
|
|
5
|
+
wrapper integrations against the new package before deploying.
|
|
6
|
+
|
|
7
|
+
## Plugin entry points
|
|
8
|
+
|
|
9
|
+
The all-in-one import remains available:
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { FlipbookEngine } from 'flipbookengine';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Optional feature adapters can be loaded independently:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { FlipbookEngine } from 'flipbookengine/core';
|
|
19
|
+
import { notesPlugin } from 'flipbookengine/plugins/notes';
|
|
20
|
+
|
|
21
|
+
const engine = new FlipbookEngine('#viewer', { plugins: [notesPlugin] });
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Available adapters are documented in [plugin architecture](./plugin-architecture.md).
|
|
25
|
+
The official OSS package does not include analytics, OCR, PDF outline extraction,
|
|
26
|
+
protected downloads, or backend rendering.
|
|
27
|
+
|
|
28
|
+
## TOC and iframe API
|
|
29
|
+
|
|
30
|
+
TOC is supplied as a host-provided `FlipbookTocEntry[]` manifest. Use
|
|
31
|
+
`engine.getToc()` and `engine.setToc(entries, show?)` for runtime updates. Iframe
|
|
32
|
+
controllers additionally expose `getToc()` and `setToc()` through the validated
|
|
33
|
+
postMessage bridge.
|
|
34
|
+
|
|
35
|
+
## Wrapper validation
|
|
36
|
+
|
|
37
|
+
React and Vue wrappers continue to accept the engine options object, including
|
|
38
|
+
`plugins`. Validate wrapper lifecycle, CSS import, PDF worker configuration, and
|
|
39
|
+
host-managed note/bookmark persistence during migration.
|
|
40
|
+
|
|
41
|
+
## 0.8.0 to 1.0.0 differences
|
|
42
|
+
|
|
43
|
+
The 1.0.0 release is the first compatibility boundary. The 0.x line was alpha/beta, so applications must validate the complete integration instead of assuming semver compatibility.
|
|
44
|
+
|
|
45
|
+
| Area | 0.8.0 | 1.0.0 | Migration impact |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| Package surface | All-in-one public entry | All-in-one plus core, plugins, and feature subpaths | Imports from documented public paths are supported; imports from internal src/dist files are breaking and must be replaced. |
|
|
48
|
+
| Optional features | Built-in reader surface only | Plugin contract with install/uninstall, typed events, toolbar/panel/API contributions | If an application wants an adapter API, register the adapter explicitly; omitted adapters are inactive. |
|
|
49
|
+
| TOC | Host-provided TOC panel | Nested TOC plus getToc/setToc and iframe commands | Existing TOC data remains host-provided; update integrations that need runtime or embed control. |
|
|
50
|
+
| Hotspots | Basic text/link overlays | info/media/gallery/commerce, image/video/audio previews, galleries, product links | Existing overlays remain valid; new media/gallery fields are additive. |
|
|
51
|
+
| Image mode search | Disabled for raster page lists | Still disabled; PDF mode only | No change; raster search requires host/server text metadata. |
|
|
52
|
+
| Commercial capabilities | Not part of OSS | Still not part of OSS | Backend rendering, OCR/indexing, protected downloads, persistence, identity, and analytics remain commercial/backend work. |
|
|
53
|
+
|
|
54
|
+
### Breaking-change requirements
|
|
55
|
+
|
|
56
|
+
- Do not depend on undocumented internal modules, generated chunk filenames, or 0.x implementation details.
|
|
57
|
+
- Re-run wrapper and iframe smoke tests after upgrading; React and Vue wrappers must be rebuilt against the 1.0.0 declarations.
|
|
58
|
+
- Treat plugin registration as explicit state. Calling uninstallPlugin removes APIs, UI contributions, event listeners, and cleanup callbacks; it does not merely hide a button.
|
|
59
|
+
- Existing all-in-one initialization with documented options is retained, but the 0.x line has no compatibility guarantee and must not be used as a rollback contract.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Plugin architecture
|
|
2
|
+
|
|
3
|
+
FlipbookEngine v1 exposes a small plugin contract so optional reader features can
|
|
4
|
+
be distributed independently from the rendering core. Plugins are installed
|
|
5
|
+
before the first render through `plugins` or `engine.installPlugin(plugin)`.
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { FlipbookEngine } from 'flipbookengine/core';
|
|
9
|
+
import type { FlipbookPlugin } from 'flipbookengine/plugins';
|
|
10
|
+
|
|
11
|
+
const tocPlugin: FlipbookPlugin = {
|
|
12
|
+
name: 'toc',
|
|
13
|
+
install(engine, context) {
|
|
14
|
+
context.registerToolbarButton({
|
|
15
|
+
id: 'toc',
|
|
16
|
+
label: 'Contents',
|
|
17
|
+
icon: '☰',
|
|
18
|
+
onClick: () => context.openPanel('contents')
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
context.registerPanel({
|
|
22
|
+
id: 'contents',
|
|
23
|
+
title: 'Table of contents',
|
|
24
|
+
render: (container) => {
|
|
25
|
+
container.textContent = `Page ${engine.getCurrentPage() + 1}`;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
context.registerApi('getCurrentSection', () => engine.getCurrentPage());
|
|
30
|
+
return () => context.closePanel('contents');
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const engine = new FlipbookEngine('#viewer', { plugins: [tocPlugin] });
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The context provides:
|
|
38
|
+
|
|
39
|
+
- `registerToolbarButton()` for a framework-agnostic toolbar action.
|
|
40
|
+
- `registerPanel()` for a panel mounted inside the viewer shell.
|
|
41
|
+
- `registerApi()` and `engine.callPluginApi()` for namespaced plugin methods.
|
|
42
|
+
- `on()` for typed engine event subscriptions with automatic cleanup.
|
|
43
|
+
- `openPanel()` / `closePanel()` for panel state.
|
|
44
|
+
|
|
45
|
+
Plugin names and contribution identifiers must be unique within an engine.
|
|
46
|
+
Calling `engine.destroy()` removes all plugin registrations and runs cleanup
|
|
47
|
+
callbacks. A plugin installed after initialization is available on the next
|
|
48
|
+
viewer render; install initial plugins in the constructor options when their UI
|
|
49
|
+
must be present on the first render.
|
|
50
|
+
|
|
51
|
+
For example, a host that only needs note persistence can load the notes adapter
|
|
52
|
+
without importing the other feature adapters:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { FlipbookEngine } from 'flipbookengine/core';
|
|
56
|
+
import { notesPlugin } from 'flipbookengine/plugins/notes';
|
|
57
|
+
|
|
58
|
+
const engine = new FlipbookEngine('#viewer', { plugins: [notesPlugin] });
|
|
59
|
+
await engine.callPluginApi('notes', 'set', 0, 'Review this page');
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Official lightweight adapters are available as independent entry points:
|
|
63
|
+
|
|
64
|
+
- `flipbookengine/plugins/notes`
|
|
65
|
+
- `flipbookengine/plugins/bookmarks`
|
|
66
|
+
- `flipbookengine/plugins/toc`
|
|
67
|
+
- `flipbookengine/plugins/search`
|
|
68
|
+
- `flipbookengine/plugins/annotations`
|
|
69
|
+
- `flipbookengine/plugins/hotspots`
|
|
70
|
+
- `flipbookengine/plugins/share`
|
|
71
|
+
- `flipbookengine/plugins/deep-link`
|
|
72
|
+
|
|
73
|
+
Each adapter registers namespaced APIs over the existing host-managed engine
|
|
74
|
+
methods. The all-in-one entry remains unchanged, so applications can migrate
|
|
75
|
+
incrementally without loading an adapter they do not use.
|
|
76
|
+
|
|
77
|
+
The public `flipbookengine` entry remains the all-in-one build. `flipbookengine/core`
|
|
78
|
+
contains the core engine exports, `flipbookengine/plugins` contains the plugin
|
|
79
|
+
contract, and the feature subpaths above contain the optional adapters. Analytics is intentionally not an official
|
|
80
|
+
open-source plugin; applications may consume events directly or use a private
|
|
81
|
+
commercial adapter.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
## Activating and deactivating plugins
|
|
85
|
+
|
|
86
|
+
Pass adapters in the constructor to activate them before the first render:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
import { FlipbookEngine } from 'flipbookengine/core';
|
|
90
|
+
import { hotspotsPlugin } from 'flipbookengine/plugins/hotspots';
|
|
91
|
+
|
|
92
|
+
const engine = new FlipbookEngine('#viewer', { plugins: [hotspotsPlugin] });
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
A plugin can also be enabled or disabled after initialization. installPlugin returns the engine instance; uninstallPlugin returns true when a plugin was removed and clears all registered contributions.
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
engine.uninstallPlugin('hotspots');
|
|
99
|
+
engine.installPlugin(hotspotsPlugin);
|
|
100
|
+
await engine.callPluginApi('hotspots', 'activate', 'product-42');
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Feature adapters are API-only contributions. The built-in all-in-one viewer continues to render its existing toolbar and panels from the corresponding options; custom plugins can add their own UI contributions with registerToolbarButton and registerPanel.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Release Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist for every phase commit and every published release.
|
|
4
|
+
|
|
5
|
+
## Before committing a phase
|
|
6
|
+
|
|
7
|
+
- [ ] Confirm the change scope and choose the correct SemVer impact (patch, minor, or major).
|
|
8
|
+
- [ ] Keep each coherent phase in a separate commit with an action-oriented message.
|
|
9
|
+
- [ ] Add or update tests for every new feature, API, bug fix, and changed behavior.
|
|
10
|
+
- [ ] Run the relevant focused tests and record results in the local `development-notes/` report.
|
|
11
|
+
- [ ] Confirm no local audit reports, build output, credentials, or environment files are staged.
|
|
12
|
+
- [ ] Review `git diff --check` and the staged diff.
|
|
13
|
+
|
|
14
|
+
## Before a release
|
|
15
|
+
|
|
16
|
+
- [ ] Update the version in `package.json` and `package-lock.json`.
|
|
17
|
+
- [ ] Update every published version reference in README files, CHANGELOG, API documentation, migration guides, examples, and license/source headers.
|
|
18
|
+
- [ ] Add a CHANGELOG entry describing features, fixes, API changes, and test coverage.
|
|
19
|
+
- [ ] Document every new or changed API in the API reference and README examples.
|
|
20
|
+
- [ ] Mark all breaking changes explicitly, explain the impact, and provide migration guidance.
|
|
21
|
+
- [ ] Verify wrapper exports, generated declarations, package entry points, and framework integrations.
|
|
22
|
+
- [ ] Run `npm run typecheck`, `npm test`, `npm run build`, and `npm run pack:check`.
|
|
23
|
+
- [ ] Confirm `npm pkg get version` matches the intended release.
|
|
24
|
+
- [ ] Inspect the `npm pack --dry-run` file list and package size.
|
|
25
|
+
- [ ] Confirm both local repositories have clean working trees and the intended commits are on the correct branches.
|
|
26
|
+
- [ ] Create and push the matching Git tag (for example, `v1.0.0`).
|
|
27
|
+
- [ ] Create or update the GitHub Release from that tag and verify the Latest designation.
|
|
28
|
+
- [ ] Push commits and tags before handing off the manual npm publish step.
|
|
29
|
+
- [ ] Publish to npm manually with maintainer credentials; verify the registry version afterward.
|
|
30
|
+
- [ ] Record all commands, results, release URLs, and follow-up items in local `development-notes/`.
|
|
31
|
+
|
|
32
|
+
## After publishing
|
|
33
|
+
|
|
34
|
+
- [ ] Verify the npm package page, tarball version, README, and package contents.
|
|
35
|
+
- [ ] Verify GitHub tag/release and the default branch point to the same release commit.
|
|
36
|
+
- [ ] Check that no deprecated or unreleased version is shown as Latest.
|
|
37
|
+
- [ ] Note any known warnings (for example, network/DNS or jsdom media warnings) separately from failures.
|
package/docs/theming.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Theming & Customization
|
|
2
|
+
|
|
3
|
+
FlipbookEngine provides deep customization support through compiled CSS custom properties (variables) and dark-mode compatibility.
|
|
4
|
+
|
|
5
|
+
## CSS Custom Properties
|
|
6
|
+
|
|
7
|
+
The styling system is driven by standard CSS variables. You can override these variables globally in your stylesheet or per-instance:
|
|
8
|
+
|
|
9
|
+
```css
|
|
10
|
+
:root {
|
|
11
|
+
--mainbgcolor: #f3f6fb; /* Main canvas background */
|
|
12
|
+
--surfacebgcolor: #ffffff; /* Overlay elements background */
|
|
13
|
+
--panelbgcolor: #172033; /* Settings panel background */
|
|
14
|
+
--flipbook-accent: #7367f0; /* Buttons and accent color */
|
|
15
|
+
--thumbrailbgcolor: #0f172a; /* Thumbnails container background */
|
|
16
|
+
--bordercolor: #e2e8f0; /* Border and separations color */
|
|
17
|
+
--textcolor: #1e293b; /* General text color */
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Dark Mode
|
|
22
|
+
|
|
23
|
+
FlipbookEngine is compatible with Bootstrap 5 setups and automatically responds to light/dark themes in the hosting environment.
|
|
24
|
+
|
|
25
|
+
- It queries `data-bs-theme="dark"` on the body/parent element to toggle styling.
|
|
26
|
+
- You can force dark theme on initialization:
|
|
27
|
+
```javascript
|
|
28
|
+
const engine = new FlipbookEngine('#viewer', {
|
|
29
|
+
theme: 'dark'
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Instance Overrides
|
|
34
|
+
|
|
35
|
+
To style a single instance differently from the rest of your app, pass the `cssVariables` object to options:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
const engine = new FlipbookEngine('#viewer', {
|
|
39
|
+
cssVariables: {
|
|
40
|
+
mainbgcolor: '#0f172a',
|
|
41
|
+
flipbook-accent: '#10b981'
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Optional Light/Dark Viewer Backgrounds
|
|
48
|
+
|
|
49
|
+
A host can provide separate, optional backgrounds for the viewer surface. The default is null, so the built-in theme surfaces remain unchanged. Backgrounds are applied outside the PDF pages and automatically follow the selected light, dark, or auto theme.
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
const engine = new FlipbookEngine('#viewer', {
|
|
53
|
+
theme: 'auto',
|
|
54
|
+
background: {
|
|
55
|
+
light: { color: '#f8fafc', image: '/branding/catalog-light.webp', size: 'cover', position: 'center', repeat: 'no-repeat' },
|
|
56
|
+
dark: { color: '#0f172a', image: '/branding/catalog-dark.webp', size: 'cover' }
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The viewer reserves a bottom attribution area and uses equal responsive page gutters so the watermark does not overlap PDF content. Thumbnail rail scrolling is horizontal-only; thumbnail dimensions are reduced responsively to avoid vertical overflow.
|
package/package.json
CHANGED
|
@@ -1,114 +1,165 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "flipbookengine",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "A modern, embeddable HTML flipbook engine for PDF-backed catalogs and digital publications.",
|
|
5
|
-
"private": false,
|
|
6
|
-
"scripts": {
|
|
7
|
-
"dev": "vite",
|
|
8
|
-
"build": "vite build && vite build --config vite.config.iife.js",
|
|
9
|
-
"test": "tsx --loader ./tests/css-loader.js --test tests/*.test.ts",
|
|
10
|
-
"test:e2e": "playwright test",
|
|
11
|
-
"typecheck": "tsc --noEmit",
|
|
12
|
-
"clean": "rimraf dist",
|
|
13
|
-
"pack:check": "npm pack --dry-run",
|
|
14
|
-
"audit:deps": "npm audit --omit=dev --audit-level=high",
|
|
15
|
-
"release:verify": "npm run typecheck && npm test && npm run build && npm run audit:deps && npm run pack:check"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"flipbook",
|
|
19
|
-
"catalog",
|
|
20
|
-
"pdf",
|
|
21
|
-
"viewer",
|
|
22
|
-
"publication",
|
|
23
|
-
"pageflip",
|
|
24
|
-
"digital-catalog",
|
|
25
|
-
"page-flip",
|
|
26
|
-
"typescript"
|
|
27
|
-
],
|
|
28
|
-
"author": "Murat Dogan",
|
|
29
|
-
"license": "AGPL-3.0-or-later",
|
|
30
|
-
"homepage": "https://flipbookengine.com",
|
|
31
|
-
"repository": {
|
|
32
|
-
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/Bizeka/flipbook-engine.git"
|
|
34
|
-
},
|
|
35
|
-
"bugs": {
|
|
36
|
-
"url": "https://github.com/Bizeka/flipbook-engine/issues"
|
|
37
|
-
},
|
|
38
|
-
"engines": {
|
|
39
|
-
"node": ">=18"
|
|
40
|
-
},
|
|
41
|
-
"sideEffects": [
|
|
42
|
-
"**/*.css"
|
|
43
|
-
],
|
|
44
|
-
"files": [
|
|
45
|
-
"dist",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "flipbookengine",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A modern, embeddable HTML flipbook engine for PDF-backed catalogs and digital publications.",
|
|
5
|
+
"private": false,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite",
|
|
8
|
+
"build": "vite build && vite build --config vite.config.iife.js",
|
|
9
|
+
"test": "tsx --loader ./tests/css-loader.js --test tests/*.test.ts",
|
|
10
|
+
"test:e2e": "playwright test",
|
|
11
|
+
"typecheck": "tsc --noEmit",
|
|
12
|
+
"clean": "rimraf dist",
|
|
13
|
+
"pack:check": "npm pack --dry-run",
|
|
14
|
+
"audit:deps": "npm audit --omit=dev --audit-level=high",
|
|
15
|
+
"release:verify": "npm run typecheck && npm test && npm run build && npm run audit:deps && npm run pack:check"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"flipbook",
|
|
19
|
+
"catalog",
|
|
20
|
+
"pdf",
|
|
21
|
+
"viewer",
|
|
22
|
+
"publication",
|
|
23
|
+
"pageflip",
|
|
24
|
+
"digital-catalog",
|
|
25
|
+
"page-flip",
|
|
26
|
+
"typescript"
|
|
27
|
+
],
|
|
28
|
+
"author": "Murat Dogan",
|
|
29
|
+
"license": "AGPL-3.0-or-later",
|
|
30
|
+
"homepage": "https://flipbookengine.com",
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/Bizeka/flipbook-engine.git"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/Bizeka/flipbook-engine/issues"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18"
|
|
40
|
+
},
|
|
41
|
+
"sideEffects": [
|
|
42
|
+
"**/*.css"
|
|
43
|
+
],
|
|
44
|
+
"files": [
|
|
45
|
+
"dist",
|
|
46
|
+
"docs",
|
|
47
|
+
"react",
|
|
48
|
+
"vue",
|
|
49
|
+
"README.md",
|
|
50
|
+
"LICENSE",
|
|
51
|
+
"CHANGELOG.md",
|
|
52
|
+
"COMMERCIAL_LICENSE.md",
|
|
53
|
+
"TRADEMARK_POLICY.md",
|
|
54
|
+
"THIRD-PARTY-NOTICES.md"
|
|
55
|
+
],
|
|
56
|
+
"main": "./dist/flipbook-engine.js",
|
|
57
|
+
"module": "./dist/flipbook-engine.js",
|
|
58
|
+
"types": "./dist/index.d.ts",
|
|
59
|
+
"exports": {
|
|
60
|
+
".": {
|
|
61
|
+
"types": "./dist/index.d.ts",
|
|
62
|
+
"import": "./dist/flipbook-engine.js",
|
|
63
|
+
"default": "./dist/flipbook-engine.js"
|
|
64
|
+
},
|
|
65
|
+
"./styles.css": {
|
|
66
|
+
"default": "./dist/flipbook-engine.css"
|
|
67
|
+
},
|
|
68
|
+
"./react": {
|
|
69
|
+
"types": "./dist/react/index.d.ts",
|
|
70
|
+
"import": "./dist/flipbook-engine.react.js",
|
|
71
|
+
"default": "./dist/flipbook-engine.react.js"
|
|
72
|
+
},
|
|
73
|
+
"./vue": {
|
|
74
|
+
"types": "./dist/vue/index.d.ts",
|
|
75
|
+
"import": "./dist/flipbook-engine.vue.js",
|
|
76
|
+
"default": "./dist/flipbook-engine.vue.js"
|
|
77
|
+
},
|
|
78
|
+
"./core": {
|
|
79
|
+
"types": "./dist/core-entry.d.ts",
|
|
80
|
+
"import": "./dist/flipbook-engine.core.js",
|
|
81
|
+
"default": "./dist/flipbook-engine.core.js"
|
|
82
|
+
},
|
|
83
|
+
"./plugins": {
|
|
84
|
+
"types": "./dist/plugins/index.d.ts",
|
|
85
|
+
"import": "./dist/flipbook-engine.plugins.js",
|
|
86
|
+
"default": "./dist/flipbook-engine.plugins.js"
|
|
87
|
+
},
|
|
88
|
+
"./plugins/notes": {
|
|
89
|
+
"types": "./dist/plugins-notes.d.ts",
|
|
90
|
+
"import": "./dist/flipbook-engine.plugins-notes.js",
|
|
91
|
+
"default": "./dist/flipbook-engine.plugins-notes.js"
|
|
92
|
+
},
|
|
93
|
+
"./plugins/bookmarks": {
|
|
94
|
+
"types": "./dist/plugins-bookmarks.d.ts",
|
|
95
|
+
"import": "./dist/flipbook-engine.plugins-bookmarks.js",
|
|
96
|
+
"default": "./dist/flipbook-engine.plugins-bookmarks.js"
|
|
97
|
+
},
|
|
98
|
+
"./plugins/toc": {
|
|
99
|
+
"types": "./dist/plugins-toc.d.ts",
|
|
100
|
+
"import": "./dist/flipbook-engine.plugins-toc.js",
|
|
101
|
+
"default": "./dist/flipbook-engine.plugins-toc.js"
|
|
102
|
+
},
|
|
103
|
+
"./plugins/search": {
|
|
104
|
+
"types": "./dist/plugins-search.d.ts",
|
|
105
|
+
"import": "./dist/flipbook-engine.plugins-search.js",
|
|
106
|
+
"default": "./dist/flipbook-engine.plugins-search.js"
|
|
107
|
+
},
|
|
108
|
+
"./plugins/annotations": {
|
|
109
|
+
"types": "./dist/plugins-annotations.d.ts",
|
|
110
|
+
"import": "./dist/flipbook-engine.plugins-annotations.js",
|
|
111
|
+
"default": "./dist/flipbook-engine.plugins-annotations.js"
|
|
112
|
+
},
|
|
113
|
+
"./plugins/hotspots": {
|
|
114
|
+
"types": "./dist/plugins-hotspots.d.ts",
|
|
115
|
+
"import": "./dist/flipbook-engine.plugins-hotspots.js",
|
|
116
|
+
"default": "./dist/flipbook-engine.plugins-hotspots.js"
|
|
117
|
+
},
|
|
118
|
+
"./plugins/share": {
|
|
119
|
+
"types": "./dist/plugins-share.d.ts",
|
|
120
|
+
"import": "./dist/flipbook-engine.plugins-share.js",
|
|
121
|
+
"default": "./dist/flipbook-engine.plugins-share.js"
|
|
122
|
+
},
|
|
123
|
+
"./plugins/deep-link": {
|
|
124
|
+
"types": "./dist/plugins-deep-link.d.ts",
|
|
125
|
+
"import": "./dist/flipbook-engine.plugins-deep-link.js",
|
|
126
|
+
"default": "./dist/flipbook-engine.plugins-deep-link.js"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"peerDependencies": {
|
|
130
|
+
"react": ">=16.8.0",
|
|
131
|
+
"vue": ">=3.0.0"
|
|
132
|
+
},
|
|
133
|
+
"peerDependenciesMeta": {
|
|
134
|
+
"react": {
|
|
135
|
+
"optional": true
|
|
136
|
+
},
|
|
137
|
+
"vue": {
|
|
138
|
+
"optional": true
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"devDependencies": {
|
|
142
|
+
"@playwright/test": "^1.63.0",
|
|
143
|
+
"@types/jsdom": "^28.0.3",
|
|
144
|
+
"@types/node": "^25.0.10",
|
|
145
|
+
"@types/page-flip": "^2.0.4",
|
|
146
|
+
"@types/react": "^19.2.14",
|
|
147
|
+
"@types/react-dom": "^19.2.3",
|
|
148
|
+
"jsdom": "^26.1.0",
|
|
149
|
+
"react": "^19.2.6",
|
|
150
|
+
"react-dom": "^19.2.6",
|
|
151
|
+
"rimraf": "^6.0.0",
|
|
152
|
+
"tsx": "^4.22.4",
|
|
153
|
+
"typescript": "^5.0.0",
|
|
154
|
+
"vite": "^5.0.0",
|
|
155
|
+
"vite-plugin-dts": "^3.0.0",
|
|
156
|
+
"vue": "^3.5.34"
|
|
157
|
+
},
|
|
158
|
+
"type": "module",
|
|
159
|
+
"dependencies": {
|
|
160
|
+
"@preact/signals-core": "^1.14.3",
|
|
161
|
+
"@serenity-is/domwise": "^10.2.3",
|
|
162
|
+
"page-flip": "^2.0.7",
|
|
163
|
+
"pdfjs-dist": "^5.4.530"
|
|
164
|
+
}
|
|
165
|
+
}
|