@bpmn-io/form-js-playground 1.11.0 → 1.11.1

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.
@@ -62640,6 +62640,13 @@
62640
62640
  getService: getService$2,
62641
62641
  formId: null
62642
62642
  });
62643
+
62644
+ /**
62645
+ * @template T
62646
+ * @param {string} type
62647
+ * @param {boolean} [strict=true]
62648
+ * @returns {T | null}
62649
+ */
62643
62650
  function useService$2(type, strict) {
62644
62651
  const {
62645
62652
  getService
@@ -62691,11 +62698,10 @@
62691
62698
  }
62692
62699
 
62693
62700
  /**
62694
- * Evaluate a string based on the expressionLanguage and context information.
62695
- * If the string is not an expression, it is returned as is.
62701
+ * If the value is a valid expression, it is evaluated and returned. Otherwise, it is returned as-is.
62696
62702
  *
62697
62703
  * @param {any} expressionLanguage - The expression language to use.
62698
- * @param {string} value - The string to evaluate.
62704
+ * @param {any} value - The static value or expression to evaluate.
62699
62705
  * @param {Object} expressionContextInfo - The context information to use.
62700
62706
  * @returns {any} - Evaluated value or the original value if not an expression.
62701
62707
  */
@@ -62826,11 +62832,10 @@
62826
62832
  }
62827
62833
 
62828
62834
  /**
62829
- * Evaluate a string reactively based on the expressionLanguage and form data.
62830
- * If the string is not an expression, it is returned as is.
62835
+ * If the value is a valid expression, it is evaluated and returned. Otherwise, it is returned as-is.
62831
62836
  * The function is memoized to minimize re-renders.
62832
62837
  *
62833
- * @param {string} value - The string to evaluate.
62838
+ * @param {any} value - A static value or expression to evaluate.
62834
62839
  * @returns {any} - Evaluated value or the original value if not an expression.
62835
62840
  */
62836
62841
  function useExpressionEvaluation(value) {
@@ -63070,7 +63075,7 @@
63070
63075
  return (overflowY === 'auto' || overflowY === 'scroll') && el.scrollHeight > el.clientHeight;
63071
63076
  }
63072
63077
  const EMPTY_OBJECT = {};
63073
- const EMPTY_ARRAY = [];
63078
+ const EMPTY_ARRAY$2 = [];
63074
63079
 
63075
63080
  /**
63076
63081
  * Custom hook to scroll an element within a scrollable container.
@@ -63086,7 +63091,7 @@
63086
63091
  */
