Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
0096206
docs(angular): add PRD, ADRs, and CONTEXT for Angular integration v1.0
May 8, 2026
c3a8027
Initial plan
Copilot May 8, 2026
3d4c9c2
feat: add angular defineLibrary mode
Copilot May 8, 2026
7caae4f
chore: clean up angular scratch tsconfig
Copilot May 8, 2026
c504cea
refactor: move angular scratch package into viewers
Copilot May 8, 2026
9b3fe2e
refactor(angular): address PR #25 review feedback
May 8, 2026
f177f98
Merge pull request #25 from the-ult/copilot/add-angular-mode-to-defin…
the-ult May 8, 2026
466085a
feat(angular): real Angular PDF viewer component
May 8, 2026
642f3a4
test(angular): add vitest smoke tests, README, changeset
May 8, 2026
ae4fde4
docs(angular): expand v1.0 to 17 plugins, drop Playwright for Vitest,…
May 8, 2026
e0dbf2e
Merge pull request #26 from the-ult/feature/angular-viewer
the-ult May 8, 2026
79d8de6
feat(build,test): A0 pre-flight — fix #27 dts emission and wire vites…
May 9, 2026
b908629
fix(test): address PR #33 review comments
May 9, 2026
4411181
fix(angular): Use render hooks in PDFViewer
May 9, 2026
9bb98ed
refactor(test): align with Turborepo Vitest guide
May 9, 2026
36be290
fix(test): test task dependsOn ^build (not ^test)
May 9, 2026
e7128cb
Merge pull request #33 from the-ult/feature/angular-a0-vitest-pipeline
the-ult May 9, 2026
1477046
ref(angular-viewer): Mount into host element
May 9, 2026
33f30a3
feat(examples): Add angular-pdf-viewer zoneless demo
May 9, 2026
759ac93
test(e2e): Add Playwright suite via Turbo
May 9, 2026
93b7429
feat(example/angular): Add runtime config panel with theme and catego…
May 9, 2026
9d2d788
feat(angular): Add provider-based viewer defaults
May 9, 2026
5087207
docs(angular): lock A2/A3 design from grilling session and add ADR 0003
May 9, 2026
293c9c0
meta(gitignore): Ignore generated local artifacts
May 9, 2026
40ac7eb
feat(angular-example): Add viewer demo and e2e coverage
May 9, 2026
b671f8c
Merge remote-tracking branch 'origin/feature/angular' into the-ult/fi…
May 9, 2026
eae8d2f
docs(angular): Remove duplicated README sections
May 9, 2026
a0aa65c
test(angular): Replace Promise.withResolvers with portable resolver
May 9, 2026
a3509fc
chore(example/angular): Drop duplicated @angular/compiler devDep
May 9, 2026
c20844a
ref(example/angular): Apply Angular 21 conventions to demo App
May 9, 2026
e28924d
docs(angular): re-cut PRD — v1.0 = drop-in wrapper; headless defers t…
May 9, 2026
eee7a99
refactor(angular): apply PRD-conformance fixes for v1.0 (#21)
May 9, 2026
76a4e2a
docs(angular): Use viewChild() in Reactive State Signals example
May 10, 2026
bcce0e6
refactor(angular): Rename EmbedpdfThemeChangeEvent for casing consist…
May 10, 2026
c3db6de
chore(example/angular): Serve PDF locally from public/
May 10, 2026
2e487c8
test(example/angular): Drop brittle workspace snapshot
May 10, 2026
c6d0412
Merge pull request #34 from the-ult/the-ult/fix/angular-viewer-lifecy…
the-ult May 10, 2026
e2a2d39
Initial plan
Copilot May 10, 2026
ba11bf3
Add Angular to homepage framework touchpoints
Copilot May 10, 2026
20340de
Polish Angular snippet formatting
Copilot May 10, 2026
522a2ef
Tidy Angular tab metadata
Copilot May 10, 2026
ff10178
fix(angular): restore viewer docs, demo, and e2e
May 10, 2026
785f8ce
feat(angular): Add provider defaults and viewer docs
May 10, 2026
b1efebd
docs(angular): Clarify provider and config usage
May 10, 2026
79b7ba2
Merge branch 'feature/angular' into copilot/add-angular-to-homepage
May 10, 2026
fa4ccd5
style(angular): apply prettier to angular viewer and example sources
May 10, 2026
db05c84
feat(angular): Re-export viewer types from package entrypoint
May 11, 2026
d0094a7
docs(website): Register Angular as a top-level docs section
May 11, 2026
c3e38fe
refactor(angular): Freeze EMPTY_CONFIG fallback object
May 11, 2026
b5c2eb7
refactor(website): Make framework-link switches exhaustive
May 11, 2026
fab0952
style(docs/angular): Add trailing newlines to MDX files
May 11, 2026
be915d9
refactor(angular): Replace IIFE-wrapped function in smoke spec with s…
May 11, 2026
3b56b19
test(angular): Cover provideEmbedPdfViewerDefaults injection
May 11, 2026
77b838a
fix(angular): Re-export ScrollStrategy and ZoomMode enum values
May 11, 2026
775ee99
docs(angular): Drop unresolvable @link to internal helper
May 11, 2026
7e9475c
refactor(angular): Drop Component suffix from class names
May 11, 2026
ba390c9
build(gitignore): ignore claude.md file
May 11, 2026
c53a950
docs(website): Add Angular to snippet framework cards
May 11, 2026
9e4bbd5
Merge pull request #43 from the-ult/copilot/add-angular-to-homepage
the-ult May 11, 2026
a1bc178
Initial plan
Copilot May 10, 2026
23467a5
docs: add angular viewer plugin pages
Copilot May 10, 2026
f5c58c0
docs: polish angular plugin snippets
Copilot May 10, 2026
debc579
docs: fix angular pan snippet formatting
Copilot May 10, 2026
049c97c
docs(angular): Address Copilot review feedback on plugin pages
May 11, 2026
c7563c9
Merge pull request #45 from the-ult/copilot/translate-vue-to-angular-…
the-ult May 11, 2026
f0423a7
Initial plan
Copilot May 10, 2026
fcd39fa
feat: add angular docs example workspace
Copilot May 10, 2026
87d98e7
fix: stabilize angular demo selectors
Copilot May 10, 2026
5042c83
refactor: cache angular runtime loading
Copilot May 10, 2026
b036ca7
fix(angular): Address critical issues in useAngularMount + add missin…
May 10, 2026
09bf4e2
fix(angular): Address Copilot review feedback
May 11, 2026
451898c
chore: Regenerate pnpm-lock.yaml after rebase
May 11, 2026
882a277
feat(angular): Add viewer plugin demos to docs
May 11, 2026
0b220a9
docs(angular): Clarify example workspace roles
May 11, 2026
2baa3c9
feat(angular): Add wrapper plugin signal helpers
May 11, 2026
199d38d
feat(examples): Expand Angular Tailwind viewer demos
May 11, 2026
332c16d
fix(angular): Tighten plugin signal helper typing
May 11, 2026
d64ccc1
test(angular): Add Tailwind demo Playwright coverage
May 11, 2026
dd2f9cd
refactor(angular): Apply library review feedback and adopt signal hel…
May 11, 2026
376e280
test(angular): Sharpen test intent across unit, smoke, e2e, and docs-…
May 12, 2026
c3ce709
ci: Build workspace prereqs before Angular browser tests
May 12, 2026
61c9f25
Merge pull request #44 from the-ult/copilot/create-angular-tailwind-w…
the-ult May 12, 2026
34f2945
feat(website): Add Angular to homepage headless paths and chips
May 12, 2026
4f52c94
fix(website): update homepage headless copy for angular
Copilot May 12, 2026
739c489
Merge pull request #46 from the-ult/feat/homepage-angular-headless
the-ult May 12, 2026
047ca80
feat(website): add /angular-pdf-viewer landing page (#37)
May 12, 2026
3b480f8
fix(website): Move Angular docs-lint test out of content/ tree
May 12, 2026
0acc476
fix(website): Address Copilot review on /angular-pdf-viewer landing
May 12, 2026
f69d3d0
fix(website): Address code-review findings on /angular-pdf-viewer lan…
May 12, 2026
6669ef2
fix(website): Move letterSpacing under extend to restore Tailwind def…
May 12, 2026
64c5273
Merge pull request #47 from the-ult/feat/angular-pdf-viewer-landing
the-ult May 12, 2026
c62bc63
chore(website): Drop hardcoded v1.0/v1.1 strings from /angular-pdf-vi…
May 12, 2026
ebaad45
fix(angular): Apply v1.0 polish — guards, type tests, build warning s…
May 12, 2026
f457540
docs(angular): Draft upstream PR description
May 12, 2026
d71ff1f
chore(website): Rename HeadlessV11Callout → HeadlessComingSoonCallout
May 12, 2026
fe54c28
chore(website): Grammar fix in headless-callout comment
May 12, 2026
aec5dde
test(angular): Strengthen prototype-pollution assertions in config me…
May 12, 2026
f480927
Merge pull request #48 from the-ult/feat/angular-landing-version-copy
the-ult May 12, 2026
22e4abf
Merge pull request #49 from the-ult/feat/angular-v1-polish
the-ult May 12, 2026
c246b64
chore: Strip fork-internal scaffolding before upstream PR
May 12, 2026
9fa3c25
fix(website): Add exhaustiveness guard to framework links
May 14, 2026
5bc8e0a
ci(angular): Add scoped Angular quality checks
May 14, 2026
ecd44b3
build(angular): Publish viewer with ng-packagr
May 15, 2026
62223ba
ci: clarify Angular E2E browser install and FRAMEWORK_PREFIXES sync rule
May 15, 2026
24630be
ci(angular): Fix packed viewer smoke test scaffolding
May 15, 2026
fcc5766
ci(angular): Build viewers before example e2e
May 17, 2026
0041125
ci(angular): Build viewers in example e2e job
May 17, 2026
7657486
test(angular): Guard example snapshots by baseline
May 17, 2026
b6cd8a3
fix: address review feedback and angular e2e CI dependency build step
Copilot Jun 2, 2026
c6dad3d
test(angular): Add Linux screenshot baselines
the-ult Jun 23, 2026
1717063
test(angular): Stabilize config-panel screenshots
the-ult Jun 23, 2026
8dca895
ci(angular): Upload e2e failure outputs
the-ult Jun 23, 2026
84ef70a
test(angular): Refresh Linux default panel snapshot
the-ult Jun 23, 2026
9993e18
test(angular): Refresh Linux toggled panel snapshot
the-ult Jun 23, 2026
cbef014
build(angular): Upgrade to Angular 22 and harden wrapper API
the-ult Jun 23, 2026
57bb4b4
Merge remote-tracking branch 'origin/feature/angular' into pr/50/agen…
the-ult Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .changeset/angular-pdf-viewer-initial.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@embedpdf/angular-pdf-viewer': minor
---

Initial release of `@embedpdf/angular-pdf-viewer`. Provides an Angular 22+ standalone `PDFViewer` component (selector `<embedpdf-viewer>`) that wraps `@embedpdf/snippet`, mirroring the contract of the existing Vue/React/Svelte wrapper viewers:

- Signal-based `config` input
- Signal-based outputs: `(init)`, `(ready)`, `(themeChange)` (forwards the snippet's `themechange` custom event)
- Reactive state signals: `container: Signal<EmbedPdfContainer | null>`, `registry: Signal<PluginRegistry | null>`
- `OnPush` change detection, SSR-safe `afterNextRender` mounting, `DestroyRef` cleanup
- `provideEmbedPdfViewerConfig({ ... })` + `EMBEDPDF_VIEWER_DEFAULT_CONFIG` token for app/route/component-scoped default config that merges with per-instance `[config]` (via `mergeViewerConfigs` deep-merge rules)

Built via `@analogjs/vite-plugin-angular` for AOT-compiled FESM2022 output following Analog's library-build guidance.
2 changes: 2 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@
"@embedpdf/example-vue-tailwind",
"@embedpdf/example-vue-vuetify",
"@embedpdf/example-svelte-tailwind",
"@embedpdf/example-angular-pdf-viewer",
"@embedpdf/example-angular-tailwind",
"@embedpdf/example-engines-node",
"@embedpdf/example-pdfium-node",
"@embedpdf/ai",
Expand Down
23 changes: 12 additions & 11 deletions .github/workflows/release-next.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ on:
push:
branches: [next]
paths:
- "packages/**"
- "viewers/**"
- ".changeset/**"
- "pnpm-lock.yaml"
- 'packages/**'
- 'viewers/**'
- '.changeset/**'
- 'pnpm-lock.yaml'
workflow_dispatch: {}

concurrency:
Expand All @@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

steps:
- name: Checkout
Expand All @@ -46,7 +46,7 @@ jobs:
with:
node-version: 20
cache: pnpm
registry-url: "https://registry.npmjs.org"
registry-url: 'https://registry.npmjs.org'

- name: Install deps
run: pnpm install --frozen-lockfile
Expand All @@ -58,8 +58,8 @@ jobs:
id: changesets
uses: changesets/action@v1
with:
commit: "chore: version packages (next)"
title: "chore: version packages (next)"
commit: 'chore: version packages (next)'
title: 'chore: version packages (next)'
publish: pnpm ci:publish:next
createGithubReleases: false

Expand Down Expand Up @@ -111,10 +111,11 @@ jobs:
mkdir -p release-assets
echo "$PUBLISHED_JSON" | jq -r '.[].name' | while read name; do
short=$(echo "$name" | sed 's!.*/!!')
# Handle viewers (snippet, react, vue, svelte) which are in viewers/
if [ "$short" = "snippet" ] || [ "$short" = "react-pdf-viewer" ] || [ "$short" = "vue-pdf-viewer" ] || [ "$short" = "svelte-pdf-viewer" ]; then
# Handle viewers (snippet, angular, react, vue, svelte) which are in viewers/
if [ "$short" = "snippet" ] || [ "$short" = "angular-pdf-viewer" ] || [ "$short" = "react-pdf-viewer" ] || [ "$short" = "vue-pdf-viewer" ] || [ "$short" = "svelte-pdf-viewer" ]; then
# Map package name to directory name
case "$short" in
"angular-pdf-viewer") dir="viewers/angular" ;;
"react-pdf-viewer") dir="viewers/react" ;;
"vue-pdf-viewer") dir="viewers/vue" ;;
"svelte-pdf-viewer") dir="viewers/svelte" ;;
Expand All @@ -138,7 +139,7 @@ jobs:
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ steps.published.outputs.version }}
name: "Release Next v${{ steps.published.outputs.version }}"
name: 'Release Next v${{ steps.published.outputs.version }}'
body_path: release-notes.md
files: release-assets/*
draft: false
Expand Down
21 changes: 11 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ on:
push:
branches: [main]
paths:
- "packages/**"
- "viewers/**"
- ".changeset/**"
- "pnpm-lock.yaml"
- 'packages/**'
- 'viewers/**'
- '.changeset/**'
- 'pnpm-lock.yaml'
workflow_dispatch: {}

concurrency:
Expand All @@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

steps:
- name: Checkout
Expand All @@ -46,7 +46,7 @@ jobs:
with:
node-version: 20
cache: pnpm
registry-url: "https://registry.npmjs.org"
registry-url: 'https://registry.npmjs.org'

- name: Install deps
run: pnpm install --frozen-lockfile
Expand All @@ -59,8 +59,8 @@ jobs:
id: changesets
uses: changesets/action@v1
with:
commit: "chore: version packages"
title: "chore: version packages"
commit: 'chore: version packages'
title: 'chore: version packages'
publish: pnpm ci:publish
createGithubReleases: false

Expand Down Expand Up @@ -108,10 +108,11 @@ jobs:
mkdir -p release-assets
echo "$PUBLISHED_JSON" | jq -r '.[].name' | while read name; do
short=$(echo "$name" | sed 's!.*/!!')
# Handle viewers (snippet, react, vue, svelte) which are in viewers/
if [ "$short" = "snippet" ] || [ "$short" = "react-pdf-viewer" ] || [ "$short" = "vue-pdf-viewer" ] || [ "$short" = "svelte-pdf-viewer" ]; then
# Handle viewers (snippet, angular, react, vue, svelte) which are in viewers/
if [ "$short" = "snippet" ] || [ "$short" = "angular-pdf-viewer" ] || [ "$short" = "react-pdf-viewer" ] || [ "$short" = "vue-pdf-viewer" ] || [ "$short" = "svelte-pdf-viewer" ]; then
# Map package name to directory name
case "$short" in
"angular-pdf-viewer") dir="viewers/angular" ;;
"react-pdf-viewer") dir="viewers/react" ;;
"vue-pdf-viewer") dir="viewers/vue" ;;
"svelte-pdf-viewer") dir="viewers/svelte" ;;
Expand Down
177 changes: 177 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
name: Test

