@bpmn-io/form-js-playground 1.1.0 → 1.3.0-alpha.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/dist/index.cjs CHANGED
@@ -17,6 +17,7 @@ var langJson = require('@codemirror/lang-json');
17
17
  var commands = require('@codemirror/commands');
18
18
  var autocomplete = require('@codemirror/autocomplete');
19
19
  var language = require('@codemirror/language');
20
+ var minDom = require('min-dom');
20
21
 
21
22
  function Modal(props) {
22
23
  hooks.useEffect(() => {
@@ -112,8 +113,8 @@ function serializeValue(obj) {
112
113
  return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');
113
114
  }
114
115
 
115
- /**
116
- * @type {Facet<import('..').Variables>} Variables
116
+ /**
117
+ * @type {Facet<import('..').Variables>} Variables
117
118
  */
118
119
  const variablesFacet = state.Facet.define();
119
120
 
@@ -144,25 +145,46 @@ function completions(context) {
144
145
  };
145
146
  }
146
147
 
148
+ const NO_LINT_CLS = 'fjs-no-json-lint';
149
+
150
+ /**
151
+ * @param {object} options
152
+ * @param {boolean} [options.readonly]
153
+ * @param {object} [options.contentAttributes]
154
+ * @param {string | HTMLElement} [options.placeholder]
155
+ */
147
156
  function JSONEditor(options = {}) {
148
157
  const {
149
- readonly = false,
150
- contentAttributes = {}
158
+ contentAttributes = {},
159
+ placeholder: editorPlaceholder,
160
+ readonly = false
151
161
  } = options;
152
162
  const emitter = mitt();
153
163
  let language = new state.Compartment().of(langJson.json());
154
164
  let tabSize = new state.Compartment().of(state.EditorState.tabSize.of(2));
165
+ let container = null;
155
166
 
156
- /**
157
- * @typedef {Array<string>} Variables
167
+ /**
168
+ * @typedef {Array<string>} Variables
158
169
  */
159
170
 
160
171
  const autocompletionConf = new state.Compartment();
161
172
  const linterExtension = lint.linter(langJson.jsonParseLinter());
173
+
174
+ // this sets no-linting mode if placeholders are present
175
+ const placeholderLinterExtension = lint.linter(view => {
176
+ const placeholders = view.dom.querySelectorAll('.cm-placeholder');
177
+ if (placeholders.length > 0) {
178
+ set(container, NO_LINT_CLS);
179
+ } else {
180
+ unset(container, NO_LINT_CLS);
181
+ }
182
+ return [];
183
+ });
162
184
  function createState(doc, extensions = [], variables = []) {
163
185
  return state.EditorState.create({
164
186
  doc,
165
- extensions: [codemirror.basicSetup, language, tabSize, linterExtension, lint.lintGutter(), autocompletionConf.of(variablesFacet.of(variables)), autocompletion(), view.keymap.of([commands.indentWithTab]), ...extensions]
187
+ extensions: [codemirror.basicSetup, language, tabSize, linterExtension, placeholderLinterExtension, lint.lintGutter(), autocompletionConf.of(variablesFacet.of(variables)), autocompletion(), view.keymap.of([commands.indentWithTab]), editorPlaceholder ? view.placeholder(editorPlaceholder) : [], ...extensions]
166
188
  });
167
189
  }
168
190
  function createView(readonly) {
@@ -194,8 +216,8 @@ function JSONEditor(options = {}) {
194
216
  return view$1.state.doc.toString();
195
217
  };
196
218
 
197
- /**
198
- * @param {Variables} variables
219
+ /**
220
+ * @param {Variables} variables
199
221
  */
200
222
  this.setVariables = function (variables) {
201
223
  view$1.setVariables(variables);
@@ -203,7 +225,8 @@ function JSONEditor(options = {}) {
203
225
  this.on = emitter.on;
204
226
  this.off = emitter.off;
205
227
  this.emit = emitter.emit;
206
- this.attachTo = function (container) {
228
+ this.attachTo = function (_container) {
229
+ container = _container;
207
230
  container.appendChild(view$1.dom);
208
231
  };
209
232
  this.destroy = function () {
@@ -214,6 +237,17 @@ function JSONEditor(options = {}) {
214
237
  };
215
238
  }
216
239
 
240
+ // helpers //////////////////////
241
+
242
+ function set(node, cls) {
243
+ const classes = minDom.classes(node, document.body);
244
+ classes.add(cls);
245
+ }
246
+ function unset(node, cls) {
247
+ const classes = minDom.classes(node, document.body);
248
+ classes.remove(cls);
249
+ }
250
+
217
251
  function Section(props) {
218
252
  const elements = Array.isArray(props.children) ? props.children : [props.children];
219
253
  const {
@@ -271,7 +305,7 @@ function PlaygroundRoot(props) {
271
305
  const resultViewRef = hooks.useRef();
272
306
  const propertiesPanelRef = hooks.useRef();
273
307
  const [showEmbed, setShowEmbed] = hooks.useState(false);
274
- const [initialData] = hooks.useState(props.data || {});
308
+ const [initialData] = hooks.useState(props.data || undefined);
275
309
  const [initialSchema, setInitialSchema] = hooks.useState(props.schema);
276
310
  const [data, setData] = hooks.useState(props.data || {});
277
311
  const [schema, setSchema] = hooks.useState(props.schema);
@@ -304,7 +338,8 @@ function PlaygroundRoot(props) {
304
338
  value: toString(data),
305
339
  contentAttributes: {
306
340
  'aria-label': 'Form Input'
307
- }
341
+ },
342
+ placeholder: createDataEditorPlaceholder()
308
343
  });
309
344
  const resultView = resultViewRef.current = new JSONEditor({
310
345
  readonly: true,
@@ -472,6 +507,11 @@ function PlaygroundRoot(props) {
472
507
  function toString(obj) {
473
508
  return JSON.stringify(obj, null, ' ');
474
509
  }
510
+ function createDataEditorPlaceholder() {
511
+ const element = document.createElement('p');
512
+ element.innerHTML = 'Use this panel to simulate the form input, such as process variables.\nThis helps to test the form by populating the preview.\n\n' + 'Follow the JSON format like this:\n\n' + '{\n "variable": "value"\n}';
513
+ return element;
514
+ }
475
515
 
476
516
  function Playground(options) {
477
517
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/components/Modal.js","../src/components/EmbedModal.js","../src/components/autocompletion/VariablesFacet.js","../src/components/autocompletion/index.js","../src/components/JSONEditor.js","../src/components/Section.js","../src/components/PlaygroundRoot.js","../src/Playground.js"],"sourcesContent":["import { useEffect } from 'preact/hooks';\n\nexport function Modal(props) {\n\n useEffect(() => {\n function handleKey(event) {\n\n if (event.key === 'Escape') {\n event.stopPropagation();\n\n props.onClose();\n }\n }\n\n document.addEventListener('keydown', handleKey);\n\n return () => {\n document.removeEventListener('keydown', handleKey);\n };\n });\n\n return (\n <div class=\"fjs-pgl-modal\">\n <div class=\"fjs-pgl-modal-backdrop\" onClick={ props.onClose }></div>\n <div class=\"fjs-pgl-modal-content\">\n <h1 class=\"fjs-pgl-modal-header\">{ props.name }</h1>\n <div class=\"fjs-pgl-modal-body\">\n { props.children }\n </div>\n <div class=\"fjs-pgl-modal-footer\">\n <button class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={ props.onClose }>Close</button>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\n\nexport function EmbedModal(props) {\n\n const schema = serializeValue(props.schema);\n const data = serializeValue(props.data || {});\n\n const fieldRef = useRef();\n\n const snippet = `<!-- styles needed for rendering -->\n<link rel=\"stylesheet\" href=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/assets/form-js.css\">\n\n<!-- container to render the form into -->\n<div class=\"fjs-pgl-form-container\"></div>\n\n<!-- scripts needed for embedding -->\n<script src=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/form-viewer.umd.js\"></script>\n\n<!-- actual script to instantiate the form and load form schema + data -->\n<script>\n const data = JSON.parse(${data});\n const schema = JSON.parse(${schema});\n\n const form = new FormViewer.Form({\n container: document.querySelector(\".fjs-pgl-form-container\")\n });\n\n form.on(\"submit\", (event) => {\n console.log(event.data, event.errors);\n });\n\n form.importSchema(schema, data).catch(err => {\n console.error(\"Failed to render form\", err);\n });\n</script>\n `.trim();\n\n useEffect(() => {\n fieldRef.current.select();\n });\n\n return (\n <Modal name=\"Embed form\" onClose={ props.onClose }>\n <p>Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:</p>\n\n <textarea spellCheck=\"false\" ref={ fieldRef }>{snippet}</textarea>\n </Modal>\n );\n}\n\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();","import { autocompletion } from '@codemirror/autocomplete';\n\nimport { syntaxTree } from '@codemirror/language';\n\nimport { variablesFacet } from './VariablesFacet';\n\nexport default function() {\n return [\n autocompletion({\n override: [\n completions\n ]\n })\n ];\n}\n\nfunction completions(context) {\n\n const variables = context.state.facet(variablesFacet)[0];\n\n const options = variables.map(v => ({\n label: v,\n type: 'variable'\n }));\n\n let nodeBefore = syntaxTree(context.state).resolve(context.pos, -1);\n\n // handle inside property name as explicit call\n if (nodeBefore.type.name === 'PropertyName') {\n context.explicit = true;\n }\n\n let word = context.matchBefore(/\\w*/);\n\n if (word.from == word.to && !context.explicit) {\n return null;\n }\n\n return {\n from: word.from,\n options\n };\n}","import mitt from 'mitt';\n\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap } from '@codemirror/view';\nimport { EditorState, Compartment } from '@codemirror/state';\nimport { lintGutter, linter } from '@codemirror/lint';\nimport { json, jsonParseLinter } from '@codemirror/lang-json';\nimport { indentWithTab } from '@codemirror/commands';\n\nimport autocompletion from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\n\n\nexport function JSONEditor(options = {}) {\n const {\n readonly = false,\n contentAttributes = {}\n } = options;\n\n const emitter = mitt();\n\n let language = new Compartment().of(json());\n let tabSize = new Compartment().of(EditorState.tabSize.of(2));\n\n\n /**\n * @typedef {Array<string>} Variables\n */\n\n const autocompletionConf = new Compartment();\n\n const linterExtension = linter(jsonParseLinter());\n\n function createState(doc, extensions = [], variables = []) {\n return EditorState.create({\n doc,\n extensions: [\n basicSetup,\n language,\n tabSize,\n linterExtension,\n lintGutter(),\n autocompletionConf.of(variablesFacet.of(variables)),\n autocompletion(),\n keymap.of([ indentWithTab ]),\n ...extensions\n ]\n });\n }\n\n function createView(readonly) {\n\n const updateListener = EditorView.updateListener.of(update => {\n if (update.docChanged) {\n emitter.emit('changed', {\n value: update.view.state.doc.toString()\n });\n }\n });\n\n const editable = EditorView.editable.of(!readonly);\n\n const contentAttributesExtension = EditorView.contentAttributes.of(contentAttributes);\n\n const view = new EditorView({\n state: createState('', [ updateListener, editable, contentAttributesExtension ])\n });\n\n view.setValue = function(value) {\n this.setState(createState(value, [ updateListener, editable, contentAttributesExtension ]));\n };\n\n view.setVariables = function(variables) {\n this.setState(createState(\n view.state.doc.toString(),\n [ updateListener, editable, contentAttributesExtension ],\n variables\n ));\n };\n\n return view;\n }\n\n const view = this._view = createView(readonly);\n\n this.setValue = function(value) {\n view.setValue(value);\n };\n\n this.getValue = function() {\n return view.state.doc.toString();\n };\n\n /**\n * @param {Variables} variables\n */\n this.setVariables = function(variables) {\n view.setVariables(variables);\n };\n\n this.on = emitter.on;\n this.off = emitter.off;\n this.emit = emitter.emit;\n\n this.attachTo = function(container) {\n container.appendChild(view.dom);\n };\n\n this.destroy = function() {\n if (view.dom.parentNode) {\n view.dom.parentNode.removeChild(view.dom);\n }\n\n view.destroy();\n };\n}\n","export function Section(props) {\n\n const elements =\n Array.isArray(props.children)\n ? props.children :\n [ props.children ];\n\n const {\n headerItems,\n children\n } = elements.reduce((_, child) => {\n const bucket =\n child.type === Section.HeaderItem\n ? _.headerItems\n : _.children;\n\n bucket.push(child);\n\n return _;\n }, { headerItems: [], children: [] });\n\n return (\n <div class=\"fjs-pgl-section\">\n <h1 class=\"header\">{ props.name } { headerItems.length ? <span class=\"header-items\">{ headerItems }</span> : null }</h1>\n <div class=\"body\">\n { children }\n </div>\n </div>\n );\n}\n\nSection.HeaderItem = function(props) {\n return props.children;\n};","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\n\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport {\n Form,\n getSchemaVariables\n} from '@bpmn-io/form-js-viewer';\n\nimport {\n FormEditor\n} from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\n\nexport function PlaygroundRoot(props) {\n\n const {\n actions: actionsConfig = {},\n emit,\n exporter: exporterConfig = {},\n viewerProperties = {},\n editorProperties = {},\n viewerAdditionalModules = [],\n editorAdditionalModules = []\n } = props;\n\n const {\n display: displayActions = true\n } = actionsConfig;\n\n const paletteContainerRef = useRef();\n const editorContainerRef = useRef();\n const formContainerRef = useRef();\n const dataContainerRef = useRef();\n const resultContainerRef = useRef();\n const propertiesPanelContainerRef = useRef();\n\n const paletteRef = useRef();\n const formEditorRef = useRef();\n const formRef = useRef();\n const dataEditorRef = useRef();\n const resultViewRef = useRef();\n const propertiesPanelRef = useRef();\n\n const [ showEmbed, setShowEmbed ] = useState(false);\n\n const [ initialData ] = useState(props.data || {});\n const [ initialSchema, setInitialSchema ] = useState(props.schema);\n\n const [ data, setData ] = useState(props.data || {});\n const [ schema, setSchema ] = useState(props.schema);\n\n const [ resultData, setResultData ] = useState({});\n\n // pipe to playground API\n useEffect(() => {\n props.onInit({\n attachDataContainer: (node) => dataEditorRef.current.attachTo(node),\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n attachFormContainer: (node) => formRef.current.attachTo(node),\n attachPaletteContainer: (node) => paletteRef.current.attachTo(node),\n attachPropertiesPanelContainer: (node) => propertiesPanelRef.current.attachTo(node),\n attachResultContainer: (node) => resultViewRef.current.attachTo(node),\n get: (name, strict) => formEditorRef.current.get(name, strict),\n getDataEditor: () => dataEditorRef.current,\n getEditor: () => formEditorRef.current,\n getForm: () => formRef.current,\n getResultView: () => resultViewRef.current,\n getSchema: () => formEditorRef.current.getSchema(),\n setSchema: setInitialSchema,\n saveSchema: () => formEditorRef.current.saveSchema()\n });\n });\n\n useEffect(() => {\n setInitialSchema(props.schema || {});\n }, [ props.schema ]);\n\n useEffect(() => {\n const dataEditor = dataEditorRef.current = new JSONEditor({\n value: toString(data),\n contentAttributes: { 'aria-label': 'Form Input' }\n });\n\n const resultView = resultViewRef.current = new JSONEditor({\n readonly: true,\n value: toString(resultData),\n contentAttributes: { 'aria-label': 'Form Output' }\n });\n\n const form = formRef.current = new Form({\n additionalModules: viewerAdditionalModules,\n properties: {\n ...viewerProperties,\n 'ariaLabel': 'Form Preview'\n }\n });\n\n const formEditor = formEditorRef.current = new FormEditor({\n renderer: {\n compact: true\n },\n palette: {\n parent: paletteContainerRef.current\n },\n propertiesPanel: {\n parent: propertiesPanelContainerRef.current\n },\n exporter: exporterConfig,\n properties: {\n ...editorProperties,\n 'ariaLabel': 'Form Definition'\n },\n additionalModules: editorAdditionalModules\n });\n\n paletteRef.current = formEditor.get('palette');\n propertiesPanelRef.current = formEditor.get('propertiesPanel');\n\n formEditor.on('changed', () => {\n setSchema(formEditor.getSchema());\n });\n\n formEditor.on('formEditor.rendered', () => {\n\n // notifiy interested parties after render\n emit('formPlayground.rendered');\n });\n\n form.on('changed', () => {\n setResultData(form._getSubmitData());\n });\n\n dataEditor.on('changed', event => {\n try {\n setData(JSON.parse(event.value));\n } catch (error) {\n\n // notify interested about input data error\n emit('formPlayground.inputDataError', error);\n }\n });\n\n const formContainer = formContainerRef.current;\n const editorContainer = editorContainerRef.current;\n const dataContainer = dataContainerRef.current;\n const resultContainer = resultContainerRef.current;\n\n dataEditor.attachTo(dataContainer);\n resultView.attachTo(resultContainer);\n form.attachTo(formContainer);\n formEditor.attachTo(editorContainer);\n\n return () => {\n dataEditor.destroy();\n resultView.destroy();\n form.destroy();\n formEditor.destroy();\n };\n }, []);\n\n useEffect(() => {\n dataEditorRef.current.setValue(toString(initialData));\n }, [ initialData ]);\n\n useEffect(() => {\n if (initialSchema) {\n formEditorRef.current.importSchema(initialSchema);\n dataEditorRef.current.setVariables(getSchemaVariables(initialSchema));\n }\n }, [ initialSchema ]);\n\n useEffect(() => {\n if (schema && dataContainerRef.current) {\n const variables = getSchemaVariables(schema);\n dataEditorRef.current.setVariables(variables);\n }\n }, [ schema ]);\n\n useEffect(() => {\n schema && formRef.current.importSchema(schema, data);\n }, [ schema, data ]);\n\n useEffect(() => {\n resultViewRef.current.setValue(toString(resultData));\n }, [ resultData ]);\n\n useEffect(() => {\n props.onStateChanged({\n schema,\n data\n });\n }, [ schema, data ]);\n\n const handleDownload = useCallback(() => {\n\n download(JSON.stringify(schema, null, ' '), 'form.json', 'text/json');\n }, [ schema ]);\n\n const hideEmbedModal = useCallback(() => {\n setShowEmbed(false);\n }, []);\n\n const showEmbedModal = useCallback(() => {\n setShowEmbed(true);\n }, []);\n\n return (\n <div class={ classNames(\n 'fjs-container',\n 'fjs-pgl-root'\n ) }>\n <div class=\"fjs-pgl-modals\">\n { showEmbed ? <EmbedModal schema={ schema } data={ data } onClose={ hideEmbedModal } /> : null }\n </div>\n <div class=\"fjs-pgl-palette-container\" ref={ paletteContainerRef } />\n <div class=\"fjs-pgl-main\">\n\n <Section name=\"Form Definition\">\n\n {\n displayActions && <Section.HeaderItem>\n <button\n class=\"fjs-pgl-button\"\n title=\"Download form definition\"\n onClick={ handleDownload }\n >Download</button>\n </Section.HeaderItem>\n }\n\n {\n displayActions && <Section.HeaderItem>\n <button\n class=\"fjs-pgl-button\"\n onClick={ showEmbedModal }\n >Embed</button>\n </Section.HeaderItem>\n }\n\n <div ref={ editorContainerRef } class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Preview\">\n <div ref={ formContainerRef } class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Input\">\n <div ref={ dataContainerRef } class=\"fjs-pgl-text-container\"></div>\n </Section>\n <Section name=\"Form Output\">\n <div ref={ resultContainerRef } class=\"fjs-pgl-text-container\"></div>\n </Section>\n </div>\n <div class=\"fjs-pgl-properties-container\" ref={ propertiesPanelContainerRef } />\n </div>\n );\n}\n\n\n// helpers ///////////////\n\nfunction toString(obj) {\n return JSON.stringify(obj, null, ' ');\n}","import { render } from 'preact';\n\nimport fileDrop from 'file-drops';\n\nimport mitt from 'mitt';\n\nimport { PlaygroundRoot } from './components/PlaygroundRoot';\n\n/**\n * @typedef { {\n * actions?: { display: Boolean }\n * container?: Element\n * data: any\n * editor?: { inlinePropertiesPanel: Boolean }\n * exporter?: { name: String, version: String }\n * schema: any\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nexport default function Playground(options) {\n\n const {\n container: parent,\n schema,\n data,\n ...rest\n } = options;\n\n const emitter = mitt();\n\n let state = { data, schema };\n let ref;\n\n const container = document.createElement('div');\n\n container.classList.add('fjs-pgl-parent');\n\n if (parent) {\n parent.appendChild(container);\n }\n\n const handleDrop = fileDrop('Drop a form file', function(files) {\n const file = files[0];\n\n if (file) {\n try {\n ref.setSchema(JSON.parse(file.contents));\n } catch (err) {\n\n // TODO(nikku): indicate JSON parse error\n }\n }\n });\n\n const withRef = function(fn) {\n return function(...args) {\n if (!ref) {\n throw new Error('Playground is not initialized.');\n }\n\n return fn(...args);\n };\n };\n\n const onInit = function(_ref) {\n ref = _ref;\n emitter.emit('formPlayground.init');\n };\n\n container.addEventListener('dragover', handleDrop);\n\n render(\n <PlaygroundRoot\n data={ data }\n emit={ emitter.emit }\n onInit={ onInit }\n onStateChanged={ (_state) => state = _state }\n schema={ schema }\n { ...rest }\n />,\n container\n );\n\n this.on = emitter.on;\n this.off = emitter.off;\n\n this.emit = emitter.emit;\n\n this.on('destroy', function() {\n render(null, container);\n });\n\n this.on('destroy', function() {\n parent.removeChild(container);\n });\n\n this.getState = function() {\n return state;\n };\n\n this.getSchema = withRef(() => ref.getSchema());\n\n this.setSchema = withRef((schema) => ref.setSchema(schema));\n\n this.saveSchema = withRef(() => ref.saveSchema());\n\n this.get = withRef((name, strict) => ref.get(name, strict));\n\n this.getDataEditor = withRef(() => ref.getDataEditor());\n\n this.getEditor = withRef(() => ref.getEditor());\n\n this.getForm = withRef((name, strict) => ref.getForm(name, strict));\n\n this.getResultView = withRef(() => ref.getResultView());\n\n this.destroy = function() {\n this.emit('destroy');\n };\n\n this.attachEditorContainer = withRef((node) => ref.attachEditorContainer(node));\n\n this.attachPreviewContainer = withRef((node) => ref.attachFormContainer(node));\n\n this.attachDataContainer = withRef((node) => ref.attachDataContainer(node));\n\n this.attachResultContainer = withRef((node) => ref.attachResultContainer(node));\n\n this.attachPaletteContainer = withRef((node) => ref.attachPaletteContainer(node));\n\n this.attachPropertiesPanelContainer = withRef((node) => ref.attachPropertiesPanelContainer(node));\n}"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","type","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","JSONEditor","readonly","contentAttributes","emitter","mitt","language","Compartment","of","json","tabSize","EditorState","autocompletionConf","linterExtension","linter","jsonParseLinter","createState","doc","extensions","create","basicSetup","lintGutter","keymap","indentWithTab","createView","updateListener","EditorView","update","docChanged","emit","value","view","toString","editable","contentAttributesExtension","setValue","setState","setVariables","_view","getValue","on","off","attachTo","container","appendChild","dom","destroy","parentNode","removeChild","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","length","PlaygroundRoot","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","display","displayActions","paletteContainerRef","editorContainerRef","formContainerRef","dataContainerRef","resultContainerRef","propertiesPanelContainerRef","paletteRef","formEditorRef","formRef","dataEditorRef","resultViewRef","propertiesPanelRef","showEmbed","setShowEmbed","useState","initialData","initialSchema","setInitialSchema","setData","setSchema","resultData","setResultData","onInit","attachDataContainer","node","attachEditorContainer","attachFormContainer","attachPaletteContainer","attachPropertiesPanelContainer","attachResultContainer","get","strict","getDataEditor","getEditor","getForm","getResultView","getSchema","saveSchema","dataEditor","resultView","form","Form","additionalModules","properties","formEditor","FormEditor","renderer","compact","palette","parent","propertiesPanel","_getSubmitData","parse","error","formContainer","editorContainer","dataContainer","resultContainer","importSchema","getSchemaVariables","onStateChanged","handleDownload","useCallback","download","hideEmbedModal","showEmbedModal","classNames","title","Playground","rest","createElement","classList","add","handleDrop","fileDrop","files","file","contents","err","withRef","fn","args","Error","_ref","render","_state","getState","attachPreviewContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/Modal.js","../src/components/EmbedModal.js","../src/components/autocompletion/VariablesFacet.js","../src/components/autocompletion/index.js","../src/components/JSONEditor.js","../src/components/Section.js","../src/components/PlaygroundRoot.js","../src/Playground.js"],"sourcesContent":["import { useEffect } from 'preact/hooks';\r\n\r\nexport function Modal(props) {\r\n\r\n useEffect(() => {\r\n function handleKey(event) {\r\n\r\n if (event.key === 'Escape') {\r\n event.stopPropagation();\r\n\r\n props.onClose();\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKey);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKey);\r\n };\r\n });\r\n\r\n return (\r\n <div class=\"fjs-pgl-modal\">\r\n <div class=\"fjs-pgl-modal-backdrop\" onClick={ props.onClose }></div>\r\n <div class=\"fjs-pgl-modal-content\">\r\n <h1 class=\"fjs-pgl-modal-header\">{ props.name }</h1>\r\n <div class=\"fjs-pgl-modal-body\">\r\n { props.children }\r\n </div>\r\n <div class=\"fjs-pgl-modal-footer\">\r\n <button class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={ props.onClose }>Close</button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useRef } from 'preact/hooks';\r\n\r\nimport { Modal } from './Modal';\r\n\r\n\r\nexport function EmbedModal(props) {\r\n\r\n const schema = serializeValue(props.schema);\r\n const data = serializeValue(props.data || {});\r\n\r\n const fieldRef = useRef();\r\n\r\n const snippet = `<!-- styles needed for rendering -->\r\n<link rel=\"stylesheet\" href=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/assets/form-js.css\">\r\n\r\n<!-- container to render the form into -->\r\n<div class=\"fjs-pgl-form-container\"></div>\r\n\r\n<!-- scripts needed for embedding -->\r\n<script src=\"https://unpkg.com/@bpmn-io/form-js@0.2.4/dist/form-viewer.umd.js\"></script>\r\n\r\n<!-- actual script to instantiate the form and load form schema + data -->\r\n<script>\r\n const data = JSON.parse(${data});\r\n const schema = JSON.parse(${schema});\r\n\r\n const form = new FormViewer.Form({\r\n container: document.querySelector(\".fjs-pgl-form-container\")\r\n });\r\n\r\n form.on(\"submit\", (event) => {\r\n console.log(event.data, event.errors);\r\n });\r\n\r\n form.importSchema(schema, data).catch(err => {\r\n console.error(\"Failed to render form\", err);\r\n });\r\n</script>\r\n `.trim();\r\n\r\n useEffect(() => {\r\n fieldRef.current.select();\r\n });\r\n\r\n return (\r\n <Modal name=\"Embed form\" onClose={ props.onClose }>\r\n <p>Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:</p>\r\n\r\n <textarea spellCheck=\"false\" ref={ fieldRef }>{snippet}</textarea>\r\n </Modal>\r\n );\r\n}\r\n\r\n\r\n// helpers ///////////\r\n\r\nfunction serializeValue(obj) {\r\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n}","import { Facet } from '@codemirror/state';\r\n\r\n/**\r\n * @type {Facet<import('..').Variables>} Variables\r\n */\r\nexport const variablesFacet = Facet.define();","import { autocompletion } from '@codemirror/autocomplete';\r\n\r\nimport { syntaxTree } from '@codemirror/language';\r\n\r\nimport { variablesFacet } from './VariablesFacet';\r\n\r\nexport default function() {\r\n return [\r\n autocompletion({\r\n override: [\r\n completions\r\n ]\r\n })\r\n ];\r\n}\r\n\r\nfunction completions(context) {\r\n\r\n const variables = context.state.facet(variablesFacet)[0];\r\n\r\n const options = variables.map(v => ({\r\n label: v,\r\n type: 'variable'\r\n }));\r\n\r\n let nodeBefore = syntaxTree(context.state).resolve(context.pos, -1);\r\n\r\n // handle inside property name as explicit call\r\n if (nodeBefore.type.name === 'PropertyName') {\r\n context.explicit = true;\r\n }\r\n\r\n let word = context.matchBefore(/\\w*/);\r\n\r\n if (word.from == word.to && !context.explicit) {\r\n return null;\r\n }\r\n\r\n return {\r\n from: word.from,\r\n options\r\n };\r\n}","import mitt from 'mitt';\r\n\r\nimport { basicSetup } from 'codemirror';\r\nimport { EditorView, keymap, placeholder } from '@codemirror/view';\r\nimport { EditorState, Compartment } from '@codemirror/state';\r\nimport { lintGutter, linter } from '@codemirror/lint';\r\nimport { json, jsonParseLinter } from '@codemirror/lang-json';\r\nimport { indentWithTab } from '@codemirror/commands';\r\n\r\nimport autocompletion from './autocompletion/index';\r\nimport { variablesFacet } from './autocompletion/VariablesFacet';\r\n\r\nimport {\r\n classes as domClasses\r\n} from 'min-dom';\r\n\r\nconst NO_LINT_CLS = 'fjs-no-json-lint';\r\n\r\n\r\n/**\r\n * @param {object} options\r\n * @param {boolean} [options.readonly]\r\n * @param {object} [options.contentAttributes]\r\n * @param {string | HTMLElement} [options.placeholder]\r\n */\r\nexport function JSONEditor(options = {}) {\r\n const {\r\n contentAttributes = {},\r\n placeholder: editorPlaceholder,\r\n readonly = false,\r\n } = options;\r\n\r\n const emitter = mitt();\r\n\r\n let language = new Compartment().of(json());\r\n let tabSize = new Compartment().of(EditorState.tabSize.of(2));\r\n\r\n let container = null;\r\n\r\n\r\n /**\r\n * @typedef {Array<string>} Variables\r\n */\r\n\r\n const autocompletionConf = new Compartment();\r\n\r\n const linterExtension = linter(jsonParseLinter());\r\n\r\n // this sets no-linting mode if placeholders are present\r\n const placeholderLinterExtension = linter(view => {\r\n const placeholders = view.dom.querySelectorAll('.cm-placeholder');\r\n\r\n if (placeholders.length > 0) {\r\n set(container, NO_LINT_CLS);\r\n } else {\r\n unset(container, NO_LINT_CLS);\r\n }\r\n\r\n return [];\r\n });\r\n\r\n function createState(doc, extensions = [], variables = []) {\r\n return EditorState.create({\r\n doc,\r\n extensions: [\r\n basicSetup,\r\n language,\r\n tabSize,\r\n linterExtension,\r\n placeholderLinterExtension,\r\n lintGutter(),\r\n autocompletionConf.of(variablesFacet.of(variables)),\r\n autocompletion(),\r\n keymap.of([ indentWithTab ]),\r\n editorPlaceholder ? placeholder(editorPlaceholder) : [],\r\n ...extensions\r\n ]\r\n });\r\n }\r\n\r\n function createView(readonly) {\r\n\r\n const updateListener = EditorView.updateListener.of(update => {\r\n if (update.docChanged) {\r\n emitter.emit('changed', {\r\n value: update.view.state.doc.toString()\r\n });\r\n }\r\n });\r\n\r\n const editable = EditorView.editable.of(!readonly);\r\n\r\n const contentAttributesExtension = EditorView.contentAttributes.of(contentAttributes);\r\n\r\n const view = new EditorView({\r\n state: createState('', [ updateListener, editable, contentAttributesExtension ])\r\n });\r\n\r\n view.setValue = function(value) {\r\n this.setState(createState(value, [ updateListener, editable, contentAttributesExtension ]));\r\n };\r\n\r\n view.setVariables = function(variables) {\r\n this.setState(createState(\r\n view.state.doc.toString(),\r\n [ updateListener, editable, contentAttributesExtension ],\r\n variables\r\n ));\r\n };\r\n\r\n return view;\r\n }\r\n\r\n const view = this._view = createView(readonly);\r\n\r\n this.setValue = function(value) {\r\n view.setValue(value);\r\n };\r\n\r\n this.getValue = function() {\r\n return view.state.doc.toString();\r\n };\r\n\r\n /**\r\n * @param {Variables} variables\r\n */\r\n this.setVariables = function(variables) {\r\n view.setVariables(variables);\r\n };\r\n\r\n this.on = emitter.on;\r\n this.off = emitter.off;\r\n this.emit = emitter.emit;\r\n\r\n this.attachTo = function(_container) {\r\n container = _container;\r\n container.appendChild(view.dom);\r\n };\r\n\r\n this.destroy = function() {\r\n if (view.dom.parentNode) {\r\n view.dom.parentNode.removeChild(view.dom);\r\n }\r\n\r\n view.destroy();\r\n };\r\n}\r\n\r\n// helpers //////////////////////\r\n\r\n\r\nfunction set(node, cls) {\r\n const classes = domClasses(node, document.body);\r\n classes.add(cls);\r\n}\r\n\r\nfunction unset(node, cls) {\r\n const classes = domClasses(node, document.body);\r\n classes.remove(cls);\r\n}\r\n","export function Section(props) {\r\n\r\n const elements =\r\n Array.isArray(props.children)\r\n ? props.children :\r\n [ props.children ];\r\n\r\n const {\r\n headerItems,\r\n children\r\n } = elements.reduce((_, child) => {\r\n const bucket =\r\n child.type === Section.HeaderItem\r\n ? _.headerItems\r\n : _.children;\r\n\r\n bucket.push(child);\r\n\r\n return _;\r\n }, { headerItems: [], children: [] });\r\n\r\n return (\r\n <div class=\"fjs-pgl-section\">\r\n <h1 class=\"header\">{ props.name } { headerItems.length ? <span class=\"header-items\">{ headerItems }</span> : null }</h1>\r\n <div class=\"body\">\r\n { children }\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nSection.HeaderItem = function(props) {\r\n return props.children;\r\n};","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\r\n\r\nimport download from 'downloadjs';\r\n\r\nimport classNames from 'classnames';\r\n\r\nimport {\r\n Form,\r\n getSchemaVariables\r\n} from '@bpmn-io/form-js-viewer';\r\n\r\nimport {\r\n FormEditor\r\n} from '@bpmn-io/form-js-editor';\r\n\r\nimport { EmbedModal } from './EmbedModal';\r\nimport { JSONEditor } from './JSONEditor';\r\nimport { Section } from './Section';\r\n\r\n\r\nimport './FileDrop.css';\r\nimport './PlaygroundRoot.css';\r\n\r\n\r\nexport function PlaygroundRoot(props) {\r\n\r\n const {\r\n actions: actionsConfig = {},\r\n emit,\r\n exporter: exporterConfig = {},\r\n viewerProperties = {},\r\n editorProperties = {},\r\n viewerAdditionalModules = [],\r\n editorAdditionalModules = []\r\n } = props;\r\n\r\n const {\r\n display: displayActions = true\r\n } = actionsConfig;\r\n\r\n const paletteContainerRef = useRef();\r\n const editorContainerRef = useRef();\r\n const formContainerRef = useRef();\r\n const dataContainerRef = useRef();\r\n const resultContainerRef = useRef();\r\n const propertiesPanelContainerRef = useRef();\r\n\r\n const paletteRef = useRef();\r\n const formEditorRef = useRef();\r\n const formRef = useRef();\r\n const dataEditorRef = useRef();\r\n const resultViewRef = useRef();\r\n const propertiesPanelRef = useRef();\r\n\r\n const [ showEmbed, setShowEmbed ] = useState(false);\r\n\r\n const [ initialData ] = useState(props.data || undefined);\r\n const [ initialSchema, setInitialSchema ] = useState(props.schema);\r\n\r\n const [ data, setData ] = useState(props.data || {});\r\n const [ schema, setSchema ] = useState(props.schema);\r\n\r\n const [ resultData, setResultData ] = useState({});\r\n\r\n // pipe to playground API\r\n useEffect(() => {\r\n props.onInit({\r\n attachDataContainer: (node) => dataEditorRef.current.attachTo(node),\r\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\r\n attachFormContainer: (node) => formRef.current.attachTo(node),\r\n attachPaletteContainer: (node) => paletteRef.current.attachTo(node),\r\n attachPropertiesPanelContainer: (node) => propertiesPanelRef.current.attachTo(node),\r\n attachResultContainer: (node) => resultViewRef.current.attachTo(node),\r\n get: (name, strict) => formEditorRef.current.get(name, strict),\r\n getDataEditor: () => dataEditorRef.current,\r\n getEditor: () => formEditorRef.current,\r\n getForm: () => formRef.current,\r\n getResultView: () => resultViewRef.current,\r\n getSchema: () => formEditorRef.current.getSchema(),\r\n setSchema: setInitialSchema,\r\n saveSchema: () => formEditorRef.current.saveSchema()\r\n });\r\n });\r\n\r\n useEffect(() => {\r\n setInitialSchema(props.schema || {});\r\n }, [ props.schema ]);\r\n\r\n useEffect(() => {\r\n const dataEditor = dataEditorRef.current = new JSONEditor({\r\n value: toString(data),\r\n contentAttributes: { 'aria-label': 'Form Input' },\r\n placeholder: createDataEditorPlaceholder()\r\n });\r\n\r\n const resultView = resultViewRef.current = new JSONEditor({\r\n readonly: true,\r\n value: toString(resultData),\r\n contentAttributes: { 'aria-label': 'Form Output' }\r\n });\r\n\r\n const form = formRef.current = new Form({\r\n additionalModules: viewerAdditionalModules,\r\n properties: {\r\n ...viewerProperties,\r\n 'ariaLabel': 'Form Preview'\r\n }\r\n });\r\n\r\n const formEditor = formEditorRef.current = new FormEditor({\r\n renderer: {\r\n compact: true\r\n },\r\n palette: {\r\n parent: paletteContainerRef.current\r\n },\r\n propertiesPanel: {\r\n parent: propertiesPanelContainerRef.current\r\n },\r\n exporter: exporterConfig,\r\n properties: {\r\n ...editorProperties,\r\n 'ariaLabel': 'Form Definition'\r\n },\r\n additionalModules: editorAdditionalModules\r\n });\r\n\r\n paletteRef.current = formEditor.get('palette');\r\n propertiesPanelRef.current = formEditor.get('propertiesPanel');\r\n\r\n formEditor.on('changed', () => {\r\n setSchema(formEditor.getSchema());\r\n });\r\n\r\n formEditor.on('formEditor.rendered', () => {\r\n\r\n // notifiy interested parties after render\r\n emit('formPlayground.rendered');\r\n });\r\n\r\n form.on('changed', () => {\r\n setResultData(form._getSubmitData());\r\n });\r\n\r\n dataEditor.on('changed', event => {\r\n try {\r\n setData(JSON.parse(event.value));\r\n } catch (error) {\r\n\r\n // notify interested about input data error\r\n emit('formPlayground.inputDataError', error);\r\n }\r\n });\r\n\r\n const formContainer = formContainerRef.current;\r\n const editorContainer = editorContainerRef.current;\r\n const dataContainer = dataContainerRef.current;\r\n const resultContainer = resultContainerRef.current;\r\n\r\n dataEditor.attachTo(dataContainer);\r\n resultView.attachTo(resultContainer);\r\n form.attachTo(formContainer);\r\n formEditor.attachTo(editorContainer);\r\n\r\n return () => {\r\n dataEditor.destroy();\r\n resultView.destroy();\r\n form.destroy();\r\n formEditor.destroy();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n dataEditorRef.current.setValue(toString(initialData));\r\n }, [ initialData ]);\r\n\r\n useEffect(() => {\r\n if (initialSchema) {\r\n formEditorRef.current.importSchema(initialSchema);\r\n dataEditorRef.current.setVariables(getSchemaVariables(initialSchema));\r\n }\r\n }, [ initialSchema ]);\r\n\r\n useEffect(() => {\r\n if (schema && dataContainerRef.current) {\r\n const variables = getSchemaVariables(schema);\r\n dataEditorRef.current.setVariables(variables);\r\n }\r\n }, [ schema ]);\r\n\r\n useEffect(() => {\r\n schema && formRef.current.importSchema(schema, data);\r\n }, [ schema, data ]);\r\n\r\n useEffect(() => {\r\n resultViewRef.current.setValue(toString(resultData));\r\n }, [ resultData ]);\r\n\r\n useEffect(() => {\r\n props.onStateChanged({\r\n schema,\r\n data\r\n });\r\n }, [ schema, data ]);\r\n\r\n const handleDownload = useCallback(() => {\r\n\r\n download(JSON.stringify(schema, null, ' '), 'form.json', 'text/json');\r\n }, [ schema ]);\r\n\r\n const hideEmbedModal = useCallback(() => {\r\n setShowEmbed(false);\r\n }, []);\r\n\r\n const showEmbedModal = useCallback(() => {\r\n setShowEmbed(true);\r\n }, []);\r\n\r\n return (\r\n <div class={ classNames(\r\n 'fjs-container',\r\n 'fjs-pgl-root'\r\n ) }>\r\n <div class=\"fjs-pgl-modals\">\r\n { showEmbed ? <EmbedModal schema={ schema } data={ data } onClose={ hideEmbedModal } /> : null }\r\n </div>\r\n <div class=\"fjs-pgl-palette-container\" ref={ paletteContainerRef } />\r\n <div class=\"fjs-pgl-main\">\r\n\r\n <Section name=\"Form Definition\">\r\n\r\n {\r\n displayActions && <Section.HeaderItem>\r\n <button\r\n class=\"fjs-pgl-button\"\r\n title=\"Download form definition\"\r\n onClick={ handleDownload }\r\n >Download</button>\r\n </Section.HeaderItem>\r\n }\r\n\r\n {\r\n displayActions && <Section.HeaderItem>\r\n <button\r\n class=\"fjs-pgl-button\"\r\n onClick={ showEmbedModal }\r\n >Embed</button>\r\n </Section.HeaderItem>\r\n }\r\n\r\n <div ref={ editorContainerRef } class=\"fjs-pgl-form-container\"></div>\r\n </Section>\r\n <Section name=\"Form Preview\">\r\n <div ref={ formContainerRef } class=\"fjs-pgl-form-container\"></div>\r\n </Section>\r\n <Section name=\"Form Input\">\r\n <div ref={ dataContainerRef } class=\"fjs-pgl-text-container\"></div>\r\n </Section>\r\n <Section name=\"Form Output\">\r\n <div ref={ resultContainerRef } class=\"fjs-pgl-text-container\"></div>\r\n </Section>\r\n </div>\r\n <div class=\"fjs-pgl-properties-container\" ref={ propertiesPanelContainerRef } />\r\n </div>\r\n );\r\n}\r\n\r\n\r\n// helpers ///////////////\r\n\r\nfunction toString(obj) {\r\n return JSON.stringify(obj, null, ' ');\r\n}\r\n\r\nfunction createDataEditorPlaceholder() {\r\n const element = document.createElement('p');\r\n\r\n element.innerHTML = 'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\r\n 'Follow the JSON format like this:\\n\\n' +\r\n '{\\n \"variable\": \"value\"\\n}';\r\n\r\n return element;\r\n}","import { render } from 'preact';\r\n\r\nimport fileDrop from 'file-drops';\r\n\r\nimport mitt from 'mitt';\r\n\r\nimport { PlaygroundRoot } from './components/PlaygroundRoot';\r\n\r\n/**\r\n * @typedef { {\r\n * actions?: { display: Boolean }\r\n * container?: Element\r\n * data: any\r\n * editor?: { inlinePropertiesPanel: Boolean }\r\n * exporter?: { name: String, version: String }\r\n * schema: any\r\n * } } FormPlaygroundOptions\r\n */\r\n\r\n/**\r\n * @param {FormPlaygroundOptions} options\r\n */\r\nexport default function Playground(options) {\r\n\r\n const {\r\n container: parent,\r\n schema,\r\n data,\r\n ...rest\r\n } = options;\r\n\r\n const emitter = mitt();\r\n\r\n let state = { data, schema };\r\n let ref;\r\n\r\n const container = document.createElement('div');\r\n\r\n container.classList.add('fjs-pgl-parent');\r\n\r\n if (parent) {\r\n parent.appendChild(container);\r\n }\r\n\r\n const handleDrop = fileDrop('Drop a form file', function(files) {\r\n const file = files[0];\r\n\r\n if (file) {\r\n try {\r\n ref.setSchema(JSON.parse(file.contents));\r\n } catch (err) {\r\n\r\n // TODO(nikku): indicate JSON parse error\r\n }\r\n }\r\n });\r\n\r\n const withRef = function(fn) {\r\n return function(...args) {\r\n if (!ref) {\r\n throw new Error('Playground is not initialized.');\r\n }\r\n\r\n return fn(...args);\r\n };\r\n };\r\n\r\n const onInit = function(_ref) {\r\n ref = _ref;\r\n emitter.emit('formPlayground.init');\r\n };\r\n\r\n container.addEventListener('dragover', handleDrop);\r\n\r\n render(\r\n <PlaygroundRoot\r\n data={ data }\r\n emit={ emitter.emit }\r\n onInit={ onInit }\r\n onStateChanged={ (_state) => state = _state }\r\n schema={ schema }\r\n { ...rest }\r\n />,\r\n container\r\n );\r\n\r\n this.on = emitter.on;\r\n this.off = emitter.off;\r\n\r\n this.emit = emitter.emit;\r\n\r\n this.on('destroy', function() {\r\n render(null, container);\r\n });\r\n\r\n this.on('destroy', function() {\r\n parent.removeChild(container);\r\n });\r\n\r\n this.getState = function() {\r\n return state;\r\n };\r\n\r\n this.getSchema = withRef(() => ref.getSchema());\r\n\r\n this.setSchema = withRef((schema) => ref.setSchema(schema));\r\n\r\n this.saveSchema = withRef(() => ref.saveSchema());\r\n\r\n this.get = withRef((name, strict) => ref.get(name, strict));\r\n\r\n this.getDataEditor = withRef(() => ref.getDataEditor());\r\n\r\n this.getEditor = withRef(() => ref.getEditor());\r\n\r\n this.getForm = withRef((name, strict) => ref.getForm(name, strict));\r\n\r\n this.getResultView = withRef(() => ref.getResultView());\r\n\r\n this.destroy = function() {\r\n this.emit('destroy');\r\n };\r\n\r\n this.attachEditorContainer = withRef((node) => ref.attachEditorContainer(node));\r\n\r\n this.attachPreviewContainer = withRef((node) => ref.attachFormContainer(node));\r\n\r\n this.attachDataContainer = withRef((node) => ref.attachDataContainer(node));\r\n\r\n this.attachResultContainer = withRef((node) => ref.attachResultContainer(node));\r\n\r\n this.attachPaletteContainer = withRef((node) => ref.attachPaletteContainer(node));\r\n\r\n this.attachPropertiesPanelContainer = withRef((node) => ref.attachPropertiesPanelContainer(node));\r\n}"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","type","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","language","Compartment","of","json","tabSize","EditorState","container","autocompletionConf","linterExtension","linter","jsonParseLinter","placeholderLinterExtension","view","placeholders","dom","querySelectorAll","length","set","unset","createState","doc","extensions","create","basicSetup","lintGutter","keymap","indentWithTab","createView","updateListener","EditorView","update","docChanged","emit","value","toString","editable","contentAttributesExtension","setValue","setState","setVariables","_view","getValue","on","off","attachTo","_container","appendChild","destroy","parentNode","removeChild","node","cls","classes","domClasses","body","add","remove","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","display","displayActions","paletteContainerRef","editorContainerRef","formContainerRef","dataContainerRef","resultContainerRef","propertiesPanelContainerRef","paletteRef","formEditorRef","formRef","dataEditorRef","resultViewRef","propertiesPanelRef","showEmbed","setShowEmbed","useState","initialData","undefined","initialSchema","setInitialSchema","setData","setSchema","resultData","setResultData","onInit","attachDataContainer","attachEditorContainer","attachFormContainer","attachPaletteContainer","attachPropertiesPanelContainer","attachResultContainer","get","strict","getDataEditor","getEditor","getForm","getResultView","getSchema","saveSchema","dataEditor","createDataEditorPlaceholder","resultView","form","Form","additionalModules","properties","formEditor","FormEditor","renderer","compact","palette","parent","propertiesPanel","_getSubmitData","parse","error","formContainer","editorContainer","dataContainer","resultContainer","importSchema","getSchemaVariables","onStateChanged","handleDownload","useCallback","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","withRef","fn","args","Error","_ref","render","_state","getState","attachPreviewContainer"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -8,13 +8,14 @@ import { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';
8
8
  import { FormEditor } from '@bpmn-io/form-js-editor';
9
9
  import { jsxs, jsx } from 'preact/jsx-runtime';
10
10
  import { basicSetup } from 'codemirror';
11
- import { EditorView, keymap } from '@codemirror/view';
11
+ import { EditorView, keymap, placeholder } from '@codemirror/view';
12
12
  import { Facet, Compartment, EditorState } from '@codemirror/state';
13
13
  import { linter, lintGutter } from '@codemirror/lint';
14
14
  import { json, jsonParseLinter } from '@codemirror/lang-json';
15
15
  import { indentWithTab } from '@codemirror/commands';
16
16
  import { autocompletion as autocompletion$1 } from '@codemirror/autocomplete';
17
17
  import { syntaxTree } from '@codemirror/language';
18
+ import { classes } from 'min-dom';
18
19
 
19
20
  function Modal(props) {
20
21
  useEffect(() => {
@@ -110,8 +111,8 @@ function serializeValue(obj) {
110
111
  return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');
111
112
  }
112
113
 
113
- /**
114
- * @type {Facet<import('..').Variables>} Variables
114
+ /**
115
+ * @type {Facet<import('..').Variables>} Variables
115
116
  */
116
117
  const variablesFacet = Facet.define();
117
118
 
@@ -142,25 +143,46 @@ function completions(context) {
142
143
  };
143
144
  }
144
145
 
146
+ const NO_LINT_CLS = 'fjs-no-json-lint';
147
+
148
+ /**
149
+ * @param {object} options
150
+ * @param {boolean} [options.readonly]
151
+ * @param {object} [options.contentAttributes]
152
+ * @param {string | HTMLElement} [options.placeholder]
153
+ */
145
154
  function JSONEditor(options = {}) {
146
155
  const {
147
- readonly = false,
148
- contentAttributes = {}
156
+ contentAttributes = {},
157
+ placeholder: editorPlaceholder,
158
+ readonly = false
149
159
  } = options;
150
160
  const emitter = mitt();
151
161
  let language = new Compartment().of(json());
152
162
  let tabSize = new Compartment().of(EditorState.tabSize.of(2));
163
+ let container = null;
153
164
 
154
- /**
155
- * @typedef {Array<string>} Variables
165
+ /**
166
+ * @typedef {Array<string>} Variables
156
167
  */
157
168
 
158
169
  const autocompletionConf = new Compartment();
159
170
  const linterExtension = linter(jsonParseLinter());
171
+
172
+ // this sets no-linting mode if placeholders are present
173
+ const placeholderLinterExtension = linter(view => {
174
+ const placeholders = view.dom.querySelectorAll('.cm-placeholder');
175
+ if (placeholders.length > 0) {
176
+ set(container, NO_LINT_CLS);
177
+ } else {
178
+ unset(container, NO_LINT_CLS);
179
+ }
180
+ return [];
181
+ });
160
182
  function createState(doc, extensions = [], variables = []) {
161
183
  return EditorState.create({
162
184
  doc,
163
- extensions: [basicSetup, language, tabSize, linterExtension, lintGutter(), autocompletionConf.of(variablesFacet.of(variables)), autocompletion(), keymap.of([indentWithTab]), ...extensions]
185
+ extensions: [basicSetup, language, tabSize, linterExtension, placeholderLinterExtension, lintGutter(), autocompletionConf.of(variablesFacet.of(variables)), autocompletion(), keymap.of([indentWithTab]), editorPlaceholder ? placeholder(editorPlaceholder) : [], ...extensions]
164
186
  });
165
187
  }
166
188
  function createView(readonly) {
@@ -192,8 +214,8 @@ function JSONEditor(options = {}) {
192
214
  return view.state.doc.toString();
193
215
  };
194
216
 
195
- /**
196
- * @param {Variables} variables
217
+ /**
218
+ * @param {Variables} variables
197
219
  */
198
220
  this.setVariables = function (variables) {
199
221
  view.setVariables(variables);
@@ -201,7 +223,8 @@ function JSONEditor(options = {}) {
201
223
  this.on = emitter.on;
202
224
  this.off = emitter.off;
203
225
  this.emit = emitter.emit;
204
- this.attachTo = function (container) {
226
+ this.attachTo = function (_container) {
227
+ container = _container;
205
228
  container.appendChild(view.dom);
206
229
  };
207
230
  this.destroy = function () {
@@ -212,6 +235,17 @@ function JSONEditor(options = {}) {
212
235
  };
213
236
  }
214
237
 
238
+ // helpers //////////////////////
239
+
240
+ function set(node, cls) {
241
+ const classes$1 = classes(node, document.body);
242
+ classes$1.add(cls);
243
+ }
244
+ function unset(node, cls) {
245
+ const classes$1 = classes(node, document.body);
246
+ classes$1.remove(cls);
247
+ }
248
+
215
249
  function Section(props) {
216
250
  const elements = Array.isArray(props.children) ? props.children : [props.children];
217
251
  const {
@@ -269,7 +303,7 @@ function PlaygroundRoot(props) {
269
303
  const resultViewRef = useRef();
270
304
  const propertiesPanelRef = useRef();
271
305
  const [showEmbed, setShowEmbed] = useState(false);
272
- const [initialData] = useState(props.data || {});
306
+ const [initialData] = useState(props.data || undefined);
273
307
  const [initialSchema, setInitialSchema] = useState(props.schema);
274
308
  const [data, setData] = useState(props.data || {});
275
309
  const [schema, setSchema] = useState(props.schema);
@@ -302,7 +336,8 @@ function PlaygroundRoot(props) {
302
336
  value: toString(data),
303
337
  contentAttributes: {
304
338
  'aria-label': 'Form Input'
305
- }
339
+ },
340
+ placeholder: createDataEditorPlaceholder()
306
341
  });
307
342
  const resultView = resultViewRef.current = new JSONEditor({
308
343
  readonly: true,
@@ -470,6 +505,11 @@ function PlaygroundRoot(props) {
470
505
  function toString(obj) {
471
506
  return JSON.stringify(obj, null, ' ');
472
507
  }
508
+ function createDataEditorPlaceholder() {
509
+ const element = document.createElement('p');
510
+ element.innerHTML = 'Use this panel to simulate the form input, such as process variables.\nThis helps to test the form by populating the preview.\n\n' + 'Follow the JSON format like this:\n\n' + '{\n "variable": "value"\n}';
511
+ return element;
512
+ }
473
513
 
474
514
  function Playground(options) {
475
515
  const {