Skip to content

Setup Vite playground with custom Inferno/decorators plugin#32917

Draft
aleksei-semikozov wants to merge 3 commits intoDevExpress:25_1from
aleksei-semikozov:worktree-vite-playground-decorators
Draft

Setup Vite playground with custom Inferno/decorators plugin#32917
aleksei-semikozov wants to merge 3 commits intoDevExpress:25_1from
aleksei-semikozov:worktree-vite-playground-decorators

Conversation

@aleksei-semikozov
Copy link
Contributor

@aleksei-semikozov aleksei-semikozov commented Mar 15, 2026

Summary

  • Cherry-picked playground setup from PR Init vite playground server #30926
  • Replaced vite-plugin-inferno with custom build/vite-plugin-devextreme.ts supporting:
    • Inferno JSX via babel-plugin-inferno
    • TypeScript experimental decorators via @babel/plugin-proposal-decorators
    • Proper class field initialization order (matching TS legacy useDefineForClassFields: false)
  • Added jQuery integration side-effect import for scheduler example

Test plan

  • CI passes (lint, jest, build)
  • pnpm run dev:playground starts on localhost:3000
  • Scheduler renders with appointments, view switching works

aleksei-semikozov and others added 3 commits March 14, 2026 20:55
…corators

Cherry-picked playground setup from PR DevExpress#30926, replaced vite-plugin-inferno
with custom build/vite-plugin-devextreme.ts that supports:
- Inferno JSX transformation via babel-plugin-inferno
- TypeScript experimental decorators via @babel/plugin-proposal-decorators
- TypeScript parsing via @babel/preset-typescript

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…n import

- Added removeUninitializedClassFields babel visitor to strip type-only
  class property declarations that would otherwise initialize as undefined
  and overwrite values set during _init() in the legacy OOP system
- Added @babel/plugin-transform-class-properties (loose) to convert
  field initializers to constructor assignments
- Added @babel/plugin-transform-typescript as explicit dependency
- Added jQuery integration side-effect import in scheduler-example.ts
- Removed vite-plugin-inferno dependency, replaced with custom plugin

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move initialized class field assignments to end of constructor body
to match TypeScript's legacy useDefineForClassFields:false behavior.
This fixes cases where field initializers depend on constructor
parameter properties (e.g. this._workSpace._dateTableScrollable).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant