From 37fbb1c6f00154871cf30c0f465a776fb4e4a88e Mon Sep 17 00:00:00 2001 From: jasquat Date: Mon, 31 Oct 2022 16:51:27 -0400 Subject: [PATCH 1/9] using new bpmn-js-spiffworkflow for python scripts w/ burnettk danfunk --- .../src/components/ReactDiagramEditor.tsx | 17 ++++++---- .../src/routes/ProcessModelEditDiagram.tsx | 33 ++++++++++++++----- .../src/routes/TaskShow.tsx | 2 +- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx b/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx index c8b079f39..0a604972b 100644 --- a/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx +++ b/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx @@ -177,11 +177,16 @@ export default function ReactDiagramEditor({ }); } - function handleLaunchScriptEditor(element: any) { + function handleLaunchScriptEditor( + element: any, + script: string, + scriptType: string, + eventBus: any + ) { if (onLaunchScriptEditor) { setPerformingXmlUpdates(true); - const modeling = diagramModeler.get('modeling'); - onLaunchScriptEditor(element, modeling); + // const modeling = diagramModeler.get('modeling'); + onLaunchScriptEditor(element, script, scriptType, eventBus); } } @@ -199,12 +204,12 @@ export default function ReactDiagramEditor({ setDiagramModelerState(diagramModeler); - diagramModeler.on('launch.script.editor', (event: any) => { - const { error, element } = event; + diagramModeler.on('script.editor.launch', (event: any) => { + const { error, element, scriptType, script, eventBus } = event; if (error) { console.log(error); } - handleLaunchScriptEditor(element); + handleLaunchScriptEditor(element, script, scriptType, eventBus); }); // 'element.hover', diff --git a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx index 2382fce72..53f335a29 100644 --- a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx +++ b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx @@ -18,7 +18,9 @@ export default function ProcessModelEditDiagram() { const [showFileNameEditor, setShowFileNameEditor] = useState(false); const handleShowFileNameEditor = () => setShowFileNameEditor(true); - const [scriptText, setScriptText] = useState(''); + const [scriptText, setScriptText] = useState(''); + const [scriptType, setScriptType] = useState(''); + const [scriptEventBus, setScriptEventBus] = useState(null); const [scriptModeling, setScriptModeling] = useState(null); const [scriptElement, setScriptElement] = useState(null); const [showScriptEditor, setShowScriptEditor] = useState(false); @@ -275,25 +277,38 @@ export default function ProcessModelEditDiagram() { } }; - const onLaunchScriptEditor = (element: any, modeling: any) => { - setScriptText(element.businessObject.script || ''); - setScriptModeling(modeling); + const onLaunchScriptEditor = ( + element: any, + script: string, + scriptType: string, + eventBus: any + ) => { + setScriptText(script || ''); + setScriptType(scriptType); + setScriptEventBus(eventBus); + // setScriptModeling(modeling); setScriptElement(element); - setScriptUnitTestElementWithIndex(0, element); + // setScriptUnitTestElementWithIndex(0, element); handleShowScriptEditor(); }; const handleScriptEditorClose = () => { + scriptEventBus.fire('script.editor.update', { + scriptType, + script: scriptText, + element: scriptElement, + }); + resetUnitTextResult(); setShowScriptEditor(false); }; const handleEditorScriptChange = (value: any) => { setScriptText(value); - (scriptModeling as any).updateProperties(scriptElement, { - scriptFormat: 'python', - script: value, - }); + // (scriptModeling as any).updateProperties(scriptElement, { + // scriptFormat: 'python', + // script: value, + // }); }; const handleEditorScriptTestUnitInputChange = (value: any) => { diff --git a/spiffworkflow-frontend/src/routes/TaskShow.tsx b/spiffworkflow-frontend/src/routes/TaskShow.tsx index 28fc8582a..c1c1cfe2d 100644 --- a/spiffworkflow-frontend/src/routes/TaskShow.tsx +++ b/spiffworkflow-frontend/src/routes/TaskShow.tsx @@ -144,7 +144,7 @@ export default function TaskShow() { const instructionsElement = (taskToUse: any) => { let instructions = ''; - if (taskToUse.type === 'Manual Task') { + if (taskToUse.properties.instructionsForEndUser) { instructions = taskToUse.properties.instructionsForEndUser; } return ( From 483fabc606948aa4448ce565dee1c229bb643c8e Mon Sep 17 00:00:00 2001 From: jasquat Date: Mon, 31 Oct 2022 16:52:44 -0400 Subject: [PATCH 2/9] updated backend to send instructions for user tasks through jinja as well w/ burnettk danfunk --- .../routes/process_api_blueprint.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py index 7c7643bf9..f2ffec20f 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/routes/process_api_blueprint.py @@ -1069,12 +1069,13 @@ def task_show(process_instance_id: int, task_id: str) -> flask.wrappers.Response ) if ui_form_contents: task.form_ui_schema = ui_form_contents - elif task.type == "Manual Task": - if task.properties and task.data: - if task.properties["instructionsForEndUser"]: - task.properties["instructionsForEndUser"] = render_jinja_template( - task.properties["instructionsForEndUser"], task.data - ) + + if task.properties and task.data and "instructionsForEndUser" in task.properties: + print(f"task.properties['instructionsForEndUser']: {task.properties['instructionsForEndUser']}") + if task.properties["instructionsForEndUser"]: + task.properties["instructionsForEndUser"] = render_jinja_template( + task.properties["instructionsForEndUser"], task.data + ) return make_response(jsonify(task), 200) From 130f74daa57dee2beee38b5214cb0aaedafa5ed4 Mon Sep 17 00:00:00 2001 From: jasquat Date: Mon, 31 Oct 2022 16:58:10 -0400 Subject: [PATCH 3/9] cleaned up some frontend code and put back logic for script unit tests w/ burnettk danfunk --- .../src/components/ReactDiagramEditor.tsx | 4 ++-- .../src/routes/ProcessModelEditDiagram.tsx | 19 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx b/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx index 0a604972b..9728e7d50 100644 --- a/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx +++ b/spiffworkflow-frontend/src/components/ReactDiagramEditor.tsx @@ -185,8 +185,8 @@ export default function ReactDiagramEditor({ ) { if (onLaunchScriptEditor) { setPerformingXmlUpdates(true); - // const modeling = diagramModeler.get('modeling'); - onLaunchScriptEditor(element, script, scriptType, eventBus); + const modeling = diagramModeler.get('modeling'); + onLaunchScriptEditor(element, script, scriptType, eventBus, modeling); } } diff --git a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx index 53f335a29..aa1643d84 100644 --- a/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx +++ b/spiffworkflow-frontend/src/routes/ProcessModelEditDiagram.tsx @@ -280,15 +280,20 @@ export default function ProcessModelEditDiagram() { const onLaunchScriptEditor = ( element: any, script: string, - scriptType: string, - eventBus: any + scriptTypeString: string, + eventBus: any, + modeling: any ) => { + // TODO: modeling is only needed for script unit tests. + // we should update this to act like updating scripts + // where we pass an event to bpmn-js + setScriptModeling(modeling); + setScriptText(script || ''); - setScriptType(scriptType); + setScriptType(scriptTypeString); setScriptEventBus(eventBus); - // setScriptModeling(modeling); setScriptElement(element); - // setScriptUnitTestElementWithIndex(0, element); + setScriptUnitTestElementWithIndex(0, element); handleShowScriptEditor(); }; @@ -305,10 +310,6 @@ export default function ProcessModelEditDiagram() { const handleEditorScriptChange = (value: any) => { setScriptText(value); - // (scriptModeling as any).updateProperties(scriptElement, { - // scriptFormat: 'python', - // script: value, - // }); }; const handleEditorScriptTestUnitInputChange = (value: any) => { From 29020904199084a2307736fa2f1b56bcea389bd8 Mon Sep 17 00:00:00 2001 From: burnettk Date: Mon, 31 Oct 2022 17:02:34 -0400 Subject: [PATCH 4/9] Squashed 'bpmn-js-spiffworkflow/' changes from 4ed985f4a..ff9a4fd28 ff9a4fd28 Merge pull request #22 from sartography/bug/pre_post_script_launch_button 1fd817a8f no need to pass element back from the calling launch script event w/ burnettk danfunk fbcda3f67 Specify Peer Dependencies -- as it is likely that embedding this library will occur within projects that use other bpmn-js components. 3d77111f9 Hooks, and an example for setting up a Markdown editor for markdown content. 2cdae0ca6 Display User Instructions for Manual Tasks and End Events as well. 08c03a4dd Removing the dist directory. 3f2abb73a fixes a minor bug that prevented the editor from opening if no script was yet entered in the Script Task. c78afceb3 Allow pre-script and post-script's "Launch Editor" button to work correctly. use commandStack to update Moddle Properties. Providing a working example of using a code editor with this library, so it's clear how the integration would work. Rename titles of various components -- don't call sections "SpiffWorkflow", but maybe we find a way to more gently call out these extensions later on. git-subtree-dir: bpmn-js-spiffworkflow git-subtree-split: ff9a4fd28f0ef0fd43df344352217be2eeca70c8 --- app/app.js | 57 +- app/css/app.css | 33 +- app/index.html | 37 + .../ExtensionsPropertiesProvider.js | 36 +- .../SpiffExtensionInstructionsForEndUser.js | 167 +- .../propertiesPanel/SpiffScriptGroup.js | 153 +- dist/index.js | 40349 ---------------- dist/index.js.map | 1 - dist/src_moddle_spiffworkflow_json.index.js | 14 - package-lock.json | 184 +- package.json | 6 +- 11 files changed, 483 insertions(+), 40554 deletions(-) delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 dist/src_moddle_spiffworkflow_json.index.js diff --git a/app/app.js b/app/app.js index a1a659519..eb0c5bdf9 100644 --- a/app/app.js +++ b/app/app.js @@ -3,7 +3,7 @@ import { BpmnPropertiesPanelModule, BpmnPropertiesProviderModule, } from 'bpmn-js-properties-panel'; -import diagramXML from '../test/spec/bpmn/script_task.bpmn'; +import diagramXML from '../test/spec/bpmn/user_form.bpmn'; import spiffworkflow from './spiffworkflow'; import setupFileOperations from './fileOperations'; @@ -45,7 +45,7 @@ try { bpmnModeler.importXML(diagramXML).then(() => {}); /** - * It is possible to poplulate certain components using API calls to + * It is possible to populate certain components using API calls to * a backend. Here we mock out the API call, but this gives you * a sense of how things might work. * @@ -75,7 +75,58 @@ bpmnModeler.on('spiff.service_tasks.requested', (event) => { }); }); +/** + * Python Script authoring is best done in some sort of editor + * here is an example that will connect a large CodeMirror editor + * to the "Launch Editor" buttons (Script Tasks, and the Pre and Post + * scripts on all other tasks. + */ +const myCodeMirror = CodeMirror(document.getElementById('code_editor'), { + lineNumbers: true, + mode: 'python', +}); + +const saveCodeBtn = document.getElementById('saveCode'); +let launchCodeEvent = null; + +bpmnModeler.on('script.editor.launch', (newEvent) => { + launchCodeEvent = newEvent; + myCodeMirror.setValue(launchCodeEvent.script); + setTimeout(function() { + myCodeMirror.refresh(); + },1); // We have to wait a moment before calling refresh. + document.getElementById('code_overlay').style.display = 'block'; + document.getElementById('code_editor').focus(); +}); + +saveCodeBtn.addEventListener('click', (_event) => { + const { scriptType, element } = launchCodeEvent; + launchCodeEvent.eventBus.fire('script.editor.update', { element, scriptType, script: myCodeMirror.getValue()} ) + document.getElementById('code_overlay').style.display = 'none'; +}); + + +/** + * Like Python Script Editing, it can be nice to edit your Markdown in a + * good editor as well. + */ +var simplemde = new SimpleMDE({ element: document.getElementById("markdown_textarea") }); +let launchMarkdownEvent = null; +bpmnModeler.on('markdown.editor.launch', (newEvent) => { + launchMarkdownEvent = newEvent; + simplemde.value(launchMarkdownEvent.markdown); + document.getElementById('markdown_overlay').style.display = 'block'; + document.getElementById('markdown_editor').focus(); +}); + +const saveMarkdownBtn = document.getElementById('saveMarkdown'); +saveMarkdownBtn.addEventListener('click', (_event) => { + const { element } = launchMarkdownEvent; + launchMarkdownEvent.eventBus.fire('markdown.editor.update', { element, markdown:simplemde.value() }); + document.getElementById('markdown_overlay').style.display = 'none'; +}); + // This handles the download and upload buttons - it isn't specific to // the BPMN modeler or these extensions, just a quick way to allow you to -// create and save files. +// create and save files, so keeping it outside the example. setupFileOperations(bpmnModeler); diff --git a/app/css/app.css b/app/css/app.css index bd44a1fe9..6beed1933 100644 --- a/app/css/app.css +++ b/app/css/app.css @@ -1,9 +1,3 @@ -* { - box-sizing: border-box; - margin: 0; - outline: none; - padding: 0; -} html, body { height: 100%; @@ -57,3 +51,30 @@ html, body { .bpmn-js-spiffworkflow-btn:hover { background-color: RoyalBlue; } + +/* Code Editor -- provided as a div overlay */ +.overlay { + position: fixed; /* Sit on top of the page content */ + display: none; /* Hidden by default */ + width: 100%; /* Full width (cover the whole page) */ + height: 100%; /* Full height (cover the whole page) */ + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0,0,0,0.5); /* Black background with opacity */ + z-index: 200; /* BPMN Canvas has some huge z-indexes, pop-up tools are 100 for ex.*/ +} + +#code_editor, #markdown_editor { + background-color: #ccc; + margin: 50px auto 10px auto; + max-width: 800px; +} + +#code_buttons, #markdown_buttons { + margin: 50px auto 10px auto; + max-width: 800px; + right: 10px; +} + diff --git a/app/index.html b/app/index.html index 86d722f6a..ca7d9aaed 100644 --- a/app/index.html +++ b/app/index.html @@ -1,17 +1,36 @@ + bpmn-js-spiffworkflow + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ + + diff --git a/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js b/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js index 2afa97eb7..f53eba17c 100644 --- a/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js +++ b/app/spiffworkflow/extensions/propertiesPanel/ExtensionsPropertiesProvider.js @@ -3,7 +3,7 @@ import { is, isAny } from 'bpmn-js/lib/util/ModelUtil'; import scriptGroup, { SCRIPT_TYPE } from './SpiffScriptGroup'; import { SpiffExtensionCalledDecision } from './SpiffExtensionCalledDecision'; import { SpiffExtensionTextInput } from './SpiffExtensionTextInput'; -import { SpiffExtensionInstructionsForEndUser } from './SpiffExtensionInstructionsForEndUser'; +import instructionsGroup from './SpiffExtensionInstructionsForEndUser'; import { ServiceTaskParameterArray, ServiceTaskOperatorSelect, ServiceTaskResultTextInput, @@ -16,7 +16,7 @@ export default function ExtensionsPropertiesProvider( translate, moddle, commandStack, - elementRegistry + elementRegistry, ) { this.getGroups = function (element) { return function (groups) { @@ -27,7 +27,7 @@ export default function ExtensionsPropertiesProvider( } else if ( isAny(element, ['bpmn:Task', 'bpmn:CallActivity', 'bpmn:SubProcess']) ) { - groups.push(preScriptPostScriptGroup(element, translate, moddle)); + groups.push(preScriptPostScriptGroup(element, translate, moddle, commandStack)); } if (is(element, 'bpmn:UserTask')) { groups.push(createUserGroup(element, translate, moddle, commandStack)); @@ -37,9 +37,9 @@ export default function ExtensionsPropertiesProvider( createBusinessRuleGroup(element, translate, moddle, commandStack) ); } - if (is(element, 'bpmn:ManualTask')) { + if (isAny(element, ['bpmn:ManualTask', 'bpmn:UserTask', 'bpmn:EndEvent'])) { groups.push( - createManualTaskPropertiesGroup( + createUserInstructionsGroup ( element, translate, moddle, @@ -97,14 +97,15 @@ function createScriptGroup(element, translate, moddle, commandStack) { * @param moddle For altering the underlying XML File. * @returns The components to add to the properties panel. */ -function preScriptPostScriptGroup(element, translate, moddle) { +function preScriptPostScriptGroup(element, translate, moddle, commandStack) { return { id: 'spiff_pre_post_scripts', - label: translate('SpiffWorkflow Scripts'), + label: translate('Pre/Post Scripts'), entries: [ ...scriptGroup({ element, moddle, + commandStack, translate, scriptType: SCRIPT_TYPE.pre, label: 'Pre-Script', @@ -113,6 +114,7 @@ function preScriptPostScriptGroup(element, translate, moddle) { ...scriptGroup({ element, moddle, + commandStack, translate, scriptType: SCRIPT_TYPE.post, label: 'Post-Script', @@ -132,7 +134,7 @@ function preScriptPostScriptGroup(element, translate, moddle) { function createUserGroup(element, translate, moddle, commandStack) { return { id: 'user_task_properties', - label: translate('SpiffWorkflow Web Form'), + label: translate('Web Form (with Json Schemas)'), entries: [ { element, @@ -187,26 +189,24 @@ function createBusinessRuleGroup(element, translate, moddle, commandStack) { * @param moddle * @returns entries */ -function createManualTaskPropertiesGroup( +function createUserInstructionsGroup ( element, translate, moddle, commandStack ) { return { - id: 'manual_task_properties', - label: translate('Manual Task Properties'), + id: 'instructions', + label: translate('Instructions'), entries: [ - { + ...instructionsGroup({ element, moddle, commandStack, - component: SpiffExtensionInstructionsForEndUser, - label: translate('Instructions For End User'), - description: translate( - 'The instructions to show the user(s) who are responsible for completing the task.' - ), - }, + translate, + label: 'Instructions', + description: 'The instructions to display when completing this task.', + }), ], }; } diff --git a/app/spiffworkflow/extensions/propertiesPanel/SpiffExtensionInstructionsForEndUser.js b/app/spiffworkflow/extensions/propertiesPanel/SpiffExtensionInstructionsForEndUser.js index c8d2a821e..b4cd54005 100644 --- a/app/spiffworkflow/extensions/propertiesPanel/SpiffExtensionInstructionsForEndUser.js +++ b/app/spiffworkflow/extensions/propertiesPanel/SpiffExtensionInstructionsForEndUser.js @@ -1,7 +1,11 @@ -import {useService } from 'bpmn-js-properties-panel'; -import { TextAreaEntry } from '@bpmn-io/properties-panel'; +import { useService } from 'bpmn-js-properties-panel'; +import { + HeaderButton, + isTextFieldEntryEdited, + TextAreaEntry, +} from '@bpmn-io/properties-panel'; -const SPIFF_PROP = "spiffworkflow:instructionsForEndUser" +const SPIFF_PROP = 'spiffworkflow:instructionsForEndUser'; /** * A generic properties' editor for text input. @@ -13,61 +17,120 @@ const SPIFF_PROP = "spiffworkflow:instructionsForEndUser" * * @returns {string|null|*} */ -export function SpiffExtensionInstructionsForEndUser(props) { - const element = props.element; - const commandStack = props.commandStack, moddle = props.moddle; - const label = props.label, description = props.description; +function SpiffExtensionInstructionsForEndUser(props) { + const { element, commandStack, moddle, label, description } = props; const debounce = useService('debounceInput'); - const getPropertyObject = () => { - const bizObj = element.businessObject; - if (!bizObj.extensionElements) { - return null; - } else { - return bizObj.extensionElements.get("values").filter(function (e) { - return e.$instanceOf(SPIFF_PROP) - })[0]; - } - } - const getValue = () => { - const property = getPropertyObject() - if (property) { - return property.instructionsForEndUser; - } - return "" - } + return getPropertyValue(element); + }; - const setValue = value => { - let property = getPropertyObject() - let businessObject = element.businessObject; - let extensions = businessObject.extensionElements; - - if (!property) { - property = moddle.create(SPIFF_PROP); - if (!extensions) { - extensions = moddle.create('bpmn:ExtensionElements'); - } - extensions.get('values').push(property); - } - property.instructionsForEndUser = value; - - commandStack.execute('element.updateModdleProperties', { - element, - moddleElement: businessObject, - properties: { - "extensionElements": extensions - } - }); + const setValue = (value) => { + setProperty(commandStack, moddle, element, value); }; return TextAreaEntry({ id: 'extension_instruction_for_end_user', - element: element, - description: description, - label: label, - getValue: getValue, - setValue: setValue, - debounce: debounce, - }) + element, + description, + label, + getValue, + setValue, + debounce, + }); +} + +function getPropertyObject(element) { + const bizObj = element.businessObject; + if (!bizObj.extensionElements) { + return null; + } + return bizObj.extensionElements.get('values').filter(function (e) { + return e.$instanceOf(SPIFF_PROP); + })[0]; +} + +function getPropertyValue(element) { + const property = getPropertyObject(element); + if (property) { + return property.instructionsForEndUser; + } + return ''; +} + +function setProperty(commandStack, moddle, element, value) { + let property = getPropertyObject(element); + const { businessObject } = element; + let extensions = businessObject.extensionElements; + + if (!property) { + property = moddle.create(SPIFF_PROP); + if (!extensions) { + extensions = moddle.create('bpmn:ExtensionElements'); + } + extensions.get('values').push(property); + } + property.instructionsForEndUser = value; + + commandStack.execute('element.updateModdleProperties', { + element, + moddleElement: businessObject, + properties: { + extensionElements: extensions, + }, + }); +} + +function LaunchMarkdownEditorButton(props) { + const { element, moddle, commandStack } = props; + const eventBus = useService('eventBus'); + return HeaderButton({ + className: 'spiffworkflow-properties-panel-button', + onClick: () => { + const markdown = getPropertyValue(element); + eventBus.fire('markdown.editor.launch', { + element, + markdown, + eventBus, + }); + // Listen for a response, to update the script. + eventBus.once('markdown.editor.update', (event) => { + console.log("Markdown update!!!") + setProperty(commandStack, moddle, event.element, event.markdown); + }); + }, + children: 'Launch Editor', + }); +} + +/** + * Generates a text box and button for editing markdown. + * @param element The element that should get the markdown. + * @param moddle For updating the underlying xml document when needed. + * @returns {[{component: (function(*)), isEdited: *, id: string, element},{component: (function(*)), isEdited: *, id: string, element}]} + */ +export default function getEntries(props) { + const { element, moddle, label, description, translate, commandStack } = + props; + + return [ + { + id: `edit_markdown`, + element, + component: SpiffExtensionInstructionsForEndUser, + isEdited: isTextFieldEntryEdited, + moddle, + commandStack, + label, + description, + }, + { + id: `launchMarkdownEditor`, + element, + component: LaunchMarkdownEditorButton, + isEdited: isTextFieldEntryEdited, + moddle, + commandStack, + }, + ]; } diff --git a/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js b/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js index b7a74e177..4163089c0 100644 --- a/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js +++ b/app/spiffworkflow/extensions/propertiesPanel/SpiffScriptGroup.js @@ -16,69 +16,19 @@ export const SCRIPT_TYPE = { function PythonScript(props) { const { element, id } = props; const { type } = props; - const { moddle } = props; + const { moddle, commandStack } = props; const { label } = props; const { description } = props; const translate = useService('translate'); const debounce = useService('debounceInput'); - /** - * Finds the value of the given type within the extensionElements - * given a type of "spiff:preScript", would find it in this, and return - * the object. - * - * - - - me = "100% awesome" - - - ... - - * - * @returns {string|null|*} - */ - const getScriptObject = () => { - const bizObj = element.businessObject; - if (type === SCRIPT_TYPE.bpmn) { - return bizObj; - } - if (!bizObj.extensionElements) { - return null; - } - return bizObj.extensionElements - .get('values') - .filter(function getInstanceOfType(e) { - return e.$instanceOf(type); - })[0]; - }; - const getValue = () => { - const scriptObj = getScriptObject(); - if (scriptObj) { - return scriptObj.script; - } - return ''; + return getScriptString(element, type); }; const setValue = (value) => { - const { businessObject } = element; - let scriptObj = getScriptObject(); - // Create the script object if needed. - if (!scriptObj) { - scriptObj = moddle.create(type); - if (type !== SCRIPT_TYPE.bpmn) { - if (!businessObject.extensionElements) { - businessObject.extensionElements = moddle.create( - 'bpmn:ExtensionElements' - ); - } - businessObject.extensionElements.get('values').push(scriptObj); - } - } - scriptObj.script = value; + updateScript(commandStack, moddle, element, type, value); }; return TextAreaEntry({ @@ -93,20 +43,107 @@ function PythonScript(props) { } function LaunchEditorButton(props) { - const { element, type } = props; + const { element, type, moddle, commandStack } = props; const eventBus = useService('eventBus'); - // fixme: add a call up date as a property return HeaderButton({ className: 'spiffworkflow-properties-panel-button', onClick: () => { - eventBus.fire('launch.script.editor', { element, type }); + const script = getScriptString(element, type); + eventBus.fire('script.editor.launch', { + element, + scriptType: type, + script, + eventBus, + }); + // Listen for a response, to update the script. + eventBus.once('script.editor.update', (event) => { + updateScript( + commandStack, + moddle, + element, + event.scriptType, + event.script + ); + }); }, children: 'Launch Editor', }); } /** - * Generates a python script. + * Finds the value of the given type within the extensionElements + * given a type of "spiff:preScript", would find it in this, and return + * the object. + * + * + + + me = "100% awesome" + + + ... + + * + * @returns {string|null|*} + */ +function getScriptObject(element, scriptType) { + const bizObj = element.businessObject; + if (scriptType === SCRIPT_TYPE.bpmn) { + return bizObj; + } + if (!bizObj.extensionElements) { + return null; + } + return bizObj.extensionElements + .get('values') + .filter(function getInstanceOfType(e) { + return e.$instanceOf(scriptType); + })[0]; +} + +function updateScript(commandStack, moddle, element, scriptType, newValue) { + const { businessObject } = element; + let scriptObj = getScriptObject(element, scriptType); + // Create the script object if needed. + if (!scriptObj) { + scriptObj = moddle.create(scriptType); + if (scriptType !== SCRIPT_TYPE.bpmn) { + let { extensionElements } = businessObject; + if (!extensionElements) { + extensionElements = moddle.create('bpmn:ExtensionElements'); + } + scriptObj.script = newValue; + extensionElements.get('values').push(scriptObj); + commandStack.execute('element.updateModdleProperties', { + element, + moddleElement: businessObject, + properties: { + extensionElements, + }, + }); + } + } else { + commandStack.execute('element.updateModdleProperties', { + element, + moddleElement: scriptObj, + properties: { + script: newValue, + }, + }); + } +} + +function getScriptString(element, scriptType) { + const scriptObj = getScriptObject(element, scriptType); + if (scriptObj && scriptObj.script) { + return scriptObj.script; + } + return ''; +} + +/** + * Generates a text box and button for editing a script. * @param element The elemment that should get the script task. * @param scriptType The type of script -- can be a preScript, postScript or a BPMN:Script for script tags * @param moddle For updating the underlying xml document when needed. @@ -131,6 +168,7 @@ export default function getEntries(props) { component: PythonScript, isEdited: isTextFieldEntryEdited, moddle, + commandStack, label, description, }, @@ -141,6 +179,7 @@ export default function getEntries(props) { component: LaunchEditorButton, isEdited: isTextFieldEntryEdited, moddle, + commandStack, }, ]; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 7d83f3f8f..000000000 --- a/dist/index.js +++ /dev/null @@ -1,40349 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/@bpmn-io/element-templates-validator/dist/index.esm.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/@bpmn-io/element-templates-validator/dist/index.esm.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "getSchemaPackage": () => (/* binding */ getSchemaPackage), -/* harmony export */ "getSchemaVersion": () => (/* binding */ getSchemaVersion), -/* harmony export */ "getZeebeSchemaPackage": () => (/* binding */ getZeebeSchemaPackage), -/* harmony export */ "getZeebeSchemaVersion": () => (/* binding */ getZeebeSchemaVersion), -/* harmony export */ "validate": () => (/* binding */ validate), -/* harmony export */ "validateAll": () => (/* binding */ validateAll), -/* harmony export */ "validateAllZeebe": () => (/* binding */ validateAllZeebe), -/* harmony export */ "validateZeebe": () => (/* binding */ validateZeebe) -/* harmony export */ }); -/* harmony import */ var min_dash__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! min-dash */ "./node_modules/min-dash/dist/index.esm.js"); - - -var name$1 = "@camunda/element-templates-json-schema"; -var version$1 = "0.10.0"; - -// do not edit .js files directly - edit src/index.jst - - - -var fastDeepEqual = function equal(a, b) { - if (a === b) return true; - - if (a && b && typeof a == 'object' && typeof b == 'object') { - if (a.constructor !== b.constructor) return false; - - var length, i, keys; - if (Array.isArray(a)) { - length = a.length; - if (length != b.length) return false; - for (i = length; i-- !== 0;) - if (!equal(a[i], b[i])) return false; - return true; - } - - - - if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; - if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); - if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); - - keys = Object.keys(a); - length = keys.length; - if (length !== Object.keys(b).length) return false; - - for (i = length; i-- !== 0;) - if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; - - for (i = length; i-- !== 0;) { - var key = keys[i]; - - if (!equal(a[key], b[key])) return false; - } - - return true; - } - - // true if both NaN, false otherwise - return a!==a && b!==b; -}; - -// do NOT remove this file - it would break pre-compiled schemas -// https://github.com/ajv-validator/ajv/issues/889 -var equal = fastDeepEqual; - -var standaloneValidator = validate14$1;var _default$1 = validate14$1;const schema17$1 = {"type":"object","allOf":[{"required":["name","id","appliesTo","properties"],"properties":{"name":{"$id":"#/name","type":"string","description":"The name of the element template."},"id":{"$id":"#/id","type":"string","description":"The identifier of the element template."},"description":{"$id":"#/description","type":"string","description":"The description of the element template."},"version":{"$id":"#/version","type":"number","description":"Optional version of the template. If you add a version to a template it will be considered unique based on its ID and version. Two templates can have the same ID if their version is different."},"isDefault":{"$id":"#/isDefault","type":"boolean","description":"Indicates whether the element template is a default template."},"appliesTo":{"$id":"#/appliesTo","type":"array","description":"List of BPMN types the template can be applied to.","default":[],"items":{"$id":"#/appliesTo/items","type":"string","pattern":"^[\\w\\d]+:[\\w\\d]+$","allOf":[{"examples":["bpmn:Task","bpmn:ServiceTask","bpmn:SequenceFlow","bpmn:Process","bpmn:StartEvent","bpmn:Gateway"]}],"errorMessage":{"pattern":"invalid item for \"appliesTo\", should contain namespaced property, example: \"bpmn:Task\""}}},"elementType":{"$id":"#/elementType","type":"object","description":"The BPMN type the element will be transformed into.","default":{},"required":["value"],"properties":{"value":{"$id":"#/elementType/value","type":"string","pattern":"^[\\w\\d]+:[\\w\\d]+$","allOf":[{"examples":["bpmn:ServiceTask","bpmn:UserTask","bpmn:StartEvent","bpmn:ExclusiveGateway","bpmn:ParallelGateway"]}],"errorMessage":{"pattern":"invalid item for \"elementType\", should contain namespaced property, example: \"bpmn:Task\""}}},"errorMessage":{"required":{"value":"missing elementType value"}}},"metadata":{"$id":"#/metadata","type":"object","description":"Some custom properties for further configuration.","default":{}},"entriesVisible":{"$id":"#/entriesVisible","type":"boolean","description":"Select whether non-template entries are visible in the properties panel."},"groups":{"$id":"#/groups","type":"array","description":"Custom fields can be ordered together via groups.","allOf":[{"examples":[[{"id":"group-1","label":"My Group"}]]}],"items":{"$id":"#/groups/group","type":"object","default":{},"required":["id","label"],"properties":{"id":{"$id":"#/groups/group/id","type":"string","description":"The id of the custom group"},"label":{"$id":"#/groups/group/label","type":"string","description":"The label of the custom group"}},"errorMessage":{"required":{"id":"missing id for group \"${0#}\"","label":"missing label for group \"${0#}\""}}}},"documentationRef":{"$id":"#/documentationRef","type":"string","pattern":"^(https|http)://.*","errorMessage":{"pattern":"Malformed documentation URL, must match \"^(https|http)://.*\""}}},"errorMessage":{"required":{"name":"missing template name","id":"missing template id","appliesTo":"missing appliesTo=[]","properties":"missing properties=[]"}}}],"properties":{"properties":{"$ref":"#/definitions/properties","$id":"#/properties"},"scopes":{"$id":"#/scopes","type":"array","description":"Special scoped bindings that allow you to configure nested elements.","allOf":[{"examples":[[{"type":"bpmn:Error","id":"Error_1","properties":[{"value":"error-code","binding":{"type":"property","name":"errorCode"}},{"value":"error-message","binding":{"type":"property","name":"camunda:errorMessage"}},{"value":"error-name","binding":{"type":"property","name":"name"}}]}]]}],"items":{"$id":"#/scopes/item","type":"object","default":{},"properties":{"type":{"$id":"#scopes/item/type","type":"string","description":"The type of a scope.","enum":["camunda:Connector","bpmn:Error"],"errorMessage":"invalid scope type ${0}; must be any of { camunda:Connector, bpmn:Error }"},"properties":{"$id":"#/scopes/properties","description":"List of properties of a scope.","default":[],"allOf":[{"$ref":"#/definitions/properties/allOf/0"},{"$ref":"#/definitions/properties/allOf/1"}]}},"required":["type","properties"],"allOf":[{"if":{"properties":{"type":{"enum":["bpmn:Error"]}},"required":["type"]},"then":{"required":["id"],"errorMessage":"invalid scope ${0/type}, missing id"}}],"errorMessage":{"required":{"type":"invalid scope, missing type","properties":"invalid scope ${0/type}, missing properties=[]"}}}}}};const schema18$1 = {"allOf":[{"type":"array","description":"List of properties of the element template.","allOf":[{"examples":[[{"label":"Name","type":"String","binding":{"type":"property","name":"name"}}]]}],"items":{"type":"object","default":{},"allOf":[{"if":{"properties":{"type":{"const":"Dropdown"}},"required":["type"]},"then":{"required":["choices"],"errorMessage":"must provide choices=[] with \"Dropdown\" type"}}],"properties":{"id":{"type":"string","description":"Unique identifier of the property."},"value":{"$id":"#/properties/property/value","type":["string","boolean"],"description":"The value of a control field."},"description":{"$id":"#/properties/property/description","type":"string","description":"The description of a control field."},"label":{"$id":"#/properties/property/label","type":"string","description":"The label of a control field."},"type":{"$id":"#/properties/property/type","type":"string","description":"The type of a control field."},"editable":{"$id":"#/properties/property/editable","type":"boolean","description":"Indicates whether a control field is editable or not."},"choices":{"$id":"#/properties/property/choices","type":"array","description":"The choices for dropdown fields.","default":[],"items":{"$id":"#/properties/property/choices/item","type":"object","default":{},"properties":{"name":{"$id":"#/properties/property/choices/item/name","type":"string","description":"The name of a choice."},"value":{"$id":"#/properties/property/choices/item/value","type":"string","description":"The value of a choice."}},"required":["value","name"],"errorMessage":{"required":"{ name, value } must be specified for \"Dropdown\" choices"}}},"constraints":{"$id":"#/properties/property/constraints","type":"object","description":"The validation constraints of a control field.","allOf":[{"examples":[{"notEmpty":true}]}],"properties":{"notEmpty":{"$id":"#/properties/property/constraints/notEmpty","type":"boolean","description":"The control field must not be empty."},"minLength":{"$id":"#/properties/property/constraints/minLength","type":"number","description":"The minimal length of a control field value."},"maxLength":{"$id":"#/properties/property/constraints/maxLength","type":"number","description":"The maximal length for a control field value."},"pattern":{"$id":"#/properties/property/constraints/pattern","description":"A regular expression pattern for a constraint.","oneOf":[{"type":"object","default":{},"properties":{"value":{"$id":"#/properties/property/constraints/pattern/value","type":"string","description":"The regular expression of a pattern."},"message":{"$id":"#/properties/property/constraints/pattern/message","type":"string","description":"The validation message of a pattern."}}},{"type":"string"}]}}},"group":{"$id":"#/properties/property/group","type":"string","description":"The custom group of a control field."},"condition":{"$id":"#/condition","type":"object","description":"Condition to activate the binding.","allOf":[{"examples":[{"type":"simple","property":"httpMethod","equals":"GET"},{"type":"simple","property":"httpMethod","oneOf":["POST","PUT","DELETE"]}]}],"required":["property"],"properties":{"type":{"$id":"#/condition/type","const":"simple","description":"The type of the condition.","default":"simple"},"property":{"$id":"#/condition/property","type":"string","description":"The id of the property to check."}},"oneOf":[{"properties":{"equals":{"type":["string","number","boolean"]}},"required":["equals"]},{"properties":{"oneOf":{"type":"array","items":{"type":["string","number"]}}},"required":["oneOf"]}],"errorMessage":{"required":{"property":"missing property name for condition"}}}}}},{"$schema":"http://json-schema.org/draft-07/schema","type":"array","description":"List of properties of the element template.","items":{"type":"object","default":{},"required":["binding"],"allOf":[{"if":{"properties":{"binding":{"properties":{"type":{"const":"property"}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown","Boolean"],"errorMessage":"invalid property type ${0} for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"}}}},{"if":{"properties":{"binding":{"properties":{"type":{"const":"camunda:executionListener"}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["Hidden"],"errorMessage":"invalid property type ${1/type} for binding type \"camunda:executionListener\"; must be \"Hidden\""}}}},{"if":{"properties":{"binding":{"properties":{"type":{"enum":["camunda:property","camunda:outputParameter","camunda:in","camunda:in:businessKey","camunda:out","camunda:errorEventDefinition"]}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Hidden","Dropdown"],"errorMessage":"invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Hidden, Dropdown }"}}}},{"if":{"properties":{"binding":{"properties":{"type":{"enum":["camunda:inputParameter","camunda:field"]}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown"],"errorMessage":"invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Text, Hidden, Dropdown }"}}}}],"properties":{"binding":{"$id":"#/properties/property/binding","type":"object","description":"Specifying how the property is mapped to BPMN or Camunda extension elements and attributes.","required":["type"],"allOf":[{"if":{"properties":{"type":{"enum":["property","camunda:property","camunda:inputParameter","camunda:field"]}},"required":["type"]},"then":{"required":["name"],"errorMessage":"property.binding ${0/type} requires name"}},{"if":{"properties":{"type":{"const":"camunda:outputParameter"}},"required":["type"]},"then":{"required":["source"],"errorMessage":"property.binding ${0/type} requires source"}},{"if":{"properties":{"type":{"const":"camunda:in"}},"required":["type"]},"then":{"anyOf":[{"required":["variables"]},{"required":["target"]}],"errorMessage":"property.binding ${0/type} requires variables, target, or both"}},{"if":{"properties":{"type":{"const":"camunda:out"}},"required":["type"]},"then":{"oneOf":[{"required":["variables"],"not":{"anyOf":[{"required":["source"]},{"required":["sourceExpression"]}]}},{"required":["source"],"not":{"anyOf":[{"required":["variables"]},{"required":["sourceExpression"]}]}},{"required":["sourceExpression"],"not":{"anyOf":[{"required":["variables"]},{"required":["source"]}]}},{"required":["variables","sourceExpression"],"not":{"required":["source"]}},{"required":["variables","source"],"not":{"required":["sourceExpression"]}}],"errorMessage":"property.binding ${0/type} requires one of the following: variables, sourceExpression, source, (sourceExpression and variables), or (source and variables)"}},{"if":{"properties":{"type":{"const":"camunda:errorEventDefinition"}},"required":["type"]},"then":{"oneOf":[{"required":["errorRef"]}],"errorMessage":"property.binding ${0/type} requires errorRef"}},{"examples":[{"type":"property","name":"name"},{"type":"camunda:property","name":"property"},{"type":"camunda:inputParameter","name":"input"},{"type":"camunda:outputParameter","source":"output"},{"type":"camunda:in","target":"target"},{"type":"camunda:in:businessKey"},{"type":"camunda:out","source":"output"},{"type":"camunda:executionListener","event":"start"},{"type":"camunda:field","name":"field"},{"type":"camunda:errorEventDefinition","errorRef":"error"},{"type":"camunda:errorEventDefinition","errorRef":"error"}]}],"properties":{"type":{"$id":"#/properties/property/binding/type","type":"string","enum":["property","camunda:property","camunda:inputParameter","camunda:outputParameter","camunda:in","camunda:out","camunda:in:businessKey","camunda:executionListener","camunda:field","camunda:errorEventDefinition"],"description":"The type of a property binding.","errorMessage":"invalid property.binding type ${0}; must be any of { property, camunda:property, camunda:inputParameter, camunda:outputParameter, camunda:in, camunda:out, camunda:in:businessKey, camunda:executionListener, camunda:field, camunda:errorEventDefinition }"},"name":{"$id":"#/properties/property/binding/name","type":"string","description":"The name of a property binding."},"event":{"$id":"#/properties/property/binding/event","type":"string","description":"The event type of a property binding (camunda:executionListener)."},"scriptFormat":{"$id":"#/properties/property/binding/scriptFormat","type":"string","description":"The script format of a property binding (camunda:outputParameter, camunda:inputParameter)."},"source":{"$id":"#/properties/property/binding/source","type":"string","description":"The source value of a property binding (camunda:outputParameter, camunda:out)."},"target":{"$id":"#/properties/property/binding/target","type":"string","description":"The target value of a property binding (camunda:in)."},"expression":{"$id":"#/properties/property/binding/expression","type":"boolean","description":"Indicates whether the control field value is an expression (camunda:in, camunda:field)."},"variables":{"$id":"#/properties/property/binding/variables","type":"string","enum":["all","local"],"description":"The variable mapping of a property binding (camunda:in)."},"sourceExpression":{"$id":"#/properties/property/binding/sourceExpression","type":"string","description":"The string containing the expression for the source attribute (camunda:out)."}}}},"errorMessage":{"required":"missing binding for property \"${0#}\""}}}]};const schema19 = {"type":"array","description":"List of properties of the element template.","allOf":[{"examples":[[{"label":"Name","type":"String","binding":{"type":"property","name":"name"}}]]}],"items":{"type":"object","default":{},"allOf":[{"if":{"properties":{"type":{"const":"Dropdown"}},"required":["type"]},"then":{"required":["choices"],"errorMessage":"must provide choices=[] with \"Dropdown\" type"}}],"properties":{"id":{"type":"string","description":"Unique identifier of the property."},"value":{"$id":"#/properties/property/value","type":["string","boolean"],"description":"The value of a control field."},"description":{"$id":"#/properties/property/description","type":"string","description":"The description of a control field."},"label":{"$id":"#/properties/property/label","type":"string","description":"The label of a control field."},"type":{"$id":"#/properties/property/type","type":"string","description":"The type of a control field."},"editable":{"$id":"#/properties/property/editable","type":"boolean","description":"Indicates whether a control field is editable or not."},"choices":{"$id":"#/properties/property/choices","type":"array","description":"The choices for dropdown fields.","default":[],"items":{"$id":"#/properties/property/choices/item","type":"object","default":{},"properties":{"name":{"$id":"#/properties/property/choices/item/name","type":"string","description":"The name of a choice."},"value":{"$id":"#/properties/property/choices/item/value","type":"string","description":"The value of a choice."}},"required":["value","name"],"errorMessage":{"required":"{ name, value } must be specified for \"Dropdown\" choices"}}},"constraints":{"$id":"#/properties/property/constraints","type":"object","description":"The validation constraints of a control field.","allOf":[{"examples":[{"notEmpty":true}]}],"properties":{"notEmpty":{"$id":"#/properties/property/constraints/notEmpty","type":"boolean","description":"The control field must not be empty."},"minLength":{"$id":"#/properties/property/constraints/minLength","type":"number","description":"The minimal length of a control field value."},"maxLength":{"$id":"#/properties/property/constraints/maxLength","type":"number","description":"The maximal length for a control field value."},"pattern":{"$id":"#/properties/property/constraints/pattern","description":"A regular expression pattern for a constraint.","oneOf":[{"type":"object","default":{},"properties":{"value":{"$id":"#/properties/property/constraints/pattern/value","type":"string","description":"The regular expression of a pattern."},"message":{"$id":"#/properties/property/constraints/pattern/message","type":"string","description":"The validation message of a pattern."}}},{"type":"string"}]}}},"group":{"$id":"#/properties/property/group","type":"string","description":"The custom group of a control field."},"condition":{"$id":"#/condition","type":"object","description":"Condition to activate the binding.","allOf":[{"examples":[{"type":"simple","property":"httpMethod","equals":"GET"},{"type":"simple","property":"httpMethod","oneOf":["POST","PUT","DELETE"]}]}],"required":["property"],"properties":{"type":{"$id":"#/condition/type","const":"simple","description":"The type of the condition.","default":"simple"},"property":{"$id":"#/condition/property","type":"string","description":"The id of the property to check."}},"oneOf":[{"properties":{"equals":{"type":["string","number","boolean"]}},"required":["equals"]},{"properties":{"oneOf":{"type":"array","items":{"type":["string","number"]}}},"required":["oneOf"]}],"errorMessage":{"required":{"property":"missing property name for condition"}}}}}};const schema20 = {"$schema":"http://json-schema.org/draft-07/schema","type":"array","description":"List of properties of the element template.","items":{"type":"object","default":{},"required":["binding"],"allOf":[{"if":{"properties":{"binding":{"properties":{"type":{"const":"property"}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown","Boolean"],"errorMessage":"invalid property type ${0} for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"}}}},{"if":{"properties":{"binding":{"properties":{"type":{"const":"camunda:executionListener"}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["Hidden"],"errorMessage":"invalid property type ${1/type} for binding type \"camunda:executionListener\"; must be \"Hidden\""}}}},{"if":{"properties":{"binding":{"properties":{"type":{"enum":["camunda:property","camunda:outputParameter","camunda:in","camunda:in:businessKey","camunda:out","camunda:errorEventDefinition"]}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Hidden","Dropdown"],"errorMessage":"invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Hidden, Dropdown }"}}}},{"if":{"properties":{"binding":{"properties":{"type":{"enum":["camunda:inputParameter","camunda:field"]}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown"],"errorMessage":"invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Text, Hidden, Dropdown }"}}}}],"properties":{"binding":{"$id":"#/properties/property/binding","type":"object","description":"Specifying how the property is mapped to BPMN or Camunda extension elements and attributes.","required":["type"],"allOf":[{"if":{"properties":{"type":{"enum":["property","camunda:property","camunda:inputParameter","camunda:field"]}},"required":["type"]},"then":{"required":["name"],"errorMessage":"property.binding ${0/type} requires name"}},{"if":{"properties":{"type":{"const":"camunda:outputParameter"}},"required":["type"]},"then":{"required":["source"],"errorMessage":"property.binding ${0/type} requires source"}},{"if":{"properties":{"type":{"const":"camunda:in"}},"required":["type"]},"then":{"anyOf":[{"required":["variables"]},{"required":["target"]}],"errorMessage":"property.binding ${0/type} requires variables, target, or both"}},{"if":{"properties":{"type":{"const":"camunda:out"}},"required":["type"]},"then":{"oneOf":[{"required":["variables"],"not":{"anyOf":[{"required":["source"]},{"required":["sourceExpression"]}]}},{"required":["source"],"not":{"anyOf":[{"required":["variables"]},{"required":["sourceExpression"]}]}},{"required":["sourceExpression"],"not":{"anyOf":[{"required":["variables"]},{"required":["source"]}]}},{"required":["variables","sourceExpression"],"not":{"required":["source"]}},{"required":["variables","source"],"not":{"required":["sourceExpression"]}}],"errorMessage":"property.binding ${0/type} requires one of the following: variables, sourceExpression, source, (sourceExpression and variables), or (source and variables)"}},{"if":{"properties":{"type":{"const":"camunda:errorEventDefinition"}},"required":["type"]},"then":{"oneOf":[{"required":["errorRef"]}],"errorMessage":"property.binding ${0/type} requires errorRef"}},{"examples":[{"type":"property","name":"name"},{"type":"camunda:property","name":"property"},{"type":"camunda:inputParameter","name":"input"},{"type":"camunda:outputParameter","source":"output"},{"type":"camunda:in","target":"target"},{"type":"camunda:in:businessKey"},{"type":"camunda:out","source":"output"},{"type":"camunda:executionListener","event":"start"},{"type":"camunda:field","name":"field"},{"type":"camunda:errorEventDefinition","errorRef":"error"},{"type":"camunda:errorEventDefinition","errorRef":"error"}]}],"properties":{"type":{"$id":"#/properties/property/binding/type","type":"string","enum":["property","camunda:property","camunda:inputParameter","camunda:outputParameter","camunda:in","camunda:out","camunda:in:businessKey","camunda:executionListener","camunda:field","camunda:errorEventDefinition"],"description":"The type of a property binding.","errorMessage":"invalid property.binding type ${0}; must be any of { property, camunda:property, camunda:inputParameter, camunda:outputParameter, camunda:in, camunda:out, camunda:in:businessKey, camunda:executionListener, camunda:field, camunda:errorEventDefinition }"},"name":{"$id":"#/properties/property/binding/name","type":"string","description":"The name of a property binding."},"event":{"$id":"#/properties/property/binding/event","type":"string","description":"The event type of a property binding (camunda:executionListener)."},"scriptFormat":{"$id":"#/properties/property/binding/scriptFormat","type":"string","description":"The script format of a property binding (camunda:outputParameter, camunda:inputParameter)."},"source":{"$id":"#/properties/property/binding/source","type":"string","description":"The source value of a property binding (camunda:outputParameter, camunda:out)."},"target":{"$id":"#/properties/property/binding/target","type":"string","description":"The target value of a property binding (camunda:in)."},"expression":{"$id":"#/properties/property/binding/expression","type":"boolean","description":"Indicates whether the control field value is an expression (camunda:in, camunda:field)."},"variables":{"$id":"#/properties/property/binding/variables","type":"string","enum":["all","local"],"description":"The variable mapping of a property binding (camunda:in)."},"sourceExpression":{"$id":"#/properties/property/binding/sourceExpression","type":"string","description":"The string containing the expression for the source attribute (camunda:out)."}}}},"errorMessage":{"required":"missing binding for property \"${0#}\""}}};const pattern0$1 = new RegExp("^[\\w\\d]+:[\\w\\d]+$", "u");const pattern2$1 = new RegExp("^(https|http)://.*", "u");const obj0$1 = {"required":"missingProperty","dependencies":"property","dependentRequired":"property"};function validate15$1(data, {dataPath="", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == "object" && !Array.isArray(data)){if(data.name === undefined){const err0 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "name"},message:"should have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.id === undefined){const err1 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "id"},message:"should have required property '"+"id"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.appliesTo === undefined){const err2 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "appliesTo"},message:"should have required property '"+"appliesTo"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.properties === undefined){const err3 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "properties"},message:"should have required property '"+"properties"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.name !== undefined){if(typeof data.name !== "string"){const err4 = {keyword:"type",dataPath:dataPath+"/name",schemaPath:"#/allOf/0/properties/name/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.id !== undefined){if(typeof data.id !== "string"){const err5 = {keyword:"type",dataPath:dataPath+"/id",schemaPath:"#/allOf/0/properties/id/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.description !== undefined){if(typeof data.description !== "string"){const err6 = {keyword:"type",dataPath:dataPath+"/description",schemaPath:"#/allOf/0/properties/description/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.version !== undefined){if(!(typeof data.version == "number")){const err7 = {keyword:"type",dataPath:dataPath+"/version",schemaPath:"#/allOf/0/properties/version/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.isDefault !== undefined){if(typeof data.isDefault !== "boolean"){const err8 = {keyword:"type",dataPath:dataPath+"/isDefault",schemaPath:"#/allOf/0/properties/isDefault/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.appliesTo !== undefined){let data5 = data.appliesTo;if(Array.isArray(data5)){const len0 = data5.length;for(let i0=0; i0 0){const emErrors0 = {"pattern":[]};const templates0 = {};for(const err11 of vErrors){if((((((err11.keyword !== "errorMessage") && (!err11.emUsed)) && (err11.dataPath === dataPath+"/appliesTo/" + i0)) && (err11.keyword in emErrors0)) && (err11.schemaPath.indexOf("#/allOf/0/properties/appliesTo/items") === 0)) && (/^\/[^\/]*$/.test(err11.schemaPath.slice(36)))){emErrors0[err11.keyword].push(err11);err11.emUsed = true;}}for(const key0 in emErrors0){if(emErrors0[key0].length){const err12 = {keyword:"errorMessage",dataPath:dataPath+"/appliesTo/" + i0,schemaPath:"#/allOf/0/properties/appliesTo/items/errorMessage",params:{errors: emErrors0[key0]},message:key0 in templates0 ? templates0[key0]() : schema17$1.allOf[0].properties.appliesTo.items.errorMessage[key0]};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}const emErrs0 = [];for(const err13 of vErrors){if(!err13.emUsed){emErrs0.push(err13);}}vErrors = emErrs0;errors = emErrs0.length;}}}else {const err14 = {keyword:"type",dataPath:dataPath+"/appliesTo",schemaPath:"#/allOf/0/properties/appliesTo/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.elementType !== undefined){let data7 = data.elementType;if(data7 && typeof data7 == "object" && !Array.isArray(data7)){if(data7.value === undefined){const err15 = {keyword:"required",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/required",params:{missingProperty: "value"},message:"should have required property '"+"value"+"'"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(data7.value !== undefined){let data8 = data7.value;if(typeof data8 === "string"){if(!pattern0$1.test(data8)){const err16 = {keyword:"pattern",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/pattern",params:{pattern: "^[\\w\\d]+:[\\w\\d]+$"},message:"should match pattern \""+"^[\\w\\d]+:[\\w\\d]+$"+"\""};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {keyword:"type",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if(errors > 0){const emErrors1 = {"pattern":[]};const templates1 = {};for(const err18 of vErrors){if((((((err18.keyword !== "errorMessage") && (!err18.emUsed)) && (err18.dataPath === dataPath+"/elementType/value")) && (err18.keyword in emErrors1)) && (err18.schemaPath.indexOf("#/allOf/0/properties/elementType/properties/value") === 0)) && (/^\/[^\/]*$/.test(err18.schemaPath.slice(49)))){emErrors1[err18.keyword].push(err18);err18.emUsed = true;}}for(const key1 in emErrors1){if(emErrors1[key1].length){const err19 = {keyword:"errorMessage",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/errorMessage",params:{errors: emErrors1[key1]},message:key1 in templates1 ? templates1[key1]() : schema17$1.allOf[0].properties.elementType.properties.value.errorMessage[key1]};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}const emErrs1 = [];for(const err20 of vErrors){if(!err20.emUsed){emErrs1.push(err20);}}vErrors = emErrs1;errors = emErrs1.length;}}}else {const err21 = {keyword:"type",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(errors > 0){const emErrors2 = {"required":{"value":[]}};const templates2 = {required:{}};let emPropParams0;let emParamsErrors0;for(const err22 of vErrors){if((((((err22.keyword !== "errorMessage") && (!err22.emUsed)) && (err22.dataPath === dataPath+"/elementType")) && (err22.keyword in emErrors2)) && (err22.schemaPath.indexOf("#/allOf/0/properties/elementType") === 0)) && (/^\/[^\/]*$/.test(err22.schemaPath.slice(32)))){emPropParams0 = obj0$1[err22.keyword];emParamsErrors0 = emErrors2[err22.keyword][err22.params[emPropParams0]];if(emParamsErrors0){emParamsErrors0.push(err22);err22.emUsed = true;}}}for(const key2 in emErrors2){for(const keyProp0 in emErrors2[key2]){emParamsErrors0 = emErrors2[key2][keyProp0];if(emParamsErrors0.length){const tmpl0 = templates2[key2] && templates2[key2][keyProp0];const err23 = {keyword:"errorMessage",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/errorMessage",params:{errors: emParamsErrors0},message:tmpl0 ? tmpl0() : schema17$1.allOf[0].properties.elementType.errorMessage[key2][keyProp0]};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}const emErrs2 = [];for(const err24 of vErrors){if(!err24.emUsed){emErrs2.push(err24);}}vErrors = emErrs2;errors = emErrs2.length;}}if(data.metadata !== undefined){let data9 = data.metadata;if(!(data9 && typeof data9 == "object" && !Array.isArray(data9))){const err25 = {keyword:"type",dataPath:dataPath+"/metadata",schemaPath:"#/allOf/0/properties/metadata/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.entriesVisible !== undefined){if(typeof data.entriesVisible !== "boolean"){const err26 = {keyword:"type",dataPath:dataPath+"/entriesVisible",schemaPath:"#/allOf/0/properties/entriesVisible/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data.groups !== undefined){let data11 = data.groups;if(Array.isArray(data11)){const len1 = data11.length;for(let i1=0; i1 0){const emErrors3 = {"required":{"id":[],"label":[]}};const templates3 = {required:{id:function(){return "missing id for group \"" + JSON.stringify(i1) + "\""},label:function(){return "missing label for group \"" + JSON.stringify(i1) + "\""}}};let emPropParams1;let emParamsErrors1;for(const err32 of vErrors){if((((((err32.keyword !== "errorMessage") && (!err32.emUsed)) && (err32.dataPath === dataPath+"/groups/" + i1)) && (err32.keyword in emErrors3)) && (err32.schemaPath.indexOf("#/allOf/0/properties/groups/items") === 0)) && (/^\/[^\/]*$/.test(err32.schemaPath.slice(33)))){emPropParams1 = obj0$1[err32.keyword];emParamsErrors1 = emErrors3[err32.keyword][err32.params[emPropParams1]];if(emParamsErrors1){emParamsErrors1.push(err32);err32.emUsed = true;}}}for(const key3 in emErrors3){for(const keyProp1 in emErrors3[key3]){emParamsErrors1 = emErrors3[key3][keyProp1];if(emParamsErrors1.length){const tmpl1 = templates3[key3] && templates3[key3][keyProp1];const err33 = {keyword:"errorMessage",dataPath:dataPath+"/groups/" + i1,schemaPath:"#/allOf/0/properties/groups/items/errorMessage",params:{errors: emParamsErrors1},message:tmpl1 ? tmpl1() : schema17$1.allOf[0].properties.groups.items.errorMessage[key3][keyProp1]};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}const emErrs3 = [];for(const err34 of vErrors){if(!err34.emUsed){emErrs3.push(err34);}}vErrors = emErrs3;errors = emErrs3.length;}}}else {const err35 = {keyword:"type",dataPath:dataPath+"/groups",schemaPath:"#/allOf/0/properties/groups/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.documentationRef !== undefined){let data15 = data.documentationRef;if(typeof data15 === "string"){if(!pattern2$1.test(data15)){const err36 = {keyword:"pattern",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/pattern",params:{pattern: "^(https|http)://.*"},message:"should match pattern \""+"^(https|http)://.*"+"\""};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {keyword:"type",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(errors > 0){const emErrors4 = {"pattern":[]};const templates4 = {};for(const err38 of vErrors){if((((((err38.keyword !== "errorMessage") && (!err38.emUsed)) && (err38.dataPath === dataPath+"/documentationRef")) && (err38.keyword in emErrors4)) && (err38.schemaPath.indexOf("#/allOf/0/properties/documentationRef") === 0)) && (/^\/[^\/]*$/.test(err38.schemaPath.slice(37)))){emErrors4[err38.keyword].push(err38);err38.emUsed = true;}}for(const key4 in emErrors4){if(emErrors4[key4].length){const err39 = {keyword:"errorMessage",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/errorMessage",params:{errors: emErrors4[key4]},message:key4 in templates4 ? templates4[key4]() : schema17$1.allOf[0].properties.documentationRef.errorMessage[key4]};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}const emErrs4 = [];for(const err40 of vErrors){if(!err40.emUsed){emErrs4.push(err40);}}vErrors = emErrs4;errors = emErrs4.length;}}}if(errors > 0){const emErrors5 = {"required":{"name":[],"id":[],"appliesTo":[],"properties":[]}};const templates5 = {required:{}};let emPropParams2;let emParamsErrors2;for(const err41 of vErrors){if((((((err41.keyword !== "errorMessage") && (!err41.emUsed)) && (err41.dataPath === dataPath)) && (err41.keyword in emErrors5)) && (err41.schemaPath.indexOf("#/allOf/0") === 0)) && (/^\/[^\/]*$/.test(err41.schemaPath.slice(9)))){emPropParams2 = obj0$1[err41.keyword];emParamsErrors2 = emErrors5[err41.keyword][err41.params[emPropParams2]];if(emParamsErrors2){emParamsErrors2.push(err41);err41.emUsed = true;}}}for(const key5 in emErrors5){for(const keyProp2 in emErrors5[key5]){emParamsErrors2 = emErrors5[key5][keyProp2];if(emParamsErrors2.length){const tmpl2 = templates5[key5] && templates5[key5][keyProp2];const err42 = {keyword:"errorMessage",dataPath,schemaPath:"#/allOf/0/errorMessage",params:{errors: emParamsErrors2},message:tmpl2 ? tmpl2() : schema17$1.allOf[0].errorMessage[key5][keyProp2]};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}const emErrs5 = [];for(const err43 of vErrors){if(!err43.emUsed){emErrs5.push(err43);}}vErrors = emErrs5;errors = emErrs5.length;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.properties !== undefined){let data16 = data.properties;if(Array.isArray(data16)){const len2 = data16.length;for(let i2=0; i2 0){const emErrs6 = [];for(const err47 of vErrors){if(((((err47.keyword !== "errorMessage") && (!err47.emUsed)) && ((err47.dataPath === dataPath+"/properties/" + i2) || ((err47.dataPath.indexOf(dataPath+"/properties/" + i2) === 0) && (err47.dataPath[dataPath+"/properties/" + i2.length] === "/")))) && (err47.schemaPath.indexOf("#/definitions/properties/allOf/0/items/allOf/0/then") === 0)) && (err47.schemaPath["#/definitions/properties/allOf/0/items/allOf/0/then".length] === "/")){emErrs6.push(err47);err47.emUsed = true;}}if(emErrs6.length){const err48 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/then/errorMessage",params:{errors: emErrs6},message:"must provide choices=[] with \"Dropdown\" type"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}const emErrs7 = [];for(const err49 of vErrors){if(!err49.emUsed){emErrs7.push(err49);}}vErrors = emErrs7;errors = emErrs7.length;}var _valid0 = _errs44 === errors;valid18 = _valid0;}if(!valid18){const err50 = {keyword:"if",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}if(data17 && typeof data17 == "object" && !Array.isArray(data17)){if(data17.id !== undefined){if(typeof data17.id !== "string"){const err51 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/id",schemaPath:"#/definitions/properties/allOf/0/items/properties/id/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}if(data17.value !== undefined){let data20 = data17.value;if((typeof data20 !== "string") && (typeof data20 !== "boolean")){const err52 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/value/type",params:{type: schema18$1.allOf[0].items.properties.value.type},message:"should be string,boolean"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}}if(data17.description !== undefined){if(typeof data17.description !== "string"){const err53 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/description",schemaPath:"#/definitions/properties/allOf/0/items/properties/description/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}if(data17.label !== undefined){if(typeof data17.label !== "string"){const err54 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/label",schemaPath:"#/definitions/properties/allOf/0/items/properties/label/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}}if(data17.type !== undefined){if(typeof data17.type !== "string"){const err55 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/type",schemaPath:"#/definitions/properties/allOf/0/items/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}}if(data17.editable !== undefined){if(typeof data17.editable !== "boolean"){const err56 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/editable",schemaPath:"#/definitions/properties/allOf/0/items/properties/editable/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}}if(data17.choices !== undefined){let data25 = data17.choices;if(Array.isArray(data25)){const len3 = data25.length;for(let i3=0; i3 0){const emErrors6 = {"required":[]};const templates6 = {};for(const err62 of vErrors){if((((((err62.keyword !== "errorMessage") && (!err62.emUsed)) && (err62.dataPath === dataPath+"/properties/" + i2+"/choices/" + i3)) && (err62.keyword in emErrors6)) && (err62.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/choices/items") === 0)) && (/^\/[^\/]*$/.test(err62.schemaPath.slice(63)))){emErrors6[err62.keyword].push(err62);err62.emUsed = true;}}for(const key6 in emErrors6){if(emErrors6[key6].length){const err63 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2+"/choices/" + i3,schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/items/errorMessage",params:{errors: emErrors6[key6]},message:key6 in templates6 ? templates6[key6]() : schema18$1.allOf[0].items.properties.choices.items.errorMessage[key6]};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}const emErrs8 = [];for(const err64 of vErrors){if(!err64.emUsed){emErrs8.push(err64);}}vErrors = emErrs8;errors = emErrs8.length;}}}else {const err65 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/choices",schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}}if(data17.constraints !== undefined){let data29 = data17.constraints;if(data29 && typeof data29 == "object" && !Array.isArray(data29)){if(data29.notEmpty !== undefined){if(typeof data29.notEmpty !== "boolean"){const err66 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/notEmpty",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/notEmpty/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}}if(data29.minLength !== undefined){if(!(typeof data29.minLength == "number")){const err67 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/minLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/minLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}}if(data29.maxLength !== undefined){if(!(typeof data29.maxLength == "number")){const err68 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/maxLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/maxLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}}if(data29.pattern !== undefined){let data33 = data29.pattern;const _errs74 = errors;let valid26 = false;let passing0 = null;const _errs75 = errors;if(data33 && typeof data33 == "object" && !Array.isArray(data33)){if(data33.value !== undefined){if(typeof data33.value !== "string"){const err69 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/value/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}}if(data33.message !== undefined){if(typeof data33.message !== "string"){const err70 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern/message",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/message/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err70];}else {vErrors.push(err70);}errors++;}}}else {const err71 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err71];}else {vErrors.push(err71);}errors++;}var _valid1 = _errs75 === errors;if(_valid1){valid26 = true;passing0 = 0;}const _errs81 = errors;if(typeof data33 !== "string"){const err72 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/1/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err72];}else {vErrors.push(err72);}errors++;}var _valid1 = _errs81 === errors;if(_valid1 && valid26){valid26 = false;passing0 = [passing0, 1];}else {if(_valid1){valid26 = true;passing0 = 1;}}if(!valid26){const err73 = {keyword:"oneOf",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf",params:{passingSchemas: passing0},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err73];}else {vErrors.push(err73);}errors++;}else {errors = _errs74;if(vErrors !== null){if(_errs74){vErrors.length = _errs74;}else {vErrors = null;}}}}}else {const err74 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err74];}else {vErrors.push(err74);}errors++;}}if(data17.group !== undefined){if(typeof data17.group !== "string"){const err75 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/group",schemaPath:"#/definitions/properties/allOf/0/items/properties/group/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err75];}else {vErrors.push(err75);}errors++;}}if(data17.condition !== undefined){let data37 = data17.condition;const _errs87 = errors;let valid28 = false;let passing1 = null;const _errs88 = errors;if(data37 && typeof data37 == "object" && !Array.isArray(data37)){if(data37.equals === undefined){const err76 = {keyword:"required",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/required",params:{missingProperty: "equals"},message:"should have required property '"+"equals"+"'"};if(vErrors === null){vErrors = [err76];}else {vErrors.push(err76);}errors++;}if(data37.equals !== undefined){let data38 = data37.equals;if(((typeof data38 !== "string") && (!(typeof data38 == "number"))) && (typeof data38 !== "boolean")){const err77 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/condition/equals",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/properties/equals/type",params:{type: schema18$1.allOf[0].items.properties.condition.oneOf[0].properties.equals.type},message:"should be string,number,boolean"};if(vErrors === null){vErrors = [err77];}else {vErrors.push(err77);}errors++;}}}var _valid2 = _errs88 === errors;if(_valid2){valid28 = true;passing1 = 0;}const _errs91 = errors;if(data37 && typeof data37 == "object" && !Array.isArray(data37)){if(data37.oneOf === undefined){const err78 = {keyword:"required",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/1/required",params:{missingProperty: "oneOf"},message:"should have required property '"+"oneOf"+"'"};if(vErrors === null){vErrors = [err78];}else {vErrors.push(err78);}errors++;}if(data37.oneOf !== undefined){let data39 = data37.oneOf;if(Array.isArray(data39)){const len4 = data39.length;for(let i4=0; i4 0){const emErrors7 = {"required":{"property":[]}};const templates7 = {required:{}};let emPropParams3;let emParamsErrors3;for(const err86 of vErrors){if((((((err86.keyword !== "errorMessage") && (!err86.emUsed)) && (err86.dataPath === dataPath+"/properties/" + i2+"/condition")) && (err86.keyword in emErrors7)) && (err86.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/condition") === 0)) && (/^\/[^\/]*$/.test(err86.schemaPath.slice(59)))){emPropParams3 = obj0$1[err86.keyword];emParamsErrors3 = emErrors7[err86.keyword][err86.params[emPropParams3]];if(emParamsErrors3){emParamsErrors3.push(err86);err86.emUsed = true;}}}for(const key7 in emErrors7){for(const keyProp3 in emErrors7[key7]){emParamsErrors3 = emErrors7[key7][keyProp3];if(emParamsErrors3.length){const tmpl3 = templates7[key7] && templates7[key7][keyProp3];const err87 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/errorMessage",params:{errors: emParamsErrors3},message:tmpl3 ? tmpl3() : schema18$1.allOf[0].items.properties.condition.errorMessage[key7][keyProp3]};if(vErrors === null){vErrors = [err87];}else {vErrors.push(err87);}errors++;}}}const emErrs9 = [];for(const err88 of vErrors){if(!err88.emUsed){emErrs9.push(err88);}}vErrors = emErrs9;errors = emErrs9.length;}}}else {const err89 = {keyword:"type",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err89];}else {vErrors.push(err89);}errors++;}}}else {const err90 = {keyword:"type",dataPath:dataPath+"/properties",schemaPath:"#/definitions/properties/allOf/0/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err90];}else {vErrors.push(err90);}errors++;}if(Array.isArray(data16)){const len5 = data16.length;for(let i5=0; i5 0){const emErrs10 = [];for(const err95 of vErrors){if(((((err95.keyword !== "errorMessage") && (!err95.emUsed)) && ((err95.dataPath === dataPath+"/properties/" + i5+"/type") || ((err95.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err95.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err95.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/0/then/properties/type") === 0)) && (err95.schemaPath["#/definitions/properties/allOf/1/items/allOf/0/then/properties/type".length] === "/")){emErrs10.push(err95);err95.emUsed = true;}}if(emErrs10.length){const err96 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/then/properties/type/errorMessage",params:{errors: emErrs10},message:"invalid property type " + JSON.stringify(data46) + " for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"};if(vErrors === null){vErrors = [err96];}else {vErrors.push(err96);}errors++;}const emErrs11 = [];for(const err97 of vErrors){if(!err97.emUsed){emErrs11.push(err97);}}vErrors = emErrs11;errors = emErrs11.length;}}}var _valid3 = _errs108 === errors;valid38 = _valid3;}if(!valid38){const err98 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err98];}else {vErrors.push(err98);}errors++;}const _errs111 = errors;let valid42 = true;const _errs112 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.binding === undefined) && ("binding")){const err99 = {};if(vErrors === null){vErrors = [err99];}else {vErrors.push(err99);}errors++;}else {if(data43.binding !== undefined){let data47 = data43.binding;if(data47 && typeof data47 == "object" && !Array.isArray(data47)){if((data47.type === undefined) && ("type")){const err100 = {};if(vErrors === null){vErrors = [err100];}else {vErrors.push(err100);}errors++;}else {if(data47.type !== undefined){if(!equal(data47.type, "camunda:executionListener")){const err101 = {};if(vErrors === null){vErrors = [err101];}else {vErrors.push(err101);}errors++;}}}}}}}var _valid4 = _errs112 === errors;errors = _errs111;if(vErrors !== null){if(_errs111){vErrors.length = _errs111;}else {vErrors = null;}}if(_valid4){const _errs115 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.type !== undefined){if(!(data43.type === "Hidden")){const err102 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/enum",params:{allowedValues: schema18$1.allOf[1].items.allOf[1].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err102];}else {vErrors.push(err102);}errors++;}if(errors > 0){const emErrs12 = [];for(const err103 of vErrors){if(((((err103.keyword !== "errorMessage") && (!err103.emUsed)) && ((err103.dataPath === dataPath+"/properties/" + i5+"/type") || ((err103.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err103.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err103.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/1/then/properties/type") === 0)) && (err103.schemaPath["#/definitions/properties/allOf/1/items/allOf/1/then/properties/type".length] === "/")){emErrs12.push(err103);err103.emUsed = true;}}if(emErrs12.length){const err104 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/errorMessage",params:{errors: emErrs12},message:"invalid property type " + JSON.stringify(data43 && data43.type) + " for binding type \"camunda:executionListener\"; must be \"Hidden\""};if(vErrors === null){vErrors = [err104];}else {vErrors.push(err104);}errors++;}const emErrs13 = [];for(const err105 of vErrors){if(!err105.emUsed){emErrs13.push(err105);}}vErrors = emErrs13;errors = emErrs13.length;}}}var _valid4 = _errs115 === errors;valid42 = _valid4;}if(!valid42){const err106 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err106];}else {vErrors.push(err106);}errors++;}const _errs118 = errors;let valid46 = true;const _errs119 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.binding === undefined) && ("binding")){const err107 = {};if(vErrors === null){vErrors = [err107];}else {vErrors.push(err107);}errors++;}else {if(data43.binding !== undefined){let data50 = data43.binding;if(data50 && typeof data50 == "object" && !Array.isArray(data50)){if((data50.type === undefined) && ("type")){const err108 = {};if(vErrors === null){vErrors = [err108];}else {vErrors.push(err108);}errors++;}else {if(data50.type !== undefined){let data51 = data50.type;if(!((((((data51 === "camunda:property") || (data51 === "camunda:outputParameter")) || (data51 === "camunda:in")) || (data51 === "camunda:in:businessKey")) || (data51 === "camunda:out")) || (data51 === "camunda:errorEventDefinition"))){const err109 = {};if(vErrors === null){vErrors = [err109];}else {vErrors.push(err109);}errors++;}}}}}}}var _valid5 = _errs119 === errors;errors = _errs118;if(vErrors !== null){if(_errs118){vErrors.length = _errs118;}else {vErrors = null;}}if(_valid5){const _errs122 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.type !== undefined){let data52 = data43.type;if(!(((data52 === "String") || (data52 === "Hidden")) || (data52 === "Dropdown"))){const err110 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/type/enum",params:{allowedValues: schema18$1.allOf[1].items.allOf[2].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err110];}else {vErrors.push(err110);}errors++;}if(errors > 0){const emErrs14 = [];for(const err111 of vErrors){if(((((err111.keyword !== "errorMessage") && (!err111.emUsed)) && ((err111.dataPath === dataPath+"/properties/" + i5+"/type") || ((err111.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err111.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err111.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/2/then/properties/type") === 0)) && (err111.schemaPath["#/definitions/properties/allOf/1/items/allOf/2/then/properties/type".length] === "/")){emErrs14.push(err111);err111.emUsed = true;}}if(emErrs14.length){const err112 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/type/errorMessage",params:{errors: emErrs14},message:"invalid property type " + JSON.stringify(data52) + " for binding type " + JSON.stringify(data43 && data43.binding && data43.binding.type) + "; must be any of { String, Hidden, Dropdown }"};if(vErrors === null){vErrors = [err112];}else {vErrors.push(err112);}errors++;}const emErrs15 = [];for(const err113 of vErrors){if(!err113.emUsed){emErrs15.push(err113);}}vErrors = emErrs15;errors = emErrs15.length;}}}var _valid5 = _errs122 === errors;valid46 = _valid5;}if(!valid46){const err114 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err114];}else {vErrors.push(err114);}errors++;}const _errs125 = errors;let valid50 = true;const _errs126 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.binding === undefined) && ("binding")){const err115 = {};if(vErrors === null){vErrors = [err115];}else {vErrors.push(err115);}errors++;}else {if(data43.binding !== undefined){let data53 = data43.binding;if(data53 && typeof data53 == "object" && !Array.isArray(data53)){if((data53.type === undefined) && ("type")){const err116 = {};if(vErrors === null){vErrors = [err116];}else {vErrors.push(err116);}errors++;}else {if(data53.type !== undefined){let data54 = data53.type;if(!((data54 === "camunda:inputParameter") || (data54 === "camunda:field"))){const err117 = {};if(vErrors === null){vErrors = [err117];}else {vErrors.push(err117);}errors++;}}}}}}}var _valid6 = _errs126 === errors;errors = _errs125;if(vErrors !== null){if(_errs125){vErrors.length = _errs125;}else {vErrors = null;}}if(_valid6){const _errs129 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.type !== undefined){let data55 = data43.type;if(!((((data55 === "String") || (data55 === "Text")) || (data55 === "Hidden")) || (data55 === "Dropdown"))){const err118 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/type/enum",params:{allowedValues: schema18$1.allOf[1].items.allOf[3].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err118];}else {vErrors.push(err118);}errors++;}if(errors > 0){const emErrs16 = [];for(const err119 of vErrors){if(((((err119.keyword !== "errorMessage") && (!err119.emUsed)) && ((err119.dataPath === dataPath+"/properties/" + i5+"/type") || ((err119.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err119.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err119.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/3/then/properties/type") === 0)) && (err119.schemaPath["#/definitions/properties/allOf/1/items/allOf/3/then/properties/type".length] === "/")){emErrs16.push(err119);err119.emUsed = true;}}if(emErrs16.length){const err120 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/type/errorMessage",params:{errors: emErrs16},message:"invalid property type " + JSON.stringify(data55) + " for binding type " + JSON.stringify(data43 && data43.binding && data43.binding.type) + "; must be any of { String, Text, Hidden, Dropdown }"};if(vErrors === null){vErrors = [err120];}else {vErrors.push(err120);}errors++;}const emErrs17 = [];for(const err121 of vErrors){if(!err121.emUsed){emErrs17.push(err121);}}vErrors = emErrs17;errors = emErrs17.length;}}}var _valid6 = _errs129 === errors;valid50 = _valid6;}if(!valid50){const err122 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err122];}else {vErrors.push(err122);}errors++;}if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.binding === undefined){const err123 = {keyword:"required",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/required",params:{missingProperty: "binding"},message:"should have required property '"+"binding"+"'"};if(vErrors === null){vErrors = [err123];}else {vErrors.push(err123);}errors++;}if(data43.binding !== undefined){let data56 = data43.binding;const _errs134 = errors;let valid56 = true;const _errs135 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.type === undefined) && ("type")){const err124 = {};if(vErrors === null){vErrors = [err124];}else {vErrors.push(err124);}errors++;}else {if(data56.type !== undefined){let data57 = data56.type;if(!((((data57 === "property") || (data57 === "camunda:property")) || (data57 === "camunda:inputParameter")) || (data57 === "camunda:field"))){const err125 = {};if(vErrors === null){vErrors = [err125];}else {vErrors.push(err125);}errors++;}}}}var _valid7 = _errs135 === errors;errors = _errs134;if(vErrors !== null){if(_errs134){vErrors.length = _errs134;}else {vErrors = null;}}if(_valid7){const _errs137 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.name === undefined){const err126 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/required",params:{missingProperty: "name"},message:"should have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err126];}else {vErrors.push(err126);}errors++;}}if(errors > 0){const emErrs18 = [];for(const err127 of vErrors){if(((((err127.keyword !== "errorMessage") && (!err127.emUsed)) && ((err127.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err127.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err127.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err127.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then") === 0)) && (err127.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then".length] === "/")){emErrs18.push(err127);err127.emUsed = true;}}if(emErrs18.length){const err128 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/errorMessage",params:{errors: emErrs18},message:"property.binding " + JSON.stringify(data56 && data56.type) + " requires name"};if(vErrors === null){vErrors = [err128];}else {vErrors.push(err128);}errors++;}const emErrs19 = [];for(const err129 of vErrors){if(!err129.emUsed){emErrs19.push(err129);}}vErrors = emErrs19;errors = emErrs19.length;}var _valid7 = _errs137 === errors;valid56 = _valid7;}if(!valid56){const err130 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err130];}else {vErrors.push(err130);}errors++;}const _errs139 = errors;let valid58 = true;const _errs140 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.type === undefined) && ("type")){const err131 = {};if(vErrors === null){vErrors = [err131];}else {vErrors.push(err131);}errors++;}else {if(data56.type !== undefined){if(!equal(data56.type, "camunda:outputParameter")){const err132 = {};if(vErrors === null){vErrors = [err132];}else {vErrors.push(err132);}errors++;}}}}var _valid8 = _errs140 === errors;errors = _errs139;if(vErrors !== null){if(_errs139){vErrors.length = _errs139;}else {vErrors = null;}}if(_valid8){const _errs142 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.source === undefined){const err133 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err133];}else {vErrors.push(err133);}errors++;}}if(errors > 0){const emErrs20 = [];for(const err134 of vErrors){if(((((err134.keyword !== "errorMessage") && (!err134.emUsed)) && ((err134.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err134.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err134.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err134.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then") === 0)) && (err134.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then".length] === "/")){emErrs20.push(err134);err134.emUsed = true;}}if(emErrs20.length){const err135 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/errorMessage",params:{errors: emErrs20},message:"property.binding " + JSON.stringify(data56 && data56.type) + " requires source"};if(vErrors === null){vErrors = [err135];}else {vErrors.push(err135);}errors++;}const emErrs21 = [];for(const err136 of vErrors){if(!err136.emUsed){emErrs21.push(err136);}}vErrors = emErrs21;errors = emErrs21.length;}var _valid8 = _errs142 === errors;valid58 = _valid8;}if(!valid58){const err137 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err137];}else {vErrors.push(err137);}errors++;}const _errs144 = errors;let valid60 = true;const _errs145 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.type === undefined) && ("type")){const err138 = {};if(vErrors === null){vErrors = [err138];}else {vErrors.push(err138);}errors++;}else {if(data56.type !== undefined){if(!equal(data56.type, "camunda:in")){const err139 = {};if(vErrors === null){vErrors = [err139];}else {vErrors.push(err139);}errors++;}}}}var _valid9 = _errs145 === errors;errors = _errs144;if(vErrors !== null){if(_errs144){vErrors.length = _errs144;}else {vErrors = null;}}if(_valid9){const _errs147 = errors;const _errs148 = errors;let valid62 = false;const _errs149 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.variables === undefined){const err140 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf/0/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err140];}else {vErrors.push(err140);}errors++;}}var _valid10 = _errs149 === errors;valid62 = valid62 || _valid10;if(!valid62){const _errs150 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.target === undefined){const err141 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf/1/required",params:{missingProperty: "target"},message:"should have required property '"+"target"+"'"};if(vErrors === null){vErrors = [err141];}else {vErrors.push(err141);}errors++;}}var _valid10 = _errs150 === errors;valid62 = valid62 || _valid10;}if(!valid62){const err142 = {keyword:"anyOf",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf",params:{},message:"should match some schema in anyOf"};if(vErrors === null){vErrors = [err142];}else {vErrors.push(err142);}errors++;}else {errors = _errs148;if(vErrors !== null){if(_errs148){vErrors.length = _errs148;}else {vErrors = null;}}}if(errors > 0){const emErrs22 = [];for(const err143 of vErrors){if(((((err143.keyword !== "errorMessage") && (!err143.emUsed)) && ((err143.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err143.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err143.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err143.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then") === 0)) && (err143.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then".length] === "/")){emErrs22.push(err143);err143.emUsed = true;}}if(emErrs22.length){const err144 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/errorMessage",params:{errors: emErrs22},message:"property.binding " + JSON.stringify(data56 && data56.type) + " requires variables, target, or both"};if(vErrors === null){vErrors = [err144];}else {vErrors.push(err144);}errors++;}const emErrs23 = [];for(const err145 of vErrors){if(!err145.emUsed){emErrs23.push(err145);}}vErrors = emErrs23;errors = emErrs23.length;}var _valid9 = _errs147 === errors;valid60 = _valid9;}if(!valid60){const err146 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err146];}else {vErrors.push(err146);}errors++;}const _errs152 = errors;let valid63 = true;const _errs153 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.type === undefined) && ("type")){const err147 = {};if(vErrors === null){vErrors = [err147];}else {vErrors.push(err147);}errors++;}else {if(data56.type !== undefined){if(!equal(data56.type, "camunda:out")){const err148 = {};if(vErrors === null){vErrors = [err148];}else {vErrors.push(err148);}errors++;}}}}var _valid11 = _errs153 === errors;errors = _errs152;if(vErrors !== null){if(_errs152){vErrors.length = _errs152;}else {vErrors = null;}}if(_valid11){const _errs155 = errors;const _errs156 = errors;let valid65 = false;let passing2 = null;const _errs157 = errors;const _errs158 = errors;const _errs159 = errors;const _errs160 = errors;let valid67 = false;const _errs161 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.source === undefined) && ("source")){const err149 = {};if(vErrors === null){vErrors = [err149];}else {vErrors.push(err149);}errors++;}}var _valid13 = _errs161 === errors;valid67 = valid67 || _valid13;if(!valid67){const _errs162 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.sourceExpression === undefined) && ("sourceExpression")){const err150 = {};if(vErrors === null){vErrors = [err150];}else {vErrors.push(err150);}errors++;}}var _valid13 = _errs162 === errors;valid67 = valid67 || _valid13;}if(!valid67){const err151 = {};if(vErrors === null){vErrors = [err151];}else {vErrors.push(err151);}errors++;}else {errors = _errs160;if(vErrors !== null){if(_errs160){vErrors.length = _errs160;}else {vErrors = null;}}}var valid66 = _errs159 === errors;if(!valid66){errors = _errs158;if(vErrors !== null){if(_errs158){vErrors.length = _errs158;}else {vErrors = null;}}}else {const err152 = {keyword:"not",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/0/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err152];}else {vErrors.push(err152);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.variables === undefined){const err153 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/0/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err153];}else {vErrors.push(err153);}errors++;}}var _valid12 = _errs157 === errors;if(_valid12){valid65 = true;passing2 = 0;}const _errs163 = errors;const _errs164 = errors;const _errs165 = errors;const _errs166 = errors;let valid69 = false;const _errs167 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.variables === undefined) && ("variables")){const err154 = {};if(vErrors === null){vErrors = [err154];}else {vErrors.push(err154);}errors++;}}var _valid14 = _errs167 === errors;valid69 = valid69 || _valid14;if(!valid69){const _errs168 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.sourceExpression === undefined) && ("sourceExpression")){const err155 = {};if(vErrors === null){vErrors = [err155];}else {vErrors.push(err155);}errors++;}}var _valid14 = _errs168 === errors;valid69 = valid69 || _valid14;}if(!valid69){const err156 = {};if(vErrors === null){vErrors = [err156];}else {vErrors.push(err156);}errors++;}else {errors = _errs166;if(vErrors !== null){if(_errs166){vErrors.length = _errs166;}else {vErrors = null;}}}var valid68 = _errs165 === errors;if(!valid68){errors = _errs164;if(vErrors !== null){if(_errs164){vErrors.length = _errs164;}else {vErrors = null;}}}else {const err157 = {keyword:"not",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/1/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err157];}else {vErrors.push(err157);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.source === undefined){const err158 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/1/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err158];}else {vErrors.push(err158);}errors++;}}var _valid12 = _errs163 === errors;if(_valid12 && valid65){valid65 = false;passing2 = [passing2, 1];}else {if(_valid12){valid65 = true;passing2 = 1;}const _errs169 = errors;const _errs170 = errors;const _errs171 = errors;const _errs172 = errors;let valid71 = false;const _errs173 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.variables === undefined) && ("variables")){const err159 = {};if(vErrors === null){vErrors = [err159];}else {vErrors.push(err159);}errors++;}}var _valid15 = _errs173 === errors;valid71 = valid71 || _valid15;if(!valid71){const _errs174 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.source === undefined) && ("source")){const err160 = {};if(vErrors === null){vErrors = [err160];}else {vErrors.push(err160);}errors++;}}var _valid15 = _errs174 === errors;valid71 = valid71 || _valid15;}if(!valid71){const err161 = {};if(vErrors === null){vErrors = [err161];}else {vErrors.push(err161);}errors++;}else {errors = _errs172;if(vErrors !== null){if(_errs172){vErrors.length = _errs172;}else {vErrors = null;}}}var valid70 = _errs171 === errors;if(!valid70){errors = _errs170;if(vErrors !== null){if(_errs170){vErrors.length = _errs170;}else {vErrors = null;}}}else {const err162 = {keyword:"not",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/2/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err162];}else {vErrors.push(err162);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.sourceExpression === undefined){const err163 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/2/required",params:{missingProperty: "sourceExpression"},message:"should have required property '"+"sourceExpression"+"'"};if(vErrors === null){vErrors = [err163];}else {vErrors.push(err163);}errors++;}}var _valid12 = _errs169 === errors;if(_valid12 && valid65){valid65 = false;passing2 = [passing2, 2];}else {if(_valid12){valid65 = true;passing2 = 2;}const _errs175 = errors;const _errs176 = errors;const _errs177 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.source === undefined) && ("source")){const err164 = {};if(vErrors === null){vErrors = [err164];}else {vErrors.push(err164);}errors++;}}var valid72 = _errs177 === errors;if(!valid72){errors = _errs176;if(vErrors !== null){if(_errs176){vErrors.length = _errs176;}else {vErrors = null;}}}else {const err165 = {keyword:"not",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err165];}else {vErrors.push(err165);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.variables === undefined){const err166 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err166];}else {vErrors.push(err166);}errors++;}if(data56.sourceExpression === undefined){const err167 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/required",params:{missingProperty: "sourceExpression"},message:"should have required property '"+"sourceExpression"+"'"};if(vErrors === null){vErrors = [err167];}else {vErrors.push(err167);}errors++;}}var _valid12 = _errs175 === errors;if(_valid12 && valid65){valid65 = false;passing2 = [passing2, 3];}else {if(_valid12){valid65 = true;passing2 = 3;}const _errs178 = errors;const _errs179 = errors;const _errs180 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.sourceExpression === undefined) && ("sourceExpression")){const err168 = {};if(vErrors === null){vErrors = [err168];}else {vErrors.push(err168);}errors++;}}var valid73 = _errs180 === errors;if(!valid73){errors = _errs179;if(vErrors !== null){if(_errs179){vErrors.length = _errs179;}else {vErrors = null;}}}else {const err169 = {keyword:"not",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err169];}else {vErrors.push(err169);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.variables === undefined){const err170 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err170];}else {vErrors.push(err170);}errors++;}if(data56.source === undefined){const err171 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err171];}else {vErrors.push(err171);}errors++;}}var _valid12 = _errs178 === errors;if(_valid12 && valid65){valid65 = false;passing2 = [passing2, 4];}else {if(_valid12){valid65 = true;passing2 = 4;}}}}}if(!valid65){const err172 = {keyword:"oneOf",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf",params:{passingSchemas: passing2},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err172];}else {vErrors.push(err172);}errors++;}else {errors = _errs156;if(vErrors !== null){if(_errs156){vErrors.length = _errs156;}else {vErrors = null;}}}if(errors > 0){const emErrs24 = [];for(const err173 of vErrors){if(((((err173.keyword !== "errorMessage") && (!err173.emUsed)) && ((err173.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err173.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err173.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err173.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then") === 0)) && (err173.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then".length] === "/")){emErrs24.push(err173);err173.emUsed = true;}}if(emErrs24.length){const err174 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/errorMessage",params:{errors: emErrs24},message:"property.binding " + JSON.stringify(data56 && data56.type) + " requires one of the following: variables, sourceExpression, source, (sourceExpression and variables), or (source and variables)"};if(vErrors === null){vErrors = [err174];}else {vErrors.push(err174);}errors++;}const emErrs25 = [];for(const err175 of vErrors){if(!err175.emUsed){emErrs25.push(err175);}}vErrors = emErrs25;errors = emErrs25.length;}var _valid11 = _errs155 === errors;valid63 = _valid11;}if(!valid63){const err176 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err176];}else {vErrors.push(err176);}errors++;}const _errs182 = errors;let valid74 = true;const _errs183 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if((data56.type === undefined) && ("type")){const err177 = {};if(vErrors === null){vErrors = [err177];}else {vErrors.push(err177);}errors++;}else {if(data56.type !== undefined){if(!equal(data56.type, "camunda:errorEventDefinition")){const err178 = {};if(vErrors === null){vErrors = [err178];}else {vErrors.push(err178);}errors++;}}}}var _valid16 = _errs183 === errors;errors = _errs182;if(vErrors !== null){if(_errs182){vErrors.length = _errs182;}else {vErrors = null;}}if(_valid16){const _errs185 = errors;const _errs186 = errors;let valid76 = false;let passing3 = null;const _errs187 = errors;if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.errorRef === undefined){const err179 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/oneOf/0/required",params:{missingProperty: "errorRef"},message:"should have required property '"+"errorRef"+"'"};if(vErrors === null){vErrors = [err179];}else {vErrors.push(err179);}errors++;}}var _valid17 = _errs187 === errors;if(_valid17){valid76 = true;passing3 = 0;}if(!valid76){const err180 = {keyword:"oneOf",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/oneOf",params:{passingSchemas: passing3},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err180];}else {vErrors.push(err180);}errors++;}else {errors = _errs186;if(vErrors !== null){if(_errs186){vErrors.length = _errs186;}else {vErrors = null;}}}if(errors > 0){const emErrs26 = [];for(const err181 of vErrors){if(((((err181.keyword !== "errorMessage") && (!err181.emUsed)) && ((err181.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err181.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err181.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err181.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then") === 0)) && (err181.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then".length] === "/")){emErrs26.push(err181);err181.emUsed = true;}}if(emErrs26.length){const err182 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/errorMessage",params:{errors: emErrs26},message:"property.binding " + JSON.stringify(data56 && data56.type) + " requires errorRef"};if(vErrors === null){vErrors = [err182];}else {vErrors.push(err182);}errors++;}const emErrs27 = [];for(const err183 of vErrors){if(!err183.emUsed){emErrs27.push(err183);}}vErrors = emErrs27;errors = emErrs27.length;}var _valid16 = _errs185 === errors;valid74 = _valid16;}if(!valid74){const err184 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err184];}else {vErrors.push(err184);}errors++;}if(data56 && typeof data56 == "object" && !Array.isArray(data56)){if(data56.type === undefined){const err185 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err185];}else {vErrors.push(err185);}errors++;}if(data56.type !== undefined){let data62 = data56.type;if(typeof data62 !== "string"){const err186 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err186];}else {vErrors.push(err186);}errors++;}if(!((((((((((data62 === "property") || (data62 === "camunda:property")) || (data62 === "camunda:inputParameter")) || (data62 === "camunda:outputParameter")) || (data62 === "camunda:in")) || (data62 === "camunda:out")) || (data62 === "camunda:in:businessKey")) || (data62 === "camunda:executionListener")) || (data62 === "camunda:field")) || (data62 === "camunda:errorEventDefinition"))){const err187 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/enum",params:{allowedValues: schema18$1.allOf[1].items.properties.binding.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err187];}else {vErrors.push(err187);}errors++;}if(errors > 0){const emErrs28 = [];for(const err188 of vErrors){if(((((err188.keyword !== "errorMessage") && (!err188.emUsed)) && ((err188.dataPath === dataPath+"/properties/" + i5+"/binding/type") || ((err188.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding/type") === 0) && (err188.dataPath[dataPath+"/properties/" + i5+"/binding/type".length] === "/")))) && (err188.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/properties/type") === 0)) && (err188.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/properties/type".length] === "/")){emErrs28.push(err188);err188.emUsed = true;}}if(emErrs28.length){const err189 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/errorMessage",params:{errors: emErrs28},message:"invalid property.binding type " + JSON.stringify(data62) + "; must be any of { property, camunda:property, camunda:inputParameter, camunda:outputParameter, camunda:in, camunda:out, camunda:in:businessKey, camunda:executionListener, camunda:field, camunda:errorEventDefinition }"};if(vErrors === null){vErrors = [err189];}else {vErrors.push(err189);}errors++;}const emErrs29 = [];for(const err190 of vErrors){if(!err190.emUsed){emErrs29.push(err190);}}vErrors = emErrs29;errors = emErrs29.length;}}if(data56.name !== undefined){if(typeof data56.name !== "string"){const err191 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/name",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/name/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err191];}else {vErrors.push(err191);}errors++;}}if(data56.event !== undefined){if(typeof data56.event !== "string"){const err192 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/event",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/event/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err192];}else {vErrors.push(err192);}errors++;}}if(data56.scriptFormat !== undefined){if(typeof data56.scriptFormat !== "string"){const err193 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/scriptFormat",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/scriptFormat/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err193];}else {vErrors.push(err193);}errors++;}}if(data56.source !== undefined){if(typeof data56.source !== "string"){const err194 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/source",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/source/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err194];}else {vErrors.push(err194);}errors++;}}if(data56.target !== undefined){if(typeof data56.target !== "string"){const err195 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/target",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/target/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err195];}else {vErrors.push(err195);}errors++;}}if(data56.expression !== undefined){if(typeof data56.expression !== "boolean"){const err196 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/expression",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/expression/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err196];}else {vErrors.push(err196);}errors++;}}if(data56.variables !== undefined){let data69 = data56.variables;if(typeof data69 !== "string"){const err197 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/variables",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/variables/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err197];}else {vErrors.push(err197);}errors++;}if(!((data69 === "all") || (data69 === "local"))){const err198 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/binding/variables",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/variables/enum",params:{allowedValues: schema18$1.allOf[1].items.properties.binding.properties.variables.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err198];}else {vErrors.push(err198);}errors++;}}if(data56.sourceExpression !== undefined){if(typeof data56.sourceExpression !== "string"){const err199 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/sourceExpression",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/sourceExpression/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err199];}else {vErrors.push(err199);}errors++;}}}else {const err200 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err200];}else {vErrors.push(err200);}errors++;}}}else {const err201 = {keyword:"type",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err201];}else {vErrors.push(err201);}errors++;}if(errors > 0){const emErrors8 = {"required":[]};const templates8 = {required:function(){return "missing binding for property \"" + JSON.stringify(i5) + "\""}};for(const err202 of vErrors){if((((((err202.keyword !== "errorMessage") && (!err202.emUsed)) && (err202.dataPath === dataPath+"/properties/" + i5)) && (err202.keyword in emErrors8)) && (err202.schemaPath.indexOf("#/definitions/properties/allOf/1/items") === 0)) && (/^\/[^\/]*$/.test(err202.schemaPath.slice(38)))){emErrors8[err202.keyword].push(err202);err202.emUsed = true;}}for(const key8 in emErrors8){if(emErrors8[key8].length){const err203 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/errorMessage",params:{errors: emErrors8[key8]},message:key8 in templates8 ? templates8[key8]() : schema18$1.allOf[1].items.errorMessage[key8]};if(vErrors === null){vErrors = [err203];}else {vErrors.push(err203);}errors++;}}const emErrs30 = [];for(const err204 of vErrors){if(!err204.emUsed){emErrs30.push(err204);}}vErrors = emErrs30;errors = emErrs30.length;}}}else {const err205 = {keyword:"type",dataPath:dataPath+"/properties",schemaPath:"#/definitions/properties/allOf/1/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err205];}else {vErrors.push(err205);}errors++;}}if(data.scopes !== undefined){let data71 = data.scopes;if(Array.isArray(data71)){const len6 = data71.length;for(let i6=0; i6 0){const emErrs31 = [];for(const err209 of vErrors){if(((((err209.keyword !== "errorMessage") && (!err209.emUsed)) && ((err209.dataPath === dataPath+"/scopes/" + i6) || ((err209.dataPath.indexOf(dataPath+"/scopes/" + i6) === 0) && (err209.dataPath[dataPath+"/scopes/" + i6.length] === "/")))) && (err209.schemaPath.indexOf("#/properties/scopes/items/allOf/0/then") === 0)) && (err209.schemaPath["#/properties/scopes/items/allOf/0/then".length] === "/")){emErrs31.push(err209);err209.emUsed = true;}}if(emErrs31.length){const err210 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/allOf/0/then/errorMessage",params:{errors: emErrs31},message:"invalid scope " + JSON.stringify(data72 && data72.type) + ", missing id"};if(vErrors === null){vErrors = [err210];}else {vErrors.push(err210);}errors++;}const emErrs32 = [];for(const err211 of vErrors){if(!err211.emUsed){emErrs32.push(err211);}}vErrors = emErrs32;errors = emErrs32.length;}var _valid18 = _errs214 === errors;valid82 = _valid18;}if(!valid82){const err212 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err212];}else {vErrors.push(err212);}errors++;}if(data72 && typeof data72 == "object" && !Array.isArray(data72)){if(data72.type === undefined){const err213 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err213];}else {vErrors.push(err213);}errors++;}if(data72.properties === undefined){const err214 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/required",params:{missingProperty: "properties"},message:"should have required property '"+"properties"+"'"};if(vErrors === null){vErrors = [err214];}else {vErrors.push(err214);}errors++;}if(data72.type !== undefined){let data74 = data72.type;if(typeof data74 !== "string"){const err215 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/type",schemaPath:"#/properties/scopes/items/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err215];}else {vErrors.push(err215);}errors++;}if(!((data74 === "camunda:Connector") || (data74 === "bpmn:Error"))){const err216 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/type",schemaPath:"#/properties/scopes/items/properties/type/enum",params:{allowedValues: schema17$1.properties.scopes.items.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err216];}else {vErrors.push(err216);}errors++;}if(errors > 0){const emErrs33 = [];for(const err217 of vErrors){if(((((err217.keyword !== "errorMessage") && (!err217.emUsed)) && ((err217.dataPath === dataPath+"/scopes/" + i6+"/type") || ((err217.dataPath.indexOf(dataPath+"/scopes/" + i6+"/type") === 0) && (err217.dataPath[dataPath+"/scopes/" + i6+"/type".length] === "/")))) && (err217.schemaPath.indexOf("#/properties/scopes/items/properties/type") === 0)) && (err217.schemaPath["#/properties/scopes/items/properties/type".length] === "/")){emErrs33.push(err217);err217.emUsed = true;}}if(emErrs33.length){const err218 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/type",schemaPath:"#/properties/scopes/items/properties/type/errorMessage",params:{errors: emErrs33},message:"invalid scope type " + JSON.stringify(data74) + "; must be any of { camunda:Connector, bpmn:Error }"};if(vErrors === null){vErrors = [err218];}else {vErrors.push(err218);}errors++;}const emErrs34 = [];for(const err219 of vErrors){if(!err219.emUsed){emErrs34.push(err219);}}vErrors = emErrs34;errors = emErrs34.length;}}if(data72.properties !== undefined){let data75 = data72.properties;if(Array.isArray(data75)){const len7 = data75.length;for(let i7=0; i7 0){const emErrs35 = [];for(const err223 of vErrors){if(((((err223.keyword !== "errorMessage") && (!err223.emUsed)) && ((err223.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i7) || ((err223.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i7) === 0) && (err223.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i7.length] === "/")))) && (err223.schemaPath.indexOf("#/definitions/properties/allOf/0/items/allOf/0/then") === 0)) && (err223.schemaPath["#/definitions/properties/allOf/0/items/allOf/0/then".length] === "/")){emErrs35.push(err223);err223.emUsed = true;}}if(emErrs35.length){const err224 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/then/errorMessage",params:{errors: emErrs35},message:"must provide choices=[] with \"Dropdown\" type"};if(vErrors === null){vErrors = [err224];}else {vErrors.push(err224);}errors++;}const emErrs36 = [];for(const err225 of vErrors){if(!err225.emUsed){emErrs36.push(err225);}}vErrors = emErrs36;errors = emErrs36.length;}var _valid19 = _errs227 === errors;valid91 = _valid19;}if(!valid91){const err226 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err226];}else {vErrors.push(err226);}errors++;}if(data76 && typeof data76 == "object" && !Array.isArray(data76)){if(data76.id !== undefined){if(typeof data76.id !== "string"){const err227 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/id",schemaPath:"#/definitions/properties/allOf/0/items/properties/id/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err227];}else {vErrors.push(err227);}errors++;}}if(data76.value !== undefined){let data79 = data76.value;if((typeof data79 !== "string") && (typeof data79 !== "boolean")){const err228 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/value/type",params:{type: schema19.items.properties.value.type},message:"should be string,boolean"};if(vErrors === null){vErrors = [err228];}else {vErrors.push(err228);}errors++;}}if(data76.description !== undefined){if(typeof data76.description !== "string"){const err229 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/description",schemaPath:"#/definitions/properties/allOf/0/items/properties/description/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err229];}else {vErrors.push(err229);}errors++;}}if(data76.label !== undefined){if(typeof data76.label !== "string"){const err230 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/label",schemaPath:"#/definitions/properties/allOf/0/items/properties/label/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err230];}else {vErrors.push(err230);}errors++;}}if(data76.type !== undefined){if(typeof data76.type !== "string"){const err231 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/type",schemaPath:"#/definitions/properties/allOf/0/items/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err231];}else {vErrors.push(err231);}errors++;}}if(data76.editable !== undefined){if(typeof data76.editable !== "boolean"){const err232 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/editable",schemaPath:"#/definitions/properties/allOf/0/items/properties/editable/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err232];}else {vErrors.push(err232);}errors++;}}if(data76.choices !== undefined){let data84 = data76.choices;if(Array.isArray(data84)){const len8 = data84.length;for(let i8=0; i8 0){const emErrors9 = {"required":[]};const templates9 = {};for(const err238 of vErrors){if((((((err238.keyword !== "errorMessage") && (!err238.emUsed)) && (err238.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i7+"/choices/" + i8)) && (err238.keyword in emErrors9)) && (err238.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/choices/items") === 0)) && (/^\/[^\/]*$/.test(err238.schemaPath.slice(63)))){emErrors9[err238.keyword].push(err238);err238.emUsed = true;}}for(const key9 in emErrors9){if(emErrors9[key9].length){const err239 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/choices/" + i8,schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/items/errorMessage",params:{errors: emErrors9[key9]},message:key9 in templates9 ? templates9[key9]() : schema19.items.properties.choices.items.errorMessage[key9]};if(vErrors === null){vErrors = [err239];}else {vErrors.push(err239);}errors++;}}const emErrs37 = [];for(const err240 of vErrors){if(!err240.emUsed){emErrs37.push(err240);}}vErrors = emErrs37;errors = emErrs37.length;}}}else {const err241 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/choices",schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err241];}else {vErrors.push(err241);}errors++;}}if(data76.constraints !== undefined){let data88 = data76.constraints;if(data88 && typeof data88 == "object" && !Array.isArray(data88)){if(data88.notEmpty !== undefined){if(typeof data88.notEmpty !== "boolean"){const err242 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/notEmpty",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/notEmpty/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err242];}else {vErrors.push(err242);}errors++;}}if(data88.minLength !== undefined){if(!(typeof data88.minLength == "number")){const err243 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/minLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/minLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err243];}else {vErrors.push(err243);}errors++;}}if(data88.maxLength !== undefined){if(!(typeof data88.maxLength == "number")){const err244 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/maxLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/maxLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err244];}else {vErrors.push(err244);}errors++;}}if(data88.pattern !== undefined){let data92 = data88.pattern;const _errs257 = errors;let valid99 = false;let passing4 = null;const _errs258 = errors;if(data92 && typeof data92 == "object" && !Array.isArray(data92)){if(data92.value !== undefined){if(typeof data92.value !== "string"){const err245 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/pattern/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/value/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err245];}else {vErrors.push(err245);}errors++;}}if(data92.message !== undefined){if(typeof data92.message !== "string"){const err246 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/pattern/message",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/message/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err246];}else {vErrors.push(err246);}errors++;}}}else {const err247 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err247];}else {vErrors.push(err247);}errors++;}var _valid20 = _errs258 === errors;if(_valid20){valid99 = true;passing4 = 0;}const _errs264 = errors;if(typeof data92 !== "string"){const err248 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/1/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err248];}else {vErrors.push(err248);}errors++;}var _valid20 = _errs264 === errors;if(_valid20 && valid99){valid99 = false;passing4 = [passing4, 1];}else {if(_valid20){valid99 = true;passing4 = 1;}}if(!valid99){const err249 = {keyword:"oneOf",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf",params:{passingSchemas: passing4},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err249];}else {vErrors.push(err249);}errors++;}else {errors = _errs257;if(vErrors !== null){if(_errs257){vErrors.length = _errs257;}else {vErrors = null;}}}}}else {const err250 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/constraints",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err250];}else {vErrors.push(err250);}errors++;}}if(data76.group !== undefined){if(typeof data76.group !== "string"){const err251 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/group",schemaPath:"#/definitions/properties/allOf/0/items/properties/group/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err251];}else {vErrors.push(err251);}errors++;}}if(data76.condition !== undefined){let data96 = data76.condition;const _errs270 = errors;let valid101 = false;let passing5 = null;const _errs271 = errors;if(data96 && typeof data96 == "object" && !Array.isArray(data96)){if(data96.equals === undefined){const err252 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/required",params:{missingProperty: "equals"},message:"should have required property '"+"equals"+"'"};if(vErrors === null){vErrors = [err252];}else {vErrors.push(err252);}errors++;}if(data96.equals !== undefined){let data97 = data96.equals;if(((typeof data97 !== "string") && (!(typeof data97 == "number"))) && (typeof data97 !== "boolean")){const err253 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/condition/equals",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/properties/equals/type",params:{type: schema19.items.properties.condition.oneOf[0].properties.equals.type},message:"should be string,number,boolean"};if(vErrors === null){vErrors = [err253];}else {vErrors.push(err253);}errors++;}}}var _valid21 = _errs271 === errors;if(_valid21){valid101 = true;passing5 = 0;}const _errs274 = errors;if(data96 && typeof data96 == "object" && !Array.isArray(data96)){if(data96.oneOf === undefined){const err254 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/1/required",params:{missingProperty: "oneOf"},message:"should have required property '"+"oneOf"+"'"};if(vErrors === null){vErrors = [err254];}else {vErrors.push(err254);}errors++;}if(data96.oneOf !== undefined){let data98 = data96.oneOf;if(Array.isArray(data98)){const len9 = data98.length;for(let i9=0; i9 0){const emErrors10 = {"required":{"property":[]}};const templates10 = {required:{}};let emPropParams4;let emParamsErrors4;for(const err262 of vErrors){if((((((err262.keyword !== "errorMessage") && (!err262.emUsed)) && (err262.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i7+"/condition")) && (err262.keyword in emErrors10)) && (err262.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/condition") === 0)) && (/^\/[^\/]*$/.test(err262.schemaPath.slice(59)))){emPropParams4 = obj0$1[err262.keyword];emParamsErrors4 = emErrors10[err262.keyword][err262.params[emPropParams4]];if(emParamsErrors4){emParamsErrors4.push(err262);err262.emUsed = true;}}}for(const key10 in emErrors10){for(const keyProp4 in emErrors10[key10]){emParamsErrors4 = emErrors10[key10][keyProp4];if(emParamsErrors4.length){const tmpl4 = templates10[key10] && templates10[key10][keyProp4];const err263 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/errorMessage",params:{errors: emParamsErrors4},message:tmpl4 ? tmpl4() : schema19.items.properties.condition.errorMessage[key10][keyProp4]};if(vErrors === null){vErrors = [err263];}else {vErrors.push(err263);}errors++;}}}const emErrs38 = [];for(const err264 of vErrors){if(!err264.emUsed){emErrs38.push(err264);}}vErrors = emErrs38;errors = emErrs38.length;}}}else {const err265 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i7,schemaPath:"#/definitions/properties/allOf/0/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err265];}else {vErrors.push(err265);}errors++;}}}else {const err266 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties",schemaPath:"#/definitions/properties/allOf/0/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err266];}else {vErrors.push(err266);}errors++;}if(Array.isArray(data75)){const len10 = data75.length;for(let i10=0; i10 0){const emErrs39 = [];for(const err271 of vErrors){if(((((err271.keyword !== "errorMessage") && (!err271.emUsed)) && ((err271.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") || ((err271.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") === 0) && (err271.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/type".length] === "/")))) && (err271.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/0/then/properties/type") === 0)) && (err271.schemaPath["#/definitions/properties/allOf/1/items/allOf/0/then/properties/type".length] === "/")){emErrs39.push(err271);err271.emUsed = true;}}if(emErrs39.length){const err272 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/then/properties/type/errorMessage",params:{errors: emErrs39},message:"invalid property type " + JSON.stringify(data105) + " for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"};if(vErrors === null){vErrors = [err272];}else {vErrors.push(err272);}errors++;}const emErrs40 = [];for(const err273 of vErrors){if(!err273.emUsed){emErrs40.push(err273);}}vErrors = emErrs40;errors = emErrs40.length;}}}var _valid22 = _errs292 === errors;valid112 = _valid22;}if(!valid112){const err274 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err274];}else {vErrors.push(err274);}errors++;}const _errs295 = errors;let valid116 = true;const _errs296 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if((data102.binding === undefined) && ("binding")){const err275 = {};if(vErrors === null){vErrors = [err275];}else {vErrors.push(err275);}errors++;}else {if(data102.binding !== undefined){let data106 = data102.binding;if(data106 && typeof data106 == "object" && !Array.isArray(data106)){if((data106.type === undefined) && ("type")){const err276 = {};if(vErrors === null){vErrors = [err276];}else {vErrors.push(err276);}errors++;}else {if(data106.type !== undefined){if(!equal(data106.type, "camunda:executionListener")){const err277 = {};if(vErrors === null){vErrors = [err277];}else {vErrors.push(err277);}errors++;}}}}}}}var _valid23 = _errs296 === errors;errors = _errs295;if(vErrors !== null){if(_errs295){vErrors.length = _errs295;}else {vErrors = null;}}if(_valid23){const _errs299 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if(data102.type !== undefined){if(!(data102.type === "Hidden")){const err278 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/enum",params:{allowedValues: schema20.items.allOf[1].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err278];}else {vErrors.push(err278);}errors++;}if(errors > 0){const emErrs41 = [];for(const err279 of vErrors){if(((((err279.keyword !== "errorMessage") && (!err279.emUsed)) && ((err279.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") || ((err279.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") === 0) && (err279.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/type".length] === "/")))) && (err279.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/1/then/properties/type") === 0)) && (err279.schemaPath["#/definitions/properties/allOf/1/items/allOf/1/then/properties/type".length] === "/")){emErrs41.push(err279);err279.emUsed = true;}}if(emErrs41.length){const err280 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/errorMessage",params:{errors: emErrs41},message:"invalid property type " + JSON.stringify(data102 && data102.type) + " for binding type \"camunda:executionListener\"; must be \"Hidden\""};if(vErrors === null){vErrors = [err280];}else {vErrors.push(err280);}errors++;}const emErrs42 = [];for(const err281 of vErrors){if(!err281.emUsed){emErrs42.push(err281);}}vErrors = emErrs42;errors = emErrs42.length;}}}var _valid23 = _errs299 === errors;valid116 = _valid23;}if(!valid116){const err282 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err282];}else {vErrors.push(err282);}errors++;}const _errs302 = errors;let valid120 = true;const _errs303 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if((data102.binding === undefined) && ("binding")){const err283 = {};if(vErrors === null){vErrors = [err283];}else {vErrors.push(err283);}errors++;}else {if(data102.binding !== undefined){let data109 = data102.binding;if(data109 && typeof data109 == "object" && !Array.isArray(data109)){if((data109.type === undefined) && ("type")){const err284 = {};if(vErrors === null){vErrors = [err284];}else {vErrors.push(err284);}errors++;}else {if(data109.type !== undefined){let data110 = data109.type;if(!((((((data110 === "camunda:property") || (data110 === "camunda:outputParameter")) || (data110 === "camunda:in")) || (data110 === "camunda:in:businessKey")) || (data110 === "camunda:out")) || (data110 === "camunda:errorEventDefinition"))){const err285 = {};if(vErrors === null){vErrors = [err285];}else {vErrors.push(err285);}errors++;}}}}}}}var _valid24 = _errs303 === errors;errors = _errs302;if(vErrors !== null){if(_errs302){vErrors.length = _errs302;}else {vErrors = null;}}if(_valid24){const _errs306 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if(data102.type !== undefined){let data111 = data102.type;if(!(((data111 === "String") || (data111 === "Hidden")) || (data111 === "Dropdown"))){const err286 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/type/enum",params:{allowedValues: schema20.items.allOf[2].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err286];}else {vErrors.push(err286);}errors++;}if(errors > 0){const emErrs43 = [];for(const err287 of vErrors){if(((((err287.keyword !== "errorMessage") && (!err287.emUsed)) && ((err287.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") || ((err287.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") === 0) && (err287.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/type".length] === "/")))) && (err287.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/2/then/properties/type") === 0)) && (err287.schemaPath["#/definitions/properties/allOf/1/items/allOf/2/then/properties/type".length] === "/")){emErrs43.push(err287);err287.emUsed = true;}}if(emErrs43.length){const err288 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/type/errorMessage",params:{errors: emErrs43},message:"invalid property type " + JSON.stringify(data111) + " for binding type " + JSON.stringify(data102 && data102.binding && data102.binding.type) + "; must be any of { String, Hidden, Dropdown }"};if(vErrors === null){vErrors = [err288];}else {vErrors.push(err288);}errors++;}const emErrs44 = [];for(const err289 of vErrors){if(!err289.emUsed){emErrs44.push(err289);}}vErrors = emErrs44;errors = emErrs44.length;}}}var _valid24 = _errs306 === errors;valid120 = _valid24;}if(!valid120){const err290 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err290];}else {vErrors.push(err290);}errors++;}const _errs309 = errors;let valid124 = true;const _errs310 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if((data102.binding === undefined) && ("binding")){const err291 = {};if(vErrors === null){vErrors = [err291];}else {vErrors.push(err291);}errors++;}else {if(data102.binding !== undefined){let data112 = data102.binding;if(data112 && typeof data112 == "object" && !Array.isArray(data112)){if((data112.type === undefined) && ("type")){const err292 = {};if(vErrors === null){vErrors = [err292];}else {vErrors.push(err292);}errors++;}else {if(data112.type !== undefined){let data113 = data112.type;if(!((data113 === "camunda:inputParameter") || (data113 === "camunda:field"))){const err293 = {};if(vErrors === null){vErrors = [err293];}else {vErrors.push(err293);}errors++;}}}}}}}var _valid25 = _errs310 === errors;errors = _errs309;if(vErrors !== null){if(_errs309){vErrors.length = _errs309;}else {vErrors = null;}}if(_valid25){const _errs313 = errors;if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if(data102.type !== undefined){let data114 = data102.type;if(!((((data114 === "String") || (data114 === "Text")) || (data114 === "Hidden")) || (data114 === "Dropdown"))){const err294 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/type/enum",params:{allowedValues: schema20.items.allOf[3].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err294];}else {vErrors.push(err294);}errors++;}if(errors > 0){const emErrs45 = [];for(const err295 of vErrors){if(((((err295.keyword !== "errorMessage") && (!err295.emUsed)) && ((err295.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") || ((err295.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/type") === 0) && (err295.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/type".length] === "/")))) && (err295.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/3/then/properties/type") === 0)) && (err295.schemaPath["#/definitions/properties/allOf/1/items/allOf/3/then/properties/type".length] === "/")){emErrs45.push(err295);err295.emUsed = true;}}if(emErrs45.length){const err296 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/type/errorMessage",params:{errors: emErrs45},message:"invalid property type " + JSON.stringify(data114) + " for binding type " + JSON.stringify(data102 && data102.binding && data102.binding.type) + "; must be any of { String, Text, Hidden, Dropdown }"};if(vErrors === null){vErrors = [err296];}else {vErrors.push(err296);}errors++;}const emErrs46 = [];for(const err297 of vErrors){if(!err297.emUsed){emErrs46.push(err297);}}vErrors = emErrs46;errors = emErrs46.length;}}}var _valid25 = _errs313 === errors;valid124 = _valid25;}if(!valid124){const err298 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err298];}else {vErrors.push(err298);}errors++;}if(data102 && typeof data102 == "object" && !Array.isArray(data102)){if(data102.binding === undefined){const err299 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/required",params:{missingProperty: "binding"},message:"should have required property '"+"binding"+"'"};if(vErrors === null){vErrors = [err299];}else {vErrors.push(err299);}errors++;}if(data102.binding !== undefined){let data115 = data102.binding;const _errs318 = errors;let valid130 = true;const _errs319 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.type === undefined) && ("type")){const err300 = {};if(vErrors === null){vErrors = [err300];}else {vErrors.push(err300);}errors++;}else {if(data115.type !== undefined){let data116 = data115.type;if(!((((data116 === "property") || (data116 === "camunda:property")) || (data116 === "camunda:inputParameter")) || (data116 === "camunda:field"))){const err301 = {};if(vErrors === null){vErrors = [err301];}else {vErrors.push(err301);}errors++;}}}}var _valid26 = _errs319 === errors;errors = _errs318;if(vErrors !== null){if(_errs318){vErrors.length = _errs318;}else {vErrors = null;}}if(_valid26){const _errs321 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.name === undefined){const err302 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/required",params:{missingProperty: "name"},message:"should have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err302];}else {vErrors.push(err302);}errors++;}}if(errors > 0){const emErrs47 = [];for(const err303 of vErrors){if(((((err303.keyword !== "errorMessage") && (!err303.emUsed)) && ((err303.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") || ((err303.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") === 0) && (err303.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding".length] === "/")))) && (err303.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then") === 0)) && (err303.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then".length] === "/")){emErrs47.push(err303);err303.emUsed = true;}}if(emErrs47.length){const err304 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/errorMessage",params:{errors: emErrs47},message:"property.binding " + JSON.stringify(data115 && data115.type) + " requires name"};if(vErrors === null){vErrors = [err304];}else {vErrors.push(err304);}errors++;}const emErrs48 = [];for(const err305 of vErrors){if(!err305.emUsed){emErrs48.push(err305);}}vErrors = emErrs48;errors = emErrs48.length;}var _valid26 = _errs321 === errors;valid130 = _valid26;}if(!valid130){const err306 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err306];}else {vErrors.push(err306);}errors++;}const _errs323 = errors;let valid132 = true;const _errs324 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.type === undefined) && ("type")){const err307 = {};if(vErrors === null){vErrors = [err307];}else {vErrors.push(err307);}errors++;}else {if(data115.type !== undefined){if(!equal(data115.type, "camunda:outputParameter")){const err308 = {};if(vErrors === null){vErrors = [err308];}else {vErrors.push(err308);}errors++;}}}}var _valid27 = _errs324 === errors;errors = _errs323;if(vErrors !== null){if(_errs323){vErrors.length = _errs323;}else {vErrors = null;}}if(_valid27){const _errs326 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.source === undefined){const err309 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err309];}else {vErrors.push(err309);}errors++;}}if(errors > 0){const emErrs49 = [];for(const err310 of vErrors){if(((((err310.keyword !== "errorMessage") && (!err310.emUsed)) && ((err310.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") || ((err310.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") === 0) && (err310.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding".length] === "/")))) && (err310.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then") === 0)) && (err310.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then".length] === "/")){emErrs49.push(err310);err310.emUsed = true;}}if(emErrs49.length){const err311 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/errorMessage",params:{errors: emErrs49},message:"property.binding " + JSON.stringify(data115 && data115.type) + " requires source"};if(vErrors === null){vErrors = [err311];}else {vErrors.push(err311);}errors++;}const emErrs50 = [];for(const err312 of vErrors){if(!err312.emUsed){emErrs50.push(err312);}}vErrors = emErrs50;errors = emErrs50.length;}var _valid27 = _errs326 === errors;valid132 = _valid27;}if(!valid132){const err313 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err313];}else {vErrors.push(err313);}errors++;}const _errs328 = errors;let valid134 = true;const _errs329 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.type === undefined) && ("type")){const err314 = {};if(vErrors === null){vErrors = [err314];}else {vErrors.push(err314);}errors++;}else {if(data115.type !== undefined){if(!equal(data115.type, "camunda:in")){const err315 = {};if(vErrors === null){vErrors = [err315];}else {vErrors.push(err315);}errors++;}}}}var _valid28 = _errs329 === errors;errors = _errs328;if(vErrors !== null){if(_errs328){vErrors.length = _errs328;}else {vErrors = null;}}if(_valid28){const _errs331 = errors;const _errs332 = errors;let valid136 = false;const _errs333 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.variables === undefined){const err316 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf/0/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err316];}else {vErrors.push(err316);}errors++;}}var _valid29 = _errs333 === errors;valid136 = valid136 || _valid29;if(!valid136){const _errs334 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.target === undefined){const err317 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf/1/required",params:{missingProperty: "target"},message:"should have required property '"+"target"+"'"};if(vErrors === null){vErrors = [err317];}else {vErrors.push(err317);}errors++;}}var _valid29 = _errs334 === errors;valid136 = valid136 || _valid29;}if(!valid136){const err318 = {keyword:"anyOf",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/anyOf",params:{},message:"should match some schema in anyOf"};if(vErrors === null){vErrors = [err318];}else {vErrors.push(err318);}errors++;}else {errors = _errs332;if(vErrors !== null){if(_errs332){vErrors.length = _errs332;}else {vErrors = null;}}}if(errors > 0){const emErrs51 = [];for(const err319 of vErrors){if(((((err319.keyword !== "errorMessage") && (!err319.emUsed)) && ((err319.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") || ((err319.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") === 0) && (err319.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding".length] === "/")))) && (err319.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then") === 0)) && (err319.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then".length] === "/")){emErrs51.push(err319);err319.emUsed = true;}}if(emErrs51.length){const err320 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/errorMessage",params:{errors: emErrs51},message:"property.binding " + JSON.stringify(data115 && data115.type) + " requires variables, target, or both"};if(vErrors === null){vErrors = [err320];}else {vErrors.push(err320);}errors++;}const emErrs52 = [];for(const err321 of vErrors){if(!err321.emUsed){emErrs52.push(err321);}}vErrors = emErrs52;errors = emErrs52.length;}var _valid28 = _errs331 === errors;valid134 = _valid28;}if(!valid134){const err322 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err322];}else {vErrors.push(err322);}errors++;}const _errs336 = errors;let valid137 = true;const _errs337 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.type === undefined) && ("type")){const err323 = {};if(vErrors === null){vErrors = [err323];}else {vErrors.push(err323);}errors++;}else {if(data115.type !== undefined){if(!equal(data115.type, "camunda:out")){const err324 = {};if(vErrors === null){vErrors = [err324];}else {vErrors.push(err324);}errors++;}}}}var _valid30 = _errs337 === errors;errors = _errs336;if(vErrors !== null){if(_errs336){vErrors.length = _errs336;}else {vErrors = null;}}if(_valid30){const _errs339 = errors;const _errs340 = errors;let valid139 = false;let passing6 = null;const _errs341 = errors;const _errs342 = errors;const _errs343 = errors;const _errs344 = errors;let valid141 = false;const _errs345 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.source === undefined) && ("source")){const err325 = {};if(vErrors === null){vErrors = [err325];}else {vErrors.push(err325);}errors++;}}var _valid32 = _errs345 === errors;valid141 = valid141 || _valid32;if(!valid141){const _errs346 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.sourceExpression === undefined) && ("sourceExpression")){const err326 = {};if(vErrors === null){vErrors = [err326];}else {vErrors.push(err326);}errors++;}}var _valid32 = _errs346 === errors;valid141 = valid141 || _valid32;}if(!valid141){const err327 = {};if(vErrors === null){vErrors = [err327];}else {vErrors.push(err327);}errors++;}else {errors = _errs344;if(vErrors !== null){if(_errs344){vErrors.length = _errs344;}else {vErrors = null;}}}var valid140 = _errs343 === errors;if(!valid140){errors = _errs342;if(vErrors !== null){if(_errs342){vErrors.length = _errs342;}else {vErrors = null;}}}else {const err328 = {keyword:"not",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/0/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err328];}else {vErrors.push(err328);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.variables === undefined){const err329 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/0/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err329];}else {vErrors.push(err329);}errors++;}}var _valid31 = _errs341 === errors;if(_valid31){valid139 = true;passing6 = 0;}const _errs347 = errors;const _errs348 = errors;const _errs349 = errors;const _errs350 = errors;let valid143 = false;const _errs351 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.variables === undefined) && ("variables")){const err330 = {};if(vErrors === null){vErrors = [err330];}else {vErrors.push(err330);}errors++;}}var _valid33 = _errs351 === errors;valid143 = valid143 || _valid33;if(!valid143){const _errs352 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.sourceExpression === undefined) && ("sourceExpression")){const err331 = {};if(vErrors === null){vErrors = [err331];}else {vErrors.push(err331);}errors++;}}var _valid33 = _errs352 === errors;valid143 = valid143 || _valid33;}if(!valid143){const err332 = {};if(vErrors === null){vErrors = [err332];}else {vErrors.push(err332);}errors++;}else {errors = _errs350;if(vErrors !== null){if(_errs350){vErrors.length = _errs350;}else {vErrors = null;}}}var valid142 = _errs349 === errors;if(!valid142){errors = _errs348;if(vErrors !== null){if(_errs348){vErrors.length = _errs348;}else {vErrors = null;}}}else {const err333 = {keyword:"not",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/1/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err333];}else {vErrors.push(err333);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.source === undefined){const err334 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/1/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err334];}else {vErrors.push(err334);}errors++;}}var _valid31 = _errs347 === errors;if(_valid31 && valid139){valid139 = false;passing6 = [passing6, 1];}else {if(_valid31){valid139 = true;passing6 = 1;}const _errs353 = errors;const _errs354 = errors;const _errs355 = errors;const _errs356 = errors;let valid145 = false;const _errs357 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.variables === undefined) && ("variables")){const err335 = {};if(vErrors === null){vErrors = [err335];}else {vErrors.push(err335);}errors++;}}var _valid34 = _errs357 === errors;valid145 = valid145 || _valid34;if(!valid145){const _errs358 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.source === undefined) && ("source")){const err336 = {};if(vErrors === null){vErrors = [err336];}else {vErrors.push(err336);}errors++;}}var _valid34 = _errs358 === errors;valid145 = valid145 || _valid34;}if(!valid145){const err337 = {};if(vErrors === null){vErrors = [err337];}else {vErrors.push(err337);}errors++;}else {errors = _errs356;if(vErrors !== null){if(_errs356){vErrors.length = _errs356;}else {vErrors = null;}}}var valid144 = _errs355 === errors;if(!valid144){errors = _errs354;if(vErrors !== null){if(_errs354){vErrors.length = _errs354;}else {vErrors = null;}}}else {const err338 = {keyword:"not",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/2/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err338];}else {vErrors.push(err338);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.sourceExpression === undefined){const err339 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/2/required",params:{missingProperty: "sourceExpression"},message:"should have required property '"+"sourceExpression"+"'"};if(vErrors === null){vErrors = [err339];}else {vErrors.push(err339);}errors++;}}var _valid31 = _errs353 === errors;if(_valid31 && valid139){valid139 = false;passing6 = [passing6, 2];}else {if(_valid31){valid139 = true;passing6 = 2;}const _errs359 = errors;const _errs360 = errors;const _errs361 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.source === undefined) && ("source")){const err340 = {};if(vErrors === null){vErrors = [err340];}else {vErrors.push(err340);}errors++;}}var valid146 = _errs361 === errors;if(!valid146){errors = _errs360;if(vErrors !== null){if(_errs360){vErrors.length = _errs360;}else {vErrors = null;}}}else {const err341 = {keyword:"not",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err341];}else {vErrors.push(err341);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.variables === undefined){const err342 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err342];}else {vErrors.push(err342);}errors++;}if(data115.sourceExpression === undefined){const err343 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/3/required",params:{missingProperty: "sourceExpression"},message:"should have required property '"+"sourceExpression"+"'"};if(vErrors === null){vErrors = [err343];}else {vErrors.push(err343);}errors++;}}var _valid31 = _errs359 === errors;if(_valid31 && valid139){valid139 = false;passing6 = [passing6, 3];}else {if(_valid31){valid139 = true;passing6 = 3;}const _errs362 = errors;const _errs363 = errors;const _errs364 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.sourceExpression === undefined) && ("sourceExpression")){const err344 = {};if(vErrors === null){vErrors = [err344];}else {vErrors.push(err344);}errors++;}}var valid147 = _errs364 === errors;if(!valid147){errors = _errs363;if(vErrors !== null){if(_errs363){vErrors.length = _errs363;}else {vErrors = null;}}}else {const err345 = {keyword:"not",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/not",params:{},message:"should NOT be valid"};if(vErrors === null){vErrors = [err345];}else {vErrors.push(err345);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.variables === undefined){const err346 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/required",params:{missingProperty: "variables"},message:"should have required property '"+"variables"+"'"};if(vErrors === null){vErrors = [err346];}else {vErrors.push(err346);}errors++;}if(data115.source === undefined){const err347 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf/4/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err347];}else {vErrors.push(err347);}errors++;}}var _valid31 = _errs362 === errors;if(_valid31 && valid139){valid139 = false;passing6 = [passing6, 4];}else {if(_valid31){valid139 = true;passing6 = 4;}}}}}if(!valid139){const err348 = {keyword:"oneOf",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/oneOf",params:{passingSchemas: passing6},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err348];}else {vErrors.push(err348);}errors++;}else {errors = _errs340;if(vErrors !== null){if(_errs340){vErrors.length = _errs340;}else {vErrors = null;}}}if(errors > 0){const emErrs53 = [];for(const err349 of vErrors){if(((((err349.keyword !== "errorMessage") && (!err349.emUsed)) && ((err349.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") || ((err349.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") === 0) && (err349.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding".length] === "/")))) && (err349.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then") === 0)) && (err349.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then".length] === "/")){emErrs53.push(err349);err349.emUsed = true;}}if(emErrs53.length){const err350 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/then/errorMessage",params:{errors: emErrs53},message:"property.binding " + JSON.stringify(data115 && data115.type) + " requires one of the following: variables, sourceExpression, source, (sourceExpression and variables), or (source and variables)"};if(vErrors === null){vErrors = [err350];}else {vErrors.push(err350);}errors++;}const emErrs54 = [];for(const err351 of vErrors){if(!err351.emUsed){emErrs54.push(err351);}}vErrors = emErrs54;errors = emErrs54.length;}var _valid30 = _errs339 === errors;valid137 = _valid30;}if(!valid137){const err352 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/3/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err352];}else {vErrors.push(err352);}errors++;}const _errs366 = errors;let valid148 = true;const _errs367 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if((data115.type === undefined) && ("type")){const err353 = {};if(vErrors === null){vErrors = [err353];}else {vErrors.push(err353);}errors++;}else {if(data115.type !== undefined){if(!equal(data115.type, "camunda:errorEventDefinition")){const err354 = {};if(vErrors === null){vErrors = [err354];}else {vErrors.push(err354);}errors++;}}}}var _valid35 = _errs367 === errors;errors = _errs366;if(vErrors !== null){if(_errs366){vErrors.length = _errs366;}else {vErrors = null;}}if(_valid35){const _errs369 = errors;const _errs370 = errors;let valid150 = false;let passing7 = null;const _errs371 = errors;if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.errorRef === undefined){const err355 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/oneOf/0/required",params:{missingProperty: "errorRef"},message:"should have required property '"+"errorRef"+"'"};if(vErrors === null){vErrors = [err355];}else {vErrors.push(err355);}errors++;}}var _valid36 = _errs371 === errors;if(_valid36){valid150 = true;passing7 = 0;}if(!valid150){const err356 = {keyword:"oneOf",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/oneOf",params:{passingSchemas: passing7},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err356];}else {vErrors.push(err356);}errors++;}else {errors = _errs370;if(vErrors !== null){if(_errs370){vErrors.length = _errs370;}else {vErrors = null;}}}if(errors > 0){const emErrs55 = [];for(const err357 of vErrors){if(((((err357.keyword !== "errorMessage") && (!err357.emUsed)) && ((err357.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") || ((err357.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding") === 0) && (err357.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding".length] === "/")))) && (err357.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then") === 0)) && (err357.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then".length] === "/")){emErrs55.push(err357);err357.emUsed = true;}}if(emErrs55.length){const err358 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/then/errorMessage",params:{errors: emErrs55},message:"property.binding " + JSON.stringify(data115 && data115.type) + " requires errorRef"};if(vErrors === null){vErrors = [err358];}else {vErrors.push(err358);}errors++;}const emErrs56 = [];for(const err359 of vErrors){if(!err359.emUsed){emErrs56.push(err359);}}vErrors = emErrs56;errors = emErrs56.length;}var _valid35 = _errs369 === errors;valid148 = _valid35;}if(!valid148){const err360 = {keyword:"if",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/4/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err360];}else {vErrors.push(err360);}errors++;}if(data115 && typeof data115 == "object" && !Array.isArray(data115)){if(data115.type === undefined){const err361 = {keyword:"required",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err361];}else {vErrors.push(err361);}errors++;}if(data115.type !== undefined){let data121 = data115.type;if(typeof data121 !== "string"){const err362 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err362];}else {vErrors.push(err362);}errors++;}if(!((((((((((data121 === "property") || (data121 === "camunda:property")) || (data121 === "camunda:inputParameter")) || (data121 === "camunda:outputParameter")) || (data121 === "camunda:in")) || (data121 === "camunda:out")) || (data121 === "camunda:in:businessKey")) || (data121 === "camunda:executionListener")) || (data121 === "camunda:field")) || (data121 === "camunda:errorEventDefinition"))){const err363 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/enum",params:{allowedValues: schema20.items.properties.binding.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err363];}else {vErrors.push(err363);}errors++;}if(errors > 0){const emErrs57 = [];for(const err364 of vErrors){if(((((err364.keyword !== "errorMessage") && (!err364.emUsed)) && ((err364.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type") || ((err364.dataPath.indexOf(dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type") === 0) && (err364.dataPath[dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type".length] === "/")))) && (err364.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/properties/type") === 0)) && (err364.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/properties/type".length] === "/")){emErrs57.push(err364);err364.emUsed = true;}}if(emErrs57.length){const err365 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/errorMessage",params:{errors: emErrs57},message:"invalid property.binding type " + JSON.stringify(data121) + "; must be any of { property, camunda:property, camunda:inputParameter, camunda:outputParameter, camunda:in, camunda:out, camunda:in:businessKey, camunda:executionListener, camunda:field, camunda:errorEventDefinition }"};if(vErrors === null){vErrors = [err365];}else {vErrors.push(err365);}errors++;}const emErrs58 = [];for(const err366 of vErrors){if(!err366.emUsed){emErrs58.push(err366);}}vErrors = emErrs58;errors = emErrs58.length;}}if(data115.name !== undefined){if(typeof data115.name !== "string"){const err367 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/name",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/name/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err367];}else {vErrors.push(err367);}errors++;}}if(data115.event !== undefined){if(typeof data115.event !== "string"){const err368 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/event",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/event/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err368];}else {vErrors.push(err368);}errors++;}}if(data115.scriptFormat !== undefined){if(typeof data115.scriptFormat !== "string"){const err369 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/scriptFormat",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/scriptFormat/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err369];}else {vErrors.push(err369);}errors++;}}if(data115.source !== undefined){if(typeof data115.source !== "string"){const err370 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/source",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/source/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err370];}else {vErrors.push(err370);}errors++;}}if(data115.target !== undefined){if(typeof data115.target !== "string"){const err371 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/target",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/target/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err371];}else {vErrors.push(err371);}errors++;}}if(data115.expression !== undefined){if(typeof data115.expression !== "boolean"){const err372 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/expression",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/expression/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err372];}else {vErrors.push(err372);}errors++;}}if(data115.variables !== undefined){let data128 = data115.variables;if(typeof data128 !== "string"){const err373 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/variables",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/variables/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err373];}else {vErrors.push(err373);}errors++;}if(!((data128 === "all") || (data128 === "local"))){const err374 = {keyword:"enum",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/variables",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/variables/enum",params:{allowedValues: schema20.items.properties.binding.properties.variables.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err374];}else {vErrors.push(err374);}errors++;}}if(data115.sourceExpression !== undefined){if(typeof data115.sourceExpression !== "string"){const err375 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding/sourceExpression",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/sourceExpression/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err375];}else {vErrors.push(err375);}errors++;}}}else {const err376 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err376];}else {vErrors.push(err376);}errors++;}}}else {const err377 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err377];}else {vErrors.push(err377);}errors++;}if(errors > 0){const emErrors11 = {"required":[]};const templates11 = {required:function(){return "missing binding for property \"" + JSON.stringify(i10) + "\""}};for(const err378 of vErrors){if((((((err378.keyword !== "errorMessage") && (!err378.emUsed)) && (err378.dataPath === dataPath+"/scopes/" + i6+"/properties/" + i10)) && (err378.keyword in emErrors11)) && (err378.schemaPath.indexOf("#/definitions/properties/allOf/1/items") === 0)) && (/^\/[^\/]*$/.test(err378.schemaPath.slice(38)))){emErrors11[err378.keyword].push(err378);err378.emUsed = true;}}for(const key11 in emErrors11){if(emErrors11[key11].length){const err379 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6+"/properties/" + i10,schemaPath:"#/definitions/properties/allOf/1/items/errorMessage",params:{errors: emErrors11[key11]},message:key11 in templates11 ? templates11[key11]() : schema20.items.errorMessage[key11]};if(vErrors === null){vErrors = [err379];}else {vErrors.push(err379);}errors++;}}const emErrs59 = [];for(const err380 of vErrors){if(!err380.emUsed){emErrs59.push(err380);}}vErrors = emErrs59;errors = emErrs59.length;}}}else {const err381 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6+"/properties",schemaPath:"#/definitions/properties/allOf/1/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err381];}else {vErrors.push(err381);}errors++;}}}else {const err382 = {keyword:"type",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err382];}else {vErrors.push(err382);}errors++;}if(errors > 0){const emErrors12 = {"required":{"type":[],"properties":[]}};const templates12 = {required:{properties:function(){return "invalid scope " + JSON.stringify(data72 && data72.type) + ", missing properties=[]"}}};let emPropParams5;let emParamsErrors5;for(const err383 of vErrors){if((((((err383.keyword !== "errorMessage") && (!err383.emUsed)) && (err383.dataPath === dataPath+"/scopes/" + i6)) && (err383.keyword in emErrors12)) && (err383.schemaPath.indexOf("#/properties/scopes/items") === 0)) && (/^\/[^\/]*$/.test(err383.schemaPath.slice(25)))){emPropParams5 = obj0$1[err383.keyword];emParamsErrors5 = emErrors12[err383.keyword][err383.params[emPropParams5]];if(emParamsErrors5){emParamsErrors5.push(err383);err383.emUsed = true;}}}for(const key12 in emErrors12){for(const keyProp5 in emErrors12[key12]){emParamsErrors5 = emErrors12[key12][keyProp5];if(emParamsErrors5.length){const tmpl5 = templates12[key12] && templates12[key12][keyProp5];const err384 = {keyword:"errorMessage",dataPath:dataPath+"/scopes/" + i6,schemaPath:"#/properties/scopes/items/errorMessage",params:{errors: emParamsErrors5},message:tmpl5 ? tmpl5() : schema17$1.properties.scopes.items.errorMessage[key12][keyProp5]};if(vErrors === null){vErrors = [err384];}else {vErrors.push(err384);}errors++;}}}const emErrs60 = [];for(const err385 of vErrors){if(!err385.emUsed){emErrs60.push(err385);}}vErrors = emErrs60;errors = emErrs60.length;}}}else {const err386 = {keyword:"type",dataPath:dataPath+"/scopes",schemaPath:"#/properties/scopes/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err386];}else {vErrors.push(err386);}errors++;}}}else {const err387 = {keyword:"type",dataPath,schemaPath:"#/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err387];}else {vErrors.push(err387);}errors++;}validate15$1.errors = vErrors;return errors === 0;}function validate14$1(data, {dataPath="", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;const _errs0 = errors;let valid0 = false;let passing0 = null;const _errs1 = errors;if(!(validate15$1(data, {dataPath,parentData,parentDataProperty,rootData}))){vErrors = vErrors === null ? validate15$1.errors : vErrors.concat(validate15$1.errors);errors = vErrors.length;}var _valid0 = _errs1 === errors;if(_valid0){valid0 = true;passing0 = 0;}const _errs2 = errors;if(Array.isArray(data)){const len0 = data.length;for(let i0=0; i0= 0) - data = parseNumber(); - else - unexpectedToken(); - } - map(ptr, 'valueEnd'); - whitespace(); - if (topLevel && pos < source.length) unexpectedToken(); - return data; - } - - function whitespace() { - loop: - while (pos < source.length) { - switch (source[pos]) { - case ' ': column++; break; - case '\t': column += 4; break; - case '\r': column = 0; break; - case '\n': column = 0; line++; break; - default: break loop; - } - pos++; - } - } - - function parseString() { - var str = ''; - var char; - while (true) { - char = getChar(); - if (char == '"') { - break; - } else if (char == '\\') { - char = getChar(); - if (char in escapedChars) - str += escapedChars[char]; - else if (char == 'u') - str += getCharCode(); - else - wasUnexpectedToken(); - } else { - str += char; - } - } - return str; - } - - function parseNumber() { - var numStr = ''; - var integer = true; - if (source[pos] == '-') numStr += getChar(); - - numStr += source[pos] == '0' - ? getChar() - : getDigits(); - - if (source[pos] == '.') { - numStr += getChar() + getDigits(); - integer = false; - } - - if (source[pos] == 'e' || source[pos] == 'E') { - numStr += getChar(); - if (source[pos] == '+' || source[pos] == '-') numStr += getChar(); - numStr += getDigits(); - integer = false; - } - - var result = +numStr; - return bigint && integer && (result > Number.MAX_SAFE_INTEGER || result < Number.MIN_SAFE_INTEGER) - ? BigInt(numStr) - : result; - } - - function parseArray(ptr) { - whitespace(); - var arr = []; - var i = 0; - if (getChar() == ']') return arr; - backChar(); - - while (true) { - var itemPtr = ptr + '/' + i; - arr.push(_parse(itemPtr)); - whitespace(); - var char = getChar(); - if (char == ']') break; - if (char != ',') wasUnexpectedToken(); - whitespace(); - i++; - } - return arr; - } - - function parseObject(ptr) { - whitespace(); - var obj = {}; - if (getChar() == '}') return obj; - backChar(); - - while (true) { - var loc = getLoc(); - if (getChar() != '"') wasUnexpectedToken(); - var key = parseString(); - var propPtr = ptr + '/' + escapeJsonPointer(key); - mapLoc(propPtr, 'key', loc); - map(propPtr, 'keyEnd'); - whitespace(); - if (getChar() != ':') wasUnexpectedToken(); - whitespace(); - obj[key] = _parse(propPtr); - whitespace(); - var char = getChar(); - if (char == '}') break; - if (char != ',') wasUnexpectedToken(); - whitespace(); - } - return obj; - } - - function read(str) { - for (var i=0; i= 'a' && char <= 'f') - code += char.charCodeAt() - A_CODE + 10; - else if (char >= '0' && char <= '9') - code += +char; - else - wasUnexpectedToken(); - } - return String.fromCharCode(code); - } - - function getDigits() { - var digits = ''; - while (source[pos] >= '0' && source[pos] <= '9') - digits += getChar(); - - if (digits.length) return digits; - checkUnexpectedEnd(); - unexpectedToken(); - } - - function map(ptr, prop) { - mapLoc(ptr, prop, getLoc()); - } - - function mapLoc(ptr, prop, loc) { - pointers[ptr] = pointers[ptr] || {}; - pointers[ptr][prop] = loc; - } - - function getLoc() { - return { - line: line, - column: column, - pos: pos - }; - } - - function unexpectedToken() { - throw new SyntaxError('Unexpected token ' + source[pos] + ' in JSON at position ' + pos); - } - - function wasUnexpectedToken() { - backChar(); - unexpectedToken(); - } - - function checkUnexpectedEnd() { - if (pos >= source.length) - throw new SyntaxError('Unexpected end of JSON input'); - } -}; - - -var stringify = function (data, _, options) { - if (!validType(data)) return; - var wsLine = 0; - var wsPos, wsColumn; - var whitespace = typeof options == 'object' - ? options.space - : options; - switch (typeof whitespace) { - case 'number': - var len = whitespace > 10 - ? 10 - : whitespace < 0 - ? 0 - : Math.floor(whitespace); - whitespace = len && repeat(len, ' '); - wsPos = len; - wsColumn = len; - break; - case 'string': - whitespace = whitespace.slice(0, 10); - wsPos = 0; - wsColumn = 0; - for (var j=0; j= 0; -} - - -var ESC_QUOTE = /"|\\/g; -var ESC_B = /[\b]/g; -var ESC_F = /\f/g; -var ESC_N = /\n/g; -var ESC_R = /\r/g; -var ESC_T = /\t/g; -function quoted(str) { - str = str.replace(ESC_QUOTE, '\\$&') - .replace(ESC_F, '\\f') - .replace(ESC_B, '\\b') - .replace(ESC_N, '\\n') - .replace(ESC_R, '\\r') - .replace(ESC_T, '\\t'); - return '"' + str + '"'; -} - - -var ESC_0 = /~/g; -var ESC_1 = /\//g; -function escapeJsonPointer(str) { - return str.replace(ESC_0, '~0') - .replace(ESC_1, '~1'); -} - -var jsonSourceMap = { - parse: parse, - stringify: stringify -}; - -function _validate(object, validateFn) { - const dataPointerMap = generateDataPointerMap(object); - - const valid = validateFn(object); - - let errors = validateFn.errors; - - if (errors && errors.length) { - - // @pinussilvestrus: the extensions produces a couple of - // unnecessary errors when using an attribute. - // Therefore, we should flatten the produced errors a bit to not - // confuse the consumer of this library. - - // (1) wrap raw errors in case of custom errorMessage attribute - (0,min_dash__WEBPACK_IMPORTED_MODULE_0__.forEach)(errors, wrapRawErrors); - - // (2) ignore supportive error messages (e.g. "if-then-rules") - errors = ignoreSupportiveErrors(errors); - - // (3) set data pointer for each error - (0,min_dash__WEBPACK_IMPORTED_MODULE_0__.forEach)(errors, function(error) { - setDataPointer(error, dataPointerMap); - }); - } - - return { - valid: valid, - object: object, - errors: errors - }; -} - -function _validateAll(objects, validateFn) { - - const results = []; - - let allValid = true; - - (0,min_dash__WEBPACK_IMPORTED_MODULE_0__.forEach)(objects, function(object) { - const result = validateFn(object); - - if (!result.valid) { - allValid = false; - } - - results.push(result); - }); - - return { - valid: allValid, - results: results - }; -} - - -// helper ////////////// -function wrapRawErrors(error) { - const params = error.params; - - if (params && params.errors) { - params.rawErrors = params.errors; - delete params.errors; - } -} - -function setDataPointer(error, dataPointerMap) { - const dataPath = error.dataPath; - - const pointer = dataPointerMap[dataPath]; - - error.dataPointer = pointer; -} - -function ignoreSupportiveErrors(errors) { - return (0,min_dash__WEBPACK_IMPORTED_MODULE_0__.filter)(errors, function(error) { - return error.keyword !== 'if'; - }); -} - -/** - * Generates a key-pointer map for the object. - * - * Example: - * - * { - * foo: 'bar' - * } - * - * => - * - * { - * '': { - * value: { line: 0, column: 0, pos: 0 }, - * valueEnd: { line: 2, column: 1, pos: 18 } - * }, - * '/foo': { - * key: { line: 1, column: 2, pos: 4 }, - * keyEnd: { line: 1, column: 7, pos: 9 }, - * value: { line: 1, column: 9, pos: 11 }, - * valueEnd: { line: 1, column: 14, pos: 16 } - * } - * } - * - * @param {Object} object - * @return {Object} - */ -function generateDataPointerMap(object) { - return jsonSourceMap.stringify(object, null, 2).pointers; -} - -function getSchemaVersion() { - return version$1; -} - -function getSchemaPackage() { - return name$1; -} - -/** - * Validate a single object. - * - * @param {Object} object - * @return {Object} single object validation result - */ -function validate(object) { - return _validate(object, standaloneValidator); -} - -/** - * Validate a list of objects - * - * @param {Object[]} objects - * @return {Object} list validation result - */ -function validateAll(objects) { - return _validateAll(objects, validate); -} - -var name = "@camunda/zeebe-element-templates-json-schema"; -var version = "0.5.0"; - -var standaloneZeebeValidator = validate14;var _default = validate14;const schema17 = {"type":"object","allOf":[{"required":["name","id","appliesTo","properties"],"properties":{"name":{"$id":"#/name","type":"string","description":"The name of the element template."},"id":{"$id":"#/id","type":"string","description":"The identifier of the element template."},"description":{"$id":"#/description","type":"string","description":"The description of the element template."},"version":{"$id":"#/version","type":"number","description":"Optional version of the template. If you add a version to a template it will be considered unique based on its ID and version. Two templates can have the same ID if their version is different."},"isDefault":{"$id":"#/isDefault","type":"boolean","description":"Indicates whether the element template is a default template."},"appliesTo":{"$id":"#/appliesTo","type":"array","description":"List of BPMN types the template can be applied to.","default":[],"items":{"$id":"#/appliesTo/items","type":"string","pattern":"^[\\w\\d]+:[\\w\\d]+$","allOf":[{"examples":["bpmn:Task","bpmn:ServiceTask","bpmn:SequenceFlow","bpmn:Process","bpmn:StartEvent","bpmn:Gateway"]}],"errorMessage":{"pattern":"invalid item for \"appliesTo\", should contain namespaced property, example: \"bpmn:Task\""}}},"elementType":{"$id":"#/elementType","type":"object","description":"The BPMN type the element will be transformed into.","default":{},"required":["value"],"properties":{"value":{"$id":"#/elementType/value","type":"string","pattern":"^[\\w\\d]+:[\\w\\d]+$","allOf":[{"examples":["bpmn:ServiceTask","bpmn:UserTask","bpmn:StartEvent","bpmn:ExclusiveGateway","bpmn:ParallelGateway"]}],"errorMessage":{"pattern":"invalid item for \"elementType\", should contain namespaced property, example: \"bpmn:Task\""}}},"errorMessage":{"required":{"value":"missing elementType value"}}},"metadata":{"$id":"#/metadata","type":"object","description":"Some custom properties for further configuration.","default":{}},"entriesVisible":{"$id":"#/entriesVisible","type":"boolean","description":"Select whether non-template entries are visible in the properties panel."},"groups":{"$id":"#/groups","type":"array","description":"Custom fields can be ordered together via groups.","allOf":[{"examples":[[{"id":"group-1","label":"My Group"}]]}],"items":{"$id":"#/groups/group","type":"object","default":{},"required":["id","label"],"properties":{"id":{"$id":"#/groups/group/id","type":"string","description":"The id of the custom group"},"label":{"$id":"#/groups/group/label","type":"string","description":"The label of the custom group"}},"errorMessage":{"required":{"id":"missing id for group \"${0#}\"","label":"missing label for group \"${0#}\""}}}},"documentationRef":{"$id":"#/documentationRef","type":"string","pattern":"^(https|http)://.*","errorMessage":{"pattern":"Malformed documentation URL, must match \"^(https|http)://.*\""}}},"errorMessage":{"required":{"name":"missing template name","id":"missing template id","appliesTo":"missing appliesTo=[]","properties":"missing properties=[]"}}}],"properties":{"properties":{"$ref":"#/definitions/properties","$id":"#/properties"},"icon":{"$id":"#/icon","type":"object","description":"Custom icon to be shown on the element","default":{},"properties":{"contents":{"$id":"#/icon/contents","type":"string","description":"The URL of an icon.","pattern":"^(https?|data):.*","errorMessage":{"pattern":"Malformed icon source, must be a valid HTTP(s) or data URL"}}},"required":["contents"],"errorMessage":{"required":{"contents":"missing icon contents"}}}}};const schema18 = {"allOf":[{"type":"array","description":"List of properties of the element template.","allOf":[{"examples":[[{"label":"Name","type":"String","binding":{"type":"property","name":"name"}}]]}],"items":{"type":"object","default":{},"allOf":[{"if":{"properties":{"type":{"const":"Dropdown"}},"required":["type"]},"then":{"required":["choices"],"errorMessage":"must provide choices=[] with \"Dropdown\" type"}}],"properties":{"id":{"type":"string","description":"Unique identifier of the property."},"value":{"$id":"#/properties/property/value","type":["string","boolean"],"description":"The value of a control field."},"description":{"$id":"#/properties/property/description","type":"string","description":"The description of a control field."},"label":{"$id":"#/properties/property/label","type":"string","description":"The label of a control field."},"type":{"$id":"#/properties/property/type","type":"string","description":"The type of a control field."},"editable":{"$id":"#/properties/property/editable","type":"boolean","description":"Indicates whether a control field is editable or not."},"choices":{"$id":"#/properties/property/choices","type":"array","description":"The choices for dropdown fields.","default":[],"items":{"$id":"#/properties/property/choices/item","type":"object","default":{},"properties":{"name":{"$id":"#/properties/property/choices/item/name","type":"string","description":"The name of a choice."},"value":{"$id":"#/properties/property/choices/item/value","type":"string","description":"The value of a choice."}},"required":["value","name"],"errorMessage":{"required":"{ name, value } must be specified for \"Dropdown\" choices"}}},"constraints":{"$id":"#/properties/property/constraints","type":"object","description":"The validation constraints of a control field.","allOf":[{"examples":[{"notEmpty":true}]}],"properties":{"notEmpty":{"$id":"#/properties/property/constraints/notEmpty","type":"boolean","description":"The control field must not be empty."},"minLength":{"$id":"#/properties/property/constraints/minLength","type":"number","description":"The minimal length of a control field value."},"maxLength":{"$id":"#/properties/property/constraints/maxLength","type":"number","description":"The maximal length for a control field value."},"pattern":{"$id":"#/properties/property/constraints/pattern","description":"A regular expression pattern for a constraint.","oneOf":[{"type":"object","default":{},"properties":{"value":{"$id":"#/properties/property/constraints/pattern/value","type":"string","description":"The regular expression of a pattern."},"message":{"$id":"#/properties/property/constraints/pattern/message","type":"string","description":"The validation message of a pattern."}}},{"type":"string"}]}}},"group":{"$id":"#/properties/property/group","type":"string","description":"The custom group of a control field."},"condition":{"$id":"#/condition","type":"object","description":"Condition to activate the binding.","allOf":[{"examples":[{"type":"simple","property":"httpMethod","equals":"GET"},{"type":"simple","property":"httpMethod","oneOf":["POST","PUT","DELETE"]}]}],"required":["property"],"properties":{"type":{"$id":"#/condition/type","const":"simple","description":"The type of the condition.","default":"simple"},"property":{"$id":"#/condition/property","type":"string","description":"The id of the property to check."}},"oneOf":[{"properties":{"equals":{"type":["string","number","boolean"]}},"required":["equals"]},{"properties":{"oneOf":{"type":"array","items":{"type":["string","number"]}}},"required":["oneOf"]}],"errorMessage":{"required":{"property":"missing property name for condition"}}}}}},{"$schema":"http://json-schema.org/draft-07/schema","type":"array","description":"List of properties of the element template.","items":{"type":"object","default":{},"required":["binding"],"allOf":[{"if":{"properties":{"binding":{"properties":{"type":{"const":"property"}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown","Boolean"],"errorMessage":"invalid property type ${0} for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"}}}},{"if":{"properties":{"binding":{"properties":{"type":{"enum":["zeebe:input","zeebe:output","zeebe:taskHeader","zeebe:taskDefinition:type"]}},"required":["type"]}},"required":["binding"]},"then":{"properties":{"type":{"enum":["String","Text","Hidden","Dropdown"],"errorMessage":"invalid property type ${0} for binding type ${1/binding/type}; must be any of { String, Text, Hidden, Dropdown }"}}}},{"if":{"properties":{"optional":{"const":true}},"required":["optional"]},"then":{"properties":{"binding":{"properties":{"type":{"enum":["zeebe:input","zeebe:output"],"errorMessage":"optional is not supported for binding type ${0}; must be any of { zeebe:input, zeebe:output }"}},"required":["type"]}}}},{"if":{"properties":{"optional":{"const":true}},"required":["optional"]},"then":{"properties":{"constraints":{"properties":{"notEmpty":{"const":false,"errorMessage":"optional is not allowed for truthy \"notEmpty\" constraint"}},"required":["notEmpty"]}}}},{"if":{"properties":{"feel":{"not":{"const":null}}},"required":["feel"]},"then":{"properties":{"type":{"enum":["String","Text"],"errorMessage":"feel is only supported for \"String\" and \"Text\" type"}},"required":["type"]}}],"properties":{"binding":{"$id":"#/properties/property/binding","type":"object","description":"Specifying how the property is mapped to BPMN or Zeebe extension elements and attributes.","required":["type"],"allOf":[{"if":{"properties":{"type":{"enum":["property","zeebe:input"]}},"required":["type"]},"then":{"required":["name"],"errorMessage":"property.binding ${0/type} requires name"}},{"if":{"properties":{"type":{"const":"zeebe:output"}},"required":["type"]},"then":{"required":["source"],"errorMessage":"property.binding ${0/type} requires source"}},{"if":{"properties":{"type":{"const":"zeebe:taskHeader"}},"required":["type"]},"then":{"required":["key"],"errorMessage":"property.binding ${0/type} requires key"}},{"examples":[{"type":"property","name":"name"},{"type":"zeebe:input","name":"input"},{"type":"zeebe:output","source":"output"},{"type":"zeebe:taskDefinition:type"},{"type":"zeebe:taskHeader","key":"key"}]}],"properties":{"type":{"$id":"#/properties/property/binding/type","type":"string","description":"The type of a property binding.","enum":["property","zeebe:taskDefinition:type","zeebe:input","zeebe:output","zeebe:taskHeader"],"errorMessage":"invalid property.binding type ${0}; must be any of { property, zeebe:taskDefinition:type, zeebe:input, zeebe:output, zeebe:taskHeader }"},"name":{"$id":"#/properties/property/binding/name","type":"string","description":"The name of a property binding."},"source":{"$id":"#/properties/property/binding/source","type":"string","description":"The source value of a property binding (zeebe:output)."},"key":{"$id":"#/properties/property/binding/key","type":"string","description":"The key value of a property binding (zeebe:taskHeader)."}}},"optional":{"$id":"#/optional","type":"boolean","description":"Indicates whether a property is optional. Optional bindings do not persist empty values in the underlying BPMN 2.0 XML."},"feel":{"$id":"#/properties/property/feel","type":"string","default":null,"description":"Indicates whether the property can be a feel expression","enum":[null,"optional","required"]}},"errorMessage":{"required":{"binding":"missing binding for property \"${0#}\""}}}}]};const pattern0 = new RegExp("^[\\w\\d]+:[\\w\\d]+$", "u");const pattern2 = new RegExp("^(https|http)://.*", "u");const pattern3 = new RegExp("^(https?|data):.*", "u");const obj0 = {"required":"missingProperty","dependencies":"property","dependentRequired":"property"};function validate15(data, {dataPath="", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;if(data && typeof data == "object" && !Array.isArray(data)){if(data.name === undefined){const err0 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "name"},message:"should have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err0];}else {vErrors.push(err0);}errors++;}if(data.id === undefined){const err1 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "id"},message:"should have required property '"+"id"+"'"};if(vErrors === null){vErrors = [err1];}else {vErrors.push(err1);}errors++;}if(data.appliesTo === undefined){const err2 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "appliesTo"},message:"should have required property '"+"appliesTo"+"'"};if(vErrors === null){vErrors = [err2];}else {vErrors.push(err2);}errors++;}if(data.properties === undefined){const err3 = {keyword:"required",dataPath,schemaPath:"#/allOf/0/required",params:{missingProperty: "properties"},message:"should have required property '"+"properties"+"'"};if(vErrors === null){vErrors = [err3];}else {vErrors.push(err3);}errors++;}if(data.name !== undefined){if(typeof data.name !== "string"){const err4 = {keyword:"type",dataPath:dataPath+"/name",schemaPath:"#/allOf/0/properties/name/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err4];}else {vErrors.push(err4);}errors++;}}if(data.id !== undefined){if(typeof data.id !== "string"){const err5 = {keyword:"type",dataPath:dataPath+"/id",schemaPath:"#/allOf/0/properties/id/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err5];}else {vErrors.push(err5);}errors++;}}if(data.description !== undefined){if(typeof data.description !== "string"){const err6 = {keyword:"type",dataPath:dataPath+"/description",schemaPath:"#/allOf/0/properties/description/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err6];}else {vErrors.push(err6);}errors++;}}if(data.version !== undefined){if(!(typeof data.version == "number")){const err7 = {keyword:"type",dataPath:dataPath+"/version",schemaPath:"#/allOf/0/properties/version/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err7];}else {vErrors.push(err7);}errors++;}}if(data.isDefault !== undefined){if(typeof data.isDefault !== "boolean"){const err8 = {keyword:"type",dataPath:dataPath+"/isDefault",schemaPath:"#/allOf/0/properties/isDefault/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err8];}else {vErrors.push(err8);}errors++;}}if(data.appliesTo !== undefined){let data5 = data.appliesTo;if(Array.isArray(data5)){const len0 = data5.length;for(let i0=0; i0 0){const emErrors0 = {"pattern":[]};const templates0 = {};for(const err11 of vErrors){if((((((err11.keyword !== "errorMessage") && (!err11.emUsed)) && (err11.dataPath === dataPath+"/appliesTo/" + i0)) && (err11.keyword in emErrors0)) && (err11.schemaPath.indexOf("#/allOf/0/properties/appliesTo/items") === 0)) && (/^\/[^\/]*$/.test(err11.schemaPath.slice(36)))){emErrors0[err11.keyword].push(err11);err11.emUsed = true;}}for(const key0 in emErrors0){if(emErrors0[key0].length){const err12 = {keyword:"errorMessage",dataPath:dataPath+"/appliesTo/" + i0,schemaPath:"#/allOf/0/properties/appliesTo/items/errorMessage",params:{errors: emErrors0[key0]},message:key0 in templates0 ? templates0[key0]() : schema17.allOf[0].properties.appliesTo.items.errorMessage[key0]};if(vErrors === null){vErrors = [err12];}else {vErrors.push(err12);}errors++;}}const emErrs0 = [];for(const err13 of vErrors){if(!err13.emUsed){emErrs0.push(err13);}}vErrors = emErrs0;errors = emErrs0.length;}}}else {const err14 = {keyword:"type",dataPath:dataPath+"/appliesTo",schemaPath:"#/allOf/0/properties/appliesTo/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err14];}else {vErrors.push(err14);}errors++;}}if(data.elementType !== undefined){let data7 = data.elementType;if(data7 && typeof data7 == "object" && !Array.isArray(data7)){if(data7.value === undefined){const err15 = {keyword:"required",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/required",params:{missingProperty: "value"},message:"should have required property '"+"value"+"'"};if(vErrors === null){vErrors = [err15];}else {vErrors.push(err15);}errors++;}if(data7.value !== undefined){let data8 = data7.value;if(typeof data8 === "string"){if(!pattern0.test(data8)){const err16 = {keyword:"pattern",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/pattern",params:{pattern: "^[\\w\\d]+:[\\w\\d]+$"},message:"should match pattern \""+"^[\\w\\d]+:[\\w\\d]+$"+"\""};if(vErrors === null){vErrors = [err16];}else {vErrors.push(err16);}errors++;}}else {const err17 = {keyword:"type",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err17];}else {vErrors.push(err17);}errors++;}if(errors > 0){const emErrors1 = {"pattern":[]};const templates1 = {};for(const err18 of vErrors){if((((((err18.keyword !== "errorMessage") && (!err18.emUsed)) && (err18.dataPath === dataPath+"/elementType/value")) && (err18.keyword in emErrors1)) && (err18.schemaPath.indexOf("#/allOf/0/properties/elementType/properties/value") === 0)) && (/^\/[^\/]*$/.test(err18.schemaPath.slice(49)))){emErrors1[err18.keyword].push(err18);err18.emUsed = true;}}for(const key1 in emErrors1){if(emErrors1[key1].length){const err19 = {keyword:"errorMessage",dataPath:dataPath+"/elementType/value",schemaPath:"#/allOf/0/properties/elementType/properties/value/errorMessage",params:{errors: emErrors1[key1]},message:key1 in templates1 ? templates1[key1]() : schema17.allOf[0].properties.elementType.properties.value.errorMessage[key1]};if(vErrors === null){vErrors = [err19];}else {vErrors.push(err19);}errors++;}}const emErrs1 = [];for(const err20 of vErrors){if(!err20.emUsed){emErrs1.push(err20);}}vErrors = emErrs1;errors = emErrs1.length;}}}else {const err21 = {keyword:"type",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err21];}else {vErrors.push(err21);}errors++;}if(errors > 0){const emErrors2 = {"required":{"value":[]}};const templates2 = {required:{}};let emPropParams0;let emParamsErrors0;for(const err22 of vErrors){if((((((err22.keyword !== "errorMessage") && (!err22.emUsed)) && (err22.dataPath === dataPath+"/elementType")) && (err22.keyword in emErrors2)) && (err22.schemaPath.indexOf("#/allOf/0/properties/elementType") === 0)) && (/^\/[^\/]*$/.test(err22.schemaPath.slice(32)))){emPropParams0 = obj0[err22.keyword];emParamsErrors0 = emErrors2[err22.keyword][err22.params[emPropParams0]];if(emParamsErrors0){emParamsErrors0.push(err22);err22.emUsed = true;}}}for(const key2 in emErrors2){for(const keyProp0 in emErrors2[key2]){emParamsErrors0 = emErrors2[key2][keyProp0];if(emParamsErrors0.length){const tmpl0 = templates2[key2] && templates2[key2][keyProp0];const err23 = {keyword:"errorMessage",dataPath:dataPath+"/elementType",schemaPath:"#/allOf/0/properties/elementType/errorMessage",params:{errors: emParamsErrors0},message:tmpl0 ? tmpl0() : schema17.allOf[0].properties.elementType.errorMessage[key2][keyProp0]};if(vErrors === null){vErrors = [err23];}else {vErrors.push(err23);}errors++;}}}const emErrs2 = [];for(const err24 of vErrors){if(!err24.emUsed){emErrs2.push(err24);}}vErrors = emErrs2;errors = emErrs2.length;}}if(data.metadata !== undefined){let data9 = data.metadata;if(!(data9 && typeof data9 == "object" && !Array.isArray(data9))){const err25 = {keyword:"type",dataPath:dataPath+"/metadata",schemaPath:"#/allOf/0/properties/metadata/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err25];}else {vErrors.push(err25);}errors++;}}if(data.entriesVisible !== undefined){if(typeof data.entriesVisible !== "boolean"){const err26 = {keyword:"type",dataPath:dataPath+"/entriesVisible",schemaPath:"#/allOf/0/properties/entriesVisible/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err26];}else {vErrors.push(err26);}errors++;}}if(data.groups !== undefined){let data11 = data.groups;if(Array.isArray(data11)){const len1 = data11.length;for(let i1=0; i1 0){const emErrors3 = {"required":{"id":[],"label":[]}};const templates3 = {required:{id:function(){return "missing id for group \"" + JSON.stringify(i1) + "\""},label:function(){return "missing label for group \"" + JSON.stringify(i1) + "\""}}};let emPropParams1;let emParamsErrors1;for(const err32 of vErrors){if((((((err32.keyword !== "errorMessage") && (!err32.emUsed)) && (err32.dataPath === dataPath+"/groups/" + i1)) && (err32.keyword in emErrors3)) && (err32.schemaPath.indexOf("#/allOf/0/properties/groups/items") === 0)) && (/^\/[^\/]*$/.test(err32.schemaPath.slice(33)))){emPropParams1 = obj0[err32.keyword];emParamsErrors1 = emErrors3[err32.keyword][err32.params[emPropParams1]];if(emParamsErrors1){emParamsErrors1.push(err32);err32.emUsed = true;}}}for(const key3 in emErrors3){for(const keyProp1 in emErrors3[key3]){emParamsErrors1 = emErrors3[key3][keyProp1];if(emParamsErrors1.length){const tmpl1 = templates3[key3] && templates3[key3][keyProp1];const err33 = {keyword:"errorMessage",dataPath:dataPath+"/groups/" + i1,schemaPath:"#/allOf/0/properties/groups/items/errorMessage",params:{errors: emParamsErrors1},message:tmpl1 ? tmpl1() : schema17.allOf[0].properties.groups.items.errorMessage[key3][keyProp1]};if(vErrors === null){vErrors = [err33];}else {vErrors.push(err33);}errors++;}}}const emErrs3 = [];for(const err34 of vErrors){if(!err34.emUsed){emErrs3.push(err34);}}vErrors = emErrs3;errors = emErrs3.length;}}}else {const err35 = {keyword:"type",dataPath:dataPath+"/groups",schemaPath:"#/allOf/0/properties/groups/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err35];}else {vErrors.push(err35);}errors++;}}if(data.documentationRef !== undefined){let data15 = data.documentationRef;if(typeof data15 === "string"){if(!pattern2.test(data15)){const err36 = {keyword:"pattern",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/pattern",params:{pattern: "^(https|http)://.*"},message:"should match pattern \""+"^(https|http)://.*"+"\""};if(vErrors === null){vErrors = [err36];}else {vErrors.push(err36);}errors++;}}else {const err37 = {keyword:"type",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err37];}else {vErrors.push(err37);}errors++;}if(errors > 0){const emErrors4 = {"pattern":[]};const templates4 = {};for(const err38 of vErrors){if((((((err38.keyword !== "errorMessage") && (!err38.emUsed)) && (err38.dataPath === dataPath+"/documentationRef")) && (err38.keyword in emErrors4)) && (err38.schemaPath.indexOf("#/allOf/0/properties/documentationRef") === 0)) && (/^\/[^\/]*$/.test(err38.schemaPath.slice(37)))){emErrors4[err38.keyword].push(err38);err38.emUsed = true;}}for(const key4 in emErrors4){if(emErrors4[key4].length){const err39 = {keyword:"errorMessage",dataPath:dataPath+"/documentationRef",schemaPath:"#/allOf/0/properties/documentationRef/errorMessage",params:{errors: emErrors4[key4]},message:key4 in templates4 ? templates4[key4]() : schema17.allOf[0].properties.documentationRef.errorMessage[key4]};if(vErrors === null){vErrors = [err39];}else {vErrors.push(err39);}errors++;}}const emErrs4 = [];for(const err40 of vErrors){if(!err40.emUsed){emErrs4.push(err40);}}vErrors = emErrs4;errors = emErrs4.length;}}}if(errors > 0){const emErrors5 = {"required":{"name":[],"id":[],"appliesTo":[],"properties":[]}};const templates5 = {required:{}};let emPropParams2;let emParamsErrors2;for(const err41 of vErrors){if((((((err41.keyword !== "errorMessage") && (!err41.emUsed)) && (err41.dataPath === dataPath)) && (err41.keyword in emErrors5)) && (err41.schemaPath.indexOf("#/allOf/0") === 0)) && (/^\/[^\/]*$/.test(err41.schemaPath.slice(9)))){emPropParams2 = obj0[err41.keyword];emParamsErrors2 = emErrors5[err41.keyword][err41.params[emPropParams2]];if(emParamsErrors2){emParamsErrors2.push(err41);err41.emUsed = true;}}}for(const key5 in emErrors5){for(const keyProp2 in emErrors5[key5]){emParamsErrors2 = emErrors5[key5][keyProp2];if(emParamsErrors2.length){const tmpl2 = templates5[key5] && templates5[key5][keyProp2];const err42 = {keyword:"errorMessage",dataPath,schemaPath:"#/allOf/0/errorMessage",params:{errors: emParamsErrors2},message:tmpl2 ? tmpl2() : schema17.allOf[0].errorMessage[key5][keyProp2]};if(vErrors === null){vErrors = [err42];}else {vErrors.push(err42);}errors++;}}}const emErrs5 = [];for(const err43 of vErrors){if(!err43.emUsed){emErrs5.push(err43);}}vErrors = emErrs5;errors = emErrs5.length;}if(data && typeof data == "object" && !Array.isArray(data)){if(data.properties !== undefined){let data16 = data.properties;if(Array.isArray(data16)){const len2 = data16.length;for(let i2=0; i2 0){const emErrs6 = [];for(const err47 of vErrors){if(((((err47.keyword !== "errorMessage") && (!err47.emUsed)) && ((err47.dataPath === dataPath+"/properties/" + i2) || ((err47.dataPath.indexOf(dataPath+"/properties/" + i2) === 0) && (err47.dataPath[dataPath+"/properties/" + i2.length] === "/")))) && (err47.schemaPath.indexOf("#/definitions/properties/allOf/0/items/allOf/0/then") === 0)) && (err47.schemaPath["#/definitions/properties/allOf/0/items/allOf/0/then".length] === "/")){emErrs6.push(err47);err47.emUsed = true;}}if(emErrs6.length){const err48 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/then/errorMessage",params:{errors: emErrs6},message:"must provide choices=[] with \"Dropdown\" type"};if(vErrors === null){vErrors = [err48];}else {vErrors.push(err48);}errors++;}const emErrs7 = [];for(const err49 of vErrors){if(!err49.emUsed){emErrs7.push(err49);}}vErrors = emErrs7;errors = emErrs7.length;}var _valid0 = _errs44 === errors;valid18 = _valid0;}if(!valid18){const err50 = {keyword:"if",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err50];}else {vErrors.push(err50);}errors++;}if(data17 && typeof data17 == "object" && !Array.isArray(data17)){if(data17.id !== undefined){if(typeof data17.id !== "string"){const err51 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/id",schemaPath:"#/definitions/properties/allOf/0/items/properties/id/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err51];}else {vErrors.push(err51);}errors++;}}if(data17.value !== undefined){let data20 = data17.value;if((typeof data20 !== "string") && (typeof data20 !== "boolean")){const err52 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/value/type",params:{type: schema18.allOf[0].items.properties.value.type},message:"should be string,boolean"};if(vErrors === null){vErrors = [err52];}else {vErrors.push(err52);}errors++;}}if(data17.description !== undefined){if(typeof data17.description !== "string"){const err53 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/description",schemaPath:"#/definitions/properties/allOf/0/items/properties/description/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err53];}else {vErrors.push(err53);}errors++;}}if(data17.label !== undefined){if(typeof data17.label !== "string"){const err54 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/label",schemaPath:"#/definitions/properties/allOf/0/items/properties/label/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err54];}else {vErrors.push(err54);}errors++;}}if(data17.type !== undefined){if(typeof data17.type !== "string"){const err55 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/type",schemaPath:"#/definitions/properties/allOf/0/items/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err55];}else {vErrors.push(err55);}errors++;}}if(data17.editable !== undefined){if(typeof data17.editable !== "boolean"){const err56 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/editable",schemaPath:"#/definitions/properties/allOf/0/items/properties/editable/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err56];}else {vErrors.push(err56);}errors++;}}if(data17.choices !== undefined){let data25 = data17.choices;if(Array.isArray(data25)){const len3 = data25.length;for(let i3=0; i3 0){const emErrors6 = {"required":[]};const templates6 = {};for(const err62 of vErrors){if((((((err62.keyword !== "errorMessage") && (!err62.emUsed)) && (err62.dataPath === dataPath+"/properties/" + i2+"/choices/" + i3)) && (err62.keyword in emErrors6)) && (err62.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/choices/items") === 0)) && (/^\/[^\/]*$/.test(err62.schemaPath.slice(63)))){emErrors6[err62.keyword].push(err62);err62.emUsed = true;}}for(const key6 in emErrors6){if(emErrors6[key6].length){const err63 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2+"/choices/" + i3,schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/items/errorMessage",params:{errors: emErrors6[key6]},message:key6 in templates6 ? templates6[key6]() : schema18.allOf[0].items.properties.choices.items.errorMessage[key6]};if(vErrors === null){vErrors = [err63];}else {vErrors.push(err63);}errors++;}}const emErrs8 = [];for(const err64 of vErrors){if(!err64.emUsed){emErrs8.push(err64);}}vErrors = emErrs8;errors = emErrs8.length;}}}else {const err65 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/choices",schemaPath:"#/definitions/properties/allOf/0/items/properties/choices/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err65];}else {vErrors.push(err65);}errors++;}}if(data17.constraints !== undefined){let data29 = data17.constraints;if(data29 && typeof data29 == "object" && !Array.isArray(data29)){if(data29.notEmpty !== undefined){if(typeof data29.notEmpty !== "boolean"){const err66 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/notEmpty",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/notEmpty/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err66];}else {vErrors.push(err66);}errors++;}}if(data29.minLength !== undefined){if(!(typeof data29.minLength == "number")){const err67 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/minLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/minLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err67];}else {vErrors.push(err67);}errors++;}}if(data29.maxLength !== undefined){if(!(typeof data29.maxLength == "number")){const err68 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/maxLength",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/maxLength/type",params:{type: "number"},message:"should be number"};if(vErrors === null){vErrors = [err68];}else {vErrors.push(err68);}errors++;}}if(data29.pattern !== undefined){let data33 = data29.pattern;const _errs74 = errors;let valid26 = false;let passing0 = null;const _errs75 = errors;if(data33 && typeof data33 == "object" && !Array.isArray(data33)){if(data33.value !== undefined){if(typeof data33.value !== "string"){const err69 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern/value",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/value/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err69];}else {vErrors.push(err69);}errors++;}}if(data33.message !== undefined){if(typeof data33.message !== "string"){const err70 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern/message",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/properties/message/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err70];}else {vErrors.push(err70);}errors++;}}}else {const err71 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/0/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err71];}else {vErrors.push(err71);}errors++;}var _valid1 = _errs75 === errors;if(_valid1){valid26 = true;passing0 = 0;}const _errs81 = errors;if(typeof data33 !== "string"){const err72 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf/1/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err72];}else {vErrors.push(err72);}errors++;}var _valid1 = _errs81 === errors;if(_valid1 && valid26){valid26 = false;passing0 = [passing0, 1];}else {if(_valid1){valid26 = true;passing0 = 1;}}if(!valid26){const err73 = {keyword:"oneOf",dataPath:dataPath+"/properties/" + i2+"/constraints/pattern",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/properties/pattern/oneOf",params:{passingSchemas: passing0},message:"should match exactly one schema in oneOf"};if(vErrors === null){vErrors = [err73];}else {vErrors.push(err73);}errors++;}else {errors = _errs74;if(vErrors !== null){if(_errs74){vErrors.length = _errs74;}else {vErrors = null;}}}}}else {const err74 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/constraints",schemaPath:"#/definitions/properties/allOf/0/items/properties/constraints/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err74];}else {vErrors.push(err74);}errors++;}}if(data17.group !== undefined){if(typeof data17.group !== "string"){const err75 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/group",schemaPath:"#/definitions/properties/allOf/0/items/properties/group/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err75];}else {vErrors.push(err75);}errors++;}}if(data17.condition !== undefined){let data37 = data17.condition;const _errs87 = errors;let valid28 = false;let passing1 = null;const _errs88 = errors;if(data37 && typeof data37 == "object" && !Array.isArray(data37)){if(data37.equals === undefined){const err76 = {keyword:"required",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/required",params:{missingProperty: "equals"},message:"should have required property '"+"equals"+"'"};if(vErrors === null){vErrors = [err76];}else {vErrors.push(err76);}errors++;}if(data37.equals !== undefined){let data38 = data37.equals;if(((typeof data38 !== "string") && (!(typeof data38 == "number"))) && (typeof data38 !== "boolean")){const err77 = {keyword:"type",dataPath:dataPath+"/properties/" + i2+"/condition/equals",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/0/properties/equals/type",params:{type: schema18.allOf[0].items.properties.condition.oneOf[0].properties.equals.type},message:"should be string,number,boolean"};if(vErrors === null){vErrors = [err77];}else {vErrors.push(err77);}errors++;}}}var _valid2 = _errs88 === errors;if(_valid2){valid28 = true;passing1 = 0;}const _errs91 = errors;if(data37 && typeof data37 == "object" && !Array.isArray(data37)){if(data37.oneOf === undefined){const err78 = {keyword:"required",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/oneOf/1/required",params:{missingProperty: "oneOf"},message:"should have required property '"+"oneOf"+"'"};if(vErrors === null){vErrors = [err78];}else {vErrors.push(err78);}errors++;}if(data37.oneOf !== undefined){let data39 = data37.oneOf;if(Array.isArray(data39)){const len4 = data39.length;for(let i4=0; i4 0){const emErrors7 = {"required":{"property":[]}};const templates7 = {required:{}};let emPropParams3;let emParamsErrors3;for(const err86 of vErrors){if((((((err86.keyword !== "errorMessage") && (!err86.emUsed)) && (err86.dataPath === dataPath+"/properties/" + i2+"/condition")) && (err86.keyword in emErrors7)) && (err86.schemaPath.indexOf("#/definitions/properties/allOf/0/items/properties/condition") === 0)) && (/^\/[^\/]*$/.test(err86.schemaPath.slice(59)))){emPropParams3 = obj0[err86.keyword];emParamsErrors3 = emErrors7[err86.keyword][err86.params[emPropParams3]];if(emParamsErrors3){emParamsErrors3.push(err86);err86.emUsed = true;}}}for(const key7 in emErrors7){for(const keyProp3 in emErrors7[key7]){emParamsErrors3 = emErrors7[key7][keyProp3];if(emParamsErrors3.length){const tmpl3 = templates7[key7] && templates7[key7][keyProp3];const err87 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i2+"/condition",schemaPath:"#/definitions/properties/allOf/0/items/properties/condition/errorMessage",params:{errors: emParamsErrors3},message:tmpl3 ? tmpl3() : schema18.allOf[0].items.properties.condition.errorMessage[key7][keyProp3]};if(vErrors === null){vErrors = [err87];}else {vErrors.push(err87);}errors++;}}}const emErrs9 = [];for(const err88 of vErrors){if(!err88.emUsed){emErrs9.push(err88);}}vErrors = emErrs9;errors = emErrs9.length;}}}else {const err89 = {keyword:"type",dataPath:dataPath+"/properties/" + i2,schemaPath:"#/definitions/properties/allOf/0/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err89];}else {vErrors.push(err89);}errors++;}}}else {const err90 = {keyword:"type",dataPath:dataPath+"/properties",schemaPath:"#/definitions/properties/allOf/0/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err90];}else {vErrors.push(err90);}errors++;}if(Array.isArray(data16)){const len5 = data16.length;for(let i5=0; i5 0){const emErrs10 = [];for(const err95 of vErrors){if(((((err95.keyword !== "errorMessage") && (!err95.emUsed)) && ((err95.dataPath === dataPath+"/properties/" + i5+"/type") || ((err95.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err95.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err95.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/0/then/properties/type") === 0)) && (err95.schemaPath["#/definitions/properties/allOf/1/items/allOf/0/then/properties/type".length] === "/")){emErrs10.push(err95);err95.emUsed = true;}}if(emErrs10.length){const err96 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/then/properties/type/errorMessage",params:{errors: emErrs10},message:"invalid property type " + JSON.stringify(data46) + " for binding type \"property\"; must be any of { String, Text, Hidden, Dropdown, Boolean }"};if(vErrors === null){vErrors = [err96];}else {vErrors.push(err96);}errors++;}const emErrs11 = [];for(const err97 of vErrors){if(!err97.emUsed){emErrs11.push(err97);}}vErrors = emErrs11;errors = emErrs11.length;}}}var _valid3 = _errs108 === errors;valid38 = _valid3;}if(!valid38){const err98 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err98];}else {vErrors.push(err98);}errors++;}const _errs111 = errors;let valid42 = true;const _errs112 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.binding === undefined) && ("binding")){const err99 = {};if(vErrors === null){vErrors = [err99];}else {vErrors.push(err99);}errors++;}else {if(data43.binding !== undefined){let data47 = data43.binding;if(data47 && typeof data47 == "object" && !Array.isArray(data47)){if((data47.type === undefined) && ("type")){const err100 = {};if(vErrors === null){vErrors = [err100];}else {vErrors.push(err100);}errors++;}else {if(data47.type !== undefined){let data48 = data47.type;if(!((((data48 === "zeebe:input") || (data48 === "zeebe:output")) || (data48 === "zeebe:taskHeader")) || (data48 === "zeebe:taskDefinition:type"))){const err101 = {};if(vErrors === null){vErrors = [err101];}else {vErrors.push(err101);}errors++;}}}}}}}var _valid4 = _errs112 === errors;errors = _errs111;if(vErrors !== null){if(_errs111){vErrors.length = _errs111;}else {vErrors = null;}}if(_valid4){const _errs115 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.type !== undefined){let data49 = data43.type;if(!((((data49 === "String") || (data49 === "Text")) || (data49 === "Hidden")) || (data49 === "Dropdown"))){const err102 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/enum",params:{allowedValues: schema18.allOf[1].items.allOf[1].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err102];}else {vErrors.push(err102);}errors++;}if(errors > 0){const emErrs12 = [];for(const err103 of vErrors){if(((((err103.keyword !== "errorMessage") && (!err103.emUsed)) && ((err103.dataPath === dataPath+"/properties/" + i5+"/type") || ((err103.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err103.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err103.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/1/then/properties/type") === 0)) && (err103.schemaPath["#/definitions/properties/allOf/1/items/allOf/1/then/properties/type".length] === "/")){emErrs12.push(err103);err103.emUsed = true;}}if(emErrs12.length){const err104 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/then/properties/type/errorMessage",params:{errors: emErrs12},message:"invalid property type " + JSON.stringify(data49) + " for binding type " + JSON.stringify(data43 && data43.binding && data43.binding.type) + "; must be any of { String, Text, Hidden, Dropdown }"};if(vErrors === null){vErrors = [err104];}else {vErrors.push(err104);}errors++;}const emErrs13 = [];for(const err105 of vErrors){if(!err105.emUsed){emErrs13.push(err105);}}vErrors = emErrs13;errors = emErrs13.length;}}}var _valid4 = _errs115 === errors;valid42 = _valid4;}if(!valid42){const err106 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err106];}else {vErrors.push(err106);}errors++;}const _errs118 = errors;let valid46 = true;const _errs119 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.optional === undefined) && ("optional")){const err107 = {};if(vErrors === null){vErrors = [err107];}else {vErrors.push(err107);}errors++;}else {if(data43.optional !== undefined){if(!equal(data43.optional, true)){const err108 = {};if(vErrors === null){vErrors = [err108];}else {vErrors.push(err108);}errors++;}}}}var _valid5 = _errs119 === errors;errors = _errs118;if(vErrors !== null){if(_errs118){vErrors.length = _errs118;}else {vErrors = null;}}if(_valid5){const _errs121 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.binding !== undefined){let data51 = data43.binding;if(data51 && typeof data51 == "object" && !Array.isArray(data51)){if(data51.type === undefined){const err109 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/binding/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err109];}else {vErrors.push(err109);}errors++;}if(data51.type !== undefined){let data52 = data51.type;if(!((data52 === "zeebe:input") || (data52 === "zeebe:output"))){const err110 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/binding/properties/type/enum",params:{allowedValues: schema18.allOf[1].items.allOf[2].then.properties.binding.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err110];}else {vErrors.push(err110);}errors++;}if(errors > 0){const emErrs14 = [];for(const err111 of vErrors){if(((((err111.keyword !== "errorMessage") && (!err111.emUsed)) && ((err111.dataPath === dataPath+"/properties/" + i5+"/binding/type") || ((err111.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding/type") === 0) && (err111.dataPath[dataPath+"/properties/" + i5+"/binding/type".length] === "/")))) && (err111.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/2/then/properties/binding/properties/type") === 0)) && (err111.schemaPath["#/definitions/properties/allOf/1/items/allOf/2/then/properties/binding/properties/type".length] === "/")){emErrs14.push(err111);err111.emUsed = true;}}if(emErrs14.length){const err112 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/then/properties/binding/properties/type/errorMessage",params:{errors: emErrs14},message:"optional is not supported for binding type " + JSON.stringify(data52) + "; must be any of { zeebe:input, zeebe:output }"};if(vErrors === null){vErrors = [err112];}else {vErrors.push(err112);}errors++;}const emErrs15 = [];for(const err113 of vErrors){if(!err113.emUsed){emErrs15.push(err113);}}vErrors = emErrs15;errors = emErrs15.length;}}}}}var _valid5 = _errs121 === errors;valid46 = _valid5;}if(!valid46){const err114 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err114];}else {vErrors.push(err114);}errors++;}const _errs125 = errors;let valid50 = true;const _errs126 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.optional === undefined) && ("optional")){const err115 = {};if(vErrors === null){vErrors = [err115];}else {vErrors.push(err115);}errors++;}else {if(data43.optional !== undefined){if(!equal(data43.optional, true)){const err116 = {};if(vErrors === null){vErrors = [err116];}else {vErrors.push(err116);}errors++;}}}}var _valid6 = _errs126 === errors;errors = _errs125;if(vErrors !== null){if(_errs125){vErrors.length = _errs125;}else {vErrors = null;}}if(_valid6){const _errs128 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.constraints !== undefined){let data54 = data43.constraints;if(data54 && typeof data54 == "object" && !Array.isArray(data54)){if(data54.notEmpty === undefined){const err117 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/constraints",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/constraints/required",params:{missingProperty: "notEmpty"},message:"should have required property '"+"notEmpty"+"'"};if(vErrors === null){vErrors = [err117];}else {vErrors.push(err117);}errors++;}if(data54.notEmpty !== undefined){if(!equal(data54.notEmpty, false)){const err118 = {keyword:"const",dataPath:dataPath+"/properties/" + i5+"/constraints/notEmpty",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/constraints/properties/notEmpty/const",params:{allowedValue: false},message:"should be equal to constant"};if(vErrors === null){vErrors = [err118];}else {vErrors.push(err118);}errors++;}if(errors > 0){const emErrs16 = [];for(const err119 of vErrors){if(((((err119.keyword !== "errorMessage") && (!err119.emUsed)) && ((err119.dataPath === dataPath+"/properties/" + i5+"/constraints/notEmpty") || ((err119.dataPath.indexOf(dataPath+"/properties/" + i5+"/constraints/notEmpty") === 0) && (err119.dataPath[dataPath+"/properties/" + i5+"/constraints/notEmpty".length] === "/")))) && (err119.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/3/then/properties/constraints/properties/notEmpty") === 0)) && (err119.schemaPath["#/definitions/properties/allOf/1/items/allOf/3/then/properties/constraints/properties/notEmpty".length] === "/")){emErrs16.push(err119);err119.emUsed = true;}}if(emErrs16.length){const err120 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/constraints/notEmpty",schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/then/properties/constraints/properties/notEmpty/errorMessage",params:{errors: emErrs16},message:"optional is not allowed for truthy \"notEmpty\" constraint"};if(vErrors === null){vErrors = [err120];}else {vErrors.push(err120);}errors++;}const emErrs17 = [];for(const err121 of vErrors){if(!err121.emUsed){emErrs17.push(err121);}}vErrors = emErrs17;errors = emErrs17.length;}}}}}var _valid6 = _errs128 === errors;valid50 = _valid6;}if(!valid50){const err122 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/3/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err122];}else {vErrors.push(err122);}errors++;}const _errs132 = errors;let valid54 = true;const _errs133 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if((data43.feel === undefined) && ("feel")){const err123 = {};if(vErrors === null){vErrors = [err123];}else {vErrors.push(err123);}errors++;}else {if(data43.feel !== undefined){const _errs135 = errors;const _errs136 = errors;if(!equal(data43.feel, schema18.allOf[1].items.allOf[4].if.properties.feel.not.const)){const err124 = {};if(vErrors === null){vErrors = [err124];}else {vErrors.push(err124);}errors++;}var valid56 = _errs136 === errors;if(!valid56){errors = _errs135;if(vErrors !== null){if(_errs135){vErrors.length = _errs135;}else {vErrors = null;}}}else {const err125 = {};if(vErrors === null){vErrors = [err125];}else {vErrors.push(err125);}errors++;}}}}var _valid7 = _errs133 === errors;errors = _errs132;if(vErrors !== null){if(_errs132){vErrors.length = _errs132;}else {vErrors = null;}}if(_valid7){const _errs137 = errors;if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.type === undefined){const err126 = {keyword:"required",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/4/then/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err126];}else {vErrors.push(err126);}errors++;}if(data43.type !== undefined){let data57 = data43.type;if(!((data57 === "String") || (data57 === "Text"))){const err127 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/4/then/properties/type/enum",params:{allowedValues: schema18.allOf[1].items.allOf[4].then.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err127];}else {vErrors.push(err127);}errors++;}if(errors > 0){const emErrs18 = [];for(const err128 of vErrors){if(((((err128.keyword !== "errorMessage") && (!err128.emUsed)) && ((err128.dataPath === dataPath+"/properties/" + i5+"/type") || ((err128.dataPath.indexOf(dataPath+"/properties/" + i5+"/type") === 0) && (err128.dataPath[dataPath+"/properties/" + i5+"/type".length] === "/")))) && (err128.schemaPath.indexOf("#/definitions/properties/allOf/1/items/allOf/4/then/properties/type") === 0)) && (err128.schemaPath["#/definitions/properties/allOf/1/items/allOf/4/then/properties/type".length] === "/")){emErrs18.push(err128);err128.emUsed = true;}}if(emErrs18.length){const err129 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/type",schemaPath:"#/definitions/properties/allOf/1/items/allOf/4/then/properties/type/errorMessage",params:{errors: emErrs18},message:"feel is only supported for \"String\" and \"Text\" type"};if(vErrors === null){vErrors = [err129];}else {vErrors.push(err129);}errors++;}const emErrs19 = [];for(const err130 of vErrors){if(!err130.emUsed){emErrs19.push(err130);}}vErrors = emErrs19;errors = emErrs19.length;}}}var _valid7 = _errs137 === errors;valid54 = _valid7;}if(!valid54){const err131 = {keyword:"if",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/allOf/4/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err131];}else {vErrors.push(err131);}errors++;}if(data43 && typeof data43 == "object" && !Array.isArray(data43)){if(data43.binding === undefined){const err132 = {keyword:"required",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/required",params:{missingProperty: "binding"},message:"should have required property '"+"binding"+"'"};if(vErrors === null){vErrors = [err132];}else {vErrors.push(err132);}errors++;}if(data43.binding !== undefined){let data58 = data43.binding;const _errs142 = errors;let valid60 = true;const _errs143 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if((data58.type === undefined) && ("type")){const err133 = {};if(vErrors === null){vErrors = [err133];}else {vErrors.push(err133);}errors++;}else {if(data58.type !== undefined){let data59 = data58.type;if(!((data59 === "property") || (data59 === "zeebe:input"))){const err134 = {};if(vErrors === null){vErrors = [err134];}else {vErrors.push(err134);}errors++;}}}}var _valid8 = _errs143 === errors;errors = _errs142;if(vErrors !== null){if(_errs142){vErrors.length = _errs142;}else {vErrors = null;}}if(_valid8){const _errs145 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if(data58.name === undefined){const err135 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/required",params:{missingProperty: "name"},message:"should have required property '"+"name"+"'"};if(vErrors === null){vErrors = [err135];}else {vErrors.push(err135);}errors++;}}if(errors > 0){const emErrs20 = [];for(const err136 of vErrors){if(((((err136.keyword !== "errorMessage") && (!err136.emUsed)) && ((err136.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err136.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err136.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err136.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then") === 0)) && (err136.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then".length] === "/")){emErrs20.push(err136);err136.emUsed = true;}}if(emErrs20.length){const err137 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/then/errorMessage",params:{errors: emErrs20},message:"property.binding " + JSON.stringify(data58 && data58.type) + " requires name"};if(vErrors === null){vErrors = [err137];}else {vErrors.push(err137);}errors++;}const emErrs21 = [];for(const err138 of vErrors){if(!err138.emUsed){emErrs21.push(err138);}}vErrors = emErrs21;errors = emErrs21.length;}var _valid8 = _errs145 === errors;valid60 = _valid8;}if(!valid60){const err139 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/0/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err139];}else {vErrors.push(err139);}errors++;}const _errs147 = errors;let valid62 = true;const _errs148 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if((data58.type === undefined) && ("type")){const err140 = {};if(vErrors === null){vErrors = [err140];}else {vErrors.push(err140);}errors++;}else {if(data58.type !== undefined){if(!equal(data58.type, "zeebe:output")){const err141 = {};if(vErrors === null){vErrors = [err141];}else {vErrors.push(err141);}errors++;}}}}var _valid9 = _errs148 === errors;errors = _errs147;if(vErrors !== null){if(_errs147){vErrors.length = _errs147;}else {vErrors = null;}}if(_valid9){const _errs150 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if(data58.source === undefined){const err142 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/required",params:{missingProperty: "source"},message:"should have required property '"+"source"+"'"};if(vErrors === null){vErrors = [err142];}else {vErrors.push(err142);}errors++;}}if(errors > 0){const emErrs22 = [];for(const err143 of vErrors){if(((((err143.keyword !== "errorMessage") && (!err143.emUsed)) && ((err143.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err143.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err143.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err143.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then") === 0)) && (err143.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then".length] === "/")){emErrs22.push(err143);err143.emUsed = true;}}if(emErrs22.length){const err144 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/then/errorMessage",params:{errors: emErrs22},message:"property.binding " + JSON.stringify(data58 && data58.type) + " requires source"};if(vErrors === null){vErrors = [err144];}else {vErrors.push(err144);}errors++;}const emErrs23 = [];for(const err145 of vErrors){if(!err145.emUsed){emErrs23.push(err145);}}vErrors = emErrs23;errors = emErrs23.length;}var _valid9 = _errs150 === errors;valid62 = _valid9;}if(!valid62){const err146 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/1/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err146];}else {vErrors.push(err146);}errors++;}const _errs152 = errors;let valid64 = true;const _errs153 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if((data58.type === undefined) && ("type")){const err147 = {};if(vErrors === null){vErrors = [err147];}else {vErrors.push(err147);}errors++;}else {if(data58.type !== undefined){if(!equal(data58.type, "zeebe:taskHeader")){const err148 = {};if(vErrors === null){vErrors = [err148];}else {vErrors.push(err148);}errors++;}}}}var _valid10 = _errs153 === errors;errors = _errs152;if(vErrors !== null){if(_errs152){vErrors.length = _errs152;}else {vErrors = null;}}if(_valid10){const _errs155 = errors;if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if(data58.key === undefined){const err149 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/required",params:{missingProperty: "key"},message:"should have required property '"+"key"+"'"};if(vErrors === null){vErrors = [err149];}else {vErrors.push(err149);}errors++;}}if(errors > 0){const emErrs24 = [];for(const err150 of vErrors){if(((((err150.keyword !== "errorMessage") && (!err150.emUsed)) && ((err150.dataPath === dataPath+"/properties/" + i5+"/binding") || ((err150.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding") === 0) && (err150.dataPath[dataPath+"/properties/" + i5+"/binding".length] === "/")))) && (err150.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then") === 0)) && (err150.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then".length] === "/")){emErrs24.push(err150);err150.emUsed = true;}}if(emErrs24.length){const err151 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/then/errorMessage",params:{errors: emErrs24},message:"property.binding " + JSON.stringify(data58 && data58.type) + " requires key"};if(vErrors === null){vErrors = [err151];}else {vErrors.push(err151);}errors++;}const emErrs25 = [];for(const err152 of vErrors){if(!err152.emUsed){emErrs25.push(err152);}}vErrors = emErrs25;errors = emErrs25.length;}var _valid10 = _errs155 === errors;valid64 = _valid10;}if(!valid64){const err153 = {keyword:"if",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/allOf/2/if",params:{failingKeyword: "then"},message:"should match \"then\" schema"};if(vErrors === null){vErrors = [err153];}else {vErrors.push(err153);}errors++;}if(data58 && typeof data58 == "object" && !Array.isArray(data58)){if(data58.type === undefined){const err154 = {keyword:"required",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/required",params:{missingProperty: "type"},message:"should have required property '"+"type"+"'"};if(vErrors === null){vErrors = [err154];}else {vErrors.push(err154);}errors++;}if(data58.type !== undefined){let data62 = data58.type;if(typeof data62 !== "string"){const err155 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err155];}else {vErrors.push(err155);}errors++;}if(!(((((data62 === "property") || (data62 === "zeebe:taskDefinition:type")) || (data62 === "zeebe:input")) || (data62 === "zeebe:output")) || (data62 === "zeebe:taskHeader"))){const err156 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/enum",params:{allowedValues: schema18.allOf[1].items.properties.binding.properties.type.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err156];}else {vErrors.push(err156);}errors++;}if(errors > 0){const emErrs26 = [];for(const err157 of vErrors){if(((((err157.keyword !== "errorMessage") && (!err157.emUsed)) && ((err157.dataPath === dataPath+"/properties/" + i5+"/binding/type") || ((err157.dataPath.indexOf(dataPath+"/properties/" + i5+"/binding/type") === 0) && (err157.dataPath[dataPath+"/properties/" + i5+"/binding/type".length] === "/")))) && (err157.schemaPath.indexOf("#/definitions/properties/allOf/1/items/properties/binding/properties/type") === 0)) && (err157.schemaPath["#/definitions/properties/allOf/1/items/properties/binding/properties/type".length] === "/")){emErrs26.push(err157);err157.emUsed = true;}}if(emErrs26.length){const err158 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5+"/binding/type",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/type/errorMessage",params:{errors: emErrs26},message:"invalid property.binding type " + JSON.stringify(data62) + "; must be any of { property, zeebe:taskDefinition:type, zeebe:input, zeebe:output, zeebe:taskHeader }"};if(vErrors === null){vErrors = [err158];}else {vErrors.push(err158);}errors++;}const emErrs27 = [];for(const err159 of vErrors){if(!err159.emUsed){emErrs27.push(err159);}}vErrors = emErrs27;errors = emErrs27.length;}}if(data58.name !== undefined){if(typeof data58.name !== "string"){const err160 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/name",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/name/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err160];}else {vErrors.push(err160);}errors++;}}if(data58.source !== undefined){if(typeof data58.source !== "string"){const err161 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/source",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/source/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err161];}else {vErrors.push(err161);}errors++;}}if(data58.key !== undefined){if(typeof data58.key !== "string"){const err162 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding/key",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/properties/key/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err162];}else {vErrors.push(err162);}errors++;}}}else {const err163 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/binding",schemaPath:"#/definitions/properties/allOf/1/items/properties/binding/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err163];}else {vErrors.push(err163);}errors++;}}if(data43.optional !== undefined){if(typeof data43.optional !== "boolean"){const err164 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/optional",schemaPath:"#/definitions/properties/allOf/1/items/properties/optional/type",params:{type: "boolean"},message:"should be boolean"};if(vErrors === null){vErrors = [err164];}else {vErrors.push(err164);}errors++;}}if(data43.feel !== undefined){let data67 = data43.feel;if(typeof data67 !== "string"){const err165 = {keyword:"type",dataPath:dataPath+"/properties/" + i5+"/feel",schemaPath:"#/definitions/properties/allOf/1/items/properties/feel/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err165];}else {vErrors.push(err165);}errors++;}if(!(((data67 === null) || (data67 === "optional")) || (data67 === "required"))){const err166 = {keyword:"enum",dataPath:dataPath+"/properties/" + i5+"/feel",schemaPath:"#/definitions/properties/allOf/1/items/properties/feel/enum",params:{allowedValues: schema18.allOf[1].items.properties.feel.enum},message:"should be equal to one of the allowed values"};if(vErrors === null){vErrors = [err166];}else {vErrors.push(err166);}errors++;}}}else {const err167 = {keyword:"type",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err167];}else {vErrors.push(err167);}errors++;}if(errors > 0){const emErrors8 = {"required":{"binding":[]}};const templates8 = {required:{binding:function(){return "missing binding for property \"" + JSON.stringify(i5) + "\""}}};let emPropParams4;let emParamsErrors4;for(const err168 of vErrors){if((((((err168.keyword !== "errorMessage") && (!err168.emUsed)) && (err168.dataPath === dataPath+"/properties/" + i5)) && (err168.keyword in emErrors8)) && (err168.schemaPath.indexOf("#/definitions/properties/allOf/1/items") === 0)) && (/^\/[^\/]*$/.test(err168.schemaPath.slice(38)))){emPropParams4 = obj0[err168.keyword];emParamsErrors4 = emErrors8[err168.keyword][err168.params[emPropParams4]];if(emParamsErrors4){emParamsErrors4.push(err168);err168.emUsed = true;}}}for(const key8 in emErrors8){for(const keyProp4 in emErrors8[key8]){emParamsErrors4 = emErrors8[key8][keyProp4];if(emParamsErrors4.length){const tmpl4 = templates8[key8] && templates8[key8][keyProp4];const err169 = {keyword:"errorMessage",dataPath:dataPath+"/properties/" + i5,schemaPath:"#/definitions/properties/allOf/1/items/errorMessage",params:{errors: emParamsErrors4},message:tmpl4 ? tmpl4() : schema18.allOf[1].items.errorMessage[key8][keyProp4]};if(vErrors === null){vErrors = [err169];}else {vErrors.push(err169);}errors++;}}}const emErrs28 = [];for(const err170 of vErrors){if(!err170.emUsed){emErrs28.push(err170);}}vErrors = emErrs28;errors = emErrs28.length;}}}else {const err171 = {keyword:"type",dataPath:dataPath+"/properties",schemaPath:"#/definitions/properties/allOf/1/type",params:{type: "array"},message:"should be array"};if(vErrors === null){vErrors = [err171];}else {vErrors.push(err171);}errors++;}}if(data.icon !== undefined){let data68 = data.icon;if(data68 && typeof data68 == "object" && !Array.isArray(data68)){if(data68.contents === undefined){const err172 = {keyword:"required",dataPath:dataPath+"/icon",schemaPath:"#/properties/icon/required",params:{missingProperty: "contents"},message:"should have required property '"+"contents"+"'"};if(vErrors === null){vErrors = [err172];}else {vErrors.push(err172);}errors++;}if(data68.contents !== undefined){let data69 = data68.contents;if(typeof data69 === "string"){if(!pattern3.test(data69)){const err173 = {keyword:"pattern",dataPath:dataPath+"/icon/contents",schemaPath:"#/properties/icon/properties/contents/pattern",params:{pattern: "^(https?|data):.*"},message:"should match pattern \""+"^(https?|data):.*"+"\""};if(vErrors === null){vErrors = [err173];}else {vErrors.push(err173);}errors++;}}else {const err174 = {keyword:"type",dataPath:dataPath+"/icon/contents",schemaPath:"#/properties/icon/properties/contents/type",params:{type: "string"},message:"should be string"};if(vErrors === null){vErrors = [err174];}else {vErrors.push(err174);}errors++;}if(errors > 0){const emErrors9 = {"pattern":[]};const templates9 = {};for(const err175 of vErrors){if((((((err175.keyword !== "errorMessage") && (!err175.emUsed)) && (err175.dataPath === dataPath+"/icon/contents")) && (err175.keyword in emErrors9)) && (err175.schemaPath.indexOf("#/properties/icon/properties/contents") === 0)) && (/^\/[^\/]*$/.test(err175.schemaPath.slice(37)))){emErrors9[err175.keyword].push(err175);err175.emUsed = true;}}for(const key9 in emErrors9){if(emErrors9[key9].length){const err176 = {keyword:"errorMessage",dataPath:dataPath+"/icon/contents",schemaPath:"#/properties/icon/properties/contents/errorMessage",params:{errors: emErrors9[key9]},message:key9 in templates9 ? templates9[key9]() : schema17.properties.icon.properties.contents.errorMessage[key9]};if(vErrors === null){vErrors = [err176];}else {vErrors.push(err176);}errors++;}}const emErrs29 = [];for(const err177 of vErrors){if(!err177.emUsed){emErrs29.push(err177);}}vErrors = emErrs29;errors = emErrs29.length;}}}else {const err178 = {keyword:"type",dataPath:dataPath+"/icon",schemaPath:"#/properties/icon/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err178];}else {vErrors.push(err178);}errors++;}if(errors > 0){const emErrors10 = {"required":{"contents":[]}};const templates10 = {required:{}};let emPropParams5;let emParamsErrors5;for(const err179 of vErrors){if((((((err179.keyword !== "errorMessage") && (!err179.emUsed)) && (err179.dataPath === dataPath+"/icon")) && (err179.keyword in emErrors10)) && (err179.schemaPath.indexOf("#/properties/icon") === 0)) && (/^\/[^\/]*$/.test(err179.schemaPath.slice(17)))){emPropParams5 = obj0[err179.keyword];emParamsErrors5 = emErrors10[err179.keyword][err179.params[emPropParams5]];if(emParamsErrors5){emParamsErrors5.push(err179);err179.emUsed = true;}}}for(const key10 in emErrors10){for(const keyProp5 in emErrors10[key10]){emParamsErrors5 = emErrors10[key10][keyProp5];if(emParamsErrors5.length){const tmpl5 = templates10[key10] && templates10[key10][keyProp5];const err180 = {keyword:"errorMessage",dataPath:dataPath+"/icon",schemaPath:"#/properties/icon/errorMessage",params:{errors: emParamsErrors5},message:tmpl5 ? tmpl5() : schema17.properties.icon.errorMessage[key10][keyProp5]};if(vErrors === null){vErrors = [err180];}else {vErrors.push(err180);}errors++;}}}const emErrs30 = [];for(const err181 of vErrors){if(!err181.emUsed){emErrs30.push(err181);}}vErrors = emErrs30;errors = emErrs30.length;}}}else {const err182 = {keyword:"type",dataPath,schemaPath:"#/type",params:{type: "object"},message:"should be object"};if(vErrors === null){vErrors = [err182];}else {vErrors.push(err182);}errors++;}validate15.errors = vErrors;return errors === 0;}function validate14(data, {dataPath="", parentData, parentDataProperty, rootData=data}={}){let vErrors = null;let errors = 0;const _errs0 = errors;let valid0 = false;let passing0 = null;const _errs1 = errors;if(!(validate15(data, {dataPath,parentData,parentDataProperty,rootData}))){vErrors = vErrors === null ? validate15.errors : vErrors.concat(validate15.errors);errors = vErrors.length;}var _valid0 = _errs1 === errors;if(_valid0){valid0 = true;passing0 = 0;}const _errs2 = errors;if(Array.isArray(data)){const len0 = data.length;for(let i0=0; i0 { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var minDash = __webpack_require__(/*! min-dash */ "./node_modules/min-dash/dist/index.esm.js"); - -/** - * Get a inputOutput from the business object - * - * @param {ModdleElement} element - * - * @return {ModdleElement} the inputOutput object - */ -function getInputOutput(element) { - return (getElements(element, 'camunda:InputOutput') || [])[0]; -} - -/** - * Return all input parameters existing in the business object, and - * an empty array if none exist. - * - * @param {ModdleElement} element - * - * @return {Array} a list of input parameter objects - */ -function getInputParameters(element) { - return getParameters(element, 'inputParameters'); -} - -/** - * Return all output parameters existing in the business object, and - * an empty array if none exist. - * - * @param {ModdleElement} element - * @param {boolean} insideConnector - * - * @return {Array} a list of output parameter objects - */ -function getOutputParameters(element) { - return getParameters(element, 'outputParameters'); -} - -/** - * Return all form fields existing in the business object, and - * an empty array if none exist. - * - * @param {ModdleElement} element - * - * @return {Array} a list of form fields - */ -function getFormFields(element) { - var formData = getFormData(element); - return (formData && formData.get('fields')) || []; -} - -/** - * Return form data existing in the business object - * - * @param {ModdleElement} element - * - * @return {ModdleElement} - */ -function getFormData(element) { - return getElements(element, 'camunda:FormData')[0]; -} - -/** - * Return out mappings existing in the business object - * - * @param {ModdleElement} element - * - * @return {Array} - */ -function getOutMappings(element) { - return getElements(element, 'camunda:Out'); -} - - -// helpers ////////// - -function getElements(element, type, property) { - var elements = getExtensionElements(element, type); - - return !property ? elements : (elements[0] || {})[property] || []; -} - -function getParameters(element, property) { - var inputOutput = getInputOutput(element); - - return (inputOutput && inputOutput.get(property)) || []; -} - -function getExtensionElements(element, type) { - var elements = []; - var extensionElements = element.get('extensionElements'); - - if (typeof extensionElements !== 'undefined') { - var extensionValues = extensionElements.get('values'); - - if (typeof extensionValues !== 'undefined') { - elements = minDash.filter(extensionValues, function(value) { - return is(value, type); - }); - } - } - - return elements; -} - -function is(element, type) { - return ( - element && - typeof element.$instanceOf === 'function' && - element.$instanceOf(type) - ); -} - -/** - * Get all parent elements for a given element. - * - * @param {ModdleElement|string} element - * - * @returns {Array} - */ -function getParents(element) { - var parents = []; - var current = element; - - while (current.$parent) { - parents.push(current.$parent); - current = current.$parent; - } - - return parents; -} - -/** - * Iterate over each element in a collection, calling the iterator function `fn` - * with (element, index, recursionDepth). - * - * Recurse into all elements that are returned by `fn`. - * - * @param {Object|Array} elements - * @param {Function} fn iterator function called with (element, index, recursionDepth) - * @param {number} [depth] maximum recursion depth - */ -function eachElement(elements, fn, depth) { - depth = depth || 0; - - if (!minDash.isArray(elements)) { - elements = [elements]; - } - - minDash.forEach(elements, function(s, i) { - var filter = fn(s, i, depth); - - if (minDash.isArray(filter) && filter.length) { - eachElement(filter, fn, depth + 1); - } - }); -} - -/** - * Adds an element to a collection and returns true if the - * element was added. - * - * @param {Array} elements - * @param {Object} e - * @param {boolean} unique - */ -function add(elements, e, unique) { - var canAdd = !unique || elements.indexOf(e) === -1; - - if (canAdd) { - elements.push(e); - } - - return canAdd; -} - -/** - * Collects self + flow elements up to a given depth from a list of elements. - * - * @param {ModdleElement|Array} elements the elements to select the flowElements from - * @param {boolean} unique whether to return a unique result set (no duplicates) - * @param {number} maxDepth the depth to search through or -1 for infinite - * - * @return {Array} found elements - */ -function selfAndFlowElements(elements, unique, maxDepth) { - var result = [], - processedFlowElements = []; - - eachElement(elements, function(element, i, depth) { - add(result, element, unique); - - var flowElements = element.flowElements; - - // max traversal depth not reached yet - if (maxDepth === -1 || depth < maxDepth) { - - // flowElements exist && flowElements not yet processed - if (flowElements && add(processedFlowElements, flowElements, unique)) { - return flowElements; - } - } - }); - - return result; -} - -/** - * Return self + ALL flowElements for a number of elements - * - * @param {Array} elements to query - * @param {boolean} allowDuplicates to allow duplicates in the result set - * - * @return {Array} the collected elements - */ -function selfAndAllFlowElements(elements, allowDuplicates) { - return selfAndFlowElements(elements, !allowDuplicates, -1); -} - -/** - * Return full moddle element for given element id - * - * @param {string} elementId - * @param {ModdleElement} rootElement - * - * @returns {ModdleElement} - */ -function getElement(elementId, rootElement) { - var allElements = selfAndAllFlowElements(rootElement); - - return minDash.find(allElements, function(element) { - return element.id === elementId; - }); -} - -function addVariableToList(variablesList, newVariable) { - var foundIdx = minDash.findIndex(variablesList, function(variable) { - return ( - variable.name === newVariable.name && variable.scope === newVariable.scope - ); - }); - - if (foundIdx >= 0) { - variablesList[foundIdx].origin = combineArrays( - variablesList[foundIdx].origin, - newVariable.origin - ); - } else { - variablesList.push(newVariable); - } -} - -/** - * Creates new process variable definition object - * Identifies correct (highest) scope, in which variable is available - * - * @param {ModdleElement} flowElement - * @param {String} name - * @param {ModdleElement} defaultScope - * - * @returns {ProcessVariable} - */ -function createProcessVariable(flowElement, name, defaultScope) { - var scope = getScope(flowElement, defaultScope, name); - - return { - name: name, - origin: [flowElement], - scope: scope, - }; -} - - -// helpers //////////////////// - -/** - * Set parent container if it defines it's own scope for the variable, so - * when it defines an input mapping for it. Otherwise returns the default global scope - */ -function getScope(element, globalScope, variableName) { - var parents = getParents(element); - - var scopedParent = minDash.find(parents, function(parent) { - return ( - is$1(parent, 'bpmn:SubProcess') && hasInputParameter(parent, variableName) - ); - }); - - return scopedParent ? scopedParent : globalScope; -} - -function is$1(element, type) { - return ( - element && - typeof element.$instanceOf === 'function' && - element.$instanceOf(type) - ); -} - -function hasInputParameter(element, name) { - return minDash.find(getInputParameters(element), function(input) { - return input.name === name; - }); -} - -function combineArrays(a, b) { - return a.concat(b); -} - -/** - * Retrieves process variables defined in output parameters, e.g. - * - * - * 200 - * ${myLocalVar + 20} - * - * - * => Adds two variables "variable1" & "variable2" to the list. - * - */ -function extractOutputParameters(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - // variables are created by output parameters - var outputParameters = getOutputParameters(element); - - // extract all variables with correct scope - minDash.forEach(outputParameters, function(parameter) { - var newVariable = createProcessVariable( - element, - parameter.name, - containerElement - ); - - addVariableToList(processVariables, newVariable); - }); - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in result variables, e.g. - * - * - * - * => Adds one variable "variable1"to the list. - * - */ -function extractResultVariables(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var resultVariable = getResultVariable(element); - - if (resultVariable) { - var newVariable = createProcessVariable( - element, - resultVariable, - containerElement - ); - - addVariableToList(processVariables, newVariable); - } - }); - - return processVariables; -} - - -// helpers /////////////////////// - -function getResultVariable(element) { - return element.get('camunda:resultVariable'); -} - -/** - * Retrieves process variables defined in form fields, e.g. - * - * - * - * - * - * - * => Adds two variables "variable1" & "variable2" to the list. - * - */ -function extractFormFields(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var formFields = getFormFields(element); - - // extract all variables with correct scope - minDash.forEach(formFields, function(field) { - var newVariable = createProcessVariable( - element, - field.id, - containerElement - ); - - addVariableToList(processVariables, newVariable); - }); - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in output mappings and - * ignores local variables, e.g. - * - * - * - * - * - * - * => Adds one variable "variable1" to the list. - * - */ -function extractOutMappings(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var outMappings = getOutMappings(element); - - // extract all variables with correct scope - minDash.forEach(outMappings, function(mapping) { - - // do not use variables marked as - if (mapping.local) { - return; - } - - var newVariable = createProcessVariable( - element, - mapping.target, - containerElement - ); - - addVariableToList(processVariables, newVariable); - }); - }); - - return processVariables; -} - -/** - * - * @param {ModdleElement} element - * @param {string} [type] - optional - * - * @return {Array|undefined} collection of event definitions or none - */ -function getEventDefinitions(element, type) { - var eventDefinitions = element.eventDefinitions; - - if (!eventDefinitions || !type) { - return eventDefinitions; - } - - return minDash.filter(eventDefinitions, function(definition) { - return is$2(definition, type); - }); -} - -/** - * Returns error event definitions for a given element. - * - * @param {ModdleElement} element - * - * @return {Array} collection of error event definitions - */ -function getErrorEventDefinitions(element) { - return getEventDefinitions(element, 'bpmn:ErrorEventDefinition'); -} - -/** - * Returns escalation event definitions for a given element. - * - * @param {ModdleElement} element - * - * @return {Array} collection of escalation event definitions - */ -function getEscalationEventDefinitions(element) { - return getEventDefinitions(element, 'bpmn:EscalationEventDefinition'); -} - - -// helper //////////////// - -function is$2(element, type) { - return ( - element && - typeof element.$instanceOf === 'function' && - element.$instanceOf(type) - ); -} - -/** - * Retrieves process variables defined in event definitions, e.g. - * - * - * - * => Adds one variable "variable1" to the list. - * - * - * - * => Adds two variables "variable2" & "variable3" to the list. - * - */ -function extractEventDefinitionVariables(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - var addVariable = function(element, name) { - var newVariable = createProcessVariable( - element, - name, - containerElement - ); - - addVariableToList(processVariables, newVariable); - }; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - // (1) error event code + message variable - var errorEventDefinitions = getErrorEventDefinitions(element); - - minDash.forEach(errorEventDefinitions, function(definition) { - - var errorCodeVariable = definition.get('errorCodeVariable'), - errorMessageVariable = definition.get('errorMessageVariable'); - - if (errorCodeVariable) { - addVariable(element, errorCodeVariable); - } - - if (errorMessageVariable) { - addVariable(element, errorMessageVariable); - } - }); - - // (2) escalation code variable - var escalationEventDefinitions = getEscalationEventDefinitions(element); - - minDash.forEach(escalationEventDefinitions, function(definition) { - - var escalationCodeVariable = definition.get('escalationCodeVariable'); - - if (escalationCodeVariable) { - addVariable(element, escalationCodeVariable); - } - }); - - }); - - return processVariables; -} - -var extractors = [ - extractOutputParameters, - extractResultVariables, - extractFormFields, - extractOutMappings, - extractEventDefinitionVariables -]; - -/** - * @typedef {Object} ProcessVariable - * @property {string} name - * @property {Array} origin - * @property {ModdleElement} scope - */ - -// api ///////////////////////// - -/** - * Retrieves all process variables for a given container element. - * @param {ModdleElement} containerElement - * - * @returns {Array} - */ -function getProcessVariables(containerElement) { - var processVariables = []; - - // (1) extract all flow elements inside the container - var elements = selfAndAllFlowElements([containerElement], false); - - // (2) extract all variables from the extractors - minDash.forEach(extractors, function(extractor) { - extractor({ - elements: elements, - containerElement: containerElement, - processVariables: processVariables - }); - }); - - return processVariables; -} - -/** - * Retrieves all variables which are available in the given scope - * - * * Exclude variables which are only available in other scopes - * * Exclude variables which are produced by the given element - * * Include variables which are available in parent scopes - * - * @param {string} scope - * @param {ModdleElement} rootElement element from where to extract all variables - * - * @returns {Array} - */ -function getVariablesForScope(scope, rootElement) { - - var allVariables = getProcessVariables(rootElement); - - var scopeElement = getElement(scope, rootElement); - - // (1) get variables for given scope - var scopeVariables = minDash.filter(allVariables, function(variable) { - return variable.scope.id === scopeElement.id; - }); - - // (2) get variables for parent scopes - var parents = getParents(scopeElement); - - var parentsScopeVariables = minDash.filter(allVariables, function(variable) { - return minDash.find(parents, function(parent) { - return parent.id === variable.scope.id; - }); - }); - - return combineArrays$1(scopeVariables, parentsScopeVariables); -} - -// helpers //////////////////// - -function combineArrays$1(a, b) { - return a.concat(b); -} - -exports.getProcessVariables = getProcessVariables; -exports.getVariablesForScope = getVariablesForScope; - - -/***/ }), - -/***/ "./node_modules/@bpmn-io/extract-process-variables/zeebe/index.js": -/*!************************************************************************!*\ - !*** ./node_modules/@bpmn-io/extract-process-variables/zeebe/index.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var minDash = __webpack_require__(/*! min-dash */ "./node_modules/min-dash/dist/index.esm.js"); - -/** - * Get a inputOutput from the business object - * - * @param {ModdleElement} element - * - * @return {ModdleElement} the inputOutput object - */ -function getInputOutput(element) { - return (getElements(element, 'zeebe:IoMapping') || [])[0]; -} - -/** - * Return all input parameters existing in the business object, and - * an empty array if none exist. - * - * @param {ModdleElement} element - * - * @return {Array} a list of input parameter objects - */ -function getInputParameters(element) { - return getParameters(element, 'inputParameters'); -} - -/** - * Return out mappings existing in the business object - * - * @param {ModdleElement} element - * - * @return {Array} - */ -function getOutMappings(element) { - return (getInputOutput(element) || {}).outputParameters; -} - -/** - * Return out mappings existing in the business object - * - * @param {ModdleElement} element - * - * @return {Array} - */ -function getInMappings(element) { - return (getInputOutput(element) || {}).inputParameters; -} - -/** - * Get the inputElement name from a loopCharacteristics - * - * @param {MoodleElement} loopCharacteristics - * @returns {String} outputCollection - */ -function getInputElement(loopCharacteristics) { - const extensionElement = getElements(loopCharacteristics, 'zeebe:LoopCharacteristics')[0]; - return extensionElement && extensionElement.inputElement; -} - -/** - * Get the outputCollection name from a loopCharacteristics - * - * @param {MoodleElement} loopCharacteristics - * @returns {String} outputCollection - */ -function getOutputCollection(loopCharacteristics) { - const extensionElement = getElements(loopCharacteristics, 'zeebe:LoopCharacteristics')[0]; - return extensionElement && extensionElement.outputCollection; - -} - -/** - * Get a calledDecision from the business object - * - * @param {MoodleElement} element - * @returns {MoodleElement} the calledDecision object - */ -function getCalledDecision(element) { - return (getElements(element, 'zeebe:CalledDecision') || [])[0]; -} - - -// helpers ////////// - -function getElements(element, type, property) { - var elements = getExtensionElements(element, type); - - return !property ? elements : (elements[0] || {})[property] || []; -} - -function getParameters(element, property) { - var inputOutput = getInputOutput(element); - - return (inputOutput && inputOutput.get(property)) || []; -} - -function getExtensionElements(element, type) { - var elements = []; - var extensionElements = element.get('extensionElements'); - - if (typeof extensionElements !== 'undefined') { - var extensionValues = extensionElements.get('values'); - - if (typeof extensionValues !== 'undefined') { - elements = minDash.filter(extensionValues, function(value) { - return is(value, type); - }); - } - } - - return elements; -} - -function is(element, type) { - return ( - element && - typeof element.$instanceOf === 'function' && - element.$instanceOf(type) - ); -} - -/** - * Get all parent elements for a given element. - * - * @param {ModdleElement|string} element - * - * @returns {Array} - */ -function getParents(element) { - var parents = []; - var current = element; - - while (current.$parent) { - parents.push(current.$parent); - current = current.$parent; - } - - return parents; -} - -/** - * Iterate over each element in a collection, calling the iterator function `fn` - * with (element, index, recursionDepth). - * - * Recurse into all elements that are returned by `fn`. - * - * @param {Object|Array} elements - * @param {Function} fn iterator function called with (element, index, recursionDepth) - * @param {number} [depth] maximum recursion depth - */ -function eachElement(elements, fn, depth) { - depth = depth || 0; - - if (!minDash.isArray(elements)) { - elements = [elements]; - } - - minDash.forEach(elements, function(s, i) { - var filter = fn(s, i, depth); - - if (minDash.isArray(filter) && filter.length) { - eachElement(filter, fn, depth + 1); - } - }); -} - -/** - * Adds an element to a collection and returns true if the - * element was added. - * - * @param {Array} elements - * @param {Object} e - * @param {boolean} unique - */ -function add(elements, e, unique) { - var canAdd = !unique || elements.indexOf(e) === -1; - - if (canAdd) { - elements.push(e); - } - - return canAdd; -} - -/** - * Collects self + flow elements up to a given depth from a list of elements. - * - * @param {ModdleElement|Array} elements the elements to select the flowElements from - * @param {boolean} unique whether to return a unique result set (no duplicates) - * @param {number} maxDepth the depth to search through or -1 for infinite - * - * @return {Array} found elements - */ -function selfAndFlowElements(elements, unique, maxDepth) { - var result = [], - processedFlowElements = []; - - eachElement(elements, function(element, i, depth) { - add(result, element, unique); - - var flowElements = element.flowElements; - - // max traversal depth not reached yet - if (maxDepth === -1 || depth < maxDepth) { - - // flowElements exist && flowElements not yet processed - if (flowElements && add(processedFlowElements, flowElements, unique)) { - return flowElements; - } - } - }); - - return result; -} - -/** - * Return self + ALL flowElements for a number of elements - * - * @param {Array} elements to query - * @param {boolean} allowDuplicates to allow duplicates in the result set - * - * @return {Array} the collected elements - */ -function selfAndAllFlowElements(elements, allowDuplicates) { - return selfAndFlowElements(elements, !allowDuplicates, -1); -} - -/** - * Return full moddle element for given element id - * - * @param {string} elementId - * @param {ModdleElement} rootElement - * - * @returns {ModdleElement} - */ -function getElement(elementId, rootElement) { - var allElements = selfAndAllFlowElements(rootElement); - - return minDash.find(allElements, function(element) { - return element.id === elementId; - }); -} - -function addVariableToList(variablesList, newVariable) { - var foundIdx = minDash.findIndex(variablesList, function(variable) { - return ( - variable.name === newVariable.name && variable.scope === newVariable.scope - ); - }); - - if (foundIdx >= 0) { - variablesList[foundIdx].origin = combineArrays( - variablesList[foundIdx].origin, - newVariable.origin - ); - } else { - variablesList.push(newVariable); - } -} - -/** - * Creates new process variable definition object - * Identifies correct (highest) scope, in which variable is available - * - * @param {ModdleElement} flowElement - * @param {String} name - * @param {ModdleElement} defaultScope - * - * @returns {ProcessVariable} - */ -function createProcessVariable(flowElement, name, defaultScope) { - var scope = getScope(flowElement, defaultScope, name); - - return { - name: name, - origin: [flowElement], - scope: scope - }; -} - - -// helpers //////////////////// - -/** - * Set parent container if it defines it's own scope for the variable, so - * when it defines an input mapping for it. Otherwise returns the default global scope - */ -function getScope(element, globalScope, variableName) { - var parents = getParents(element); - - var scopedParent = minDash.find(parents, function(parent) { - return ( - is$1(parent, 'bpmn:SubProcess') && hasInputParameter(parent, variableName) - ); - }); - - return scopedParent ? scopedParent : globalScope; -} - -function is$1(element, type) { - return ( - element && - typeof element.$instanceOf === 'function' && - element.$instanceOf(type) - ); -} - -function hasInputParameter(element, name) { - return minDash.find(getInputParameters(element), function(input) { - return input.target === name; - }); -} - -function combineArrays(a, b) { - return a.concat(b); -} - -/** - * Retrieves process variables defined in output mappings, e.g. - * - * - * - * - * - * - * - * - * - * => Adds one variable "variable1" to the list. - * - */ -function extractInMappings(options) { - var elements = options.elements, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var inMappings = getInMappings(element); - - // extract all variables with correct scope - minDash.forEach(inMappings, function(mapping) { - - var newVariable = createProcessVariable( - element, - mapping.target, - element - ); - - addVariableToList(processVariables, newVariable); - }); - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in result variables, e.g. - * - * - * - * - * - * - * - * - * - * => Adds one variable "inputElement"to the list. - * - */ -function extractInputElement(options) { - var elements = options.elements, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var loopCharacteristics = element.loopCharacteristics; - - var inputElement = loopCharacteristics && getInputElement(loopCharacteristics); - - if (inputElement) { - var newVariable = createProcessVariable( - element, - inputElement, - element - ); - - addVariableToList(processVariables, newVariable); - } - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in output mappings, e.g. - * - * - * - * - * - * - * - * - * - * => Adds one variable "variable1" to the list. - * - */ -function extractOutMappings(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var outMappings = getOutMappings(element); - - // extract all variables with correct scope - minDash.forEach(outMappings, function(mapping) { - var newVariable = createProcessVariable( - element, - mapping.target, - containerElement - ); - - addVariableToList(processVariables, newVariable); - }); - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in output collection, e.g. - * - * - * - * - * - * - * - * - * - * => Adds one variable "outputCollection"to the list. - * - */ -function extractOutputCollections(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var loopCharacteristics = element.loopCharacteristics; - - var outputCollection = loopCharacteristics && getOutputCollection(loopCharacteristics); - - if (outputCollection) { - var newVariable = createProcessVariable( - element, - outputCollection, - containerElement - ); - - addVariableToList(processVariables, newVariable); - } - }); - - return processVariables; -} - -/** - * Retrieves process variables defined in result variables, e.g. - * - * - * - * - * - * - * - * - * => Adds one variable "variable1"to the list. - * - */ -function extractResultVariables(options) { - var elements = options.elements, - containerElement = options.containerElement, - processVariables = options.processVariables; - - if (!minDash.isArray(elements)) { - elements = [ elements ]; - } - - minDash.forEach(elements, function(element) { - - var calledDecision = getCalledDecision(element); - - if (!calledDecision) { - return; - } - - var resultVariable = calledDecision.resultVariable; - - if (resultVariable) { - var newVariable = createProcessVariable( - element, - resultVariable, - containerElement - ); - - addVariableToList(processVariables, newVariable); - } - }); - - return processVariables; -} - -var extractors = [ - extractInMappings, - extractInputElement, - extractOutMappings, - extractOutputCollections, - extractResultVariables -]; - -/** - * @typedef {Object} ProcessVariable - * @property {string} name - * @property {Array} origin - * @property {ModdleElement} scope - */ - -// api ///////////////////////// - -/** - * Retrieves all process variables for a given container element. - * @param {ModdleElement} containerElement - * - * @returns {Array} - */ -function getProcessVariables(containerElement) { - var processVariables = []; - - // (1) extract all flow elements inside the container - var elements = selfAndAllFlowElements([containerElement], false); - - // (2) extract all variables from the extractors - minDash.forEach(extractors, function(extractor) { - extractor({ - elements: elements, - containerElement: containerElement, - processVariables: processVariables - }); - }); - - return processVariables; -} - -/** - * Retrieves all variables which are available in the given scope - * - * * Exclude variables which are only available in other scopes - * * Exclude variables which are produced by the given element - * * Include variables which are available in parent scopes - * - * @param {string} scope - * @param {ModdleElement} rootElement element from where to extract all variables - * - * @returns {Array} - */ -function getVariablesForScope(scope, rootElement) { - - var allVariables = getProcessVariables(rootElement); - - var scopeElement = getElement(scope, rootElement); - - // (1) get variables for given scope - var scopeVariables = minDash.filter(allVariables, function(variable) { - return variable.scope.id === scopeElement.id; - }); - - // (2) get variables for parent scopes - var parents = getParents(scopeElement); - - var parentsScopeVariables = minDash.filter(allVariables, function(variable) { - return minDash.find(parents, function(parent) { - return parent.id === variable.scope.id; - }); - }); - - return combineArrays$1(scopeVariables, parentsScopeVariables); -} - - -function getVariablesForElement(element) { - return getVariablesForScope(getScope$1(element), getRootElement(element)); -} - -function getScope$1(element) { - const bo = getBusinessObject(element); - - if (is$2(element, 'bpmn:Participant')) { - return bo.processRef.id; - } - - return bo.id; -} - -function getRootElement(element) { - const businessObject = getBusinessObject(element); - - if (is$2(businessObject, 'bpmn:Participant')) { - return businessObject.processRef; - } - - if (is$2(businessObject, 'bpmn:Process')) { - return businessObject; - } - - let parent = businessObject; - - while (parent.$parent && !is$2(parent, 'bpmn:Process')) { - parent = parent.$parent; - } - - return parent; -} - - -// helpers //////////////////// - -function combineArrays$1(a, b) { - return a.concat(b); -} - - -function getBusinessObject(element) { - return (element && element.businessObject) || element; -} - - -function is$2(element, type) { - var bo = getBusinessObject(element); - - return bo && (typeof bo.$instanceOf === 'function') && bo.$instanceOf(type); -} - -exports.getProcessVariables = getProcessVariables; -exports.getVariablesForElement = getVariablesForElement; -exports.getVariablesForScope = getVariablesForScope; - - -/***/ }), - -/***/ "./node_modules/@bpmn-io/properties-panel/dist/index.esm.js": -/*!******************************************************************!*\ - !*** ./node_modules/@bpmn-io/properties-panel/dist/index.esm.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "ArrowIcon": () => (/* binding */ ArrowIcon), -/* harmony export */ "CheckboxEntry": () => (/* binding */ CheckboxEntry), -/* harmony export */ "CollapsibleEntry": () => (/* binding */ CollapsibleEntry), -/* harmony export */ "CreateIcon": () => (/* binding */ CreateIcon), -/* harmony export */ "DebounceInputModule": () => (/* binding */ index), -/* harmony export */ "DeleteIcon": () => (/* binding */ DeleteIcon), -/* harmony export */ "DescriptionContext": () => (/* binding */ DescriptionContext), -/* harmony export */ "DescriptionEntry": () => (/* binding */ Description), -/* harmony export */ "DropdownButton": () => (/* binding */ DropdownButton), -/* harmony export */ "ErrorsContext": () => (/* binding */ ErrorsContext), -/* harmony export */ "EventContext": () => (/* binding */ EventContext), -/* harmony export */ "ExternalLinkIcon": () => (/* binding */ ExternalLinkIcon), -/* harmony export */ "FeelEntry": () => (/* binding */ FeelEntry), -/* harmony export */ "FeelOptionalIcon": () => (/* binding */ FeelOptionalIcon), -/* harmony export */ "FeelRequiredIcon": () => (/* binding */ FeelRequiredIcon), -/* harmony export */ "FeelTextAreaEntry": () => (/* binding */ FeelTextArea), -/* harmony export */ "Group": () => (/* binding */ Group), -/* harmony export */ "Header": () => (/* binding */ Header), -/* harmony export */ "HeaderButton": () => (/* binding */ HeaderButton), -/* harmony export */ "LayoutContext": () => (/* binding */ LayoutContext), -/* harmony export */ "ListEntry": () => (/* binding */ List), -/* harmony export */ "ListGroup": () => (/* binding */ ListGroup), -/* harmony export */ "ListItem": () => (/* binding */ ListItem), -/* harmony export */ "NumberFieldEntry": () => (/* binding */ NumberFieldEntry), -/* harmony export */ "Placeholder": () => (/* binding */ Placeholder), -/* harmony export */ "PropertiesPanel": () => (/* binding */ PropertiesPanel), -/* harmony export */ "PropertiesPanelContext": () => (/* binding */ LayoutContext), -/* harmony export */ "SelectEntry": () => (/* binding */ SelectEntry), -/* harmony export */ "SimpleEntry": () => (/* binding */ Simple), -/* harmony export */ "TextAreaEntry": () => (/* binding */ TextAreaEntry), -/* harmony export */ "TextFieldEntry": () => (/* binding */ TextfieldEntry), -/* harmony export */ "ToggleSwitchEntry": () => (/* binding */ ToggleSwitchEntry), -/* harmony export */ "isCheckboxEntryEdited": () => (/* binding */ isEdited$7), -/* harmony export */ "isFeelEntryEdited": () => (/* binding */ isEdited$6), -/* harmony export */ "isNumberFieldEntryEdited": () => (/* binding */ isEdited$5), -/* harmony export */ "isSelectEntryEdited": () => (/* binding */ isEdited$4), -/* harmony export */ "isSimpleEntryEdited": () => (/* binding */ isEdited$3), -/* harmony export */ "isTextAreaEntryEdited": () => (/* binding */ isEdited$2), -/* harmony export */ "isTextFieldEntryEdited": () => (/* binding */ isEdited$1), -/* harmony export */ "isToggleSwitchEntryEdited": () => (/* binding */ isEdited), -/* harmony export */ "useDescriptionContext": () => (/* binding */ useDescriptionContext), -/* harmony export */ "useError": () => (/* binding */ useError), -/* harmony export */ "useEvent": () => (/* binding */ useEvent), -/* harmony export */ "useEventBuffer": () => (/* binding */ useEventBuffer), -/* harmony export */ "useKeyFactory": () => (/* binding */ useKeyFactory), -/* harmony export */ "useLayoutState": () => (/* binding */ useLayoutState), -/* harmony export */ "usePrevious": () => (/* binding */ usePrevious), -/* harmony export */ "useShowEntryEvent": () => (/* binding */ useShowEntryEvent), -/* harmony export */ "useStaticCallback": () => (/* binding */ useStaticCallback), -/* harmony export */ "useStickyIntersectionObserver": () => (/* binding */ useStickyIntersectionObserver) -/* harmony export */ }); -/* harmony import */ var _preact_hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../preact/hooks */ "./node_modules/@bpmn-io/properties-panel/preact/hooks/dist/hooks.module.js"); -/* harmony import */ var min_dash__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! min-dash */ "./node_modules/min-dash/dist/index.esm.js"); -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js"); -/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _preact_compat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../preact/compat */ "./node_modules/@bpmn-io/properties-panel/preact/compat/dist/compat.module.js"); -/* harmony import */ var _preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../preact/jsx-runtime */ "./node_modules/@bpmn-io/properties-panel/preact/jsx-runtime/dist/jsxRuntime.module.js"); -/* harmony import */ var min_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! min-dom */ "./node_modules/min-dom/dist/index.esm.js"); -/* harmony import */ var _preact__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../preact */ "./node_modules/@bpmn-io/properties-panel/preact/dist/preact.module.js"); - - - - - - - - -var ArrowIcon = function ArrowIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("svg", { ...props, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - d: "m11.657 8-4.95 4.95a1 1 0 0 1-1.414-1.414L8.828 8 5.293 4.464A1 1 0 1 1 6.707 3.05L11.657 8z" - }) - }); -}; - -ArrowIcon.defaultProps = { - xmlns: "http://www.w3.org/2000/svg", - width: "16", - height: "16" -}; - -var CreateIcon = function CreateIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("svg", { ...props, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - d: "M9 13V9h4a1 1 0 0 0 0-2H9V3a1 1 0 1 0-2 0v4H3a1 1 0 1 0 0 2h4v4a1 1 0 0 0 2 0z" - }) - }); -}; - -CreateIcon.defaultProps = { - xmlns: "http://www.w3.org/2000/svg", - width: "16", - height: "16" -}; - -var DeleteIcon = function DeleteIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("svg", { ...props, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - d: "M12 6v7c0 1.1-.4 1.55-1.5 1.55h-5C4.4 14.55 4 14.1 4 13V6h8zm-1.5 1.5h-5v4.3c0 .66.5 1.2 1.111 1.2H9.39c.611 0 1.111-.54 1.111-1.2V7.5zM13 3h-2l-1-1H6L5 3H3v1.5h10V3z" - }) - }); -}; - -DeleteIcon.defaultProps = { - xmlns: "http://www.w3.org/2000/svg", - width: "16", - height: "16" -}; - -var ExternalLinkIcon = function ExternalLinkIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("svg", { ...props, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - clipRule: "evenodd", - d: "M12.637 12.637v-4.72h1.362v4.721c0 .36-.137.676-.411.95-.275.275-.591.412-.95.412H3.362c-.38 0-.703-.132-.967-.396A1.315 1.315 0 0 1 2 12.638V3.362c0-.38.132-.703.396-.967S2.982 2 3.363 2h4.553v1.363H3.363v9.274h9.274zM14 2H9.28l-.001 1.362h2.408L5.065 9.984l.95.95 6.622-6.622v2.409H14V2z", - fill: "#818798" - }) - }); -}; - -ExternalLinkIcon.defaultProps = { - width: "16", - height: "16", - fill: "none", - xmlns: "http://www.w3.org/2000/svg" -}; - -var FeelRequiredIcon = function FeelRequiredIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("svg", { ...props, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - d: "M5.8 7.06V5.95h4.307v1.11H5.8zm0 3.071v-1.11h4.307v1.11H5.8z", - fill: "currentColor" - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - clipRule: "evenodd", - d: "M8 3.268A4.732 4.732 0 1 0 12.732 8H14a6 6 0 1 1-6-6v1.268z", - fill: "currentColor" - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - d: "m11.28 6.072-.832-.56 1.016-1.224L10 3.848l.312-.912 1.392.584L11.632 2h1.032l-.072 1.52 1.392-.584.312.912-1.464.44 1.008 1.224-.832.552-.864-1.296-.864 1.304z", - fill: "currentColor" - })] - }); -}; - -FeelRequiredIcon.defaultProps = { - viewBox: "0 0 16 16", - fill: "none", - xmlns: "http://www.w3.org/2000/svg" -}; - -var FeelOptionalIcon = function FeelOptionalIcon(props) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("svg", { ...props, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - d: "M5.845 7.04V5.93h4.307v1.11H5.845zm0 3.07V9h4.307v1.11H5.845z", - fill: "currentColor" - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("path", { - fillRule: "evenodd", - clipRule: "evenodd", - d: "M3.286 8a4.714 4.714 0 1 0 9.428 0 4.714 4.714 0 0 0-9.428 0zM8 2a6 6 0 1 0 0 12A6 6 0 0 0 8 2z", - fill: "currentColor" - })] - }); -}; - -FeelOptionalIcon.defaultProps = { - viewBox: "0 0 16 16", - fill: "none", - xmlns: "http://www.w3.org/2000/svg" -}; - -function Header(props) { - const { - element, - headerProvider - } = props; - const { - getElementIcon, - getDocumentationRef, - getElementLabel, - getTypeLabel - } = headerProvider; - const label = getElementLabel(element); - const type = getTypeLabel(element); - const documentationRef = getDocumentationRef && getDocumentationRef(element); - const ElementIcon = getElementIcon(element); - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-header", - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-header-icon", - children: ElementIcon && (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ElementIcon, { - width: "32", - height: "32", - viewBox: "0 0 32 32" - }) - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-header-labels", - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: type, - class: "bio-properties-panel-header-type", - children: type - }), label ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: label, - class: "bio-properties-panel-header-label", - children: label - }) : null] - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-header-actions", - children: documentationRef ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("a", { - rel: "noopener", - class: "bio-properties-panel-header-link", - href: documentationRef, - title: "Open documentation", - target: "_blank", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ExternalLinkIcon, {}) - }) : null - })] - }); -} - -const DescriptionContext = (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createContext)({ - description: {}, - getDescriptionForId: () => {} -}); - -const ErrorsContext = (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createContext)({ - errors: {} -}); - -/** - * @typedef {Function} callback - * - * @example - * - * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => { - * // ... - * }); - * - * @param {Object} context - * @param {boolean} [context.focus] - * - * @returns void - */ -const EventContext = (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createContext)({ - eventBus: null -}); - -const LayoutContext = (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createContext)({ - layout: {}, - setLayout: () => {}, - getLayoutForKey: () => {}, - setLayoutForKey: () => {} -}); - -/** - * Accesses the global DescriptionContext and returns a description for a given id and element. - * - * @example - * ```jsx - * function TextField(props) { - * const description = useDescriptionContext('input1', element); - * } - * ``` - * - * @param {string} id - * @param {object} element - * - * @returns {string} - */ - -function useDescriptionContext(id, element) { - const { - getDescriptionForId - } = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(DescriptionContext); - return getDescriptionForId(id, element); -} - -function useError(id) { - const { - errors - } = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(ErrorsContext); - return errors[id]; -} - -/** - * Subscribe to an event immediately. Update subscription after inputs changed. - * - * @param {string} event - * @param {Function} callback - */ - -function useEvent(event, callback, eventBus) { - const eventContext = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(EventContext); - - if (!eventBus) { - ({ - eventBus - } = eventContext); - } - - const didMount = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(false); // (1) subscribe immediately - - if (eventBus && !didMount.current) { - eventBus.on(event, callback); - } // (2) update subscription after inputs changed - - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (eventBus && didMount.current) { - eventBus.on(event, callback); - } - - didMount.current = true; - return () => { - if (eventBus) { - eventBus.off(event, callback); - } - }; - }, [callback, event, eventBus]); -} - -const HIGH_PRIORITY = 10000; -/** - * Buffer events and re-fire during passive effect phase. - * - * @param {string[]} bufferedEvents - * @param {Object} [eventBus] - */ - -function useEventBuffer(bufferedEvents, eventBus) { - const buffer = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)([]), - buffering = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(true); - - const createCallback = event => data => { - if (buffering.current === true) { - buffer.current.unshift([event, data]); - } - }; // (1) buffer events - - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (!eventBus) { - return; - } - - const listeners = bufferedEvents.map(event => { - return [event, createCallback(event)]; - }); - listeners.forEach(([event, callback]) => { - eventBus.on(event, HIGH_PRIORITY, callback); - }); - return () => { - listeners.forEach(([event, callback]) => { - eventBus.off(event, callback); - }); - }; - }, [bufferedEvents, eventBus]); // (2) re-fire events - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (!eventBus) { - return; - } - - buffering.current = false; - - while (buffer.current.length) { - const [event, data] = buffer.current.pop(); - eventBus.fire(event, data); - } - - buffering.current = true; - }); -} - -const KEY_LENGTH = 6; -/** - * Create a persistent key factory for plain objects without id. - * - * @example - * ```jsx - * function List({ objects }) { - * const getKey = useKeyFactory(); - * return (
    { - * objects.map(obj => { - * const key = getKey(obj); - * return
  1. obj.name
  2. - * }) - * }
); - * } - * ``` - * - * @param {any[]} dependencies - * @returns {(element: object) => string} - */ - -function useKeyFactory(dependencies = []) { - const map = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => new Map(), dependencies); - - const getKey = el => { - let key = map.get(el); - - if (!key) { - key = Math.random().toString().slice(-KEY_LENGTH); - map.set(el, key); - } - - return key; - }; - - return getKey; -} - -/** - * Creates a state that persists in the global LayoutContext. - * - * @example - * ```jsx - * function Group(props) { - * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false); - * } - * ``` - * - * @param {(string|number)[]} path - * @param {any} [defaultValue] - * - * @returns {[ any, Function ]} - */ - -function useLayoutState(path, defaultValue) { - const { - getLayoutForKey, - setLayoutForKey - } = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext); - const layoutForKey = getLayoutForKey(path, defaultValue); - const [value, set] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(layoutForKey); - - const setState = newValue => { - // (1) set component state - set(newValue); // (2) set context - - setLayoutForKey(path, newValue); - }; - - return [value, setState]; -} - -/** - * @pinussilvestrus: we need to introduce our own hook to persist the previous - * state on updates. - * - * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state - */ - -function usePrevious(value) { - const ref = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(); - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - ref.current = value; - }); - return ref.current; -} - -/** - * Subscribe to `propertiesPanel.showEntry`. - * - * @param {string} id - * - * @returns {import('preact').Ref} - */ - -function useShowEntryEvent(id) { - const { - onShow - } = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext); - const ref = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(); - const focus = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(false); - const onShowEntry = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(event => { - if (event.id === id) { - onShow(); - - if (!focus.current) { - focus.current = true; - } - } - }, [id]); - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (focus.current && ref.current) { - if ((0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(ref.current.focus)) { - ref.current.focus(); - } - - if ((0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(ref.current.select)) { - ref.current.select(); - } - - focus.current = false; - } - }); - useEvent('propertiesPanel.showEntry', onShowEntry); - return ref; -} - -/** - * @callback setSticky - * @param {boolean} value - */ - -/** - * Use IntersectionObserver to identify when DOM element is in sticky mode. - * If sticky is observered setSticky(true) will be called. - * If sticky mode is left, setSticky(false) will be called. - * - * - * @param {Object} ref - * @param {string} scrollContainerSelector - * @param {setSticky} setSticky - */ - -function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) { - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - const Observer = IntersectionObserver; // return early if IntersectionObserver is not available - - if (!Observer) { - return; - } - - let observer; - - if (ref.current) { - const scrollContainer = (0,min_dom__WEBPACK_IMPORTED_MODULE_6__.query)(scrollContainerSelector); - observer = new Observer(entries => { - entries.forEach(entry => { - if (entry.intersectionRatio < 1) { - setSticky(true); - } else if (entry.intersectionRatio === 1) { - setSticky(false); - } - }); - }, { - root: scrollContainer, - rootMargin: '0px 0px 999999% 0px', - // Use bottom margin to avoid stickyness when scrolling out to bottom - threshold: [1] - }); - observer.observe(ref.current); - } // Unobserve if unmounted - - - return () => { - if (ref.current && observer) { - observer.unobserve(ref.current); - } - }; - }, [ref, scrollContainerSelector, setSticky]); -} - -/** - * Creates a static function reference with changing body. - * This is necessary when external libraries require a callback function - * that has references to state variables. - * - * Usage: - * const callback = useStaticCallback((val) => {val === currentState}); - * - * The `callback` reference is static and can be safely used in external - * libraries or as a prop that does not cause rerendering of children. - * - * @param {Function} callback function with changing reference - * @returns {Function} static function reference - */ - -function useStaticCallback(callback) { - const callbackRef = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(callback); - callbackRef.current = callback; - return (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)((...args) => callbackRef.current(...args), []); -} - -function Group(props) { - const { - element, - entries = [], - id, - label, - shouldOpen = false - } = props; - const groupRef = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); - const [open, setOpen] = useLayoutState(['groups', id, 'open'], shouldOpen); - const onShow = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setOpen(true), [setOpen]); - - const toggleOpen = () => setOpen(!open); - - const [edited, setEdited] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(false); - const [sticky, setSticky] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(false); // set edited state depending on all entries - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - const hasOneEditedEntry = entries.find(entry => { - const { - id, - isEdited - } = entry; - const entryNode = (0,min_dom__WEBPACK_IMPORTED_MODULE_6__.query)(`[data-entry-id="${id}"]`); - - if (!(0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(isEdited) || !entryNode) { - return false; - } - - const inputNode = (0,min_dom__WEBPACK_IMPORTED_MODULE_6__.query)('.bio-properties-panel-input', entryNode); - return isEdited(inputNode); - }); - setEdited(hasOneEditedEntry); - }, [entries]); // set css class when group is sticky to top - - useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky); - const propertiesPanelContext = { ...(0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext), - onShow - }; - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-group", - "data-group-id": 'group-' + id, - ref: groupRef, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-group-header', edited ? '' : 'empty', open ? 'open' : '', sticky && open ? 'sticky' : ''), - onClick: toggleOpen, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: label, - class: "bio-properties-panel-group-header-title", - children: label - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-group-header-buttons", - children: [edited && (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(DataMarker, {}), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { - title: "Toggle section", - class: "bio-properties-panel-group-header-button bio-properties-panel-arrow", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ArrowIcon, { - class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' - }) - })] - })] - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-group-entries', open ? 'open' : ''), - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(LayoutContext.Provider, { - value: propertiesPanelContext, - children: entries.map(entry => { - const { - component: Component, - id - } = entry; - return (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createElement)(Component, { ...entry, - element: element, - key: id - }); - }) - }) - })] - }); -} - -function DataMarker() { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: "Section contains data", - class: "bio-properties-panel-dot" - }); -} - -/** - * @typedef { { - * text: (element: object) => string, - * icon?: (element: Object) => import('preact').Component - * } } PlaceholderDefinition - * - * @param { PlaceholderDefinition } props - */ -function Placeholder(props) { - const { - text, - icon: Icon - } = props; - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel open", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("section", { - class: "bio-properties-panel-placeholder", - children: [Icon && (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Icon, { - class: "bio-properties-panel-placeholder-icon" - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("p", { - class: "bio-properties-panel-placeholder-text", - children: text - })] - }) - }); -} - -const DEFAULT_LAYOUT = { - open: true -}; -const DEFAULT_DESCRIPTION = {}; -const bufferedEvents = ['propertiesPanel.showEntry', 'propertiesPanel.setErrors']; -/** - * @typedef { { - * component: import('preact').Component, - * id: String, - * isEdited?: Function - * } } EntryDefinition - * - * @typedef { { - * autoFocusEntry: String, - * autoOpen?: Boolean, - * entries: Array, - * id: String, - * label: String, - * remove: (event: MouseEvent) => void - * } } ListItemDefinition - * - * @typedef { { - * add: (event: MouseEvent) => void, - * component: import('preact').Component, - * element: Object, - * id: String, - * items: Array, - * label: String, - * shouldSort?: Boolean, - * shouldOpen?: Boolean - * } } ListGroupDefinition - * - * @typedef { { - * component?: import('preact').Component, - * entries: Array, - * id: String, - * label: String, - * shouldOpen?: Boolean - * } } GroupDefinition - * - * @typedef { { - * [id: String]: GetDescriptionFunction - * } } DescriptionConfig - * - * @callback { { - * @param {string} id - * @param {Object} element - * @returns {string} - * } } GetDescriptionFunction - * - * @typedef { { - * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition, - * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition - * } } PlaceholderProvider - * - */ - -/** - * A basic properties panel component. Describes *how* content will be rendered, accepts - * data from implementor to describe *what* will be rendered. - * - * @param {Object} props - * @param {Object|Array} props.element - * @param {import('./components/Header').HeaderProvider} props.headerProvider - * @param {PlaceholderProvider} [props.placeholderProvider] - * @param {Array} props.groups - * @param {Object} [props.layoutConfig] - * @param {Function} [props.layoutChanged] - * @param {DescriptionConfig} [props.descriptionConfig] - * @param {Function} [props.descriptionLoaded] - * @param {Object} [props.eventBus] - */ - -function PropertiesPanel(props) { - const { - element, - headerProvider, - placeholderProvider, - groups, - layoutConfig = {}, - layoutChanged, - descriptionConfig = {}, - descriptionLoaded, - eventBus - } = props; // set-up layout context - - const [layout, setLayout] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(createLayout(layoutConfig)); - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (typeof layoutChanged === 'function') { - layoutChanged(layout); - } - }, [layout, layoutChanged]); - - const getLayoutForKey = (key, defaultValue) => { - return (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.get)(layout, key, defaultValue); - }; - - const setLayoutForKey = (key, config) => { - const newLayout = (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.assign)({}, layout); - (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.set)(newLayout, key, config); - setLayout(newLayout); - }; - - const layoutContext = { - layout, - setLayout, - getLayoutForKey, - setLayoutForKey - }; // set-up description context - - const description = createDescriptionContext(descriptionConfig); - - if (typeof descriptionLoaded === 'function') { - descriptionLoaded(description); - } - - const getDescriptionForId = (id, element) => { - return description[id] && description[id](element); - }; - - const descriptionContext = { - description, - getDescriptionForId - }; - useEventBuffer(bufferedEvents, eventBus); - const [errors, setErrors] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)({}); - - const onSetErrors = ({ - errors - }) => setErrors(errors); - - useEvent('propertiesPanel.setErrors', onSetErrors, eventBus); - const errorsContext = { - errors - }; - const eventContext = { - eventBus - }; - const propertiesPanelContext = { - element - }; // empty state - - if (placeholderProvider && !element) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Placeholder, { ...placeholderProvider.getEmpty() - }); - } // multiple state - - - if (placeholderProvider && (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isArray)(element)) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Placeholder, { ...placeholderProvider.getMultiple() - }); - } - - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(LayoutContext.Provider, { - value: propertiesPanelContext, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ErrorsContext.Provider, { - value: errorsContext, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(DescriptionContext.Provider, { - value: descriptionContext, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(LayoutContext.Provider, { - value: layoutContext, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(EventContext.Provider, { - value: eventContext, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel', layout.open ? 'open' : ''), - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Header, { - element: element, - headerProvider: headerProvider - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-scroll-container", - children: groups.map(group => { - const { - component: Component = Group, - id - } = group; - return (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createElement)(Component, { ...group, - key: id, - element: element - }); - }) - })] - }) - }) - }) - }) - }) - }); -} // helpers ////////////////// - -function createLayout(overrides) { - return { ...DEFAULT_LAYOUT, - ...overrides - }; -} - -function createDescriptionContext(overrides) { - return { ...DEFAULT_DESCRIPTION, - ...overrides - }; -} - -function DropdownButton(props) { - const { - class: className, - children, - menuItems = [] - } = props; - const dropdownRef = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); - const menuRef = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); - const [open, setOpen] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(false); - - const close = () => setOpen(false); - - function onDropdownToggle(event) { - if (menuRef.current && menuRef.current.contains(event.target)) { - return; - } - - event.stopPropagation(); - setOpen(open => !open); - } - - function onActionClick(event, action) { - event.stopPropagation(); - close(); - action(); - } - - useGlobalClick([dropdownRef.current], () => close()); - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-dropdown-button', { - open - }, className), - onClick: onDropdownToggle, - ref: dropdownRef, - children: [children, (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-dropdown-button__menu", - ref: menuRef, - children: menuItems.map((item, index) => (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(MenuItem, { - onClick: onActionClick, - item: item - }, index)) - })] - }); -} - -function MenuItem({ - item, - onClick -}) { - if (item.separator) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--separator" - }); - } - - if (item.action) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { - class: "bio-properties-panel-dropdown-button__menu-item bio-properties-panel-dropdown-button__menu-item--actionable", - onClick: event => onClick(event, item.action), - children: item.entry - }); - } - - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-dropdown-button__menu-item", - children: item.entry - }); -} -/** - * - * @param {Array} ignoredElements - * @param {Function} callback - */ - - -function useGlobalClick(ignoredElements, callback) { - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - /** - * @param {MouseEvent} event - */ - function listener(event) { - if (ignoredElements.some(element => element && element.contains(event.target))) { - return; - } - - callback(); - } - - document.addEventListener('click', listener, { - capture: true - }); - return () => document.removeEventListener('click', listener, { - capture: true - }); - }, [...ignoredElements, callback]); -} - -function HeaderButton(props) { - const { - children = null, - class: classname, - onClick = () => {}, - ...otherProps - } = props; - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { ...otherProps, - onClick: onClick, - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-group-header-button', classname), - children: children - }); -} - -function CollapsibleEntry(props) { - const { - element, - entries = [], - id, - label, - open: shouldOpen, - remove - } = props; - const [open, setOpen] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(shouldOpen); - - const toggleOpen = () => setOpen(!open); - - const { - onShow - } = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext); - const propertiesPanelContext = { ...(0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext), - onShow: (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => { - setOpen(true); - - if ((0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(onShow)) { - onShow(); - } - }, [onShow, setOpen]) - }; // todo(pinussilvestrus): translate once we have a translate mechanism for the core - - const placeholderLabel = ''; - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - "data-entry-id": id, - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-collapsible-entry', open ? 'open' : ''), - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-collapsible-entry-header", - onClick: toggleOpen, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: label || placeholderLabel, - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-collapsible-entry-header-title', !label && 'empty'), - children: label || placeholderLabel - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { - title: "Toggle list item", - class: "bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ArrowIcon, { - class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' - }) - }), remove ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { - title: "Delete item", - class: "bio-properties-panel-remove-entry", - onClick: remove, - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(DeleteIcon, {}) - }) : null] - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-collapsible-entry-entries', open ? 'open' : ''), - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(LayoutContext.Provider, { - value: propertiesPanelContext, - children: entries.map(entry => { - const { - component: Component, - id - } = entry; - return (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createElement)(Component, { ...entry, - element: element, - key: id - }); - }) - }) - })] - }); -} - -function ListItem(props) { - const { - autoFocusEntry, - autoOpen - } = props; // focus specified entry on auto open - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (autoOpen && autoFocusEntry) { - const entry = (0,min_dom__WEBPACK_IMPORTED_MODULE_6__.query)(`[data-entry-id="${autoFocusEntry}"]`); - const focusableInput = (0,min_dom__WEBPACK_IMPORTED_MODULE_6__.query)('.bio-properties-panel-input', entry); - - if (focusableInput) { - if ((0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(focusableInput.select)) { - focusableInput.select(); - } else if ((0,min_dash__WEBPACK_IMPORTED_MODULE_5__.isFunction)(focusableInput.focus)) { - focusableInput.focus(); - } - } - } - }, [autoOpen, autoFocusEntry]); - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-list-item", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(CollapsibleEntry, { ...props, - open: autoOpen - }) - }); -} - -const noop$2 = () => {}; -/** - * @param {import('../PropertiesPanel').ListGroupDefinition} props - */ - - -function ListGroup(props) { - const { - add, - element, - id, - items, - label, - shouldOpen = true, - shouldSort = true - } = props; - const groupRef = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); - const [open, setOpen] = useLayoutState(['groups', id, 'open'], false); - const [sticky, setSticky] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(false); - const onShow = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => setOpen(true), [setOpen]); - const [ordering, setOrdering] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)([]); - const [newItemAdded, setNewItemAdded] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(false); - const prevItems = usePrevious(items); - const prevElement = usePrevious(element); - const elementChanged = element !== prevElement; - const shouldHandleEffects = !elementChanged && (shouldSort || shouldOpen); // reset initial ordering when element changes (before first render) - - if (elementChanged) { - setOrdering(createOrdering(shouldSort ? sortItems(items) : items)); - } // keep ordering in sync to items - and open changes - // (0) set initial ordering from given items - - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (!prevItems || !shouldSort) { - setOrdering(createOrdering(items)); - } - }, [items, element]); // (1) items were added - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (shouldHandleEffects && prevItems && items.length > prevItems.length) { - let add = []; - items.forEach(item => { - if (!ordering.includes(item.id)) { - add.push(item.id); - } - }); - let newOrdering = ordering; // open if not open and configured - - if (!open && shouldOpen) { - toggleOpen(); // if I opened and I should sort, then sort items - - if (shouldSort) { - newOrdering = createOrdering(sortItems(items)); - } - } // add new items on top or bottom depending on sorting behavior - - - newOrdering = newOrdering.filter(item => !add.includes(item)); - - if (shouldSort) { - newOrdering.unshift(...add); - } else { - newOrdering.push(...add); - } - - setOrdering(newOrdering); - setNewItemAdded(true); - } else { - setNewItemAdded(false); - } - }, [items, open, shouldHandleEffects]); // (2) sort items on open if shouldSort is set - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (shouldSort && open && !newItemAdded) { - setOrdering(createOrdering(sortItems(items))); - } - }, [open, shouldSort]); // (3) items were deleted - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (shouldHandleEffects && prevItems && items.length < prevItems.length) { - let keep = []; - ordering.forEach(o => { - if (getItem(items, o)) { - keep.push(o); - } - }); - setOrdering(keep); - } - }, [items, shouldHandleEffects]); // set css class when group is sticky to top - - useStickyIntersectionObserver(groupRef, 'div.bio-properties-panel-scroll-container', setSticky); - - const toggleOpen = () => setOpen(!open); - - const hasItems = !!items.length; - const propertiesPanelContext = { ...(0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useContext)(LayoutContext), - onShow - }; - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-group", - "data-group-id": 'group-' + id, - ref: groupRef, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-group-header', hasItems ? '' : 'empty', hasItems && open ? 'open' : '', sticky && open ? 'sticky' : ''), - onClick: hasItems ? toggleOpen : noop$2, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: label, - class: "bio-properties-panel-group-header-title", - children: label - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-group-header-buttons", - children: [add ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("button", { - title: "Create new list item", - class: "bio-properties-panel-group-header-button bio-properties-panel-add-entry", - onClick: add, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(CreateIcon, {}), !hasItems ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("span", { - class: "bio-properties-panel-add-entry-label", - children: "Create" - }) : null] - }) : null, hasItems ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - title: `List contains ${items.length} item${items.length != 1 ? 's' : ''}`, - class: "bio-properties-panel-list-badge", - children: items.length - }) : null, hasItems ? (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", { - title: "Toggle section", - class: "bio-properties-panel-group-header-button bio-properties-panel-arrow", - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ArrowIcon, { - class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right' - }) - }) : null] - })] - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: classnames__WEBPACK_IMPORTED_MODULE_1___default()('bio-properties-panel-list', open && hasItems ? 'open' : ''), - children: (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(LayoutContext.Provider, { - value: propertiesPanelContext, - children: ordering.map((o, index) => { - const item = getItem(items, o); - - if (!item) { - return; - } - - const { - id - } = item; // if item was added, open first or last item based on ordering - - const autoOpen = newItemAdded && (shouldSort ? index === 0 : index === ordering.length - 1); - return (0,_preact__WEBPACK_IMPORTED_MODULE_4__.createElement)(ListItem, { ...item, - autoOpen: autoOpen, - element: element, - index: index, - key: id - }); - }) - }) - })] - }); -} // helpers //////////////////// - -/** - * Sorts given items alphanumeric by label - */ - -function sortItems(items) { - return (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.sortBy)(items, i => i.label.toLowerCase()); -} - -function getItem(items, id) { - return (0,min_dash__WEBPACK_IMPORTED_MODULE_5__.find)(items, i => i.id === id); -} - -function createOrdering(items) { - return items.map(i => i.id); -} - -function Description(props) { - const { - element, - forId, - value - } = props; - const contextDescription = useDescriptionContext(forId, element); - const description = value || contextDescription; - - if (description) { - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-description", - children: description - }); - } -} - -function Checkbox(props) { - const { - id, - label, - onChange, - disabled, - value = false - } = props; - const [localValue, setLocalValue] = (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useState)(value); - - const handleChangeCallback = ({ - target - }) => { - onChange(target.checked); - }; - - const handleChange = e => { - handleChangeCallback(e); - setLocalValue(e.target.value); - }; - - (0,_preact_hooks__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => { - if (value === localValue) { - return; - } - - setLocalValue(value); - }, [value]); - const ref = useShowEntryEvent(id); - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-checkbox", - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("input", { - ref: ref, - id: prefixId$7(id), - name: id, - type: "checkbox", - class: "bio-properties-panel-input", - onChange: handleChange, - checked: localValue, - disabled: disabled - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("label", { - for: prefixId$7(id), - class: "bio-properties-panel-label", - children: label - })] - }); -} -/** - * @param {Object} props - * @param {Object} props.element - * @param {String} props.id - * @param {String} props.description - * @param {String} props.label - * @param {Function} props.getValue - * @param {Function} props.setValue - * @param {boolean} [props.disabled] - */ - - -function CheckboxEntry(props) { - const { - element, - id, - description, - label, - getValue, - setValue, - disabled - } = props; - const value = getValue(element); - const error = useError(id); - return (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", { - class: "bio-properties-panel-entry bio-properties-panel-checkbox-entry", - "data-entry-id": id, - children: [(0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Checkbox, { - disabled: disabled, - id: id, - label: label, - onChange: setValue, - value: value - }, element), error && (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", { - class: "bio-properties-panel-error", - children: error - }), (0,_preact_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(Description, { - forId: id, - element: element, - value: description - })] - }); -} -function isEdited$7(node) { - return node && !!node.checked; -} // helpers ///////////////// - -function prefixId$7(id) { - return `bio-properties-panel-${id}`; -} - -/** -The data structure for documents. @nonabstract -*/class Text{/** - @internal - */constructor(){}/** - Get the line description around the given position. - */lineAt(pos){if(pos<0||pos>this.length)throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);return this.lineInner(pos,false,1,0);}/** - Get the description for the given (1-based) line number. - */line(n){if(n<1||n>this.lines)throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);return this.lineInner(n,true,1,0);}/** - Replace a range of the text with the given content. - */replace(from,to,text){let parts=[];this.decompose(0,from,parts,2/* To */);if(text.length)text.decompose(0,text.length,parts,1/* From */|2/* To */);this.decompose(to,this.length,parts,1/* From */);return TextNode.from(parts,this.length-(to-from)+text.length);}/** - Append another document to this one. - */append(other){return this.replace(this.length,this.length,other);}/** - Retrieve the text between the given points. - */slice(from,to=this.length){let parts=[];this.decompose(from,to,parts,0);return TextNode.from(parts,to-from);}/** - Test whether this text is equal to another instance. - */eq(other){if(other==this)return true;if(other.length!=this.length||other.lines!=this.lines)return false;let start=this.scanIdentical(other,1),end=this.length-this.scanIdentical(other,-1);let a=new RawTextCursor(this),b=new RawTextCursor(other);for(let skip=start,pos=start;;){a.next(skip);b.next(skip);skip=0;if(a.lineBreak!=b.lineBreak||a.done!=b.done||a.value!=b.value)return false;pos+=a.value.length;if(a.done||pos>=end)return true;}}/** - Iterate over the text. When `dir` is `-1`, iteration happens - from end to start. This will return lines and the breaks between - them as separate strings. - */iter(dir=1){return new RawTextCursor(this,dir);}/** - Iterate over a range of the text. When `from` > `to`, the - iterator will run in reverse. - */iterRange(from,to=this.length){return new PartialTextCursor(this,from,to);}/** - Return a cursor that iterates over the given range of lines, - _without_ returning the line breaks between, and yielding empty - strings for empty lines. - - When `from` and `to` are given, they should be 1-based line numbers. - */iterLines(from,to){let inner;if(from==null){inner=this.iter();}else {if(to==null)to=this.lines+1;let start=this.line(from).from;inner=this.iterRange(start,Math.max(start,to==this.lines+1?this.length:to<=1?0:this.line(to-1).to));}return new LineCursor(inner);}/** - @internal - */toString(){return this.sliceString(0);}/** - Convert the document to an array of lines (which can be - deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)). - */toJSON(){let lines=[];this.flatten(lines);return lines;}/** - Create a `Text` instance for the given array of lines. - */static of(text){if(text.length==0)throw new RangeError("A document must have at least one line");if(text.length==1&&!text[0])return Text.empty;return text.length<=32/* Branch */?new TextLeaf(text):TextNode.from(TextLeaf.split(text,[]));}}// Leaves store an array of line strings. There are always line breaks -// between these strings. Leaves are limited in size and have to be -// contained in TextNode instances for bigger documents. -class TextLeaf extends Text{constructor(text,length=textLength(text)){super();this.text=text;this.length=length;}get lines(){return this.text.length;}get children(){return null;}lineInner(target,isLine,line,offset){for(let i=0;;i++){let string=this.text[i],end=offset+string.length;if((isLine?line:end)>=target)return new Line(offset,end,line,string);offset=end+1;line++;}}decompose(from,to,target,open){let text=from<=0&&to>=this.length?this:new TextLeaf(sliceText(this.text,from,to),Math.min(to,this.length)-Math.max(0,from));if(open&1/* From */){let prev=target.pop();let joined=appendText(text.text,prev.text.slice(),0,text.length);if(joined.length<=32/* Branch */){target.push(new TextLeaf(joined,prev.length+text.length));}else {let mid=joined.length>>1;target.push(new TextLeaf(joined.slice(0,mid)),new TextLeaf(joined.slice(mid)));}}else {target.push(text);}}replace(from,to,text){if(!(text instanceof TextLeaf))return super.replace(from,to,text);let lines=appendText(this.text,appendText(text.text,sliceText(this.text,0,from)),to);let newLen=this.length+text.length-(to-from);if(lines.length<=32/* Branch */)return new TextLeaf(lines,newLen);return TextNode.from(TextLeaf.split(lines,[]),newLen);}sliceString(from,to=this.length,lineSep="\n"){let result="";for(let pos=0,i=0;pos<=to&&ifrom&&i)result+=lineSep;if(frompos)result+=line.slice(Math.max(0,from-pos),to-pos);pos=end+1;}return result;}flatten(target){for(let line of this.text)target.push(line);}scanIdentical(){return 0;}static split(text,target){let part=[],len=-1;for(let line of text){part.push(line);len+=line.length+1;if(part.length==32/* Branch */){target.push(new TextLeaf(part,len));part=[];len=-1;}}if(len>-1)target.push(new TextLeaf(part,len));return target;}}// Nodes provide the tree structure of the `Text` type. They store a -// number of other nodes or leaves, taking care to balance themselves -// on changes. There are implied line breaks _between_ the children of -// a node (but not before the first or after the last child). -class TextNode extends Text{constructor(children,length){super();this.children=children;this.length=length;this.lines=0;for(let child of children)this.lines+=child.lines;}lineInner(target,isLine,line,offset){for(let i=0;;i++){let child=this.children[i],end=offset+child.length,endLine=line+child.lines-1;if((isLine?endLine:end)>=target)return child.lineInner(target,isLine,line,offset);offset=end+1;line=endLine+1;}}decompose(from,to,target,open){for(let i=0,pos=0;pos<=to&&i=pos){let childOpen=open&((pos<=from?1/* From */:0)|(end>=to?2/* To */:0));if(pos>=from&&end<=to&&!childOpen)target.push(child);else child.decompose(from-pos,to-pos,target,childOpen);}pos=end+1;}}replace(from,to,text){if(text.lines=pos&&to<=end){let updated=child.replace(from-pos,to-pos,text);let totalLines=this.lines-child.lines+updated.lines;if(updated.lines>5/* BranchShift */-1&&updated.lines>totalLines>>5/* BranchShift */+1){let copy=this.children.slice();copy[i]=updated;return new TextNode(copy,this.length-(to-from)+text.length);}return super.replace(pos,end,updated);}pos=end+1;}return super.replace(from,to,text);}sliceString(from,to=this.length,lineSep="\n"){let result="";for(let i=0,pos=0;ifrom&&i)result+=lineSep;if(frompos)result+=child.sliceString(from-pos,to-pos,lineSep);pos=end+1;}return result;}flatten(target){for(let child of this.children)child.flatten(target);}scanIdentical(other,dir){if(!(other instanceof TextNode))return 0;let length=0;let[iA,iB,eA,eB]=dir>0?[0,0,this.children.length,other.children.length]:[this.children.length-1,other.children.length-1,-1,-1];for(;;iA+=dir,iB+=dir){if(iA==eA||iB==eB)return length;let chA=this.children[iA],chB=other.children[iB];if(chA!=chB)return length+chA.scanIdentical(chB,dir);length+=chA.length+1;}}static from(children,length=children.reduce((l,ch)=>l+ch.length+1,-1)){let lines=0;for(let ch of children)lines+=ch.lines;if(lines<32/* Branch */){let flat=[];for(let ch of children)ch.flatten(flat);return new TextLeaf(flat,length);}let chunk=Math.max(32/* Branch */,lines>>5/* BranchShift */),maxChunk=chunk<<1,minChunk=chunk>>1;let chunked=[],currentLines=0,currentLen=-1,currentChunk=[];function add(child){let last;if(child.lines>maxChunk&&child instanceof TextNode){for(let node of child.children)add(node);}else if(child.lines>minChunk&&(currentLines>minChunk||!currentLines)){flush();chunked.push(child);}else if(child instanceof TextLeaf&¤tLines&&(last=currentChunk[currentChunk.length-1])instanceof TextLeaf&&child.lines+last.lines<=32/* Branch */){currentLines+=child.lines;currentLen+=child.length+1;currentChunk[currentChunk.length-1]=new TextLeaf(last.text.concat(child.text),last.length+1+child.length);}else {if(currentLines+child.lines>chunk)flush();currentLines+=child.lines;currentLen+=child.length+1;currentChunk.push(child);}}function flush(){if(currentLines==0)return;chunked.push(currentChunk.length==1?currentChunk[0]:TextNode.from(currentChunk,currentLen));currentLen=-1;currentLines=currentChunk.length=0;}for(let child of children)add(child);flush();return chunked.length==1?chunked[0]:new TextNode(chunked,length);}}Text.empty=/*@__PURE__*/new TextLeaf([""],0);function textLength(text){let length=-1;for(let line of text)length+=line.length+1;return length;}function appendText(text,target,from=0,to=1e9){for(let pos=0,i=0,first=true;i=from){if(end>to)line=line.slice(0,to-pos);if(pos0?1:(text instanceof TextLeaf?text.text.length:text.children.length)<<1];}nextInner(skip,dir){this.done=this.lineBreak=false;for(;;){let last=this.nodes.length-1;let top=this.nodes[last],offsetValue=this.offsets[last],offset=offsetValue>>1;let size=top instanceof TextLeaf?top.text.length:top.children.length;if(offset==(dir>0?size:0)){if(last==0){this.done=true;this.value="";return this;}if(dir>0)this.offsets[last-1]++;this.nodes.pop();this.offsets.pop();}else if((offsetValue&1)==(dir>0?0:1)){this.offsets[last]+=dir;if(skip==0){this.lineBreak=true;this.value="\n";return this;}skip--;}else if(top instanceof TextLeaf){// Move to the next string -let next=top.text[offset+(dir<0?-1:0)];this.offsets[last]+=dir;if(next.length>Math.max(0,skip)){this.value=skip==0?next:dir>0?next.slice(skip):next.slice(0,next.length-skip);return this;}skip-=next.length;}else {let next=top.children[offset+(dir<0?-1:0)];if(skip>next.length){skip-=next.length;this.offsets[last]+=dir;}else {if(dir<0)this.offsets[last]--;this.nodes.push(next);this.offsets.push(dir>0?1:(next instanceof TextLeaf?next.text.length:next.children.length)<<1);}}}}next(skip=0){if(skip<0){this.nextInner(-skip,-this.dir);skip=this.value.length;}return this.nextInner(skip,this.dir);}}class PartialTextCursor{constructor(text,start,end){this.value="";this.done=false;this.cursor=new RawTextCursor(text,start>end?-1:1);this.pos=start>end?text.length:0;this.from=Math.min(start,end);this.to=Math.max(start,end);}nextInner(skip,dir){if(dir<0?this.pos<=this.from:this.pos>=this.to){this.value="";this.done=true;return this;}skip+=Math.max(0,dir<0?this.pos-this.to:this.from-this.pos);let limit=dir<0?this.pos-this.from:this.to-this.pos;if(skip>limit)skip=limit;limit-=skip;let{value}=this.cursor.next(skip);this.pos+=(value.length+skip)*dir;this.value=value.length<=limit?value:dir<0?value.slice(value.length-limit):value.slice(0,limit);this.done=!this.value;return this;}next(skip=0){if(skip<0)skip=Math.max(skip,this.from-this.pos);else if(skip>0)skip=Math.min(skip,this.to-this.pos);return this.nextInner(skip,this.cursor.dir);}get lineBreak(){return this.cursor.lineBreak&&this.value!="";}}class LineCursor{constructor(inner){this.inner=inner;this.afterBreak=true;this.value="";this.done=false;}next(skip=0){let{done,lineBreak,value}=this.inner.next(skip);if(done){this.done=true;this.value="";}else if(lineBreak){if(this.afterBreak){this.value="";}else {this.afterBreak=true;this.next();}}else {this.value=value;this.afterBreak=false;}return this;}get lineBreak(){return false;}}if(typeof Symbol!="undefined"){Text.prototype[Symbol.iterator]=function(){return this.iter();};RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this;};}/** -This type describes a line in the document. It is created -on-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt). -*/class Line{/** - @internal - */constructor(/** - The position of the start of the line. - */from,/** - The position at the end of the line (_before_ the line break, - or at the end of document for the last line). - */to,/** - This line's line number (1-based). - */number,/** - The line's content. - */text){this.from=from;this.to=to;this.number=number;this.text=text;}/** - The length of the line (not including any line break after it). - */get length(){return this.to-this.from;}}// Compressed representation of the Grapheme_Cluster_Break=Extend -// information from -// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt. -// Each pair of elements represents a range, as an offet from the -// previous range and a length. Numbers are in base-36, with the empty -// string being a shorthand for 1. -let extend=/*@__PURE__*/"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(s=>s?parseInt(s,36):1);// Convert offsets into absolute values -for(let i=1;icode)return extend[i-1]<=code;return false;}function isRegionalIndicator(code){return code>=0x1F1E6&&code<=0x1F1FF;}const ZWJ=0x200d;/** -Returns a next grapheme cluster break _after_ (not equal to) -`pos`, if `forward` is true, or before otherwise. Returns `pos` -itself if no further cluster break is available in the string. -Moves across surrogate pairs, extending characters (when -`includeExtending` is true), characters joined with zero-width -joiners, and flag emoji. -*/function findClusterBreak(str,pos,forward=true,includeExtending=true){return (forward?nextClusterBreak:prevClusterBreak)(str,pos,includeExtending);}function nextClusterBreak(str,pos,includeExtending){if(pos==str.length)return pos;// If pos is in the middle of a surrogate pair, move to its start -if(pos&&surrogateLow(str.charCodeAt(pos))&&surrogateHigh(str.charCodeAt(pos-1)))pos--;let prev=codePointAt(str,pos);pos+=codePointSize(prev);while(pos=0&&isRegionalIndicator(codePointAt(str,i))){countBefore++;i-=2;}if(countBefore%2==0)break;else pos+=2;}else {break;}}return pos;}function prevClusterBreak(str,pos,includeExtending){while(pos>0){let found=nextClusterBreak(str,pos-2,includeExtending);if(found=0xDC00&&ch<0xE000;}function surrogateHigh(ch){return ch>=0xD800&&ch<0xDC00;}/** -Find the code point at the given position in a string (like the -[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) -string method). -*/function codePointAt(str,pos){let code0=str.charCodeAt(pos);if(!surrogateHigh(code0)||pos+1==str.length)return code0;let code1=str.charCodeAt(pos+1);if(!surrogateLow(code1))return code0;return (code0-0xd800<<10)+(code1-0xdc00)+0x10000;}/** -Given a Unicode codepoint, return the JavaScript string that -respresents it (like -[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)). -*/function fromCodePoint(code){if(code<=0xffff)return String.fromCharCode(code);code-=0x10000;return String.fromCharCode((code>>10)+0xd800,(code&1023)+0xdc00);}/** -The amount of positions a character takes up a JavaScript string. -*/function codePointSize(code){return code<0x10000?1:2;}const DefaultSplit=/\r\n?|\n/;/** -Distinguishes different ways in which positions can be mapped. -*/var MapMode=/*@__PURE__*/function(MapMode){/** - Map a position to a valid new position, even when its context - was deleted. - */MapMode[MapMode["Simple"]=0]="Simple";/** - Return null if deletion happens across the position. - */MapMode[MapMode["TrackDel"]=1]="TrackDel";/** - Return null if the character _before_ the position is deleted. - */MapMode[MapMode["TrackBefore"]=2]="TrackBefore";/** - Return null if the character _after_ the position is deleted. - */MapMode[MapMode["TrackAfter"]=3]="TrackAfter";return MapMode;}(MapMode||(MapMode={}));/** -A change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) -that doesn't store the inserted text. As such, it can't be -applied, but is cheaper to store and manipulate. -*/class ChangeDesc{// Sections are encoded as pairs of integers. The first is the -// length in the current document, and the second is -1 for -// unaffected sections, and the length of the replacement content -// otherwise. So an insertion would be (0, n>0), a deletion (n>0, -// 0), and a replacement two positive numbers. -/** - @internal - */constructor(/** - @internal - */sections){this.sections=sections;}/** - The length of the document before the change. - */get length(){let result=0;for(let i=0;ipos)return posB+(pos-posA);posB+=len;}else {if(mode!=MapMode.Simple&&endA>=pos&&(mode==MapMode.TrackDel&&posApos||mode==MapMode.TrackBefore&&posApos))return null;if(endA>pos||endA==pos&&assoc<0&&!len)return pos==posA||assoc<0?posB:posB+ins;posB+=ins;}posA=endA;}if(pos>posA)throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);return posB;}/** - Check whether these changes touch a given range. When one of the - changes entirely covers the range, the string `"cover"` is - returned. - */touchesRange(from,to=from){for(let i=0,pos=0;i=0&&pos<=to&&end>=from)return posto?"cover":true;pos=end;}return false;}/** - @internal - */toString(){let result="";for(let i=0;i=0?":"+ins:"");}return result;}/** - Serialize this change desc to a JSON-representable value. - */toJSON(){return this.sections;}/** - Create a change desc from its JSON representation (as produced - by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON). - */static fromJSON(json){if(!Array.isArray(json)||json.length%2||json.some(a=>typeof a!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(json);}/** - @internal - */static create(sections){return new ChangeDesc(sections);}}/** -A change set represents a group of modifications to a document. It -stores the document length, and can only be applied to documents -with exactly that length. -*/class ChangeSet extends ChangeDesc{constructor(sections,/** - @internal - */inserted){super(sections);this.inserted=inserted;}/** - Apply the changes to a document, returning the modified - document. - */apply(doc){if(this.length!=doc.length)throw new RangeError("Applying change set to a document with the wrong length");iterChanges(this,(fromA,toA,fromB,_toB,text)=>doc=doc.replace(fromB,fromB+(toA-fromA),text),false);return doc;}mapDesc(other,before=false){return mapSet(this,other,before,true);}/** - Given the document as it existed _before_ the changes, return a - change set that represents the inverse of this set, which could - be used to go from the document created by the changes back to - the document as it existed before the changes. - */invert(doc){let sections=this.sections.slice(),inserted=[];for(let i=0,pos=0;i=0){sections[i]=ins;sections[i+1]=len;let index=i>>1;while(inserted.length0)addInsert(resultInserted,resultSections,iter.text);iter.forward(len);pos+=len;}let end=ranges[i++];while(pos>1].toJSON()));}return parts;}/** - Create a change set for the given changes, for a document of the - given length, using `lineSep` as line separator. - */static of(changes,length,lineSep){let sections=[],inserted=[],pos=0;let total=null;function flush(force=false){if(!force&&!sections.length)return;if(posto||from<0||to>length)throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);let insText=!insert?Text.empty:typeof insert=="string"?Text.of(insert.split(lineSep||DefaultSplit)):insert;let insLen=insText.length;if(from==to&&insLen==0)return;if(frompos)addSection(sections,from-pos,-1);addSection(sections,to-from,insLen);addInsert(inserted,sections,insText);pos=to;}}process(changes);flush(!total);return total;}/** - Create an empty changeset of the given length. - */static empty(length){return new ChangeSet(length?[length,-1]:[],[]);}/** - Create a changeset from its JSON representation (as produced by - [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON). - */static fromJSON(json){if(!Array.isArray(json))throw new RangeError("Invalid JSON representation of ChangeSet");let sections=[],inserted=[];for(let i=0;ii&&typeof e!="string")){throw new RangeError("Invalid JSON representation of ChangeSet");}else if(part.length==1){sections.push(part[0],0);}else {while(inserted.length=0&&ins<=0&&ins==sections[last+1])sections[last]+=len;else if(len==0&§ions[last]==0)sections[last+1]+=ins;else if(forceJoin){sections[last]+=len;sections[last+1]+=ins;}else sections.push(len,ins);}function addInsert(values,sections,value){if(value.length==0)return;let index=sections.length-2>>1;if(index>1]);if(individual||i==desc.sections.length||desc.sections[i+1]<0)break;len=desc.sections[i++];ins=desc.sections[i++];}f(posA,endA,posB,endB,text);posA=endA;posB=endB;}}}function mapSet(setA,setB,before,mkSet=false){let sections=[],insert=mkSet?[]:null;let a=new SectionIter(setA),b=new SectionIter(setB);for(let posA=0,posB=0;;){if(a.ins==-1){posA+=a.len;a.next();}else if(b.ins==-1&&posB=0&&(a.done||posBposB&&!a.done&&posA+a.len=0){let len=0,end=posA+a.len;for(;;){if(b.ins>=0&&posB>posA&&posB+b.lenlen||b.ins>=0&&b.len>len)&&(open||sections.length>sectionLen);a.forward2(len);b.forward(len);}}}class SectionIter{constructor(set){this.set=set;this.i=0;this.next();}next(){let{sections}=this.set;if(this.i>1;return index>=inserted.length?Text.empty:inserted[index];}textBit(len){let{inserted}=this.set,index=this.i-2>>1;return index>=inserted.length&&!len?Text.empty:inserted[index].slice(this.off,len==null?undefined:this.off+len);}forward(len){if(len==this.len)this.next();else {this.len-=len;this.off+=len;}}forward2(len){if(this.ins==-1)this.forward(len);else if(len==this.ins)this.next();else {this.ins-=len;this.off+=len;}}}/** -A single selection range. When -[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections) -is enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold -multiple ranges. By default, selections hold exactly one range. -*/class SelectionRange{constructor(/** - The lower boundary of the range. - */from,/** - The upper boundary of the range. - */to,flags){this.from=from;this.to=to;this.flags=flags;}/** - The anchor of the range—the side that doesn't move when you - extend it. - */get anchor(){return this.flags&16/* Inverted */?this.to:this.from;}/** - The head of the range, which is moved when the range is - [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend). - */get head(){return this.flags&16/* Inverted */?this.from:this.to;}/** - True when `anchor` and `head` are at the same position. - */get empty(){return this.from==this.to;}/** - If this is a cursor that is explicitly associated with the - character on one of its sides, this returns the side. -1 means - the character before its position, 1 the character after, and 0 - means no association. - */get assoc(){return this.flags&4/* AssocBefore */?-1:this.flags&8/* AssocAfter */?1:0;}/** - The bidirectional text level associated with this cursor, if - any. - */get bidiLevel(){let level=this.flags&3/* BidiLevelMask */;return level==3?null:level;}/** - The goal column (stored vertical offset) associated with a - cursor. This is used to preserve the vertical position when - [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across - lines of different length. - */get goalColumn(){let value=this.flags>>5/* GoalColumnOffset */;return value==33554431/* NoGoalColumn */?undefined:value;}/** - Map this range through a change, producing a valid range in the - updated document. - */map(change,assoc=-1){let from,to;if(this.empty){from=to=change.mapPos(this.from,assoc);}else {from=change.mapPos(this.from,1);to=change.mapPos(this.to,-1);}return from==this.from&&to==this.to?this:new SelectionRange(from,to,this.flags);}/** - Extend this range to cover at least `from` to `to`. - */extend(from,to=from){if(from<=this.anchor&&to>=this.anchor)return EditorSelection.range(from,to);let head=Math.abs(from-this.anchor)>Math.abs(to-this.anchor)?from:to;return EditorSelection.range(this.anchor,head);}/** - Compare this range to another range. - */eq(other){return this.anchor==other.anchor&&this.head==other.head;}/** - Return a JSON-serializable object representing the range. - */toJSON(){return {anchor:this.anchor,head:this.head};}/** - Convert a JSON representation of a range to a `SelectionRange` - instance. - */static fromJSON(json){if(!json||typeof json.anchor!="number"||typeof json.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(json.anchor,json.head);}/** - @internal - */static create(from,to,flags){return new SelectionRange(from,to,flags);}}/** -An editor selection holds one or more selection ranges. -*/class EditorSelection{constructor(/** - The ranges in the selection, sorted by position. Ranges cannot - overlap (but they may touch, if they aren't empty). - */ranges,/** - The index of the _main_ range in the selection (which is - usually the range that was added last). - */mainIndex){this.ranges=ranges;this.mainIndex=mainIndex;}/** - Map a selection through a change. Used to adjust the selection - position for changes. - */map(change,assoc=-1){if(change.empty)return this;return EditorSelection.create(this.ranges.map(r=>r.map(change,assoc)),this.mainIndex);}/** - Compare this selection to another selection. - */eq(other){if(this.ranges.length!=other.ranges.length||this.mainIndex!=other.mainIndex)return false;for(let i=0;ir.toJSON()),main:this.mainIndex};}/** - Create a selection from a JSON representation. - */static fromJSON(json){if(!json||!Array.isArray(json.ranges)||typeof json.main!="number"||json.main>=json.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(json.ranges.map(r=>SelectionRange.fromJSON(r)),json.main);}/** - Create a selection holding a single range. - */static single(anchor,head=anchor){return new EditorSelection([EditorSelection.range(anchor,head)],0);}/** - Sort and merge the given set of ranges, creating a valid - selection. - */static create(ranges,mainIndex=0){if(ranges.length==0)throw new RangeError("A selection needs at least one range");for(let pos=0,i=0;ianchor?4/* AssocBefore */:0));}/** - @internal - */static normalized(ranges,mainIndex=0){let main=ranges[mainIndex];ranges.sort((a,b)=>a.from-b.from);mainIndex=ranges.indexOf(main);for(let i=1;irange.head?EditorSelection.range(to,from):EditorSelection.range(from,to));}}return new EditorSelection(ranges,mainIndex);}}function checkSelection(selection,docLength){for(let range of selection.ranges)if(range.to>docLength)throw new RangeError("Selection points outside of document");}let nextID=0;/** -A facet is a labeled value that is associated with an editor -state. It takes inputs from any number of extensions, and combines -those into a single output value. - -Examples of uses of facets are the [tab -size](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor -attributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update -listeners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener). -*/class Facet{constructor(/** - @internal - */combine,/** - @internal - */compareInput,/** - @internal - */compare,isStatic,/** - @internal - */extensions){this.combine=combine;this.compareInput=compareInput;this.compare=compare;this.isStatic=isStatic;this.extensions=extensions;/** - @internal - */this.id=nextID++;this.default=combine([]);}/** - Define a new facet. - */static define(config={}){return new Facet(config.combine||(a=>a),config.compareInput||((a,b)=>a===b),config.compare||(!config.combine?sameArray$1:(a,b)=>a===b),!!config.static,config.enables);}/** - Returns an extension that adds the given value to this facet. - */of(value){return new FacetProvider([],this,0/* Static */,value);}/** - Create an extension that computes a value for the facet from a - state. You must take care to declare the parts of the state that - this value depends on, since your function is only called again - for a new state when one of those parts changed. - - In cases where your value depends only on a single field, you'll - want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead. - */compute(deps,get){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(deps,this,1/* Single */,get);}/** - Create an extension that computes zero or more values for this - facet from a state. - */computeN(deps,get){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(deps,this,2/* Multi */,get);}from(field,get){if(!get)get=x=>x;return this.compute([field],state=>get(state.field(field)));}}function sameArray$1(a,b){return a==b||a.length==b.length&&a.every((e,i)=>e===b[i]);}class FacetProvider{constructor(dependencies,facet,type,value){this.dependencies=dependencies;this.facet=facet;this.type=type;this.value=value;this.id=nextID++;}dynamicSlot(addresses){var _a;let getter=this.value;let compare=this.facet.compareInput;let id=this.id,idx=addresses[id]>>1,multi=this.type==2/* Multi */;let depDoc=false,depSel=false,depAddrs=[];for(let dep of this.dependencies){if(dep=="doc")depDoc=true;else if(dep=="selection")depSel=true;else if((((_a=addresses[dep.id])!==null&&_a!==void 0?_a:1)&1)==0)depAddrs.push(addresses[dep.id]);}return {create(state){state.values[idx]=getter(state);return 1/* Changed */;},update(state,tr){if(depDoc&&tr.docChanged||depSel&&(tr.docChanged||tr.selection)||ensureAll(state,depAddrs)){let newVal=getter(state);if(multi?!compareArray(newVal,state.values[idx],compare):!compare(newVal,state.values[idx])){state.values[idx]=newVal;return 1/* Changed */;}}return 0;},reconfigure:(state,oldState)=>{let newVal=getter(state);let oldAddr=oldState.config.address[id];if(oldAddr!=null){let oldVal=getAddr(oldState,oldAddr);if(this.dependencies.every(dep=>{return dep instanceof Facet?oldState.facet(dep)===state.facet(dep):dep instanceof StateField?oldState.field(dep,false)==state.field(dep,false):true;})||(multi?compareArray(newVal,oldVal,compare):compare(newVal,oldVal))){state.values[idx]=oldVal;return 0;}}state.values[idx]=newVal;return 1/* Changed */;}};}}function compareArray(a,b,compare){if(a.length!=b.length)return false;for(let i=0;iaddresses[p.id]);let providerTypes=providers.map(p=>p.type);let dynamic=providerAddrs.filter(p=>!(p&1));let idx=addresses[facet.id]>>1;function get(state){let values=[];for(let i=0;ia===b),config);if(config.provide)field.provides=config.provide(field);return field;}create(state){let init=state.facet(initField).find(i=>i.field==this);return ((init===null||init===void 0?void 0:init.create)||this.createF)(state);}/** - @internal - */slot(addresses){let idx=addresses[this.id]>>1;return {create:state=>{state.values[idx]=this.create(state);return 1/* Changed */;},update:(state,tr)=>{let oldVal=state.values[idx];let value=this.updateF(oldVal,tr);if(this.compareF(oldVal,value))return 0;state.values[idx]=value;return 1/* Changed */;},reconfigure:(state,oldState)=>{if(oldState.config.address[this.id]!=null){state.values[idx]=oldState.field(this);return 0;}state.values[idx]=this.create(state);return 1/* Changed */;}};}/** - Returns an extension that enables this field and overrides the - way it is initialized. Can be useful when you need to provide a - non-default starting value for the field. - */init(create){return [this,initField.of({field:this,create})];}/** - State field instances can be used as - [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a - given state. - */get extension(){return this;}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(value){return ext=>new PrecExtension(ext,value);}/** -By default extensions are registered in the order they are found -in the flattened form of nested array that was provided. -Individual extension values can be assigned a precedence to -override this. Extensions that do not have a precedence set get -the precedence of the nearest parent with a precedence, or -[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The -final ordering of extensions is determined by first sorting by -precedence and then by order within each precedence. -*/const Prec={/** - The highest precedence level, for extensions that should end up - near the start of the precedence ordering. - */highest:/*@__PURE__*/prec(Prec_.highest),/** - A higher-than-default precedence, for extensions that should - come before those with default precedence. - */high:/*@__PURE__*/prec(Prec_.high),/** - The default precedence, which is also used for extensions - without an explicit precedence. - */default:/*@__PURE__*/prec(Prec_.default),/** - A lower-than-default precedence. - */low:/*@__PURE__*/prec(Prec_.low),/** - The lowest precedence level. Meant for things that should end up - near the end of the extension order. - */lowest:/*@__PURE__*/prec(Prec_.lowest)};class PrecExtension{constructor(inner,prec){this.inner=inner;this.prec=prec;}}/** -Extension compartments can be used to make a configuration -dynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your -configuration in a compartment, you can later -[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a -transaction. -*/class Compartment{/** - Create an instance of this compartment to add to your [state - configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions). - */of(ext){return new CompartmentInstance(this,ext);}/** - Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that - reconfigures this compartment. - */reconfigure(content){return Compartment.reconfigure.of({compartment:this,extension:content});}/** - Get the current content of the compartment in the state, or - `undefined` if it isn't present. - */get(state){return state.config.compartments.get(this);}}class CompartmentInstance{constructor(compartment,inner){this.compartment=compartment;this.inner=inner;}}class Configuration{constructor(base,compartments,dynamicSlots,address,staticValues,facets){this.base=base;this.compartments=compartments;this.dynamicSlots=dynamicSlots;this.address=address;this.staticValues=staticValues;this.facets=facets;this.statusTemplate=[];while(this.statusTemplate.length>1];}static resolve(base,compartments,oldState){let fields=[];let facets=Object.create(null);let newCompartments=new Map();for(let ext of flatten(base,compartments,newCompartments)){if(ext instanceof StateField)fields.push(ext);else (facets[ext.facet.id]||(facets[ext.facet.id]=[])).push(ext);}let address=Object.create(null);let staticValues=[];let dynamicSlots=[];for(let field of fields){address[field.id]=dynamicSlots.length<<1;dynamicSlots.push(a=>field.slot(a));}let oldFacets=oldState===null||oldState===void 0?void 0:oldState.config.facets;for(let id in facets){let providers=facets[id],facet=providers[0].facet;let oldProviders=oldFacets&&oldFacets[id]||[];if(providers.every(p=>p.type==0/* Static */)){address[facet.id]=staticValues.length<<1|1;if(sameArray$1(oldProviders,providers)){staticValues.push(oldState.facet(facet));}else {let value=facet.combine(providers.map(p=>p.value));staticValues.push(oldState&&facet.compare(value,oldState.facet(facet))?oldState.facet(facet):value);}}else {for(let p of providers){if(p.type==0/* Static */){address[p.id]=staticValues.length<<1|1;staticValues.push(p.value);}else {address[p.id]=dynamicSlots.length<<1;dynamicSlots.push(a=>p.dynamicSlot(a));}}address[facet.id]=dynamicSlots.length<<1;dynamicSlots.push(a=>dynamicFacetSlot(a,facet,providers));}}let dynamic=dynamicSlots.map(f=>f(address));return new Configuration(base,newCompartments,dynamic,address,staticValues,facets);}}function flatten(extension,compartments,newCompartments){let result=[[],[],[],[],[]];let seen=new Map();function inner(ext,prec){let known=seen.get(ext);if(known!=null){if(known<=prec)return;let found=result[known].indexOf(ext);if(found>-1)result[known].splice(found,1);if(ext instanceof CompartmentInstance)newCompartments.delete(ext.compartment);}seen.set(ext,prec);if(Array.isArray(ext)){for(let e of ext)inner(e,prec);}else if(ext instanceof CompartmentInstance){if(newCompartments.has(ext.compartment))throw new RangeError(`Duplicate use of compartment in extensions`);let content=compartments.get(ext.compartment)||ext.inner;newCompartments.set(ext.compartment,content);inner(content,prec);}else if(ext instanceof PrecExtension){inner(ext.inner,ext.prec);}else if(ext instanceof StateField){result[prec].push(ext);if(ext.provides)inner(ext.provides,prec);}else if(ext instanceof FacetProvider){result[prec].push(ext);if(ext.facet.extensions)inner(ext.facet.extensions,prec);}else {let content=ext.extension;if(!content)throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);inner(content,prec);}}inner(extension,Prec_.default);return result.reduce((a,b)=>a.concat(b));}function ensureAddr(state,addr){if(addr&1)return 2/* Computed */;let idx=addr>>1;let status=state.status[idx];if(status==4/* Computing */)throw new Error("Cyclic dependency between fields and/or facets");if(status&2/* Computed */)return status;state.status[idx]=4/* Computing */;let changed=state.computeSlot(state,state.config.dynamicSlots[idx]);return state.status[idx]=2/* Computed */|changed;}function getAddr(state,addr){return addr&1?state.config.staticValues[addr>>1]:state.values[addr>>1];}const languageData=/*@__PURE__*/Facet.define();const allowMultipleSelections=/*@__PURE__*/Facet.define({combine:values=>values.some(v=>v),static:true});const lineSeparator=/*@__PURE__*/Facet.define({combine:values=>values.length?values[0]:undefined,static:true});const changeFilter=/*@__PURE__*/Facet.define();const transactionFilter=/*@__PURE__*/Facet.define();const transactionExtender=/*@__PURE__*/Facet.define();const readOnly=/*@__PURE__*/Facet.define({combine:values=>values.length?values[0]:false});/** -Annotations are tagged values that are used to add metadata to -transactions in an extensible way. They should be used to model -things that effect the entire transaction (such as its [time -stamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its -[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen -_alongside_ the other changes made by the transaction, [state -effects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate. -*/class Annotation{/** - @internal - */constructor(/** - The annotation type. - */type,/** - The value of this annotation. - */value){this.type=type;this.value=value;}/** - Define a new type of annotation. - */static define(){return new AnnotationType();}}/** -Marker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation). -*/class AnnotationType{/** - Create an instance of this annotation. - */of(value){return new Annotation(this,value);}}/** -Representation of a type of state effect. Defined with -[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define). -*/class StateEffectType{/** - @internal - */constructor(// The `any` types in these function types are there to work -// around TypeScript issue #37631, where the type guard on -// `StateEffect.is` mysteriously stops working when these properly -// have type `Value`. -/** - @internal - */map){this.map=map;}/** - Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this - type. - */of(value){return new StateEffect(this,value);}}/** -State effects can be used to represent additional effects -associated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They -are often useful to model changes to custom [state -fields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in -document or selection changes. -*/class StateEffect{/** - @internal - */constructor(/** - @internal - */type,/** - The value of this effect. - */value){this.type=type;this.value=value;}/** - Map this effect through a position mapping. Will return - `undefined` when that ends up deleting the effect. - */map(mapping){let mapped=this.type.map(this.value,mapping);return mapped===undefined?undefined:mapped==this.value?this:new StateEffect(this.type,mapped);}/** - Tells you whether this effect object is of a given - [type](https://codemirror.net/6/docs/ref/#state.StateEffectType). - */is(type){return this.type==type;}/** - Define a new effect type. The type parameter indicates the type - of values that his effect holds. - */static define(spec={}){return new StateEffectType(spec.map||(v=>v));}/** - Map an array of effects through a change set. - */static mapEffects(effects,mapping){if(!effects.length)return effects;let result=[];for(let effect of effects){let mapped=effect.map(mapping);if(mapped)result.push(mapped);}return result;}}/** -This effect can be used to reconfigure the root extensions of -the editor. Doing this will discard any extensions -[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset -the content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) -compartments. -*/StateEffect.reconfigure=/*@__PURE__*/StateEffect.define();/** -Append extensions to the top-level configuration of the editor. -*/StateEffect.appendConfig=/*@__PURE__*/StateEffect.define();/** -Changes to the editor state are grouped into transactions. -Typically, a user action creates a single transaction, which may -contain any number of document changes, may change the selection, -or have other effects. Create a transaction by calling -[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately -dispatch one by calling -[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch). -*/class Transaction{constructor(/** - The state from which the transaction starts. - */startState,/** - The document changes made by this transaction. - */changes,/** - The selection set by this transaction, or undefined if it - doesn't explicitly set a selection. - */selection,/** - The effects added to the transaction. - */effects,/** - @internal - */annotations,/** - Whether the selection should be scrolled into view after this - transaction is dispatched. - */scrollIntoView){this.startState=startState;this.changes=changes;this.selection=selection;this.effects=effects;this.annotations=annotations;this.scrollIntoView=scrollIntoView;/** - @internal - */this._doc=null;/** - @internal - */this._state=null;if(selection)checkSelection(selection,changes.newLength);if(!annotations.some(a=>a.type==Transaction.time))this.annotations=annotations.concat(Transaction.time.of(Date.now()));}/** - @internal - */static create(startState,changes,selection,effects,annotations,scrollIntoView){return new Transaction(startState,changes,selection,effects,annotations,scrollIntoView);}/** - The new document produced by the transaction. Contrary to - [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't - force the entire new state to be computed right away, so it is - recommended that [transaction - filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter - when they need to look at the new document. - */get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc));}/** - The new selection produced by the transaction. If - [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined, - this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's - current selection through the changes made by the transaction. - */get newSelection(){return this.selection||this.startState.selection.map(this.changes);}/** - The new state created by the transaction. Computed on demand - (but retained for subsequent access), so it is recommended not to - access it in [transaction - filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible. - */get state(){if(!this._state)this.startState.applyTransaction(this);return this._state;}/** - Get the value of the given annotation type, if any. - */annotation(type){for(let ann of this.annotations)if(ann.type==type)return ann.value;return undefined;}/** - Indicates whether the transaction changed the document. - */get docChanged(){return !this.changes.empty;}/** - Indicates whether this transaction reconfigures the state - (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or - with a top-level configuration - [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure). - */get reconfigured(){return this.startState.config!=this.state.config;}/** - Returns true if the transaction has a [user - event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to - or more specific than `event`. For example, if the transaction - has `"select.pointer"` as user event, `"select"` and - `"select.pointer"` will match it. - */isUserEvent(event){let e=this.annotation(Transaction.userEvent);return !!(e&&(e==event||e.length>event.length&&e.slice(0,event.length)==event&&e[event.length]=="."));}}/** -Annotation used to store transaction timestamps. Automatically -added to every transaction, holding `Date.now()`. -*/Transaction.time=/*@__PURE__*/Annotation.define();/** -Annotation used to associate a transaction with a user interface -event. Holds a string identifying the event, using a -dot-separated format to support attaching more specific -information. The events used by the core libraries are: - - - `"input"` when content is entered - - `"input.type"` for typed input - - `"input.type.compose"` for composition - - `"input.paste"` for pasted input - - `"input.drop"` when adding content with drag-and-drop - - `"input.complete"` when autocompleting - - `"delete"` when the user deletes content - - `"delete.selection"` when deleting the selection - - `"delete.forward"` when deleting forward from the selection - - `"delete.backward"` when deleting backward from the selection - - `"delete.cut"` when cutting to the clipboard - - `"move"` when content is moved - - `"move.drop"` when content is moved within the editor through drag-and-drop - - `"select"` when explicitly changing the selection - - `"select.pointer"` when selecting with a mouse or other pointing device - - `"undo"` and `"redo"` for history actions - -Use [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check -whether the annotation matches a given event. -*/Transaction.userEvent=/*@__PURE__*/Annotation.define();/** -Annotation indicating whether a transaction should be added to -the undo history or not. -*/Transaction.addToHistory=/*@__PURE__*/Annotation.define();/** -Annotation indicating (when present and true) that a transaction -represents a change made by some other actor, not the user. This -is used, for example, to tag other people's changes in -collaborative editing. -*/Transaction.remote=/*@__PURE__*/Annotation.define();function joinRanges(a,b){let result=[];for(let iA=0,iB=0;;){let from,to;if(iA=a[iA])){from=a[iA++];to=a[iA++];}else if(iB=0;i--){let filtered=filters[i](tr);if(filtered instanceof Transaction)tr=filtered;else if(Array.isArray(filtered)&&filtered.length==1&&filtered[0]instanceof Transaction)tr=filtered[0];else tr=resolveTransaction(state,asArray(filtered),false);}return tr;}function extendTransaction(tr){let state=tr.startState,extenders=state.facet(transactionExtender),spec=tr;for(let i=extenders.length-1;i>=0;i--){let extension=extenders[i](tr);if(extension&&Object.keys(extension).length)spec=mergeTransaction(tr,resolveTransactionInner(state,extension,tr.changes.newLength),true);}return spec==tr?tr:Transaction.create(state,tr.changes,tr.selection,spec.effects,spec.annotations,spec.scrollIntoView);}const none$1=[];function asArray(value){return value==null?none$1:Array.isArray(value)?value:[value];}/** -The categories produced by a [character -categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used -do things like selecting by word. -*/var CharCategory=/*@__PURE__*/function(CharCategory){/** - Word characters. - */CharCategory[CharCategory["Word"]=0]="Word";/** - Whitespace. - */CharCategory[CharCategory["Space"]=1]="Space";/** - Anything else. - */CharCategory[CharCategory["Other"]=2]="Other";return CharCategory;}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=/*@__PURE__*/new RegExp("[\\p{Alphabetic}\\p{Number}_]","u");}catch(_){}function hasWordChar(str){if(wordChar)return wordChar.test(str);for(let i=0;i"\x80"&&(ch.toUpperCase()!=ch.toLowerCase()||nonASCIISingleCaseWordChar.test(ch)))return true;}return false;}function makeCategorizer(wordChars){return char=>{if(!/\S/.test(char))return CharCategory.Space;if(hasWordChar(char))return CharCategory.Word;for(let i=0;i-1)return CharCategory.Word;return CharCategory.Other;};}/** -The editor state class is a persistent (immutable) data structure. -To update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a -[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state -instance, without modifying the original object. - -As such, _never_ mutate properties of a state directly. That'll -just break things. -*/class EditorState{constructor(/** - @internal - */config,/** - The current document. - */doc,/** - The current selection. - */selection,/** - @internal - */values,computeSlot,tr){this.config=config;this.doc=doc;this.selection=selection;this.values=values;this.status=config.statusTemplate.slice();this.computeSlot=computeSlot;// Fill in the computed state immediately, so that further queries -// for it made during the update return this state -if(tr)tr._state=this;for(let i=0;icompartments.set(key,val));conf=null;}compartments.set(effect.value.compartment,effect.value.extension);}else if(effect.is(StateEffect.reconfigure)){conf=null;base=effect.value;}else if(effect.is(StateEffect.appendConfig)){conf=null;base=asArray(base).concat(effect.value);}}let startValues;if(!conf){conf=Configuration.resolve(base,compartments,this);let intermediateState=new EditorState(conf,this.doc,this.selection,conf.dynamicSlots.map(()=>null),(state,slot)=>slot.reconfigure(state,this),null);startValues=intermediateState.values;}else {startValues=tr.startState.values.slice();}new EditorState(conf,tr.newDoc,tr.newSelection,startValues,(state,slot)=>slot.update(state,tr),tr);}/** - Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that - replaces every selection range with the given content. - */replaceSelection(text){if(typeof text=="string")text=this.toText(text);return this.changeByRange(range=>({changes:{from:range.from,to:range.to,insert:text},range:EditorSelection.cursor(range.from+text.length)}));}/** - Create a set of changes and a new selection by running the given - function for each range in the active selection. The function - can return an optional set of changes (in the coordinate space - of the start document), plus an updated range (in the coordinate - space of the document produced by the call's own changes). This - method will merge all the changes and ranges into a single - changeset and selection, and return it as a [transaction - spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to - [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update). - */changeByRange(f){let sel=this.selection;let result1=f(sel.ranges[0]);let changes=this.changes(result1.changes),ranges=[result1.range];let effects=asArray(result1.effects);for(let i=1;ifield.spec.fromJSON(value,state)));}return EditorState.create({doc:json.doc,selection:EditorSelection.fromJSON(json.selection),extensions:config.extensions?fieldInit.concat([config.extensions]):fieldInit});}/** - Create a new state. You'll usually only need this when - initializing an editor—updated states are created by applying - transactions. - */static create(config={}){let configuration=Configuration.resolve(config.extensions||[],new Map());let doc=config.doc instanceof Text?config.doc:Text.of((config.doc||"").split(configuration.staticFacet(EditorState.lineSeparator)||DefaultSplit));let selection=!config.selection?EditorSelection.single(0):config.selection instanceof EditorSelection?config.selection:EditorSelection.single(config.selection.anchor,config.selection.head);checkSelection(selection,doc.length);if(!configuration.staticFacet(allowMultipleSelections))selection=selection.asSingle();return new EditorState(configuration,doc,selection,configuration.dynamicSlots.map(()=>null),(state,slot)=>slot.create(state),null);}/** - The size (in columns) of a tab in the document, determined by - the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet. - */get tabSize(){return this.facet(EditorState.tabSize);}/** - Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator) - string for this state. - */get lineBreak(){return this.facet(EditorState.lineSeparator)||"\n";}/** - Returns true when the editor is - [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only. - */get readOnly(){return this.facet(readOnly);}/** - Look up a translation for the given phrase (via the - [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the - original string if no translation is found. - - If additional arguments are passed, they will be inserted in - place of markers like `$1` (for the first value) and `$2`, etc. - A single `$` is equivalent to `$1`, and `$$` will produce a - literal dollar sign. - */phrase(phrase,...insert){for(let map of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(map,phrase)){phrase=map[phrase];break;}if(insert.length)phrase=phrase.replace(/\$(\$|\d*)/g,(m,i)=>{if(i=="$")return "$";let n=+(i||1);return n>insert.length?m:insert[n-1];});return phrase;}/** - Find the values for a given language data field, provided by the - the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet. - */languageDataAt(name,pos,side=-1){let values=[];for(let provider of this.facet(languageData)){for(let result of provider(this,pos,side)){if(Object.prototype.hasOwnProperty.call(result,name))values.push(result[name]);}}return values;}/** - Return a function that can categorize strings (expected to - represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak)) - into one of: - - - Word (contains an alphanumeric character or a character - explicitly listed in the local language's `"wordChars"` - language data, which should be a string) - - Space (contains only whitespace) - - Other (anything else) - */charCategorizer(at){return makeCategorizer(this.languageDataAt("wordChars",at).join(""));}/** - Find the word at the given position, meaning the range - containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters - around it. If no word characters are adjacent to the position, - this returns null. - */wordAt(pos){let{text,from,length}=this.doc.lineAt(pos);let cat=this.charCategorizer(pos);let start=pos-from,end=pos-from;while(start>0){let prev=findClusterBreak(text,start,false);if(cat(text.slice(prev,start))!=CharCategory.Word)break;start=prev;}while(endvalues.length?values[0]:4});/** -The line separator to use. By default, any of `"\n"`, `"\r\n"` -and `"\r"` is treated as a separator when splitting lines, and -lines are joined with `"\n"`. - -When you configure a value here, only that precise separator -will be used, allowing you to round-trip documents through the -editor without normalizing line separators. -*/EditorState.lineSeparator=lineSeparator;/** -This facet controls the value of the -[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is -consulted by commands and extensions that implement editing -functionality to determine whether they should apply. It -defaults to false, but when its highest-precedence value is -`true`, such functionality disables itself. - -Not to be confused with -[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which -controls whether the editor's DOM is set to be editable (and -thus focusable). -*/EditorState.readOnly=readOnly;/** -Registers translation phrases. The -[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through -all objects registered with this facet to find translations for -its argument. -*/EditorState.phrases=/*@__PURE__*/Facet.define({compare(a,b){let kA=Object.keys(a),kB=Object.keys(b);return kA.length==kB.length&&kA.every(k=>a[k]==b[k]);}});/** -A facet used to register [language -data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers. -*/EditorState.languageData=languageData;/** -Facet used to register change filters, which are called for each -transaction (unless explicitly -[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress -part of the transaction's changes. - -Such a function can return `true` to indicate that it doesn't -want to do anything, `false` to completely stop the changes in -the transaction, or a set of ranges in which changes should be -suppressed. Such ranges are represented as an array of numbers, -with each pair of two numbers indicating the start and end of a -range. So for example `[10, 20, 100, 110]` suppresses changes -between 10 and 20, and between 100 and 110. -*/EditorState.changeFilter=changeFilter;/** -Facet used to register a hook that gets a chance to update or -replace transaction specs before they are applied. This will -only be applied for transactions that don't have -[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You -can either return a single transaction spec (possibly the input -transaction), or an array of specs (which will be combined in -the same way as the arguments to -[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)). - -When possible, it is recommended to avoid accessing -[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter, -since it will force creation of a state that will then be -discarded again, if the transaction is actually filtered. - -(This functionality should be used with care. Indiscriminately -modifying transaction is likely to break something or degrade -the user experience.) -*/EditorState.transactionFilter=transactionFilter;/** -This is a more limited form of -[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter), -which can only add -[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and -[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type -of filter runs even if the transaction has disabled regular -[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable -for effects that don't need to touch the changes or selection, -but do want to process every transaction. - -Extenders run _after_ filters, when both are present. -*/EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=/*@__PURE__*/StateEffect.define();/** -Utility function for combining behaviors to fill in a config -object from an array of provided configs. `defaults` should hold -default values for all optional fields in `Config`. - -The function will, by default, error -when a field gets two values that aren't `===`-equal, but you can -provide combine functions per field to do something else. -*/function combineConfig(configs,defaults,// Should hold only the optional properties of Config, but I haven't managed to express that -combine={}){let result={};for(let config of configs)for(let key of Object.keys(config)){let value=config[key],current=result[key];if(current===undefined)result[key]=value;else if(current===value||value===undefined);// No conflict -else if(Object.hasOwnProperty.call(combine,key))result[key]=combine[key](current,value);else throw new Error("Config merge conflict for field "+key);}for(let key in defaults)if(result[key]===undefined)result[key]=defaults[key];return result;}/** -Each range is associated with a value, which must inherit from -this class. -*/class RangeValue{/** - Compare this value with another value. Used when comparing - rangesets. The default implementation compares by identity. - Unless you are only creating a fixed number of unique instances - of your value type, it is a good idea to implement this - properly. - */eq(other){return this==other;}/** - Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value. - */range(from,to=from){return Range$2.create(from,to,this);}}RangeValue.prototype.startSide=RangeValue.prototype.endSide=0;RangeValue.prototype.point=false;RangeValue.prototype.mapMode=MapMode.TrackDel;/** -A range associates a value with a range of positions. -*/class Range$2{constructor(/** - The range's start position. - */from,/** - Its end position. - */to,/** - The value associated with this range. - */value){this.from=from;this.to=to;this.value=value;}/** - @internal - */static create(from,to,value){return new Range$2(from,to,value);}}function cmpRange(a,b){return a.from-b.from||a.value.startSide-b.value.startSide;}class Chunk{constructor(from,to,value,// Chunks are marked with the largest point that occurs -// in them (or -1 for no points), so that scans that are -// only interested in points (such as the -// heightmap-related logic) can skip range-only chunks. -maxPoint){this.from=from;this.to=to;this.value=value;this.maxPoint=maxPoint;}get length(){return this.to[this.to.length-1];}// Find the index of the given position and side. Use the ranges' -// `from` pos when `end == false`, `to` when `end == true`. -findIndex(pos,side,end,startAt=0){let arr=end?this.to:this.from;for(let lo=startAt,hi=arr.length;;){if(lo==hi)return lo;let mid=lo+hi>>1;let diff=arr[mid]-pos||(end?this.value[mid].endSide:this.value[mid].startSide)-side;if(mid==lo)return diff>=0?lo:hi;if(diff>=0)hi=mid;else lo=mid+1;}}between(offset,from,to,f){for(let i=this.findIndex(from,-1000000000/* Far */,true),e=this.findIndex(to,1000000000/* Far */,false,i);inewTo||newFrom==newTo&&val.startSide>0&&val.endSide<=0)continue;}if((newTo-newFrom||val.endSide-val.startSide)<0)continue;if(newPos<0)newPos=newFrom;if(val.point)maxPoint=Math.max(maxPoint,newTo-newFrom);value.push(val);from.push(newFrom-newPos);to.push(newTo-newPos);}return {mapped:value.length?new Chunk(from,to,value,maxPoint):null,pos:newPos};}}/** -A range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a -way that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and -[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data -structure. -*/class RangeSet{constructor(/** - @internal - */chunkPos,/** - @internal - */chunk,/** - @internal - */nextLayer,/** - @internal - */maxPoint){this.chunkPos=chunkPos;this.chunk=chunk;this.nextLayer=nextLayer;this.maxPoint=maxPoint;}/** - @internal - */static create(chunkPos,chunk,nextLayer,maxPoint){return new RangeSet(chunkPos,chunk,nextLayer,maxPoint);}/** - @internal - */get length(){let last=this.chunk.length-1;return last<0?0:Math.max(this.chunkEnd(last),this.nextLayer.length);}/** - The number of ranges in the set. - */get size(){if(this.isEmpty)return 0;let size=this.nextLayer.size;for(let chunk of this.chunk)size+=chunk.value.length;return size;}/** - @internal - */chunkEnd(index){return this.chunkPos[index]+this.chunk[index].length;}/** - Update the range set, optionally adding new ranges or filtering - out existing ones. - - (Note: The type parameter is just there as a kludge to work - around TypeScript variance issues that prevented `RangeSet` - from being a subtype of `RangeSet` when `X` is a subtype of - `Y`.) - */update(updateSpec){let{add=[],sort=false,filterFrom=0,filterTo=this.length}=updateSpec;let filter=updateSpec.filter;if(add.length==0&&!filter)return this;if(sort)add=add.slice().sort(cmpRange);if(this.isEmpty)return add.length?RangeSet.of(add):this;let cur=new LayerCursor(this,null,-1).goto(0),i=0,spill=[];let builder=new RangeSetBuilder();while(cur.value||i=0){let range=add[i++];if(!builder.addInner(range.from,range.to,range.value))spill.push(range);}else if(cur.rangeIndex==1&&cur.chunkIndexthis.chunkEnd(cur.chunkIndex)||filterTocur.to||filterTo=start&&from<=start+chunk.length&&chunk.between(start,from-start,to-start,f)===false)return;}this.nextLayer.between(from,to,f);}/** - Iterate over the ranges in this set, in order, including all - ranges that end at or after `from`. - */iter(from=0){return HeapCursor.from([this]).goto(from);}/** - @internal - */get isEmpty(){return this.nextLayer==this;}/** - Iterate over the ranges in a collection of sets, in order, - starting from `from`. - */static iter(sets,from=0){return HeapCursor.from(sets).goto(from);}/** - Iterate over two groups of sets, calling methods on `comparator` - to notify it of possible differences. - */static compare(oldSets,newSets,/** - This indicates how the underlying data changed between these - ranges, and is needed to synchronize the iteration. `from` and - `to` are coordinates in the _new_ space, after these changes. - */textDiff,comparator,/** - Can be used to ignore all non-point ranges, and points below - the given size. When -1, all ranges are compared. - */minPointSize=-1){let a=oldSets.filter(set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize);let b=newSets.filter(set=>set.maxPoint>0||!set.isEmpty&&set.maxPoint>=minPointSize);let sharedChunks=findSharedChunks(a,b,textDiff);let sideA=new SpanCursor(a,sharedChunks,minPointSize);let sideB=new SpanCursor(b,sharedChunks,minPointSize);textDiff.iterGaps((fromA,fromB,length)=>compare(sideA,fromA,sideB,fromB,length,comparator));if(textDiff.empty&&textDiff.length==0)compare(sideA,0,sideB,0,0,comparator);}/** - Compare the contents of two groups of range sets, returning true - if they are equivalent in the given range. - */static eq(oldSets,newSets,from=0,to){if(to==null)to=1000000000/* Far */;let a=oldSets.filter(set=>!set.isEmpty&&newSets.indexOf(set)<0);let b=newSets.filter(set=>!set.isEmpty&&oldSets.indexOf(set)<0);if(a.length!=b.length)return false;if(!a.length)return true;let sharedChunks=findSharedChunks(a,b);let sideA=new SpanCursor(a,sharedChunks,0).goto(from),sideB=new SpanCursor(b,sharedChunks,0).goto(from);for(;;){if(sideA.to!=sideB.to||!sameValues(sideA.active,sideB.active)||sideA.point&&(!sideB.point||!sideA.point.eq(sideB.point)))return false;if(sideA.to>to)return true;sideA.next();sideB.next();}}/** - Iterate over a group of range sets at the same time, notifying - the iterator about the ranges covering every given piece of - content. Returns the open count (see - [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end - of the iteration. - */static spans(sets,from,to,iterator,/** - When given and greater than -1, only points of at least this - size are taken into account. - */minPointSize=-1){let cursor=new SpanCursor(sets,null,minPointSize).goto(from),pos=from;let open=cursor.openStart;for(;;){let curTo=Math.min(cursor.to,to);if(cursor.point){iterator.point(pos,curTo,cursor.point,cursor.activeForPoint(cursor.to),open,cursor.pointRank);open=cursor.openEnd(curTo)+(cursor.to>curTo?1:0);}else if(curTo>pos){iterator.span(pos,curTo,cursor.active,open);open=cursor.openEnd(curTo);}if(cursor.to>to)break;pos=cursor.to;cursor.next();}return open;}/** - Create a range set for the given range or array of ranges. By - default, this expects the ranges to be _sorted_ (by start - position and, if two start at the same position, - `value.startSide`). You can pass `true` as second argument to - cause the method to sort them. - */static of(ranges,sort=false){let build=new RangeSetBuilder();for(let range of ranges instanceof Range$2?[ranges]:sort?lazySort(ranges):ranges)build.add(range.from,range.to,range.value);return build.finish();}}/** -The empty set of ranges. -*/RangeSet.empty=/*@__PURE__*/new RangeSet([],[],null,-1);function lazySort(ranges){if(ranges.length>1)for(let prev=ranges[0],i=1;i0)return ranges.slice().sort(cmpRange);prev=cur;}return ranges;}RangeSet.empty.nextLayer=RangeSet.empty;/** -A range set builder is a data structure that helps build up a -[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating -an array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects. -*/class RangeSetBuilder{/** - Create an empty builder. - */constructor(){this.chunks=[];this.chunkPos=[];this.chunkStart=-1;this.last=null;this.lastFrom=-1000000000/* Far */;this.lastTo=-1000000000/* Far */;this.from=[];this.to=[];this.value=[];this.maxPoint=-1;this.setMaxPoint=-1;this.nextLayer=null;}finishChunk(newArrays){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint));this.chunkPos.push(this.chunkStart);this.chunkStart=-1;this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint);this.maxPoint=-1;if(newArrays){this.from=[];this.to=[];this.value=[];}}/** - Add a range. Ranges should be added in sorted (by `from` and - `value.startSide`) order. - */add(from,to,value){if(!this.addInner(from,to,value))(this.nextLayer||(this.nextLayer=new RangeSetBuilder())).add(from,to,value);}/** - @internal - */addInner(from,to,value){let diff=from-this.lastTo||value.startSide-this.last.endSide;if(diff<=0&&(from-this.lastFrom||value.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");if(diff<0)return false;if(this.from.length==250/* ChunkSize */)this.finishChunk(true);if(this.chunkStart<0)this.chunkStart=from;this.from.push(from-this.chunkStart);this.to.push(to-this.chunkStart);this.last=value;this.lastFrom=from;this.lastTo=to;this.value.push(value);if(value.point)this.maxPoint=Math.max(this.maxPoint,to-from);return true;}/** - @internal - */addChunk(from,chunk){if((from-this.lastTo||chunk.value[0].startSide-this.last.endSide)<0)return false;if(this.from.length)this.finishChunk(true);this.setMaxPoint=Math.max(this.setMaxPoint,chunk.maxPoint);this.chunks.push(chunk);this.chunkPos.push(from);let last=chunk.value.length-1;this.last=chunk.value[last];this.lastFrom=chunk.from[last]+from;this.lastTo=chunk.to[last]+from;return true;}/** - Finish the range set. Returns the new set. The builder can't be - used anymore after this has been called. - */finish(){return this.finishInner(RangeSet.empty);}/** - @internal - */finishInner(next){if(this.from.length)this.finishChunk(false);if(this.chunks.length==0)return next;let result=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(next):next,this.setMaxPoint);this.from=null;// Make sure further `add` calls produce errors -return result;}}function findSharedChunks(a,b,textDiff){let inA=new Map();for(let set of a)for(let i=0;i=this.minPoint)break;}}}setRangeIndex(index){if(index==this.layer.chunk[this.chunkIndex].value.length){this.chunkIndex++;if(this.skip){while(this.chunkIndex=minPoint)heap.push(new LayerCursor(cur,skip,minPoint,i));}}return heap.length==1?heap[0]:new HeapCursor(heap);}get startSide(){return this.value?this.value.startSide:0;}goto(pos,side=-1000000000/* Far */){for(let cur of this.heap)cur.goto(pos,side);for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);this.next();return this;}forward(pos,side){for(let cur of this.heap)cur.forward(pos,side);for(let i=this.heap.length>>1;i>=0;i--)heapBubble(this.heap,i);if((this.to-pos||this.value.endSide-side)<0)this.next();}next(){if(this.heap.length==0){this.from=this.to=1000000000/* Far */;this.value=null;this.rank=-1;}else {let top=this.heap[0];this.from=top.from;this.to=top.to;this.value=top.value;this.rank=top.rank;if(top.value)top.next();heapBubble(this.heap,0);}}}function heapBubble(heap,index){for(let cur=heap[index];;){let childIndex=(index<<1)+1;if(childIndex>=heap.length)break;let child=heap[childIndex];if(childIndex+1=0){child=heap[childIndex+1];childIndex++;}if(cur.compare(child)<0)break;heap[childIndex]=cur;heap[index]=child;index=childIndex;}}class SpanCursor{constructor(sets,skip,minPoint){this.minPoint=minPoint;this.active=[];this.activeTo=[];this.activeRank=[];this.minActive=-1;// A currently active point range, if any -this.point=null;this.pointFrom=0;this.pointRank=0;this.to=-1000000000/* Far */;this.endSide=0;this.openStart=-1;this.cursor=HeapCursor.from(sets,skip,minPoint);}goto(pos,side=-1000000000/* Far */){this.cursor.goto(pos,side);this.active.length=this.activeTo.length=this.activeRank.length=0;this.minActive=-1;this.to=pos;this.endSide=side;this.openStart=-1;this.next();return this;}forward(pos,side){while(this.minActive>-1&&(this.activeTo[this.minActive]-pos||this.active[this.minActive].endSide-side)<0)this.removeActive(this.minActive);this.cursor.forward(pos,side);}removeActive(index){remove(this.active,index);remove(this.activeTo,index);remove(this.activeRank,index);this.minActive=findMinIndex(this.active,this.activeTo);}addActive(trackOpen){let i=0,{value,to,rank}=this.cursor;while(i-1&&(this.activeTo[a]-this.cursor.from||this.active[a].endSide-this.cursor.startSide)<0){if(this.activeTo[a]>from){this.to=this.activeTo[a];this.endSide=this.active[a].endSide;break;}this.removeActive(a);if(trackOpen)remove(trackOpen,a);}else if(!this.cursor.value){this.to=this.endSide=1000000000/* Far */;break;}else if(this.cursor.from>from){this.to=this.cursor.from;this.endSide=this.cursor.startSide;break;}else {let nextVal=this.cursor.value;if(!nextVal.point){// Opening a range -this.addActive(trackOpen);this.cursor.next();}else if(wasPoint&&this.cursor.to==this.to&&this.cursor.from=0;i--){if(this.activeRank[i]to||this.activeTo[i]==to&&this.active[i].endSide>=this.point.endSide)active.push(this.active[i]);}return active.reverse();}openEnd(to){let open=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>to;i--)open++;return open;}}function compare(a,startA,b,startB,length,comparator){a.goto(startA);b.goto(startB);let endB=startB+length;let pos=startB,dPos=startB-startA;for(;;){let diff=a.to+dPos-b.to||a.endSide-b.endSide;let end=diff<0?a.to+dPos:b.to,clipEnd=Math.min(end,endB);if(a.point||b.point){if(!(a.point&&b.point&&(a.point==b.point||a.point.eq(b.point))&&sameValues(a.activeForPoint(a.to+dPos),b.activeForPoint(b.to))))comparator.comparePoint(pos,clipEnd,a.point,b.point);}else {if(clipEnd>pos&&!sameValues(a.active,b.active))comparator.compareRange(pos,clipEnd,a.active,b.active);}if(end>endB)break;pos=end;if(diff<=0)a.next();if(diff>=0)b.next();}}function sameValues(a,b){if(a.length!=b.length)return false;for(let i=0;i=index;i--)array[i+1]=array[i];array[index]=value;}function findMinIndex(value,array){let found=-1,foundPos=1000000000/* Far */;for(let i=0;i=col)return i;if(i==string.length)break;n+=string.charCodeAt(i)==9?tabSize-n%tabSize:1;i=findClusterBreak(string,i);}return strict===true?-1:string.length;}const C="\u037c";const COUNT=typeof Symbol=="undefined"?"__"+C:Symbol.for(C);const SET=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet");const top=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{};// :: - Style modules encapsulate a set of CSS rules defined from -// JavaScript. Their definitions are only available in a given DOM -// root after it has been _mounted_ there with `StyleModule.mount`. -// -// Style modules should be created once and stored somewhere, as -// opposed to re-creating them every time you need them. The amount of -// CSS rules generated for a given DOM root is bounded by the amount -// of style modules that were used. So to avoid leaking rules, don't -// create these dynamically, but treat them as one-time allocations. -class StyleModule{// :: (Object