diff --git a/.gitignore b/.gitignore
index 83ef9a4a2..3b10ae016 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@ node_modules
test-results/
playwright-report/
playwright/.cache/
+lerna-debug.log
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index d68817c28..c83da7056 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,6 +18,7 @@
"@carbon/react": "^1.56.0",
"@carbon/styles": "^1.56.0",
"@playwright/test": "^1.43.1",
+ "@preact/preset-vite": "^2.8.2",
"@rollup/plugin-alias": "^5.1.0",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^25.0.7",
@@ -2120,6 +2121,10 @@
"resolved": "packages/form-js-viewer-core",
"link": true
},
+ "node_modules/@bpmn-io/form-js-viewer-render": {
+ "resolved": "packages/form-js-viewer-render",
+ "link": true
+ },
"node_modules/@bpmn-io/form-json-schema": {
"resolved": "packages/form-json-schema",
"link": true
@@ -4517,6 +4522,115 @@
"node": ">=16"
}
},
+ "node_modules/@preact/preset-vite": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.8.2.tgz",
+ "integrity": "sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@prefresh/vite": "^2.4.1",
+ "@rollup/pluginutils": "^4.1.1",
+ "babel-plugin-transform-hook-names": "^1.0.2",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "magic-string": "0.30.5",
+ "node-html-parser": "^6.1.10",
+ "resolve": "^1.22.8",
+ "source-map": "^0.7.4",
+ "stack-trace": "^1.0.0-pre2"
+ },
+ "peerDependencies": {
+ "@babel/core": "7.x",
+ "vite": "2.x || 3.x || 4.x || 5.x"
+ }
+ },
+ "node_modules/@preact/preset-vite/node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@preact/preset-vite/node_modules/magic-string": {
+ "version": "0.30.5",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+ "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@preact/preset-vite/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@prefresh/babel-plugin": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.5.1.tgz",
+ "integrity": "sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==",
+ "dev": true
+ },
+ "node_modules/@prefresh/core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.5.2.tgz",
+ "integrity": "sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==",
+ "dev": true,
+ "peerDependencies": {
+ "preact": "^10.0.0"
+ }
+ },
+ "node_modules/@prefresh/utils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.2.0.tgz",
+ "integrity": "sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==",
+ "dev": true
+ },
+ "node_modules/@prefresh/vite": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.4.5.tgz",
+ "integrity": "sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.22.1",
+ "@prefresh/babel-plugin": "0.5.1",
+ "@prefresh/core": "^1.5.1",
+ "@prefresh/utils": "^1.2.0",
+ "@rollup/pluginutils": "^4.2.1"
+ },
+ "peerDependencies": {
+ "preact": "^10.4.0",
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/@prefresh/vite/node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
"node_modules/@puppeteer/browsers": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
@@ -6977,6 +7091,15 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/babel-plugin-transform-hook-names": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz",
+ "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==",
+ "dev": true,
+ "peerDependencies": {
+ "@babel/core": "^7.12.10"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.0",
"dev": true,
@@ -13349,6 +13472,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true
+ },
"node_modules/lang-feel": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lang-feel/-/lang-feel-2.0.0.tgz",
@@ -15275,6 +15404,16 @@
"node": "^16.13.0 || >=18.0.0"
}
},
+ "node_modules/node-html-parser": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
+ "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
+ "dev": true,
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "he": "1.2.0"
+ }
+ },
"node_modules/node-machine-id": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz",
@@ -19471,6 +19610,15 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/stack-trace": {
+ "version": "1.0.0-pre2",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz",
+ "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -21837,6 +21985,11 @@
"version": "1.8.6",
"license": "SEE LICENSE IN LICENSE"
},
+ "packages/form-js-viewer-render": {
+ "name": "@bpmn-io/form-js-viewer-render",
+ "version": "1.8.6",
+ "license": "SEE LICENSE IN LICENSE"
+ },
"packages/form-js-viewer/node_modules/big.js": {
"version": "6.2.1",
"license": "MIT",
@@ -23386,6 +23539,9 @@
"@bpmn-io/form-js-viewer-core": {
"version": "file:packages/form-js-viewer-core"
},
+ "@bpmn-io/form-js-viewer-render": {
+ "version": "file:packages/form-js-viewer-render"
+ },
"@bpmn-io/form-json-schema": {
"version": "file:packages/form-json-schema"
},
@@ -25066,6 +25222,97 @@
"playwright": "1.43.1"
}
},
+ "@preact/preset-vite": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.8.2.tgz",
+ "integrity": "sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",
+ "@prefresh/vite": "^2.4.1",
+ "@rollup/pluginutils": "^4.1.1",
+ "babel-plugin-transform-hook-names": "^1.0.2",
+ "debug": "^4.3.4",
+ "kolorist": "^1.8.0",
+ "magic-string": "0.30.5",
+ "node-html-parser": "^6.1.10",
+ "resolve": "^1.22.8",
+ "source-map": "^0.7.4",
+ "stack-trace": "^1.0.0-pre2"
+ },
+ "dependencies": {
+ "@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.5",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+ "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ }
+ }
+ },
+ "@prefresh/babel-plugin": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.5.1.tgz",
+ "integrity": "sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==",
+ "dev": true
+ },
+ "@prefresh/core": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.5.2.tgz",
+ "integrity": "sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==",
+ "dev": true,
+ "requires": {}
+ },
+ "@prefresh/utils": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.2.0.tgz",
+ "integrity": "sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==",
+ "dev": true
+ },
+ "@prefresh/vite": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.4.5.tgz",
+ "integrity": "sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.22.1",
+ "@prefresh/babel-plugin": "0.5.1",
+ "@prefresh/core": "^1.5.1",
+ "@prefresh/utils": "^1.2.0",
+ "@rollup/pluginutils": "^4.2.1"
+ },
+ "dependencies": {
+ "@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "requires": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ }
+ }
+ }
+ },
"@puppeteer/browsers": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz",
@@ -26806,6 +27053,13 @@
"@babel/helper-define-polyfill-provider": "^0.4.0"
}
},
+ "babel-plugin-transform-hook-names": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz",
+ "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==",
+ "dev": true,
+ "requires": {}
+ },
"balanced-match": {
"version": "1.0.0",
"dev": true
@@ -31199,6 +31453,12 @@
"version": "6.0.3",
"dev": true
},
+ "kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true
+ },
"lang-feel": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lang-feel/-/lang-feel-2.0.0.tgz",
@@ -32571,6 +32831,16 @@
}
}
},
+ "node-html-parser": {
+ "version": "6.1.13",
+ "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
+ "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
+ "dev": true,
+ "requires": {
+ "css-select": "^5.1.0",
+ "he": "1.2.0"
+ }
+ },
"node-machine-id": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz",
@@ -35594,6 +35864,12 @@
"minipass": "^3.1.1"
}
},
+ "stack-trace": {
+ "version": "1.0.0-pre2",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz",
+ "integrity": "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==",
+ "dev": true
+ },
"stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
diff --git a/package.json b/package.json
index f2c9140be..5a870b944 100644
--- a/package.json
+++ b/package.json
@@ -129,6 +129,7 @@
"typescript": "^5.4.5",
"vite": "^5.2.10",
"vitest": "^1.5.3",
+ "@preact/preset-vite": "^2.8.2",
"webpack": "^5.91.0"
}
}
diff --git a/packages/form-js-viewer-core/package.json b/packages/form-js-viewer-core/package.json
index f7c74d18e..5529a89ab 100644
--- a/packages/form-js-viewer-core/package.json
+++ b/packages/form-js-viewer-core/package.json
@@ -1,7 +1,7 @@
{
"name": "@bpmn-io/form-js-viewer-core",
"version": "1.8.6",
- "description": "View forms - powered by bpmn.io",
+ "description": "Manage form state - powered by bpmn.io",
"type": "module",
"publishConfig": {
"access": "public"
diff --git a/packages/form-js-viewer-render/RenderPlayground.jsx b/packages/form-js-viewer-render/RenderPlayground.jsx
new file mode 100644
index 000000000..4e97dd3f0
--- /dev/null
+++ b/packages/form-js-viewer-render/RenderPlayground.jsx
@@ -0,0 +1,8 @@
+import { foo } from './src/index.js';
+import { Fragment } from 'preact';
+
+const RenderPlayground = () => {
+ return