Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
29 changes: 16 additions & 13 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
name: CI

on:
pull_request:
branches: [main]
pull_request:
branches: [main]

jobs:
lint:
runs-on: ubuntu-latest
lint:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v7

- name: Setup pnpm
uses: pnpm/action-setup@v6
steps:
- uses: actions/checkout@v7

- name: Install Dependencies
run: pnpm install
- name: Setup pnpm
uses: pnpm/action-setup@v6

- name: Lint
run: pnpm run lint
- name: Install Dependencies
run: pnpm install

- name: Check formatting
run: pnpm run fmt

- name: Lint
run: pnpm run lint
47 changes: 20 additions & 27 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,30 +1,23 @@
import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginReact from "eslint-plugin-react";
import reactCompiler from 'eslint-plugin-react-compiler'
import react from '@playcanvas/eslint-config/react';
import typescript from '@playcanvas/eslint-config/typescript';
import reactCompiler from 'eslint-plugin-react-compiler';
import globals from 'globals';

/** @type {import('eslint').Linter.Config[]} */
export default [
{files: ["**/*.{js,mjs,cjs,ts,jsx,tsx}"]},
{languageOptions: { globals: {...globals.browser, ...globals.node} }},
pluginJs.configs.recommended,
...tseslint.configs.recommended,
pluginReact.configs.flat.recommended,
{
plugins: {
'react-compiler': reactCompiler,
},
settings: {
react: {
version: "detect", // Automatically detect React version
}
},
rules: {
'react/prop-types': 'off',
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off",
"react-compiler/react-compiler": "warn"
},
}
];
...typescript,
...react,
{ languageOptions: { globals: { ...globals.browser, ...globals.node } } },
{
plugins: {
'react-compiler': reactCompiler
},
rules: {
'import-x/no-unresolved': ['error', { ignore: ['^@playcanvas/react(?:/|$)'] }],
'react/prop-types': 'off',
'react/jsx-uses-react': 'off',
'react/react-in-jsx-scope': 'off',
'react-compiler/react-compiler': 'warn'
}
}
];
8 changes: 5 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,27 @@
"build:docs": "pnpm --filter docs run build",
"build": "pnpm run build:lib && pnpm run build:blocks && pnpm run build:docs",
"start": "pnpm --filter docs run start",
"fmt": "prettier --check packages eslint.config.mjs prettier.config.mjs",
"fmt:fix": "prettier --write packages eslint.config.mjs prettier.config.mjs",
"lint": "pnpm -r exec eslint .",
"lint:fix": "pnpm -r exec eslint . --fix",
"test": "pnpm -r run test"
},
"devDependencies": {
"@changesets/cli": "2.31.0",
"@eslint/js": "9.39.4",
"@playcanvas/eslint-config": "3.0.0-beta.8",
"@testing-library/dom": "10.4.1",
"@types/react": "19.2.17",
"@types/react-dom": "19.2.3",
"@vitejs/plugin-react": "5.2.0",
"eslint": "9.39.4",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-react": "7.37.5",
"eslint-plugin-react-compiler": "19.0.0-beta-ebf51a3-20250411",
"globals": "16.5.0",
"pkg-pr-new": "0.0.75",
"prettier": "3.9.6",
"type-fest": "5.7.0",
"typescript": "5.9.3",
"typescript-eslint": "8.60.1",
"vitest": "4.1.8"
}
}
32 changes: 16 additions & 16 deletions packages/blocks/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,36 @@
- 4f25e4e: Fix stale homepage URLs in package metadata: `@playcanvas/react` now points at the canonical docs path and `@playcanvas/blocks` at its GitHub README instead of the retired Vercel site.
- Updated dependencies [4f25e4e]
- Updated dependencies [f88e26e]
- @playcanvas/react@0.11.5
- @playcanvas/react@0.11.5

## 0.3.8

### Patch Changes

- Updated dependencies [8a44703]
- @playcanvas/react@0.11.4
- @playcanvas/react@0.11.4

## 0.3.7

### Patch Changes

- Updated dependencies [c1106f7]
- @playcanvas/react@0.11.3
- @playcanvas/react@0.11.3

## 0.3.6

### Patch Changes

- Updated dependencies [e564a0e]
- @playcanvas/react@0.11.2
- @playcanvas/react@0.11.2

## 0.3.5

### Patch Changes

- 4f0986c: Moved PlayCanvas from dependencies to peerDependencies (^2.11.8) to align with @playcanvas/react and avoid version conflicts
- Updated dependencies [4f0986c]
- @playcanvas/react@0.11.1
- @playcanvas/react@0.11.1

## 0.3.4

Expand All @@ -46,30 +46,30 @@
- Updated dependencies [86f01de]
- Updated dependencies [19a8f7f]
- Updated dependencies [e800b2e]
- @playcanvas/react@0.11.0
- @playcanvas/react@0.11.0

## 0.3.3

### Patch Changes

- Updated dependencies [61b1f1d]
- @playcanvas/react@0.10.3
- @playcanvas/react@0.10.3

## 0.3.2

### Patch Changes