63087
63092
  function useScrollIntoView(scrolledElementRef, deps, scrollOptions, flagRefs) {
63088
63093
  const _scrollOptions = scrollOptions || EMPTY_OBJECT;
63089
- const _flagRefs = flagRefs || EMPTY_ARRAY;
63094
+ const _flagRefs = flagRefs || EMPTY_ARRAY$2;
63090
63095
  p(() => {
63091
63096
  // return early if flags are not raised, or component is not mounted
63092
63097
  if (some(_flagRefs, ref => !ref.current) || !scrolledElementRef.current) {
@@ -63140,6 +63145,23 @@
63140
63145
  return 0;
63141
63146
  }
63142
63147
 
63148
+ /**
63149
+ * If the value is a valid expression, we evaluate it. Otherwise, we continue with the value as-is.
63150
+ * If the resulting value isn't a boolean, we return 'false'
63151
+ * The function is memoized to minimize re-renders.
63152
+ *
63153
+ * @param {boolean | string} value - A static boolean or expression to evaluate.
63154
+ * @returns {boolean} - Evaluated boolean result.
63155
+ */
63156
+ function useBooleanExpressionEvaluation(value) {
63157
+ const expressionLanguage = useService$2('expressionLanguage');
63158
+ const expressionContextInfo = q$1(LocalExpressionContext);
63159
+ return F$1(() => {
63160
+ const evaluationResult = runExpressionEvaluation(expressionLanguage, value, expressionContextInfo);
63161
+ return typeof evaluationResult === 'boolean' ? evaluationResult : false;
63162
+ }, [expressionLanguage, expressionContextInfo, value]);
63163
+ }
63164
+
63143
63165
  /**
63144
63166
  * Returns the conditionally filtered data of a form reactively.
63145
63167
  * Memoised to minimize re-renders
@@ -63907,7 +63929,9 @@
63907
63929
  })
63908
63930
  };
63909
63931
  const noop$1$1 = () => false;
63932
+ const ids$2 = new Ids([32, 36, 1]);
63910
63933
  function FormField(props) {
63934
+ const instanceIdRef = _$1(ids$2.next());
63911
63935
  const {
63912
63936
  field,
63913
63937
  indexes,
@@ -63953,22 +63977,28 @@
63953
63977
  // add precedence: global readonly > form field disabled
63954
63978
  const disabled = !properties.readOnly && (properties.disabled || field.disabled || false);
63955
63979
  const hidden = useCondition(field.conditional && field.conditional.hide || null);
63956
- const fieldInstance = F$1(() => ({
63957
- id: field.id,
63958
- expressionContextInfo: localExpressionContext,
63959
- valuePath,
63960
- indexes
63961
- }), [field.id, valuePath, localExpressionContext, indexes]);
63980
+ const instanceId = F$1(() => {
63981
+ if (!formFieldInstanceRegistry) {
63982
+ return null;
63983
+ }
63984
+ return formFieldInstanceRegistry.syncInstance(instanceIdRef.current, {
63985
+ id: field.id,
63986
+ expressionContextInfo: localExpressionContext,
63987
+ valuePath,
63988
+ value,
63989
+ indexes,
63990
+ hidden
63991
+ });
63992
+ }, [formFieldInstanceRegistry, field.id, localExpressionContext, valuePath, value, indexes, hidden]);
63993
+ const fieldInstance = instanceId ? formFieldInstanceRegistry.get(instanceId) : null;
63962
63994
 
63963
- // register form field instance
63995
+ // cleanup the instance on unmount
63964
63996
  p(() => {
63965
- if (formFieldInstanceRegistry && !hidden) {
63966
- const instanceId = formFieldInstanceRegistry.add(fieldInstance);
63967
- return () => {
63968
- formFieldInstanceRegistry.remove(instanceId);
63969
- };
63997
+ const instanceId = instanceIdRef.current;
63998
+ if (formFieldInstanceRegistry) {
63999
+ return () => formFieldInstanceRegistry.cleanupInstance(instanceId);
63970
64000
  }
63971
- }, [fieldInstance, formFieldInstanceRegistry, hidden]);
64001
+ }, [formFieldInstanceRegistry]);
63972
64002
 
63973
64003
  // ensures the initial validation behavior can be re-triggered upon form reset
63974
64004
  p(() => {
@@ -63987,7 +64017,7 @@
63987
64017
  }, [eventBus, viewerCommands]);
63988
64018
  p(() => {
63989
64019
  const hasInitialValue = initialValue && !isEqual(initialValue, []);
63990
- if (initialValidationTrigger && hasInitialValue) {
64020
+ if (initialValidationTrigger && hasInitialValue && fieldInstance) {
63991
64021
  setInitialValidationTrigger(false);
63992
64022
  viewerCommands.updateFieldInstanceValidation(fieldInstance, initialValue);
63993
64023
  }
@@ -67794,7 +67824,10 @@
67794
67824
  }
67795
67825
  return `Click to sort by ${label} ascending`;
67796
67826
  }
67827
+ const FILE_PICKER_FILE_KEY_PREFIX = 'files::';
67797
67828
  const type$j = 'filepicker';
67829
+ const ids$1 = new Ids();
67830
+ const EMPTY_ARRAY$1 = [];
67798
67831
 
67799
67832
  /**
67800
67833
  * @typedef Props
@@ -67808,7 +67841,8 @@
67808
67841
  * @property {string} field.id
67809
67842
  * @property {string} [field.label]
67810
67843
  * @property {string} [field.accept]
67811
- * @property {boolean} [field.multiple]
67844
+ * @property {string|boolean} [field.multiple]
67845
+ * @property {string} [value]
67812
67846
  *
67813
67847
  * @param {Props} props
67814
67848
  * @returns {import("preact").JSX.Element}
@@ -67816,9 +67850,8 @@
67816
67850
  function FilePicker(props) {
67817
67851
  /** @type {import("preact/hooks").Ref<HTMLInputElement>} */
67818
67852
  const fileInputRef = _$1(null);
67819
- /** @type {[File[],import("preact/hooks").StateUpdater<File[]>]} */
67820
- const [selectedFiles, setSelectedFiles] = h([]);
67821
- const eventBus = useService$2('eventBus');
67853
+ /** @type {import('../../FileRegistry').FileRegistry} */
67854
+ const fileRegistry = useService$2('fileRegistry', false);
67822
67855
  const {
67823
67856
  field,
67824
67857
  onChange,
@@ -67826,33 +67859,59 @@
67826
67859
  errors = [],
67827
67860
  disabled,
67828
67861
  readonly,
67829
- required
67862
+ required,
67863
+ value: filesKey = ''
67830
67864
  } = props;
67831
67865
  const {
67832
67866
  label,
67833
- multiple = '',
67834
- accept = '',
67835
- id
67867
+ multiple = false,
67868
+ accept = ''
67836
67869
  } = field;
67870
+ /** @type {string} */
67837
67871
  const evaluatedAccept = useSingleLineTemplateEvaluation(accept);
67838
- const evaluatedMultiple = useSingleLineTemplateEvaluation(typeof multiple === 'string' ? multiple : multiple.toString()) === 'true';
67872
+ const evaluatedMultiple = useBooleanExpressionEvaluation(multiple);
67839
67873
  const errorMessageId = `${domId}-error-message`;
67874
+ /** @type {File[]} */
67875
+ const selectedFiles = fileRegistry === null ? EMPTY_ARRAY$1 : fileRegistry.getFiles(filesKey);
67840
67876
  p(() => {
67841
- const reset = () => {
67842
- setSelectedFiles([]);
67877
+ if (filesKey && fileRegistry !== null && !fileRegistry.hasKey(filesKey)) {
67843
67878
  onChange({
67844
67879
  value: null
67845
67880
  });
67846
- };
67847
- eventBus.on('import.done', reset);
67848
- eventBus.on('reset', reset);
67849
- return () => {
67850
- eventBus.off('import.done', reset);
67851
- eventBus.off('reset', reset);
67852
- };
67853
- }, [eventBus, onChange]);
67881
+ }
67882
+ }, [fileRegistry, filesKey, onChange, selectedFiles.length]);
67883
+ p(() => {
67884
+ const data = new DataTransfer();
67885
+ selectedFiles.forEach(file => data.items.add(file));
67886
+ fileInputRef.current.files = data.files;
67887
+ }, [selectedFiles]);
67888
+
67889
+ /**
67890
+ * @type import("preact").JSX.GenericEventHandler<HTMLInputElement>
67891
+ */
67892
+ const onFileChange = event => {
67893
+ const input = /** @type {HTMLInputElement} */event.target;
67894
+
67895
+ // if we have an associated file key but no files are selected, clear the file key and associated files
67896
+ if ((input.files === null || input.files.length === 0) && filesKey !== '') {
67897
+ fileRegistry.deleteFiles(filesKey);
67898
+ onChange({
67899
+ value: null
67900
+ });
67901
+ return;
67902
+ }
67903
+ const files = Array.from(input.files);
67904
+
67905
+ // ensure fileKey exists
67906
+ const updatedFilesKey = filesKey || ids$1.nextPrefixed(FILE_PICKER_FILE_KEY_PREFIX);
67907
+ fileRegistry.setFiles(updatedFilesKey, files);
67908
+ onChange({
67909
+ value: updatedFilesKey
67910
+ });
67911
+ };
67912
+ const isInputDisabled = disabled || readonly || fileRegistry === null;
67854
67913
  return o("div", {
67855
- class: formFieldClasses(type$j, {
67914
+ className: formFieldClasses(type$j, {
67856
67915
  errors,
67857
67916
  disabled,
67858
67917
  readonly
@@ -67867,29 +67926,17 @@
67867
67926
  ref: fileInputRef,
67868
67927
  id: domId,
67869
67928
  name: domId,
67870
- multiple: evaluatedMultiple === false ? undefined : evaluatedMultiple,
67871
- accept: evaluatedAccept === '' ? undefined : evaluatedAccept,
67872
- onChange: event => {
67873
- const input = /** @type {HTMLInputElement} */event.target;
67874
- if (input.files === null || input.files.length === 0) {
67875
- onChange({
67876
- value: null
67877
- });
67878
- return;
67879
- }
67880
- const files = Array.from(input.files);
67881
- onChange({
67882
- value: `${id}_value_key`
67883
- });
67884
- setSelectedFiles(files);
67885
- }
67929
+ disabled: isInputDisabled,
67930
+ multiple: evaluatedMultiple || undefined,
67931
+ accept: evaluatedAccept || undefined,
67932
+ onChange: onFileChange
67886
67933
  }), o("div", {
67887
67934
  className: "fjs-filepicker-container",
67888
67935
  children: [o("button", {
67889
67936
  type: "button",
67890
- disabled: disabled,
67937
+ disabled: isInputDisabled,
67891
67938
  readonly: readonly,
67892
- class: "fjs-button",
67939
+ className: "fjs-button fjs-filepicker-button",
67893
67940
  onClick: () => {
67894
67941
  fileInputRef.current.click();
67895
67942
  },
@@ -67910,11 +67957,6 @@
67910
67957
  label: 'File picker',
67911
67958
  group: 'basic-input',
67912
67959
  emptyValue: null,
67913
- sanitizeValue: ({
67914
- value
67915
- }) => {
67916
- return value;
67917
- },
67918
67960
  create: (options = {}) => ({
67919
67961
  ...options
67920
67962
  })
@@ -68307,11 +68349,21 @@
68307
68349
  // if we have a hidden repeatable field, and the data structure allows, we clear it directly at the root and stop recursion
68308
68350
  if (context.isHidden && isRepeatable) {
68309
68351
  context.preventRecursion = true;
68352
+ this._eventBus.fire('conditionChecker.remove', {
68353
+ item: {
68354
+ [field.key]: get$1(workingData, getFilterPath(field, indexes))
68355
+ }
68356
+ });
68310
68357
  this._cleanlyClearDataAtPath(getFilterPath(field, indexes), workingData);
68311
68358
  }
68312
68359
 
68313
68360
  // for simple leaf fields, we always clear
68314
68361
  if (context.isHidden && isClosed) {
68362
+ this._eventBus.fire('conditionChecker.remove', {
68363
+ item: {
68364
+ [field.key]: get$1(workingData, getFilterPath(field, indexes))
68365
+ }
68366
+ });
68315
68367
  this._cleanlyClearDataAtPath(getFilterPath(field, indexes), workingData);
68316
68368
  }
68317
68369
  });
@@ -69125,11 +69177,16 @@
69125
69177
  /* eslint-disable react-hooks/rules-of-hooks */
69126
69178
 
69127
69179
  class RepeatRenderManager {
69128
- constructor(form, formFields, formFieldRegistry, pathRegistry) {
69180
+ constructor(form, formFields, formFieldRegistry, pathRegistry, eventBus) {
69129
69181
  this._form = form;
69182
+ /** @type {import('../../render/FormFields').FormFields} */
69130
69183
  this._formFields = formFields;
69184
+ /** @type {import('../../core/FormFieldRegistry').FormFieldRegistry} */
69131
69185
  this._formFieldRegistry = formFieldRegistry;
69186
+ /** @type {import('../../core/PathRegistry').PathRegistry} */
69132
69187
  this._pathRegistry = pathRegistry;
69188
+ /** @type {import('../../core/EventBus').EventBus} */
69189
+ this._eventBus = eventBus;
69133
69190
  this.Repeater = this.Repeater.bind(this);
69134
69191
  this.RepeatFooter = this.RepeatFooter.bind(this);
69135
69192
  }
@@ -69169,11 +69226,18 @@
69169
69226
  const isCollapsed = collapseEnabled && sharedRepeatState.isCollapsed;
69170
69227
  const hasChildren = repeaterField.components && repeaterField.components.length > 0;
69171
69228
  const showRemove = repeaterField.allowAddRemove && hasChildren;
69172
- const displayValues = isCollapsed ? values.slice(0, nonCollapsedItems) : values;
69173
- const hiddenValues = isCollapsed ? values.slice(nonCollapsedItems) : [];
69229
+
69230
+ /**
69231
+ * @param {number} index
69232
+ */
69174
69233
  const onDeleteItem = index => {
69175
69234
  const updatedValues = values.slice();
69176
- updatedValues.splice(index, 1);
69235
+ const removedItem = updatedValues.splice(index, 1)[0];
69236
+ this._eventBus.fire('repeatRenderManager.remove', {
69237
+ dataPath,
69238
+ index,
69239
+ item: removedItem
69240
+ });
69177
69241
  props.onChange({
69178
69242
  field: repeaterField,
69179
69243
  value: updatedValues,
@@ -69182,20 +69246,12 @@
69182
69246
  };
69183
69247
  const parentExpressionContextInfo = q$1(LocalExpressionContext);
69184
69248
  return o(k$2, {
69185
- children: [displayValues.map((itemValue, itemIndex) => o(RepetitionScaffold, {
69186
- itemIndex: itemIndex,
69187
- itemValue: itemValue,
69188
- parentExpressionContextInfo: parentExpressionContextInfo,
69189
- repeaterField: repeaterField,
69190
- RowsRenderer: RowsRenderer,
69191
- indexes: indexes,
69192
- onDeleteItem: onDeleteItem,
69193
- showRemove: showRemove,
69194
- ...restProps
69195
- }, itemIndex)), hiddenValues.length > 0 ? o("div", {
69196
- className: "fjs-repeat-row-collapsed",
69197
- children: hiddenValues.map((itemValue, itemIndex) => o(RepetitionScaffold, {
69198
- itemIndex: itemIndex + nonCollapsedItems,
69249
+ children: values.map((itemValue, itemIndex) => o("div", {
69250
+ class: classNames({
69251
+ 'fjs-repeat-row-collapsed': isCollapsed ? itemIndex >= nonCollapsedItems : false
69252
+ }),
69253
+ children: o(RepetitionScaffold, {
69254
+ itemIndex: itemIndex,
69199
69255
  itemValue: itemValue,
69200
69256
  parentExpressionContextInfo: parentExpressionContextInfo,
69201
69257
  repeaterField: repeaterField,
@@ -69204,8 +69260,8 @@
69204
69260
  onDeleteItem: onDeleteItem,
69205
69261
  showRemove: showRemove,
69206
69262
  ...restProps
69207
- }, itemIndex))
69208
- }) : null]
69263
+ })
69264
+ }))
69209
69265
  });
69210
69266
  }
69211
69267
  RepeatFooter(props) {
@@ -69248,6 +69304,11 @@
69248
69304
  });
69249
69305
  updatedValues.push(newItem);
69250
69306
  shouldScroll.current = true;
69307
+ this._eventBus.fire('repeatRenderManager.add', {
69308
+ dataPath,
69309
+ index: updatedValues.length - 1,
69310
+ item: newItem
69311
+ });
69251
69312
  props.onChange({
69252
69313
  value: updatedValues
69253
69314
  });
@@ -69280,7 +69341,7 @@
69280
69341
  class: "fjs-repeat-render-collapse",
69281
69342
  onClick: toggle,
69282
69343
  children: isCollapsed ? o(k$2, {
69283
- children: [o(SvgExpand, {}), " ", `Expand all (${values.length})`]
69344
+ children: [o(SvgExpand, {}), " ", `Expand all (${values.length - 1})`]
69284
69345
  }) : o(k$2, {
69285
69346
  children: [o(SvgCollapse, {}), " ", 'Collapse']
69286
69347
  })
@@ -69365,7 +69426,7 @@
69365
69426
  })]
69366
69427
  });
69367
69428
  };
69368
- RepeatRenderManager.$inject = ['form', 'formFields', 'formFieldRegistry', 'pathRegistry'];
69429
+ RepeatRenderManager.$inject = ['form', 'formFields', 'formFieldRegistry', 'pathRegistry', 'eventBus'];
69369
69430
  const RepeatRenderModule$1 = {
69370
69431
  __init__: ['repeatRenderManager'],
69371
69432
  repeatRenderManager: ['type', RepeatRenderManager]
@@ -70748,39 +70809,52 @@
70748
70809
  this._formFieldInstances = {};
70749
70810
  eventBus.on('form.clear', () => this.clear());
70750
70811
  }
70751
- add(instance) {
70812
+ syncInstance(instanceId, formFieldInfo) {
70752
70813
  const {
70753
- id,
70754
- expressionContextInfo,
70755
- valuePath,
70756
- indexes
70757
- } = instance;
70758
- const instanceId = [id, ...Object.values(indexes || {})].join('_');
70759
- if (this._formFieldInstances[instanceId]) {
70760
- throw new Error('this form field instance is already registered');
70814
+ hidden,
70815
+ ...restInfo
70816
+ } = formFieldInfo;
70817
+ const isInstanceExpected = !hidden;
70818
+ const doesInstanceExist = this._formFieldInstances[instanceId];
70819
+ if (isInstanceExpected && !doesInstanceExist) {
70820
+ this._formFieldInstances[instanceId] = {
70821
+ instanceId,
70822
+ ...restInfo
70823
+ };
70824
+ this._eventBus.fire('formFieldInstance.added', {
70825
+ instanceId
70826
+ });
70827
+ } else if (!isInstanceExpected && doesInstanceExist) {
70828
+ delete this._formFieldInstances[instanceId];
70829
+ this._eventBus.fire('formFieldInstance.removed', {
70830
+ instanceId
70831
+ });
70832
+ } else if (isInstanceExpected && doesInstanceExist) {
70833
+ const wasInstanceChanged = Object.keys(restInfo).some(key => {
70834
+ return this._formFieldInstances[instanceId][key] !== restInfo[key];
70835
+ });
70836
+ if (wasInstanceChanged) {
70837
+ this._formFieldInstances[instanceId] = {
70838
+ instanceId,
70839
+ ...restInfo
70840
+ };
70841
+ this._eventBus.fire('formFieldInstance.changed', {
70842
+ instanceId
70843
+ });
70844
+ }
70761
70845
  }
70762
- this._formFieldInstances[instanceId] = {
70763
- id,
70764
- instanceId,
70765
- expressionContextInfo,
70766
- valuePath,
70767
- indexes
70768
- };
70769
- this._eventBus.fire('formFieldInstanceRegistry.changed', {
70770
- instanceId,
70771
- action: 'added'
70772
- });
70773
70846
  return instanceId;
70774
70847
  }
70775
- remove(instanceId) {
70776
- if (!this._formFieldInstances[instanceId]) {
70777
- return;
70848
+ cleanupInstance(instanceId) {
70849
+ if (this._formFieldInstances[instanceId]) {
70850
+ delete this._formFieldInstances[instanceId];
70851
+ this._eventBus.fire('formFieldInstance.removed', {
70852
+ instanceId
70853
+ });
70778
70854
  }
70779
- delete this._formFieldInstances[instanceId];
70780
- this._eventBus.fire('formFieldInstanceRegistry.changed', {
70781
- instanceId,
70782
- action: 'removed'
70783
- });
70855
+ }
70856
+ get(instanceId) {
70857
+ return this._formFieldInstances[instanceId];
70784
70858
  }
70785
70859
  getAll() {
70786
70860
  return Object.values(this._formFieldInstances);
@@ -70858,10 +70932,121 @@
70858
70932
  });
70859
70933
  }
70860
70934
  Renderer$1.$inject = ['config.renderer', 'eventBus', 'form', 'injector'];
70935
+
70936
+ /**
70937
+ * @typedef {Record<PropertyKey, unknown>} RemovedData
70938
+ * @param {RemovedData} removedData
70939
+ * @returns {string[]}
70940
+ */
70941
+ const extractFileReferencesFromRemovedData = removedData => {
70942
+ /** @type {string[]} */
70943
+ const fileReferences = [];
70944
+ if (removedData === null) {
70945
+ return fileReferences;
70946
+ }
70947
+ Object.values(removedData).forEach(value => {
70948
+ if (value === null) {
70949
+ return;
70950
+ }
70951
+ if (typeof value === 'object') {
70952
+ fileReferences.push(...extractFileReferencesFromRemovedData(/** @type {RemovedData} */value));
70953
+ } else if (Array.isArray(value)) {
70954
+ fileReferences.push(...value.map(extractFileReferencesFromRemovedData).flat());
70955
+ } else if (typeof value === 'string' && value.startsWith(FILE_PICKER_FILE_KEY_PREFIX)) {
70956
+ fileReferences.push(value);
70957
+ }
70958
+ });
70959
+ return fileReferences;
70960
+ };
70961
+ const fileRegistry = Symbol('fileRegistry');
70962
+ const eventBusSymbol = Symbol('eventBus');
70963
+ const formFieldRegistrySymbol = Symbol('formFieldRegistry');
70964
+ const formFieldInstanceRegistrySymbol = Symbol('formFieldInstanceRegistry');
70965
+ const EMPTY_ARRAY = [];
70966
+ class FileRegistry {
70967
+ /**
70968
+ * @param {import('../core/EventBus').EventBus} eventBus
70969
+ * @param {import('../core/FormFieldRegistry').FormFieldRegistry} formFieldRegistry
70970
+ * @param {import('../core/FormFieldInstanceRegistry').FormFieldInstanceRegistry} formFieldInstanceRegistry
70971
+ */
70972
+ constructor(eventBus, formFieldRegistry, formFieldInstanceRegistry) {
70973
+ /** @type {Map<string, File[]>} */
70974
+ this[fileRegistry] = new Map();
70975
+ /** @type {import('../core/EventBus').EventBus} */
70976
+ this[eventBusSymbol] = eventBus;
70977
+ /** @type {import('../core/FormFieldRegistry').FormFieldRegistry} */
70978
+ this[formFieldRegistrySymbol] = formFieldRegistry;
70979
+ /** @type {import('../core/FormFieldInstanceRegistry').FormFieldInstanceRegistry} */
70980
+ this[formFieldInstanceRegistrySymbol] = formFieldInstanceRegistry;
70981
+ const removeFileHandler = ({
70982
+ item
70983
+ }) => {
70984
+ const fileReferences = extractFileReferencesFromRemovedData(item);
70985
+
70986
+ // Remove all file references from the registry
70987
+ fileReferences.forEach(fileReference => {
70988
+ this.deleteFiles(fileReference);
70989
+ });
70990
+ };
70991
+ eventBus.on('form.clear', () => this.clear());
70992
+ eventBus.on('conditionChecker.remove', removeFileHandler);
70993
+ eventBus.on('repeatRenderManager.remove', removeFileHandler);
70994
+ }
70995
+
70996
+ /**
70997
+ * @param {string} id
70998
+ * @param {File[]} files
70999
+ */
71000
+ setFiles(id, files) {
71001
+ this[fileRegistry].set(id, files);
71002
+ }
71003
+
71004
+ /**
71005
+ * @param {string} id
71006
+ * @returns {File[]}
71007
+ */
71008
+ getFiles(id) {
71009
+ return this[fileRegistry].get(id) || EMPTY_ARRAY;
71010
+ }
71011
+
71012
+ /**
71013
+ * @returns {string[]}
71014
+ */
71015
+ getKeys() {
71016
+ return Array.from(this[fileRegistry].keys());
71017
+ }
71018
+
71019
+ /**
71020
+ * @param {string} id
71021
+ * @returns {boolean}
71022
+ */
71023
+ hasKey(id) {
71024
+ return this[fileRegistry].has(id);
71025
+ }
71026
+
71027
+ /**
71028
+ * @param {string} id
71029
+ */
71030
+ deleteFiles(id) {
71031
+ this[fileRegistry].delete(id);
71032
+ }
71033
+
71034
+ /**
71035
+ * @returns {Map<string, File[]>}
71036
+ */
71037
+ getAllFiles() {
71038
+ return new Map(this[fileRegistry]);
71039
+ }
71040
+ clear() {
71041
+ this[fileRegistry].clear();
71042
+ }
71043
+ }
71044
+ FileRegistry.$inject = ['eventBus', 'formFieldRegistry', 'formFieldInstanceRegistry'];
70861
71045
  const RenderModule$1 = {
70862
71046
  __init__: ['formFields', 'renderer'],
70863
71047
  formFields: ['type', FormFields],
70864
- renderer: ['type', Renderer$1]
71048
+ renderer: ['type', Renderer$1],
71049
+ fileRegistry: ['type', FileRegistry]
70865
71050
  };
70866
71051
  const CoreModule$1 = {
70867
71052
  __depends__: [RenderModule$1],
@@ -70898,7 +71083,7 @@
70898
71083
  * @typedef { OnEventWithPriority & OnEventWithOutPriority } OnEventType
70899
71084
  */
70900
71085
 
70901
- const ids$1 = new Ids([32, 36, 1]);
71086
+ const ids$3 = new Ids([32, 36, 1]);
70902
71087
 
70903
71088
  /**
70904
71089
  * The form.
@@ -70919,7 +71104,7 @@
70919
71104
  * @public
70920
71105
  * @type {String}
70921
71106
  */
70922
- this._id = ids$1.next();
71107
+ this._id = ids$3.next();
70923
71108
 
70924
71109
  /**
70925
71110
  * @private
@@ -71013,7 +71198,7 @@
71013
71198
  /**
71014
71199
  * Submit the form, triggering all field validations.
71015
71200
  *
71016
- * @returns { { data: Data, errors: Errors } }
71201
+ * @returns { { data: Data, errors: Errors, files: Map<string, File[]> } }
71017
71202
  */
71018
71203
  submit() {
71019
71204
  const {
@@ -71025,9 +71210,11 @@
71025
71210
  this._emit('presubmit');
71026
71211
  const data = this._getSubmitData();
71027
71212
  const errors = this.validate();
71213
+ const files = this.get('fileRegistry').getAllFiles();
71028
71214
  const result = {
71029
71215
  data,
71030
- errors
71216
+ errors,
71217
+ files
71031
71218
  };
71032
71219
  this._emit('submit', result);
71033
71220
  return result;
@@ -90831,7 +91018,8 @@
90831
91018
 
90832
91019
  // pipe viewer changes to output data editor
90833
91020
  formViewer.on('changed', updateOutputData);
90834
- formViewer.on('formFieldInstanceRegistry.changed', updateOutputData);
91021
+ formViewer.on('formFieldInstance.added', updateOutputData);
91022
+ formViewer.on('formFieldInstance.removed', updateOutputData);
90835
91023
  inputDataEditor.on('changed', event => {
90836
91024
  try {
90837
91025
  setData(JSON.parse(event.value));
package/dist/index.cjs CHANGED
@@ -423,7 +423,8 @@ function PlaygroundRoot(config) {
423
423
 
424
424
  // pipe viewer changes to output data editor
425
425
  formViewer.on('changed', updateOutputData);
426
- formViewer.on('formFieldInstanceRegistry.changed', updateOutputData);
426
+ formViewer.on('formFieldInstance.added', updateOutputData);
427
+ formViewer.on('formFieldInstance.removed', updateOutputData);
427
428
  inputDataEditor.on('changed', event => {
428
429
  try {
429
430
  setData(JSON.parse(event.value));
@@ -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 useEffect(() => {\n function handleKey(event) {\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\">{props.children}</div>\n <div class=\"fjs-pgl-modal-footer\">\n <button type=\"button\" class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={props.onClose}>\n Close\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\nexport function EmbedModal(props) {\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>\n Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:\n </p>\n\n <textarea spellCheck=\"false\" ref={fieldRef}>\n {snippet}\n </textarea>\n </Modal>\n );\n}\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();\n","import { autocompletion } from '@codemirror/autocomplete';\nimport { variablesFacet } from './VariablesFacet';\n\nimport { syntaxTree } from '@codemirror/language';\n\nexport function autocompletionExtension() {\n return [\n autocompletion({\n override: [completions],\n }),\n ];\n}\n\nfunction completions(context) {\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}\n","import mitt from 'mitt';\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap, placeholder } 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';\nimport { autocompletionExtension } from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\nimport { classes as domClasses } from 'min-dom';\n\nconst NO_LINT_CLS = 'fjs-cm-no-lint';\n\n/**\n * @param {object} options\n * @param {boolean} [options.readonly]\n * @param {object} [options.contentAttributes]\n * @param {string | HTMLElement} [options.placeholder]\n */\nexport function JSONEditor(options = {}) {\n const { contentAttributes = {}, placeholder: editorPlaceholder, readonly = false } = options;\n const emitter = mitt();\n\n const languageCompartment = new Compartment().of(json());\n const tabSizeCompartment = new Compartment().of(EditorState.tabSize.of(2));\n const autocompletionConfCompartment = new Compartment();\n const placeholderLinterExtension = createPlaceholderLinterExtension();\n\n let container = null;\n\n function createState(doc, variables = []) {\n const extensions = [\n basicSetup,\n languageCompartment,\n tabSizeCompartment,\n lintGutter(),\n linter(jsonParseLinter()),\n placeholderLinterExtension,\n autocompletionConfCompartment.of(variablesFacet.of(variables)),\n autocompletionExtension(),\n keymap.of([indentWithTab]),\n editorPlaceholder ? placeholder(editorPlaceholder) : [],\n EditorState.readOnly.of(readonly),\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n emitter.emit('changed', { value: update.state.doc.toString() });\n }\n }),\n EditorView.contentAttributes.of(contentAttributes),\n ];\n\n return EditorState.create({ doc, extensions });\n }\n\n const view = new EditorView({\n state: createState(''),\n });\n\n this.setValue = function (newValue) {\n const oldValue = view.state.doc.toString();\n\n const diff = findDiff(oldValue, newValue);\n\n if (diff) {\n view.dispatch({\n changes: { from: diff.start, to: diff.end, insert: diff.text },\n selection: { anchor: diff.start + diff.text.length },\n });\n }\n };\n\n this.getValue = function () {\n return view.state.doc.toString();\n };\n\n this.setVariables = function (variables) {\n view.dispatch({ effects: autocompletionConfCompartment.reconfigure(variablesFacet.of(variables)) });\n };\n\n this.getView = function () {\n return view;\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 = _container;\n container.appendChild(view.dom);\n domClasses(container, document.body).add('fjs-json-editor');\n };\n\n this.destroy = function () {\n if (container && view.dom) {\n container.removeChild(view.dom);\n domClasses(container, document.body).remove('fjs-json-editor');\n }\n view.destroy();\n };\n\n function createPlaceholderLinterExtension() {\n return linter((view) => {\n const placeholders = view.dom.querySelectorAll('.cm-placeholder');\n if (placeholders.length > 0) {\n domClasses(container, document.body).add(NO_LINT_CLS);\n } else {\n domClasses(container, document.body).remove(NO_LINT_CLS);\n }\n return [];\n });\n }\n}\n\nfunction findDiff(oldStr, newStr) {\n if (oldStr === newStr) {\n return null;\n }\n\n oldStr = oldStr || '';\n newStr = newStr || '';\n\n let minLength = Math.min(oldStr.length, newStr.length);\n let start = 0;\n\n while (start < minLength && oldStr[start] === newStr[start]) {\n start++;\n }\n\n if (start === minLength) {\n return {\n start: start,\n text: newStr.slice(start),\n end: oldStr.length,\n };\n }\n\n let endOld = oldStr.length;\n let endNew = newStr.length;\n\n while (endOld > start && endNew > start && oldStr[endOld - 1] === newStr[endNew - 1]) {\n endOld--;\n endNew--;\n }\n\n return {\n start: start,\n text: newStr.slice(start, endNew),\n end: endOld,\n };\n}\n","export function Section(props) {\n const elements = Array.isArray(props.children) ? props.children : [props.children];\n\n const { headerItems, children } = elements.reduce(\n (_, child) => {\n const bucket = child.type === Section.HeaderItem ? _.headerItems : _.children;\n\n bucket.push(child);\n\n return _;\n },\n { headerItems: [], children: [] },\n );\n\n return (\n <div class=\"fjs-pgl-section\">\n <h1 class=\"header\">\n {props.name} {headerItems.length ? <span class=\"header-items\">{headerItems}</span> : null}\n </h1>\n <div class=\"body\">{children}</div>\n </div>\n );\n}\n\nSection.HeaderItem = function (props) {\n return props.children;\n};\n","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\nimport { isFunction } from 'min-dash';\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';\n\nimport { FormEditor } from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\nexport function PlaygroundRoot(config) {\n const {\n additionalModules, // goes into both editor + viewer\n actions: actionsConfig,\n emit,\n exporter: exporterConfig,\n viewerProperties,\n editorProperties,\n viewerAdditionalModules,\n editorAdditionalModules,\n propertiesPanel: propertiesPanelConfig,\n apiLinkTarget,\n onInit,\n } = config;\n\n const { display: displayActions = true } = actionsConfig || {};\n\n const editorContainerRef = useRef();\n const paletteContainerRef = useRef();\n const propertiesPanelContainerRef = useRef();\n const viewerContainerRef = useRef();\n const inputDataContainerRef = useRef();\n const outputDataContainerRef = useRef();\n\n const formEditorRef = useRef();\n const formViewerRef = useRef();\n const inputDataRef = useRef();\n const outputDataRef = useRef();\n\n const [showEmbed, setShowEmbed] = useState(false);\n const [schema, setSchema] = useState();\n const [data, setData] = useState();\n\n const load = useCallback((schema, data) => {\n formEditorRef.current.importSchema(schema, data);\n inputDataRef.current.setValue(toString(data));\n setSchema(schema);\n setData(data);\n }, []);\n\n // initialize and link the editors\n useEffect(() => {\n const inputDataEditor = (inputDataRef.current = new JSONEditor({\n contentAttributes: { 'aria-label': 'Form Input', tabIndex: 0 },\n placeholder: createDataEditorPlaceholder(),\n }));\n\n const outputDataEditor = (outputDataRef.current = new JSONEditor({\n readonly: true,\n contentAttributes: { 'aria-label': 'Form Output', tabIndex: 0 },\n }));\n\n const formViewer = (formViewerRef.current = new Form({\n container: viewerContainerRef.current,\n additionalModules: [...(additionalModules || []), ...(viewerAdditionalModules || [])],\n properties: {\n ...(viewerProperties || {}),\n ariaLabel: 'Form Preview',\n },\n }));\n\n const formEditor = (formEditorRef.current = new FormEditor({\n container: editorContainerRef.current,\n renderer: {\n compact: true,\n },\n palette: {\n parent: paletteContainerRef.current,\n },\n propertiesPanel: {\n parent: propertiesPanelContainerRef.current,\n ...(propertiesPanelConfig || {}),\n },\n exporter: exporterConfig,\n properties: {\n ...(editorProperties || {}),\n ariaLabel: 'Form Definition',\n },\n additionalModules: [...(additionalModules || []), ...(editorAdditionalModules || [])],\n }));\n\n formEditor.on('formField.add', ({ formField }) => {\n const formFields = formEditor.get('formFields');\n const { config } = formFields.get(formField.type);\n const { generateInitialDemoData } = config;\n const { id } = formField;\n\n if (!isFunction(generateInitialDemoData)) {\n return;\n }\n\n const initialDemoData = generateInitialDemoData(formField);\n\n if ([initialDemoData, id].includes(undefined)) {\n return;\n }\n\n setData((currentData) => {\n const newData = {\n ...currentData,\n [id]: initialDemoData,\n };\n\n inputDataRef.current.setValue(toString(newData));\n\n return newData;\n });\n });\n\n formEditor.on('changed', () => {\n setSchema(formEditor.getSchema());\n });\n\n formEditor.on('formEditor.rendered', () => {\n // notify interested parties after render\n emit('formPlayground.rendered');\n });\n\n const updateOutputData = () => {\n const submitData = formViewer._getSubmitData();\n outputDataEditor.setValue(toString(submitData));\n };\n\n // pipe viewer changes to output data editor\n formViewer.on('changed', updateOutputData);\n formViewer.on('formFieldInstanceRegistry.changed', updateOutputData);\n\n inputDataEditor.on('changed', (event) => {\n try {\n setData(JSON.parse(event.value));\n } catch (error) {\n // notify interested about input data error\n emit('formPlayground.inputDataError', error);\n }\n });\n\n inputDataEditor.attachTo(inputDataContainerRef.current);\n outputDataEditor.attachTo(outputDataContainerRef.current);\n\n return () => {\n inputDataEditor.destroy();\n outputDataEditor.destroy();\n formViewer.destroy();\n formEditor.destroy();\n };\n }, [\n additionalModules,\n editorAdditionalModules,\n editorProperties,\n emit,\n exporterConfig,\n propertiesPanelConfig,\n viewerAdditionalModules,\n viewerProperties,\n ]);\n\n // initialize data through props\n useEffect(() => {\n if (!config.initialSchema) {\n return;\n }\n\n load(config.initialSchema, config.initialData || {});\n }, [config.initialSchema, config.initialData, load]);\n\n useEffect(() => {\n schema && formViewerRef.current.importSchema(schema, data);\n }, [schema, data]);\n\n useEffect(() => {\n if (schema && inputDataContainerRef.current) {\n const variables = getSchemaVariables(schema);\n inputDataRef.current.setVariables(variables);\n }\n }, [schema]);\n\n // exposes api to parent\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api = {\n attachDataContainer: (node) => inputDataRef.current.attachTo(node),\n attachResultContainer: (node) => outputDataRef.current.attachTo(node),\n attachFormContainer: (node) => formViewerRef.current.attachTo(node),\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n attachPaletteContainer: (node) => formEditorRef.current.get('palette').attachTo(node),\n attachPropertiesPanelContainer: (node) => formEditorRef.current.get('propertiesPanel').attachTo(node),\n get: (name, strict) => formEditorRef.current.get(name, strict),\n getDataEditor: () => inputDataRef.current,\n getEditor: () => formEditorRef.current,\n getForm: () => formViewerRef.current,\n getResultView: () => outputDataRef.current,\n getSchema: () => formEditorRef.current.getSchema(),\n saveSchema: () => formEditorRef.current.saveSchema(),\n setSchema: setSchema,\n setData: setData,\n };\n\n onInit();\n }, [apiLinkTarget, onInit]);\n\n // separate effect for state to avoid re-creating the api object every time\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api.getState = () => ({ schema, data });\n apiLinkTarget.api.load = load;\n }, [apiLinkTarget, schema, data, load]);\n\n const handleDownload = useCallback(() => {\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('fjs-container', 'fjs-pgl-root')}>\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 <Section name=\"Form Definition\">\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" title=\"Download form definition\" onClick={handleDownload}>\n Download\n </button>\n </Section.HeaderItem>\n )}\n\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" onClick={showEmbedModal}>\n Embed\n </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={viewerContainerRef} class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Input\">\n <div ref={inputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n </Section>\n <Section name=\"Form Output\">\n <div ref={outputDataContainerRef} 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// helpers ///////////////\n\nfunction toString(obj) {\n return JSON.stringify(obj, null, ' ');\n}\n\nfunction createDataEditorPlaceholder() {\n const element = document.createElement('p');\n\n element.innerHTML =\n 'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\n 'Follow the JSON format like this:\\n\\n' +\n '{\\n \"variable\": \"value\"\\n}';\n\n return element;\n}\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 { import('@bpmn-io/form-js-viewer/dist/types/types').FormProperties } FormProperties\n * @typedef { import('@bpmn-io/form-js-editor/dist/types/types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * actions?: { display: Boolean }\n * additionalModules?: Array<any>\n * container?: Element\n * data: any\n * editor?: { inlinePropertiesPanel: Boolean }\n * editorAdditionalModules?: Array<any>\n * editorProperties?: FormEditorProperties\n * exporter?: { name: String, version: String }\n * propertiesPanel?: { parent: Element, feelPopupContainer: Element }\n * schema: any\n * viewerAdditionalModules?: Array<any>\n * viewerProperties?: FormProperties\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nfunction Playground(options) {\n const { container: parent, schema: initialSchema, data: initialData, ...rest } = options;\n\n const emitter = mitt();\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 this.api.setSchema(JSON.parse(file.contents));\n } catch (err) {\n // TODO(nikku): indicate JSON parse error\n }\n }\n });\n\n const safe = function (fn) {\n return function (...args) {\n if (!this.api) {\n throw new Error('Playground is not initialized.');\n }\n\n return fn(...args);\n };\n };\n\n const onInit = function () {\n emitter.emit('formPlayground.init');\n };\n\n container.addEventListener('dragover', handleDrop);\n\n render(\n <PlaygroundRoot\n initialSchema={initialSchema}\n initialData={initialData}\n emit={emitter.emit}\n apiLinkTarget={this}\n onInit={onInit}\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', () => {\n render(null, container);\n parent.removeChild(container);\n });\n\n this.destroy = () => this.emit('destroy');\n\n this.getState = safe(() => this.api.getState());\n\n this.getSchema = safe(() => this.api.getSchema());\n\n this.setSchema = safe((schema) => this.api.setSchema(schema));\n\n this.saveSchema = safe(() => this.api.saveSchema());\n\n this.get = safe((name, strict) => this.api.get(name, strict));\n\n this.getDataEditor = safe(() => this.api.getDataEditor());\n\n this.getEditor = safe(() => this.api.getEditor());\n\n this.getForm = safe((name, strict) => this.api.getForm(name, strict));\n\n this.getResultView = safe(() => this.api.getResultView());\n\n this.attachEditorContainer = safe((node) => this.api.attachEditorContainer(node));\n\n this.attachPreviewContainer = safe((node) => this.api.attachFormContainer(node));\n\n this.attachDataContainer = safe((node) => this.api.attachDataContainer(node));\n\n this.attachResultContainer = safe((node) => this.api.attachResultContainer(node));\n\n this.attachPaletteContainer = safe((node) => this.api.attachPaletteContainer(node));\n\n this.attachPropertiesPanelContainer = safe((node) => this.api.attachPropertiesPanelContainer(node));\n}\n\nexport { Playground };\n"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","type","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletionExtension","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","languageCompartment","Compartment","of","json","tabSizeCompartment","EditorState","tabSize","autocompletionConfCompartment","placeholderLinterExtension","createPlaceholderLinterExtension","container","createState","doc","extensions","basicSetup","lintGutter","linter","jsonParseLinter","keymap","indentWithTab","readOnly","EditorView","updateListener","update","docChanged","emit","value","toString","create","view","setValue","newValue","oldValue","diff","findDiff","dispatch","changes","start","end","insert","text","selection","anchor","length","getValue","setVariables","effects","reconfigure","getView","on","off","attachTo","_container","appendChild","dom","domClasses","body","add","destroy","removeChild","remove","placeholders","querySelectorAll","oldStr","newStr","minLength","Math","min","slice","endOld","endNew","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","config","additionalModules","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","propertiesPanel","propertiesPanelConfig","apiLinkTarget","onInit","display","displayActions","editorContainerRef","paletteContainerRef","propertiesPanelContainerRef","viewerContainerRef","inputDataContainerRef","outputDataContainerRef","formEditorRef","formViewerRef","inputDataRef","outputDataRef","showEmbed","setShowEmbed","useState","setSchema","setData","load","useCallback","importSchema","inputDataEditor","tabIndex","createDataEditorPlaceholder","outputDataEditor","formViewer","Form","properties","ariaLabel","formEditor","FormEditor","renderer","compact","palette","parent","formField","formFields","get","generateInitialDemoData","id","isFunction","initialDemoData","includes","undefined","currentData","newData","getSchema","updateOutputData","submitData","_getSubmitData","parse","error","initialSchema","initialData","getSchemaVariables","api","attachDataContainer","node","attachResultContainer","attachFormContainer","attachEditorContainer","attachPaletteContainer","attachPropertiesPanelContainer","strict","getDataEditor","getEditor","getForm","getResultView","saveSchema","getState","handleDownload","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","safe","fn","args","Error","render","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';\n\nexport function Modal(props) {\n useEffect(() => {\n function handleKey(event) {\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\">{props.children}</div>\n <div class=\"fjs-pgl-modal-footer\">\n <button type=\"button\" class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={props.onClose}>\n Close\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\nexport function EmbedModal(props) {\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>\n Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:\n </p>\n\n <textarea spellCheck=\"false\" ref={fieldRef}>\n {snippet}\n </textarea>\n </Modal>\n );\n}\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();\n","import { autocompletion } from '@codemirror/autocomplete';\nimport { variablesFacet } from './VariablesFacet';\n\nimport { syntaxTree } from '@codemirror/language';\n\nexport function autocompletionExtension() {\n return [\n autocompletion({\n override: [completions],\n }),\n ];\n}\n\nfunction completions(context) {\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}\n","import mitt from 'mitt';\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap, placeholder } 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';\nimport { autocompletionExtension } from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\nimport { classes as domClasses } from 'min-dom';\n\nconst NO_LINT_CLS = 'fjs-cm-no-lint';\n\n/**\n * @param {object} options\n * @param {boolean} [options.readonly]\n * @param {object} [options.contentAttributes]\n * @param {string | HTMLElement} [options.placeholder]\n */\nexport function JSONEditor(options = {}) {\n const { contentAttributes = {}, placeholder: editorPlaceholder, readonly = false } = options;\n const emitter = mitt();\n\n const languageCompartment = new Compartment().of(json());\n const tabSizeCompartment = new Compartment().of(EditorState.tabSize.of(2));\n const autocompletionConfCompartment = new Compartment();\n const placeholderLinterExtension = createPlaceholderLinterExtension();\n\n let container = null;\n\n function createState(doc, variables = []) {\n const extensions = [\n basicSetup,\n languageCompartment,\n tabSizeCompartment,\n lintGutter(),\n linter(jsonParseLinter()),\n placeholderLinterExtension,\n autocompletionConfCompartment.of(variablesFacet.of(variables)),\n autocompletionExtension(),\n keymap.of([indentWithTab]),\n editorPlaceholder ? placeholder(editorPlaceholder) : [],\n EditorState.readOnly.of(readonly),\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n emitter.emit('changed', { value: update.state.doc.toString() });\n }\n }),\n EditorView.contentAttributes.of(contentAttributes),\n ];\n\n return EditorState.create({ doc, extensions });\n }\n\n const view = new EditorView({\n state: createState(''),\n });\n\n this.setValue = function (newValue) {\n const oldValue = view.state.doc.toString();\n\n const diff = findDiff(oldValue, newValue);\n\n if (diff) {\n view.dispatch({\n changes: { from: diff.start, to: diff.end, insert: diff.text },\n selection: { anchor: diff.start + diff.text.length },\n });\n }\n };\n\n this.getValue = function () {\n return view.state.doc.toString();\n };\n\n this.setVariables = function (variables) {\n view.dispatch({ effects: autocompletionConfCompartment.reconfigure(variablesFacet.of(variables)) });\n };\n\n this.getView = function () {\n return view;\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 = _container;\n container.appendChild(view.dom);\n domClasses(container, document.body).add('fjs-json-editor');\n };\n\n this.destroy = function () {\n if (container && view.dom) {\n container.removeChild(view.dom);\n domClasses(container, document.body).remove('fjs-json-editor');\n }\n view.destroy();\n };\n\n function createPlaceholderLinterExtension() {\n return linter((view) => {\n const placeholders = view.dom.querySelectorAll('.cm-placeholder');\n if (placeholders.length > 0) {\n domClasses(container, document.body).add(NO_LINT_CLS);\n } else {\n domClasses(container, document.body).remove(NO_LINT_CLS);\n }\n return [];\n });\n }\n}\n\nfunction findDiff(oldStr, newStr) {\n if (oldStr === newStr) {\n return null;\n }\n\n oldStr = oldStr || '';\n newStr = newStr || '';\n\n let minLength = Math.min(oldStr.length, newStr.length);\n let start = 0;\n\n while (start < minLength && oldStr[start] === newStr[start]) {\n start++;\n }\n\n if (start === minLength) {\n return {\n start: start,\n text: newStr.slice(start),\n end: oldStr.length,\n };\n }\n\n let endOld = oldStr.length;\n let endNew = newStr.length;\n\n while (endOld > start && endNew > start && oldStr[endOld - 1] === newStr[endNew - 1]) {\n endOld--;\n endNew--;\n }\n\n return {\n start: start,\n text: newStr.slice(start, endNew),\n end: endOld,\n };\n}\n","export function Section(props) {\n const elements = Array.isArray(props.children) ? props.children : [props.children];\n\n const { headerItems, children } = elements.reduce(\n (_, child) => {\n const bucket = child.type === Section.HeaderItem ? _.headerItems : _.children;\n\n bucket.push(child);\n\n return _;\n },\n { headerItems: [], children: [] },\n );\n\n return (\n <div class=\"fjs-pgl-section\">\n <h1 class=\"header\">\n {props.name} {headerItems.length ? <span class=\"header-items\">{headerItems}</span> : null}\n </h1>\n <div class=\"body\">{children}</div>\n </div>\n );\n}\n\nSection.HeaderItem = function (props) {\n return props.children;\n};\n","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\nimport { isFunction } from 'min-dash';\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';\n\nimport { FormEditor } from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\nexport function PlaygroundRoot(config) {\n const {\n additionalModules, // goes into both editor + viewer\n actions: actionsConfig,\n emit,\n exporter: exporterConfig,\n viewerProperties,\n editorProperties,\n viewerAdditionalModules,\n editorAdditionalModules,\n propertiesPanel: propertiesPanelConfig,\n apiLinkTarget,\n onInit,\n } = config;\n\n const { display: displayActions = true } = actionsConfig || {};\n\n const editorContainerRef = useRef();\n const paletteContainerRef = useRef();\n const propertiesPanelContainerRef = useRef();\n const viewerContainerRef = useRef();\n const inputDataContainerRef = useRef();\n const outputDataContainerRef = useRef();\n\n const formEditorRef = useRef();\n const formViewerRef = useRef();\n const inputDataRef = useRef();\n const outputDataRef = useRef();\n\n const [showEmbed, setShowEmbed] = useState(false);\n const [schema, setSchema] = useState();\n const [data, setData] = useState();\n\n const load = useCallback((schema, data) => {\n formEditorRef.current.importSchema(schema, data);\n inputDataRef.current.setValue(toString(data));\n setSchema(schema);\n setData(data);\n }, []);\n\n // initialize and link the editors\n useEffect(() => {\n const inputDataEditor = (inputDataRef.current = new JSONEditor({\n contentAttributes: { 'aria-label': 'Form Input', tabIndex: 0 },\n placeholder: createDataEditorPlaceholder(),\n }));\n\n const outputDataEditor = (outputDataRef.current = new JSONEditor({\n readonly: true,\n contentAttributes: { 'aria-label': 'Form Output', tabIndex: 0 },\n }));\n\n const formViewer = (formViewerRef.current = new Form({\n container: viewerContainerRef.current,\n additionalModules: [...(additionalModules || []), ...(viewerAdditionalModules || [])],\n properties: {\n ...(viewerProperties || {}),\n ariaLabel: 'Form Preview',\n },\n }));\n\n const formEditor = (formEditorRef.current = new FormEditor({\n container: editorContainerRef.current,\n renderer: {\n compact: true,\n },\n palette: {\n parent: paletteContainerRef.current,\n },\n propertiesPanel: {\n parent: propertiesPanelContainerRef.current,\n ...(propertiesPanelConfig || {}),\n },\n exporter: exporterConfig,\n properties: {\n ...(editorProperties || {}),\n ariaLabel: 'Form Definition',\n },\n additionalModules: [...(additionalModules || []), ...(editorAdditionalModules || [])],\n }));\n\n formEditor.on('formField.add', ({ formField }) => {\n const formFields = formEditor.get('formFields');\n const { config } = formFields.get(formField.type);\n const { generateInitialDemoData } = config;\n const { id } = formField;\n\n if (!isFunction(generateInitialDemoData)) {\n return;\n }\n\n const initialDemoData = generateInitialDemoData(formField);\n\n if ([initialDemoData, id].includes(undefined)) {\n return;\n }\n\n setData((currentData) => {\n const newData = {\n ...currentData,\n [id]: initialDemoData,\n };\n\n inputDataRef.current.setValue(toString(newData));\n\n return newData;\n });\n });\n\n formEditor.on('changed', () => {\n setSchema(formEditor.getSchema());\n });\n\n formEditor.on('formEditor.rendered', () => {\n // notify interested parties after render\n emit('formPlayground.rendered');\n });\n\n const updateOutputData = () => {\n const submitData = formViewer._getSubmitData();\n outputDataEditor.setValue(toString(submitData));\n };\n\n // pipe viewer changes to output data editor\n formViewer.on('changed', updateOutputData);\n formViewer.on('formFieldInstance.added', updateOutputData);\n formViewer.on('formFieldInstance.removed', updateOutputData);\n\n inputDataEditor.on('changed', (event) => {\n try {\n setData(JSON.parse(event.value));\n } catch (error) {\n // notify interested about input data error\n emit('formPlayground.inputDataError', error);\n }\n });\n\n inputDataEditor.attachTo(inputDataContainerRef.current);\n outputDataEditor.attachTo(outputDataContainerRef.current);\n\n return () => {\n inputDataEditor.destroy();\n outputDataEditor.destroy();\n formViewer.destroy();\n formEditor.destroy();\n };\n }, [\n additionalModules,\n editorAdditionalModules,\n editorProperties,\n emit,\n exporterConfig,\n propertiesPanelConfig,\n viewerAdditionalModules,\n viewerProperties,\n ]);\n\n // initialize data through props\n useEffect(() => {\n if (!config.initialSchema) {\n return;\n }\n\n load(config.initialSchema, config.initialData || {});\n }, [config.initialSchema, config.initialData, load]);\n\n useEffect(() => {\n schema && formViewerRef.current.importSchema(schema, data);\n }, [schema, data]);\n\n useEffect(() => {\n if (schema && inputDataContainerRef.current) {\n const variables = getSchemaVariables(schema);\n inputDataRef.current.setVariables(variables);\n }\n }, [schema]);\n\n // exposes api to parent\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api = {\n attachDataContainer: (node) => inputDataRef.current.attachTo(node),\n attachResultContainer: (node) => outputDataRef.current.attachTo(node),\n attachFormContainer: (node) => formViewerRef.current.attachTo(node),\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n attachPaletteContainer: (node) => formEditorRef.current.get('palette').attachTo(node),\n attachPropertiesPanelContainer: (node) => formEditorRef.current.get('propertiesPanel').attachTo(node),\n get: (name, strict) => formEditorRef.current.get(name, strict),\n getDataEditor: () => inputDataRef.current,\n getEditor: () => formEditorRef.current,\n getForm: () => formViewerRef.current,\n getResultView: () => outputDataRef.current,\n getSchema: () => formEditorRef.current.getSchema(),\n saveSchema: () => formEditorRef.current.saveSchema(),\n setSchema: setSchema,\n setData: setData,\n };\n\n onInit();\n }, [apiLinkTarget, onInit]);\n\n // separate effect for state to avoid re-creating the api object every time\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api.getState = () => ({ schema, data });\n apiLinkTarget.api.load = load;\n }, [apiLinkTarget, schema, data, load]);\n\n const handleDownload = useCallback(() => {\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('fjs-container', 'fjs-pgl-root')}>\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 <Section name=\"Form Definition\">\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" title=\"Download form definition\" onClick={handleDownload}>\n Download\n </button>\n </Section.HeaderItem>\n )}\n\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" onClick={showEmbedModal}>\n Embed\n </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={viewerContainerRef} class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Input\">\n <div ref={inputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n </Section>\n <Section name=\"Form Output\">\n <div ref={outputDataContainerRef} 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// helpers ///////////////\n\nfunction toString(obj) {\n return JSON.stringify(obj, null, ' ');\n}\n\nfunction createDataEditorPlaceholder() {\n const element = document.createElement('p');\n\n element.innerHTML =\n 'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\n 'Follow the JSON format like this:\\n\\n' +\n '{\\n \"variable\": \"value\"\\n}';\n\n return element;\n}\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 { import('@bpmn-io/form-js-viewer/dist/types/types').FormProperties } FormProperties\n * @typedef { import('@bpmn-io/form-js-editor/dist/types/types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * actions?: { display: Boolean }\n * additionalModules?: Array<any>\n * container?: Element\n * data: any\n * editor?: { inlinePropertiesPanel: Boolean }\n * editorAdditionalModules?: Array<any>\n * editorProperties?: FormEditorProperties\n * exporter?: { name: String, version: String }\n * propertiesPanel?: { parent: Element, feelPopupContainer: Element }\n * schema: any\n * viewerAdditionalModules?: Array<any>\n * viewerProperties?: FormProperties\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nfunction Playground(options) {\n const { container: parent, schema: initialSchema, data: initialData, ...rest } = options;\n\n const emitter = mitt();\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 this.api.setSchema(JSON.parse(file.contents));\n } catch (err) {\n // TODO(nikku): indicate JSON parse error\n }\n }\n });\n\n const safe = function (fn) {\n return function (...args) {\n if (!this.api) {\n throw new Error('Playground is not initialized.');\n }\n\n return fn(...args);\n };\n };\n\n const onInit = function () {\n emitter.emit('formPlayground.init');\n };\n\n container.addEventListener('dragover', handleDrop);\n\n render(\n <PlaygroundRoot\n initialSchema={initialSchema}\n initialData={initialData}\n emit={emitter.emit}\n apiLinkTarget={this}\n onInit={onInit}\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', () => {\n render(null, container);\n parent.removeChild(container);\n });\n\n this.destroy = () => this.emit('destroy');\n\n this.getState = safe(() => this.api.getState());\n\n this.getSchema = safe(() => this.api.getSchema());\n\n this.setSchema = safe((schema) => this.api.setSchema(schema));\n\n this.saveSchema = safe(() => this.api.saveSchema());\n\n this.get = safe((name, strict) => this.api.get(name, strict));\n\n this.getDataEditor = safe(() => this.api.getDataEditor());\n\n this.getEditor = safe(() => this.api.getEditor());\n\n this.getForm = safe((name, strict) => this.api.getForm(name, strict));\n\n this.getResultView = safe(() => this.api.getResultView());\n\n this.attachEditorContainer = safe((node) => this.api.attachEditorContainer(node));\n\n this.attachPreviewContainer = safe((node) => this.api.attachFormContainer(node));\n\n this.attachDataContainer = safe((node) => this.api.attachDataContainer(node));\n\n this.attachResultContainer = safe((node) => this.api.attachResultContainer(node));\n\n this.attachPaletteContainer = safe((node) => this.api.attachPaletteContainer(node));\n\n this.attachPropertiesPanelContainer = safe((node) => this.api.attachPropertiesPanelContainer(node));\n}\n\nexport { Playground };\n"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","type","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletionExtension","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","languageCompartment","Compartment","of","json","tabSizeCompartment","EditorState","tabSize","autocompletionConfCompartment","placeholderLinterExtension","createPlaceholderLinterExtension","container","createState","doc","extensions","basicSetup","lintGutter","linter","jsonParseLinter","keymap","indentWithTab","readOnly","EditorView","updateListener","update","docChanged","emit","value","toString","create","view","setValue","newValue","oldValue","diff","findDiff","dispatch","changes","start","end","insert","text","selection","anchor","length","getValue","setVariables","effects","reconfigure","getView","on","off","attachTo","_container","appendChild","dom","domClasses","body","add","destroy","removeChild","remove","placeholders","querySelectorAll","oldStr","newStr","minLength","Math","min","slice","endOld","endNew","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","config","additionalModules","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","propertiesPanel","propertiesPanelConfig","apiLinkTarget","onInit","display","displayActions","editorContainerRef","paletteContainerRef","propertiesPanelContainerRef","viewerContainerRef","inputDataContainerRef","outputDataContainerRef","formEditorRef","formViewerRef","inputDataRef","outputDataRef","showEmbed","setShowEmbed","useState","setSchema","setData","load","useCallback","importSchema","inputDataEditor","tabIndex","createDataEditorPlaceholder","outputDataEditor","formViewer","Form","properties","ariaLabel","formEditor","FormEditor","renderer","compact","palette","parent","formField","formFields","get","generateInitialDemoData","id","isFunction","initialDemoData","includes","undefined","currentData","newData","getSchema","updateOutputData","submitData","_getSubmitData","parse","error","initialSchema","initialData","getSchemaVariables","api","attachDataContainer","node","attachResultContainer","attachFormContainer","attachEditorContainer","attachPaletteContainer","attachPropertiesPanelContainer","strict","getDataEditor","getEditor","getForm","getResultView","saveSchema","getState","handleDownload","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","safe","fn","args","Error","render","attachPreviewContainer"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -421,7 +421,8 @@ function PlaygroundRoot(config) {
421
421
 
422
422
  // pipe viewer changes to output data editor
423
423
  formViewer.on('changed', updateOutputData);
424
- formViewer.on('formFieldInstanceRegistry.changed', updateOutputData);
424
+ formViewer.on('formFieldInstance.added', updateOutputData);
425
+ formViewer.on('formFieldInstance.removed', updateOutputData);
425
426
  inputDataEditor.on('changed', event => {
426
427
  try {
427
428
  setData(JSON.parse(event.value));
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","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 useEffect(() => {\n function handleKey(event) {\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\">{props.children}</div>\n <div class=\"fjs-pgl-modal-footer\">\n <button type=\"button\" class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={props.onClose}>\n Close\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\nexport function EmbedModal(props) {\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>\n Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:\n </p>\n\n <textarea spellCheck=\"false\" ref={fieldRef}>\n {snippet}\n </textarea>\n </Modal>\n );\n}\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();\n","import { autocompletion } from '@codemirror/autocomplete';\nimport { variablesFacet } from './VariablesFacet';\n\nimport { syntaxTree } from '@codemirror/language';\n\nexport function autocompletionExtension() {\n return [\n autocompletion({\n override: [completions],\n }),\n ];\n}\n\nfunction completions(context) {\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}\n","import mitt from 'mitt';\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap, placeholder } 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';\nimport { autocompletionExtension } from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\nimport { classes as domClasses } from 'min-dom';\n\nconst NO_LINT_CLS = 'fjs-cm-no-lint';\n\n/**\n * @param {object} options\n * @param {boolean} [options.readonly]\n * @param {object} [options.contentAttributes]\n * @param {string | HTMLElement} [options.placeholder]\n */\nexport function JSONEditor(options = {}) {\n const { contentAttributes = {}, placeholder: editorPlaceholder, readonly = false } = options;\n const emitter = mitt();\n\n const languageCompartment = new Compartment().of(json());\n const tabSizeCompartment = new Compartment().of(EditorState.tabSize.of(2));\n const autocompletionConfCompartment = new Compartment();\n const placeholderLinterExtension = createPlaceholderLinterExtension();\n\n let container = null;\n\n function createState(doc, variables = []) {\n const extensions = [\n basicSetup,\n languageCompartment,\n tabSizeCompartment,\n lintGutter(),\n linter(jsonParseLinter()),\n placeholderLinterExtension,\n autocompletionConfCompartment.of(variablesFacet.of(variables)),\n autocompletionExtension(),\n keymap.of([indentWithTab]),\n editorPlaceholder ? placeholder(editorPlaceholder) : [],\n EditorState.readOnly.of(readonly),\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n emitter.emit('changed', { value: update.state.doc.toString() });\n }\n }),\n EditorView.contentAttributes.of(contentAttributes),\n ];\n\n return EditorState.create({ doc, extensions });\n }\n\n const view = new EditorView({\n state: createState(''),\n });\n\n this.setValue = function (newValue) {\n const oldValue = view.state.doc.toString();\n\n const diff = findDiff(oldValue, newValue);\n\n if (diff) {\n view.dispatch({\n changes: { from: diff.start, to: diff.end, insert: diff.text },\n selection: { anchor: diff.start + diff.text.length },\n });\n }\n };\n\n this.getValue = function () {\n return view.state.doc.toString();\n };\n\n this.setVariables = function (variables) {\n view.dispatch({ effects: autocompletionConfCompartment.reconfigure(variablesFacet.of(variables)) });\n };\n\n this.getView = function () {\n return view;\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 = _container;\n container.appendChild(view.dom);\n domClasses(container, document.body).add('fjs-json-editor');\n };\n\n this.destroy = function () {\n if (container && view.dom) {\n container.removeChild(view.dom);\n domClasses(container, document.body).remove('fjs-json-editor');\n }\n view.destroy();\n };\n\n function createPlaceholderLinterExtension() {\n return linter((view) => {\n const placeholders = view.dom.querySelectorAll('.cm-placeholder');\n if (placeholders.length > 0) {\n domClasses(container, document.body).add(NO_LINT_CLS);\n } else {\n domClasses(container, document.body).remove(NO_LINT_CLS);\n }\n return [];\n });\n }\n}\n\nfunction findDiff(oldStr, newStr) {\n if (oldStr === newStr) {\n return null;\n }\n\n oldStr = oldStr || '';\n newStr = newStr || '';\n\n let minLength = Math.min(oldStr.length, newStr.length);\n let start = 0;\n\n while (start < minLength && oldStr[start] === newStr[start]) {\n start++;\n }\n\n if (start === minLength) {\n return {\n start: start,\n text: newStr.slice(start),\n end: oldStr.length,\n };\n }\n\n let endOld = oldStr.length;\n let endNew = newStr.length;\n\n while (endOld > start && endNew > start && oldStr[endOld - 1] === newStr[endNew - 1]) {\n endOld--;\n endNew--;\n }\n\n return {\n start: start,\n text: newStr.slice(start, endNew),\n end: endOld,\n };\n}\n","export function Section(props) {\n const elements = Array.isArray(props.children) ? props.children : [props.children];\n\n const { headerItems, children } = elements.reduce(\n (_, child) => {\n const bucket = child.type === Section.HeaderItem ? _.headerItems : _.children;\n\n bucket.push(child);\n\n return _;\n },\n { headerItems: [], children: [] },\n );\n\n return (\n <div class=\"fjs-pgl-section\">\n <h1 class=\"header\">\n {props.name} {headerItems.length ? <span class=\"header-items\">{headerItems}</span> : null}\n </h1>\n <div class=\"body\">{children}</div>\n </div>\n );\n}\n\nSection.HeaderItem = function (props) {\n return props.children;\n};\n","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\nimport { isFunction } from 'min-dash';\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';\n\nimport { FormEditor } from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\nexport function PlaygroundRoot(config) {\n const {\n additionalModules, // goes into both editor + viewer\n actions: actionsConfig,\n emit,\n exporter: exporterConfig,\n viewerProperties,\n editorProperties,\n viewerAdditionalModules,\n editorAdditionalModules,\n propertiesPanel: propertiesPanelConfig,\n apiLinkTarget,\n onInit,\n } = config;\n\n const { display: displayActions = true } = actionsConfig || {};\n\n const editorContainerRef = useRef();\n const paletteContainerRef = useRef();\n const propertiesPanelContainerRef = useRef();\n const viewerContainerRef = useRef();\n const inputDataContainerRef = useRef();\n const outputDataContainerRef = useRef();\n\n const formEditorRef = useRef();\n const formViewerRef = useRef();\n const inputDataRef = useRef();\n const outputDataRef = useRef();\n\n const [showEmbed, setShowEmbed] = useState(false);\n const [schema, setSchema] = useState();\n const [data, setData] = useState();\n\n const load = useCallback((schema, data) => {\n formEditorRef.current.importSchema(schema, data);\n inputDataRef.current.setValue(toString(data));\n setSchema(schema);\n setData(data);\n }, []);\n\n // initialize and link the editors\n useEffect(() => {\n const inputDataEditor = (inputDataRef.current = new JSONEditor({\n contentAttributes: { 'aria-label': 'Form Input', tabIndex: 0 },\n placeholder: createDataEditorPlaceholder(),\n }));\n\n const outputDataEditor = (outputDataRef.current = new JSONEditor({\n readonly: true,\n contentAttributes: { 'aria-label': 'Form Output', tabIndex: 0 },\n }));\n\n const formViewer = (formViewerRef.current = new Form({\n container: viewerContainerRef.current,\n additionalModules: [...(additionalModules || []), ...(viewerAdditionalModules || [])],\n properties: {\n ...(viewerProperties || {}),\n ariaLabel: 'Form Preview',\n },\n }));\n\n const formEditor = (formEditorRef.current = new FormEditor({\n container: editorContainerRef.current,\n renderer: {\n compact: true,\n },\n palette: {\n parent: paletteContainerRef.current,\n },\n propertiesPanel: {\n parent: propertiesPanelContainerRef.current,\n ...(propertiesPanelConfig || {}),\n },\n exporter: exporterConfig,\n properties: {\n ...(editorProperties || {}),\n ariaLabel: 'Form Definition',\n },\n additionalModules: [...(additionalModules || []), ...(editorAdditionalModules || [])],\n }));\n\n formEditor.on('formField.add', ({ formField }) => {\n const formFields = formEditor.get('formFields');\n const { config } = formFields.get(formField.type);\n const { generateInitialDemoData } = config;\n const { id } = formField;\n\n if (!isFunction(generateInitialDemoData)) {\n return;\n }\n\n const initialDemoData = generateInitialDemoData(formField);\n\n if ([initialDemoData, id].includes(undefined)) {\n return;\n }\n\n setData((currentData) => {\n const newData = {\n ...currentData,\n [id]: initialDemoData,\n };\n\n inputDataRef.current.setValue(toString(newData));\n\n return newData;\n });\n });\n\n formEditor.on('changed', () => {\n setSchema(formEditor.getSchema());\n });\n\n formEditor.on('formEditor.rendered', () => {\n // notify interested parties after render\n emit('formPlayground.rendered');\n });\n\n const updateOutputData = () => {\n const submitData = formViewer._getSubmitData();\n outputDataEditor.setValue(toString(submitData));\n };\n\n // pipe viewer changes to output data editor\n formViewer.on('changed', updateOutputData);\n formViewer.on('formFieldInstanceRegistry.changed', updateOutputData);\n\n inputDataEditor.on('changed', (event) => {\n try {\n setData(JSON.parse(event.value));\n } catch (error) {\n // notify interested about input data error\n emit('formPlayground.inputDataError', error);\n }\n });\n\n inputDataEditor.attachTo(inputDataContainerRef.current);\n outputDataEditor.attachTo(outputDataContainerRef.current);\n\n return () => {\n inputDataEditor.destroy();\n outputDataEditor.destroy();\n formViewer.destroy();\n formEditor.destroy();\n };\n }, [\n additionalModules,\n editorAdditionalModules,\n editorProperties,\n emit,\n exporterConfig,\n propertiesPanelConfig,\n viewerAdditionalModules,\n viewerProperties,\n ]);\n\n // initialize data through props\n useEffect(() => {\n if (!config.initialSchema) {\n return;\n }\n\n load(config.initialSchema, config.initialData || {});\n }, [config.initialSchema, config.initialData, load]);\n\n useEffect(() => {\n schema && formViewerRef.current.importSchema(schema, data);\n }, [schema, data]);\n\n useEffect(() => {\n if (schema && inputDataContainerRef.current) {\n const variables = getSchemaVariables(schema);\n inputDataRef.current.setVariables(variables);\n }\n }, [schema]);\n\n // exposes api to parent\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api = {\n attachDataContainer: (node) => inputDataRef.current.attachTo(node),\n attachResultContainer: (node) => outputDataRef.current.attachTo(node),\n attachFormContainer: (node) => formViewerRef.current.attachTo(node),\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n attachPaletteContainer: (node) => formEditorRef.current.get('palette').attachTo(node),\n attachPropertiesPanelContainer: (node) => formEditorRef.current.get('propertiesPanel').attachTo(node),\n get: (name, strict) => formEditorRef.current.get(name, strict),\n getDataEditor: () => inputDataRef.current,\n getEditor: () => formEditorRef.current,\n getForm: () => formViewerRef.current,\n getResultView: () => outputDataRef.current,\n getSchema: () => formEditorRef.current.getSchema(),\n saveSchema: () => formEditorRef.current.saveSchema(),\n setSchema: setSchema,\n setData: setData,\n };\n\n onInit();\n }, [apiLinkTarget, onInit]);\n\n // separate effect for state to avoid re-creating the api object every time\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api.getState = () => ({ schema, data });\n apiLinkTarget.api.load = load;\n }, [apiLinkTarget, schema, data, load]);\n\n const handleDownload = useCallback(() => {\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('fjs-container', 'fjs-pgl-root')}>\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 <Section name=\"Form Definition\">\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" title=\"Download form definition\" onClick={handleDownload}>\n Download\n </button>\n </Section.HeaderItem>\n )}\n\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" onClick={showEmbedModal}>\n Embed\n </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={viewerContainerRef} class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Input\">\n <div ref={inputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n </Section>\n <Section name=\"Form Output\">\n <div ref={outputDataContainerRef} 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// helpers ///////////////\n\nfunction toString(obj) {\n return JSON.stringify(obj, null, ' ');\n}\n\nfunction createDataEditorPlaceholder() {\n const element = document.createElement('p');\n\n element.innerHTML =\n 'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\n 'Follow the JSON format like this:\\n\\n' +\n '{\\n \"variable\": \"value\"\\n}';\n\n return element;\n}\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 { import('@bpmn-io/form-js-viewer/dist/types/types').FormProperties } FormProperties\n * @typedef { import('@bpmn-io/form-js-editor/dist/types/types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * actions?: { display: Boolean }\n * additionalModules?: Array<any>\n * container?: Element\n * data: any\n * editor?: { inlinePropertiesPanel: Boolean }\n * editorAdditionalModules?: Array<any>\n * editorProperties?: FormEditorProperties\n * exporter?: { name: String, version: String }\n * propertiesPanel?: { parent: Element, feelPopupContainer: Element }\n * schema: any\n * viewerAdditionalModules?: Array<any>\n * viewerProperties?: FormProperties\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nfunction Playground(options) {\n const { container: parent, schema: initialSchema, data: initialData, ...rest } = options;\n\n const emitter = mitt();\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 this.api.setSchema(JSON.parse(file.contents));\n } catch (err) {\n // TODO(nikku): indicate JSON parse error\n }\n }\n });\n\n const safe = function (fn) {\n return function (...args) {\n if (!this.api) {\n throw new Error('Playground is not initialized.');\n }\n\n return fn(...args);\n };\n };\n\n const onInit = function () {\n emitter.emit('formPlayground.init');\n };\n\n container.addEventListener('dragover', handleDrop);\n\n render(\n <PlaygroundRoot\n initialSchema={initialSchema}\n initialData={initialData}\n emit={emitter.emit}\n apiLinkTarget={this}\n onInit={onInit}\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', () => {\n render(null, container);\n parent.removeChild(container);\n });\n\n this.destroy = () => this.emit('destroy');\n\n this.getState = safe(() => this.api.getState());\n\n this.getSchema = safe(() => this.api.getSchema());\n\n this.setSchema = safe((schema) => this.api.setSchema(schema));\n\n this.saveSchema = safe(() => this.api.saveSchema());\n\n this.get = safe((name, strict) => this.api.get(name, strict));\n\n this.getDataEditor = safe(() => this.api.getDataEditor());\n\n this.getEditor = safe(() => this.api.getEditor());\n\n this.getForm = safe((name, strict) => this.api.getForm(name, strict));\n\n this.getResultView = safe(() => this.api.getResultView());\n\n this.attachEditorContainer = safe((node) => this.api.attachEditorContainer(node));\n\n this.attachPreviewContainer = safe((node) => this.api.attachFormContainer(node));\n\n this.attachDataContainer = safe((node) => this.api.attachDataContainer(node));\n\n this.attachResultContainer = safe((node) => this.api.attachResultContainer(node));\n\n this.attachPaletteContainer = safe((node) => this.api.attachPaletteContainer(node));\n\n this.attachPropertiesPanelContainer = safe((node) => this.api.attachPropertiesPanelContainer(node));\n}\n\nexport { Playground };\n"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","type","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletionExtension","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","languageCompartment","Compartment","of","json","tabSizeCompartment","EditorState","tabSize","autocompletionConfCompartment","placeholderLinterExtension","createPlaceholderLinterExtension","container","createState","doc","extensions","basicSetup","lintGutter","linter","jsonParseLinter","keymap","indentWithTab","readOnly","EditorView","updateListener","update","docChanged","emit","value","toString","create","view","setValue","newValue","oldValue","diff","findDiff","dispatch","changes","start","end","insert","text","selection","anchor","length","getValue","setVariables","effects","reconfigure","getView","on","off","attachTo","_container","appendChild","dom","domClasses","body","add","destroy","removeChild","remove","placeholders","querySelectorAll","oldStr","newStr","minLength","Math","min","slice","endOld","endNew","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","config","additionalModules","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","propertiesPanel","propertiesPanelConfig","apiLinkTarget","onInit","display","displayActions","editorContainerRef","paletteContainerRef","propertiesPanelContainerRef","viewerContainerRef","inputDataContainerRef","outputDataContainerRef","formEditorRef","formViewerRef","inputDataRef","outputDataRef","showEmbed","setShowEmbed","useState","setSchema","setData","load","useCallback","importSchema","inputDataEditor","tabIndex","createDataEditorPlaceholder","outputDataEditor","formViewer","Form","properties","ariaLabel","formEditor","FormEditor","renderer","compact","palette","parent","formField","formFields","get","generateInitialDemoData","id","isFunction","initialDemoData","includes","undefined","currentData","newData","getSchema","updateOutputData","submitData","_getSubmitData","parse","error","initialSchema","initialData","getSchemaVariables","api","attachDataContainer","node","attachResultContainer","attachFormContainer","attachEditorContainer","attachPaletteContainer","attachPropertiesPanelContainer","strict","getDataEditor","getEditor","getForm","getResultView","saveSchema","getState","handleDownload","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","safe","fn","args","Error","render","attachPreviewContainer"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","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 useEffect(() => {\n function handleKey(event) {\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\">{props.children}</div>\n <div class=\"fjs-pgl-modal-footer\">\n <button type=\"button\" class=\"fjs-pgl-button fjs-pgl-button-default\" onClick={props.onClose}>\n Close\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef } from 'preact/hooks';\n\nimport { Modal } from './Modal';\n\nexport function EmbedModal(props) {\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>\n Use the following HTML snippet to embed your form with <a href=\"https://github.com/bpmn-io/form-js\">form-js</a>:\n </p>\n\n <textarea spellCheck=\"false\" ref={fieldRef}>\n {snippet}\n </textarea>\n </Modal>\n );\n}\n\n// helpers ///////////\n\nfunction serializeValue(obj) {\n return JSON.stringify(JSON.stringify(obj)).replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","import { Facet } from '@codemirror/state';\n\n/**\n * @type {Facet<import('..').Variables>} Variables\n */\nexport const variablesFacet = Facet.define();\n","import { autocompletion } from '@codemirror/autocomplete';\nimport { variablesFacet } from './VariablesFacet';\n\nimport { syntaxTree } from '@codemirror/language';\n\nexport function autocompletionExtension() {\n return [\n autocompletion({\n override: [completions],\n }),\n ];\n}\n\nfunction completions(context) {\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}\n","import mitt from 'mitt';\nimport { basicSetup } from 'codemirror';\nimport { EditorView, keymap, placeholder } 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';\nimport { autocompletionExtension } from './autocompletion/index';\nimport { variablesFacet } from './autocompletion/VariablesFacet';\nimport { classes as domClasses } from 'min-dom';\n\nconst NO_LINT_CLS = 'fjs-cm-no-lint';\n\n/**\n * @param {object} options\n * @param {boolean} [options.readonly]\n * @param {object} [options.contentAttributes]\n * @param {string | HTMLElement} [options.placeholder]\n */\nexport function JSONEditor(options = {}) {\n const { contentAttributes = {}, placeholder: editorPlaceholder, readonly = false } = options;\n const emitter = mitt();\n\n const languageCompartment = new Compartment().of(json());\n const tabSizeCompartment = new Compartment().of(EditorState.tabSize.of(2));\n const autocompletionConfCompartment = new Compartment();\n const placeholderLinterExtension = createPlaceholderLinterExtension();\n\n let container = null;\n\n function createState(doc, variables = []) {\n const extensions = [\n basicSetup,\n languageCompartment,\n tabSizeCompartment,\n lintGutter(),\n linter(jsonParseLinter()),\n placeholderLinterExtension,\n autocompletionConfCompartment.of(variablesFacet.of(variables)),\n autocompletionExtension(),\n keymap.of([indentWithTab]),\n editorPlaceholder ? placeholder(editorPlaceholder) : [],\n EditorState.readOnly.of(readonly),\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n emitter.emit('changed', { value: update.state.doc.toString() });\n }\n }),\n EditorView.contentAttributes.of(contentAttributes),\n ];\n\n return EditorState.create({ doc, extensions });\n }\n\n const view = new EditorView({\n state: createState(''),\n });\n\n this.setValue = function (newValue) {\n const oldValue = view.state.doc.toString();\n\n const diff = findDiff(oldValue, newValue);\n\n if (diff) {\n view.dispatch({\n changes: { from: diff.start, to: diff.end, insert: diff.text },\n selection: { anchor: diff.start + diff.text.length },\n });\n }\n };\n\n this.getValue = function () {\n return view.state.doc.toString();\n };\n\n this.setVariables = function (variables) {\n view.dispatch({ effects: autocompletionConfCompartment.reconfigure(variablesFacet.of(variables)) });\n };\n\n this.getView = function () {\n return view;\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 = _container;\n container.appendChild(view.dom);\n domClasses(container, document.body).add('fjs-json-editor');\n };\n\n this.destroy = function () {\n if (container && view.dom) {\n container.removeChild(view.dom);\n domClasses(container, document.body).remove('fjs-json-editor');\n }\n view.destroy();\n };\n\n function createPlaceholderLinterExtension() {\n return linter((view) => {\n const placeholders = view.dom.querySelectorAll('.cm-placeholder');\n if (placeholders.length > 0) {\n domClasses(container, document.body).add(NO_LINT_CLS);\n } else {\n domClasses(container, document.body).remove(NO_LINT_CLS);\n }\n return [];\n });\n }\n}\n\nfunction findDiff(oldStr, newStr) {\n if (oldStr === newStr) {\n return null;\n }\n\n oldStr = oldStr || '';\n newStr = newStr || '';\n\n let minLength = Math.min(oldStr.length, newStr.length);\n let start = 0;\n\n while (start < minLength && oldStr[start] === newStr[start]) {\n start++;\n }\n\n if (start === minLength) {\n return {\n start: start,\n text: newStr.slice(start),\n end: oldStr.length,\n };\n }\n\n let endOld = oldStr.length;\n let endNew = newStr.length;\n\n while (endOld > start && endNew > start && oldStr[endOld - 1] === newStr[endNew - 1]) {\n endOld--;\n endNew--;\n }\n\n return {\n start: start,\n text: newStr.slice(start, endNew),\n end: endOld,\n };\n}\n","export function Section(props) {\n const elements = Array.isArray(props.children) ? props.children : [props.children];\n\n const { headerItems, children } = elements.reduce(\n (_, child) => {\n const bucket = child.type === Section.HeaderItem ? _.headerItems : _.children;\n\n bucket.push(child);\n\n return _;\n },\n { headerItems: [], children: [] },\n );\n\n return (\n <div class=\"fjs-pgl-section\">\n <h1 class=\"header\">\n {props.name} {headerItems.length ? <span class=\"header-items\">{headerItems}</span> : null}\n </h1>\n <div class=\"body\">{children}</div>\n </div>\n );\n}\n\nSection.HeaderItem = function (props) {\n return props.children;\n};\n","import { useRef, useEffect, useState, useCallback } from 'preact/hooks';\nimport { isFunction } from 'min-dash';\nimport download from 'downloadjs';\n\nimport classNames from 'classnames';\n\nimport { Form, getSchemaVariables } from '@bpmn-io/form-js-viewer';\n\nimport { FormEditor } from '@bpmn-io/form-js-editor';\n\nimport { EmbedModal } from './EmbedModal';\nimport { JSONEditor } from './JSONEditor';\nimport { Section } from './Section';\n\nimport './FileDrop.css';\nimport './PlaygroundRoot.css';\n\nexport function PlaygroundRoot(config) {\n const {\n additionalModules, // goes into both editor + viewer\n actions: actionsConfig,\n emit,\n exporter: exporterConfig,\n viewerProperties,\n editorProperties,\n viewerAdditionalModules,\n editorAdditionalModules,\n propertiesPanel: propertiesPanelConfig,\n apiLinkTarget,\n onInit,\n } = config;\n\n const { display: displayActions = true } = actionsConfig || {};\n\n const editorContainerRef = useRef();\n const paletteContainerRef = useRef();\n const propertiesPanelContainerRef = useRef();\n const viewerContainerRef = useRef();\n const inputDataContainerRef = useRef();\n const outputDataContainerRef = useRef();\n\n const formEditorRef = useRef();\n const formViewerRef = useRef();\n const inputDataRef = useRef();\n const outputDataRef = useRef();\n\n const [showEmbed, setShowEmbed] = useState(false);\n const [schema, setSchema] = useState();\n const [data, setData] = useState();\n\n const load = useCallback((schema, data) => {\n formEditorRef.current.importSchema(schema, data);\n inputDataRef.current.setValue(toString(data));\n setSchema(schema);\n setData(data);\n }, []);\n\n // initialize and link the editors\n useEffect(() => {\n const inputDataEditor = (inputDataRef.current = new JSONEditor({\n contentAttributes: { 'aria-label': 'Form Input', tabIndex: 0 },\n placeholder: createDataEditorPlaceholder(),\n }));\n\n const outputDataEditor = (outputDataRef.current = new JSONEditor({\n readonly: true,\n contentAttributes: { 'aria-label': 'Form Output', tabIndex: 0 },\n }));\n\n const formViewer = (formViewerRef.current = new Form({\n container: viewerContainerRef.current,\n additionalModules: [...(additionalModules || []), ...(viewerAdditionalModules || [])],\n properties: {\n ...(viewerProperties || {}),\n ariaLabel: 'Form Preview',\n },\n }));\n\n const formEditor = (formEditorRef.current = new FormEditor({\n container: editorContainerRef.current,\n renderer: {\n compact: true,\n },\n palette: {\n parent: paletteContainerRef.current,\n },\n propertiesPanel: {\n parent: propertiesPanelContainerRef.current,\n ...(propertiesPanelConfig || {}),\n },\n exporter: exporterConfig,\n properties: {\n ...(editorProperties || {}),\n ariaLabel: 'Form Definition',\n },\n additionalModules: [...(additionalModules || []), ...(editorAdditionalModules || [])],\n }));\n\n formEditor.on('formField.add', ({ formField }) => {\n const formFields = formEditor.get('formFields');\n const { config } = formFields.get(formField.type);\n const { generateInitialDemoData } = config;\n const { id } = formField;\n\n if (!isFunction(generateInitialDemoData)) {\n return;\n }\n\n const initialDemoData = generateInitialDemoData(formField);\n\n if ([initialDemoData, id].includes(undefined)) {\n return;\n }\n\n setData((currentData) => {\n const newData = {\n ...currentData,\n [id]: initialDemoData,\n };\n\n inputDataRef.current.setValue(toString(newData));\n\n return newData;\n });\n });\n\n formEditor.on('changed', () => {\n setSchema(formEditor.getSchema());\n });\n\n formEditor.on('formEditor.rendered', () => {\n // notify interested parties after render\n emit('formPlayground.rendered');\n });\n\n const updateOutputData = () => {\n const submitData = formViewer._getSubmitData();\n outputDataEditor.setValue(toString(submitData));\n };\n\n // pipe viewer changes to output data editor\n formViewer.on('changed', updateOutputData);\n formViewer.on('formFieldInstance.added', updateOutputData);\n formViewer.on('formFieldInstance.removed', updateOutputData);\n\n inputDataEditor.on('changed', (event) => {\n try {\n setData(JSON.parse(event.value));\n } catch (error) {\n // notify interested about input data error\n emit('formPlayground.inputDataError', error);\n }\n });\n\n inputDataEditor.attachTo(inputDataContainerRef.current);\n outputDataEditor.attachTo(outputDataContainerRef.current);\n\n return () => {\n inputDataEditor.destroy();\n outputDataEditor.destroy();\n formViewer.destroy();\n formEditor.destroy();\n };\n }, [\n additionalModules,\n editorAdditionalModules,\n editorProperties,\n emit,\n exporterConfig,\n propertiesPanelConfig,\n viewerAdditionalModules,\n viewerProperties,\n ]);\n\n // initialize data through props\n useEffect(() => {\n if (!config.initialSchema) {\n return;\n }\n\n load(config.initialSchema, config.initialData || {});\n }, [config.initialSchema, config.initialData, load]);\n\n useEffect(() => {\n schema && formViewerRef.current.importSchema(schema, data);\n }, [schema, data]);\n\n useEffect(() => {\n if (schema && inputDataContainerRef.current) {\n const variables = getSchemaVariables(schema);\n inputDataRef.current.setVariables(variables);\n }\n }, [schema]);\n\n // exposes api to parent\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api = {\n attachDataContainer: (node) => inputDataRef.current.attachTo(node),\n attachResultContainer: (node) => outputDataRef.current.attachTo(node),\n attachFormContainer: (node) => formViewerRef.current.attachTo(node),\n attachEditorContainer: (node) => formEditorRef.current.attachTo(node),\n attachPaletteContainer: (node) => formEditorRef.current.get('palette').attachTo(node),\n attachPropertiesPanelContainer: (node) => formEditorRef.current.get('propertiesPanel').attachTo(node),\n get: (name, strict) => formEditorRef.current.get(name, strict),\n getDataEditor: () => inputDataRef.current,\n getEditor: () => formEditorRef.current,\n getForm: () => formViewerRef.current,\n getResultView: () => outputDataRef.current,\n getSchema: () => formEditorRef.current.getSchema(),\n saveSchema: () => formEditorRef.current.saveSchema(),\n setSchema: setSchema,\n setData: setData,\n };\n\n onInit();\n }, [apiLinkTarget, onInit]);\n\n // separate effect for state to avoid re-creating the api object every time\n useEffect(() => {\n if (!apiLinkTarget) {\n return;\n }\n\n apiLinkTarget.api.getState = () => ({ schema, data });\n apiLinkTarget.api.load = load;\n }, [apiLinkTarget, schema, data, load]);\n\n const handleDownload = useCallback(() => {\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('fjs-container', 'fjs-pgl-root')}>\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 <Section name=\"Form Definition\">\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" title=\"Download form definition\" onClick={handleDownload}>\n Download\n </button>\n </Section.HeaderItem>\n )}\n\n {displayActions && (\n <Section.HeaderItem>\n <button type=\"button\" class=\"fjs-pgl-button\" onClick={showEmbedModal}>\n Embed\n </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={viewerContainerRef} class=\"fjs-pgl-form-container\"></div>\n </Section>\n <Section name=\"Form Input\">\n <div ref={inputDataContainerRef} class=\"fjs-pgl-text-container\"></div>\n </Section>\n <Section name=\"Form Output\">\n <div ref={outputDataContainerRef} 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// helpers ///////////////\n\nfunction toString(obj) {\n return JSON.stringify(obj, null, ' ');\n}\n\nfunction createDataEditorPlaceholder() {\n const element = document.createElement('p');\n\n element.innerHTML =\n 'Use this panel to simulate the form input, such as process variables.\\nThis helps to test the form by populating the preview.\\n\\n' +\n 'Follow the JSON format like this:\\n\\n' +\n '{\\n \"variable\": \"value\"\\n}';\n\n return element;\n}\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 { import('@bpmn-io/form-js-viewer/dist/types/types').FormProperties } FormProperties\n * @typedef { import('@bpmn-io/form-js-editor/dist/types/types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * actions?: { display: Boolean }\n * additionalModules?: Array<any>\n * container?: Element\n * data: any\n * editor?: { inlinePropertiesPanel: Boolean }\n * editorAdditionalModules?: Array<any>\n * editorProperties?: FormEditorProperties\n * exporter?: { name: String, version: String }\n * propertiesPanel?: { parent: Element, feelPopupContainer: Element }\n * schema: any\n * viewerAdditionalModules?: Array<any>\n * viewerProperties?: FormProperties\n * } } FormPlaygroundOptions\n */\n\n/**\n * @param {FormPlaygroundOptions} options\n */\nfunction Playground(options) {\n const { container: parent, schema: initialSchema, data: initialData, ...rest } = options;\n\n const emitter = mitt();\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 this.api.setSchema(JSON.parse(file.contents));\n } catch (err) {\n // TODO(nikku): indicate JSON parse error\n }\n }\n });\n\n const safe = function (fn) {\n return function (...args) {\n if (!this.api) {\n throw new Error('Playground is not initialized.');\n }\n\n return fn(...args);\n };\n };\n\n const onInit = function () {\n emitter.emit('formPlayground.init');\n };\n\n container.addEventListener('dragover', handleDrop);\n\n render(\n <PlaygroundRoot\n initialSchema={initialSchema}\n initialData={initialData}\n emit={emitter.emit}\n apiLinkTarget={this}\n onInit={onInit}\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', () => {\n render(null, container);\n parent.removeChild(container);\n });\n\n this.destroy = () => this.emit('destroy');\n\n this.getState = safe(() => this.api.getState());\n\n this.getSchema = safe(() => this.api.getSchema());\n\n this.setSchema = safe((schema) => this.api.setSchema(schema));\n\n this.saveSchema = safe(() => this.api.saveSchema());\n\n this.get = safe((name, strict) => this.api.get(name, strict));\n\n this.getDataEditor = safe(() => this.api.getDataEditor());\n\n this.getEditor = safe(() => this.api.getEditor());\n\n this.getForm = safe((name, strict) => this.api.getForm(name, strict));\n\n this.getResultView = safe(() => this.api.getResultView());\n\n this.attachEditorContainer = safe((node) => this.api.attachEditorContainer(node));\n\n this.attachPreviewContainer = safe((node) => this.api.attachFormContainer(node));\n\n this.attachDataContainer = safe((node) => this.api.attachDataContainer(node));\n\n this.attachResultContainer = safe((node) => this.api.attachResultContainer(node));\n\n this.attachPaletteContainer = safe((node) => this.api.attachPaletteContainer(node));\n\n this.attachPropertiesPanelContainer = safe((node) => this.api.attachPropertiesPanelContainer(node));\n}\n\nexport { Playground };\n"],"names":["Modal","props","useEffect","handleKey","event","key","stopPropagation","onClose","document","addEventListener","removeEventListener","_jsxs","class","children","_jsx","onClick","name","type","EmbedModal","schema","serializeValue","data","fieldRef","useRef","snippet","trim","current","select","href","spellCheck","ref","obj","JSON","stringify","replace","variablesFacet","Facet","define","autocompletionExtension","autocompletion","override","completions","context","variables","state","facet","options","map","v","label","nodeBefore","syntaxTree","resolve","pos","explicit","word","matchBefore","from","to","NO_LINT_CLS","JSONEditor","contentAttributes","placeholder","editorPlaceholder","readonly","emitter","mitt","languageCompartment","Compartment","of","json","tabSizeCompartment","EditorState","tabSize","autocompletionConfCompartment","placeholderLinterExtension","createPlaceholderLinterExtension","container","createState","doc","extensions","basicSetup","lintGutter","linter","jsonParseLinter","keymap","indentWithTab","readOnly","EditorView","updateListener","update","docChanged","emit","value","toString","create","view","setValue","newValue","oldValue","diff","findDiff","dispatch","changes","start","end","insert","text","selection","anchor","length","getValue","setVariables","effects","reconfigure","getView","on","off","attachTo","_container","appendChild","dom","domClasses","body","add","destroy","removeChild","remove","placeholders","querySelectorAll","oldStr","newStr","minLength","Math","min","slice","endOld","endNew","Section","elements","Array","isArray","headerItems","reduce","_","child","bucket","HeaderItem","push","PlaygroundRoot","config","additionalModules","actions","actionsConfig","exporter","exporterConfig","viewerProperties","editorProperties","viewerAdditionalModules","editorAdditionalModules","propertiesPanel","propertiesPanelConfig","apiLinkTarget","onInit","display","displayActions","editorContainerRef","paletteContainerRef","propertiesPanelContainerRef","viewerContainerRef","inputDataContainerRef","outputDataContainerRef","formEditorRef","formViewerRef","inputDataRef","outputDataRef","showEmbed","setShowEmbed","useState","setSchema","setData","load","useCallback","importSchema","inputDataEditor","tabIndex","createDataEditorPlaceholder","outputDataEditor","formViewer","Form","properties","ariaLabel","formEditor","FormEditor","renderer","compact","palette","parent","formField","formFields","get","generateInitialDemoData","id","isFunction","initialDemoData","includes","undefined","currentData","newData","getSchema","updateOutputData","submitData","_getSubmitData","parse","error","initialSchema","initialData","getSchemaVariables","api","attachDataContainer","node","attachResultContainer","attachFormContainer","attachEditorContainer","attachPaletteContainer","attachPropertiesPanelContainer","strict","getDataEditor","getEditor","getForm","getResultView","saveSchema","getState","handleDownload","download","hideEmbedModal","showEmbedModal","classNames","title","element","createElement","innerHTML","Playground","rest","classList","handleDrop","fileDrop","files","file","contents","err","safe","fn","args","Error","render","attachPreviewContainer"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bpmn-io/form-js-playground",
3
- "version": "1.11.0",
3
+ "version": "1.11.1",
4
4
  "description": "A form-js playground",
5
5
  "files": [
6
6
  "dist"
@@ -45,8 +45,8 @@
45
45
  "url": "https://github.com/bpmn-io"
46
46
  },
47
47
  "dependencies": {
48
- "@bpmn-io/form-js-editor": "^1.11.0",
49
- "@bpmn-io/form-js-viewer": "^1.11.0",
48
+ "@bpmn-io/form-js-editor": "^1.11.1",
49
+ "@bpmn-io/form-js-viewer": "^1.11.1",
50
50
  "@codemirror/autocomplete": "^6.18.1",
51
51
  "@codemirror/commands": "^6.6.2",
52
52
  "@codemirror/lang-json": "^6.0.1",
@@ -71,5 +71,5 @@
71
71
  "rollup-plugin-css-only": "^4.5.2",
72
72
  "style-loader": "^4.0.0"
73
73
  },
74
- "gitHead": "d1731fe95e832b1408564d14dc6d4a139a6a90ab"
74
+ "gitHead": "fa5965e45151907b42d679b38b466efa526b1a7b"
75
75
  }