on:
pull_request:
branches: [main, feature/angular]
push:
branches: [main, feature/angular]

concurrency:
group: test-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
test-node:
name: Node-mode tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Run Node-mode + jsdom tests
run: pnpm test

detect-angular-changes:
name: Detect Angular touchpoints
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.filter.outputs.angular }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
angular:
# Keep Angular-only gates path-filtered so unrelated monorepo lint
# debt does not block every PR, while Angular wrapper/example
# regressions still fail fast whenever Angular code or its CI
# plumbing changes.
- '.github/workflows/test.yml'
- 'eslint.config.js'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'packages/*/src/angular/**'
- 'viewers/angular/**'
- 'examples/angular-pdf-viewer/**'
- 'examples/angular-tailwind/**'
- 'packages/build/src/vite/**'

check-angular-quality:
name: Angular format, lint, and build checks
runs-on: ubuntu-latest
needs: detect-angular-changes
if: needs.detect-angular-changes.outputs.changed == 'true'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Check Angular formatting
run: |
pnpm exec prettier --check \
"viewers/angular/**/*.{ts,css,html,md,json}" \
"examples/angular-pdf-viewer/**/*.{ts,css,html,md,json}" \
"examples/angular-tailwind/**/*.{ts,css,html,md,json}"
- name: Lint Angular sources with project-local overrides
run: |
pnpm --dir viewers/angular exec eslint src --ext .ts --color
pnpm --dir examples/angular-pdf-viewer exec eslint src --ext .ts --color
pnpm --dir examples/angular-tailwind exec eslint src --ext .ts --color
- name: Build Angular viewer and examples
run: |
pnpm build:viewers
pnpm --filter @embedpdf/example-angular-pdf-viewer run build
pnpm --filter @embedpdf/example-angular-tailwind run build
- name: Smoke test packed Angular viewer
run: |
tmp_dir=$(mktemp -d)
pnpm --dir viewers/angular pack --pack-destination "$tmp_dir"
tarball=$(ls -1 "$tmp_dir"/*.tgz | head -n 1)
(
cd "$tmp_dir"
npx -y @angular/cli@22 new consumer-app --defaults --standalone --skip-git --package-manager pnpm --routing false --style css
)
cd "$tmp_dir/consumer-app"
pnpm add "$tarball"
cat > src/app/app.ts <<'EOF'
import { Component } from '@angular/core';
import { PDFViewer, type PDFViewerConfig } from '@embedpdf/angular-pdf-viewer';

@Component({
selector: 'app-root',
imports: [PDFViewer],
templateUrl: './app.html',
styleUrl: './app.css'
})
export class App {
protected readonly config: PDFViewerConfig = {
src: 'https://snippet.embedpdf.com/ebook.pdf',
theme: { preference: 'light' },
};
}
EOF
cat > src/app/app.html <<'EOF'
<embedpdf-viewer
[config]="config"
style="display: block; height: 100vh"
/>
EOF
pnpm exec ng build --configuration development

test-browser:
name: Browser-mode tests (Angular viewer)
runs-on: ubuntu-latest
needs:
- detect-angular-changes
- check-angular-quality
if: needs.detect-angular-changes.outputs.changed == 'true'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install Playwright Chromium
run: pnpm --filter @embedpdf/angular-pdf-viewer exec playwright install --with-deps chromium
- name: Run browser-mode tests
run: pnpm test:browser

test-angular-e2e:
name: E2E tests (Angular examples)
runs-on: ubuntu-latest
needs:
- detect-angular-changes
- check-angular-quality
if: needs.detect-angular-changes.outputs.changed == 'true'
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- run: pnpm install --frozen-lockfile
- name: Build viewer workspace dependencies for example dev servers
run: pnpm build:viewers
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install Playwright Chromium (angular-pdf-viewer + angular-tailwind)
# Both examples use only Chromium; installing via one package writes to the
# shared ~/.cache/ms-playwright path, so a second install for angular-tailwind
# is a fast no-op that makes the dependency explicit.
run: |
pnpm --filter @embedpdf/example-angular-pdf-viewer exec playwright install --with-deps chromium
pnpm --filter @embedpdf/example-angular-tailwind exec playwright install --with-deps chromium
- name: Run Angular example e2e suites
run: |
pnpm --filter @embedpdf/example-angular-pdf-viewer run e2e
pnpm --filter @embedpdf/example-angular-tailwind run e2e
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,31 @@ node_modules
**/node_modules/
**/dist
**/.turbo
**/coverage
**/.vercel
**/playwright-report
**/test-results
**/blob-report
**/vitest-results
**/storybook-static
**/public/_pagefind/
.env
.env*.local
config/tsup.config.bundled*
config/tsup.frameworks.config.bundled*
.next
.cursor
.DS_Store
.env
.gcs_entries
.gclient*
.cipd
.idea
publish-summary.json
**/.svelte-kit
**/*/*.tgz
.env
.env.*
**/playwright-report
**/test-results
CLAUDE.md
2 changes: 2 additions & 0 deletions examples/angular-pdf-viewer/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
playwright-report/
test-results/
Loading