- Updated dependencies [deab2a7]
- Updated dependencies [f147fa5]
- @playcanvas/react@0.10.2
- @playcanvas/react@0.10.2

## 0.3.1

### Patch Changes

- Updated dependencies [39c8647]
- Updated dependencies [98dc81c]
- @playcanvas/react@0.10.1
- @playcanvas/react@0.10.1

## 0.3.0

Expand All @@ -84,15 +84,15 @@
- Updated dependencies [3edf166]
- Updated dependencies [fa859ed]
- Updated dependencies [3082203]
- @playcanvas/react@0.10.0
- @playcanvas/react@0.10.0

## 0.2.1

### Patch Changes

- f6bf216: Updated camera api (removed resetZoom)
- Updated dependencies [6372f9c]
- @playcanvas/react@0.9.1
- @playcanvas/react@0.9.1

## 0.2.0

Expand All @@ -104,7 +104,7 @@

- 3f6a73f: Removes redundant Quaternion methods
- Updated dependencies [118c922]
- @playcanvas/react@0.9.0
- @playcanvas/react@0.9.0

## 0.1.3

Expand All @@ -115,7 +115,7 @@
- Updated dependencies [f5f3001]
- Updated dependencies [91fac3a]
- Updated dependencies [6c3f3c9]
- @playcanvas/react@0.8.0
- @playcanvas/react@0.8.0

## 0.1.2

Expand All @@ -127,7 +127,7 @@
- Updated dependencies [28998cb]
- Updated dependencies [0b08685]
- Updated dependencies [62d7178]
- @playcanvas/react@0.7.0
- @playcanvas/react@0.7.0

## 0.1.1

Expand All @@ -142,7 +142,7 @@
- Updated dependencies [637d196]
- Updated dependencies [842abe2]
- Updated dependencies [85229d7]
- @playcanvas/react@0.6.0
- @playcanvas/react@0.6.0

## 0.1.0

Expand All @@ -156,4 +156,4 @@
- 8348361: Updated @playcanvas/blocks to use 2.8.0 of the engine
- Updated dependencies [4917998]
- Updated dependencies [894ca08]
- @playcanvas/react@0.5.0
- @playcanvas/react@0.5.0
35 changes: 17 additions & 18 deletions packages/blocks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ Follow this guide to [Install Tailwind v4](https://tailwindcss.com/docs/installa
And add the following top your css

```css
@import "@playcanvas/blocks"
@source "../../node_modules/@playcanvas/blocks";
@import '@playcanvas/blocks' @source '../../node_modules/@playcanvas/blocks';
```

...and you're done!
Expand All @@ -30,28 +29,28 @@ A responsive and composable component for displaying **Gaussian splats**.
<img width="892" alt="image" src="https://github.com/user-attachments/assets/a43d2955-85ff-4339-8847-109ea9577111" />

Includes built-in camera controls, loading states, and optional UI slots for overlays or actions.
Supports large assets with lazy loading and automatic framing. Use it in modals, pages, or full-screen scenes.
Supports large assets with lazy loading and automatic framing. Use it in modals, pages, or full-screen scenes.

Supports compressed gaussian splats.

```jsx
import { Viewer } from "@playcanvas/blocks"
import { Viewer } from '@playcanvas/blocks';

export function SplatViewer() {
return (
<Viewer.Splat src='./splat.ply' className="rounded shadow cursor-grab active:cursor-grabbing" >
<Viewer.Controls >
<div className="flex gap-1 pointer-events-auto flex-grow">
<Viewer.FullScreenButton />
<Viewer.DownloadButton />
</div>
<div className="flex gap-1 pointer-events-auto">
<Viewer.CameraModeToggle />
<Viewer.HelpButton />
<Viewer.MenuButton />
</div>
</Viewer.Controls>
</Viewer.Splat>
)
<Viewer.Splat src="./splat.ply" className="rounded shadow cursor-grab active:cursor-grabbing">
<Viewer.Controls>
<div className="flex gap-1 pointer-events-auto flex-grow">
<Viewer.FullScreenButton />
<Viewer.DownloadButton />
</div>
<div className="flex gap-1 pointer-events-auto">
<Viewer.CameraModeToggle />
<Viewer.HelpButton />
<Viewer.MenuButton />
</div>
</Viewer.Controls>
</Viewer.Splat>
);
}
```
50 changes: 26 additions & 24 deletions packages/blocks/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
import baseConfig from '../../eslint.config.mjs';
import importPlugin from 'eslint-plugin-import';

import baseConfig from '../../eslint.config.mjs';

/** @type {import('eslint').Linter.Config[]} */
export default [
...baseConfig,
{
plugins: {
'import': importPlugin,
},
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.ts', '.json']
...baseConfig,
{
plugins: {
import: importPlugin
},
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.ts', '.json']
}
}
},
rules: {
'import/extensions': [
'error',
'ignorePackages',
{
js: 'always',
ts: 'always'
}
]
}
}
},
rules: {
'import/extensions': ['error', 'ignorePackages', {
js: 'always',
ts: 'always',
}]
{
ignores: ['dist/', 'node_modules/']
}
},
{
ignores: [
"dist/",
"node_modules/",
],
},
];
];
Loading
Loading