@bpmn-io/form-js-playground 1.4.0 → 1.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/form-playground.umd.js +422 -262
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +4 -2
- package/dist/index.es.js.map +1 -1
- package/package.json +4 -4
|
@@ -38999,7 +38999,7 @@
|
|
|
38999
38999
|
* @param {Tree} syntaxTree
|
|
39000
39000
|
* @returns {LintMessage[]} array of syntax errors
|
|
39001
39001
|
*/
|
|
39002
|
-
function lintSyntax
|
|
39002
|
+
function lintSyntax(syntaxTree) {
|
|
39003
39003
|
const lintMessages = [];
|
|
39004
39004
|
syntaxTree.iterate({
|
|
39005
39005
|
enter: node => {
|
|
@@ -39034,8 +39034,8 @@
|
|
|
39034
39034
|
* @param {Tree} syntaxTree
|
|
39035
39035
|
* @returns {LintMessage[]} array of all lint messages
|
|
39036
39036
|
*/
|
|
39037
|
-
function lintAll$
|
|
39038
|
-
const lintMessages = [...lintSyntax
|
|
39037
|
+
function lintAll$1(syntaxTree) {
|
|
39038
|
+
const lintMessages = [...lintSyntax(syntaxTree)];
|
|
39039
39039
|
return lintMessages;
|
|
39040
39040
|
}
|
|
39041
39041
|
|
|
@@ -39045,13 +39045,13 @@
|
|
|
39045
39045
|
* @param {EditorView} editorView
|
|
39046
39046
|
* @returns {Source} CodeMirror linting source
|
|
39047
39047
|
*/
|
|
39048
|
-
const cmFeelLinter
|
|
39048
|
+
const cmFeelLinter = () => editorView => {
|
|
39049
39049
|
// don't lint if the Editor is empty
|
|
39050
39050
|
if (editorView.state.doc.length === 0) {
|
|
39051
39051
|
return [];
|
|
39052
39052
|
}
|
|
39053
39053
|
const tree = syntaxTree(editorView.state);
|
|
39054
|
-
const messages = lintAll$
|
|
39054
|
+
const messages = lintAll$1(tree);
|
|
39055
39055
|
return messages.map(message => ({
|
|
39056
39056
|
...message,
|
|
39057
39057
|
source: 'syntaxError'
|
|
@@ -39815,7 +39815,7 @@
|
|
|
39815
39815
|
* @param {Tree} syntaxTree
|
|
39816
39816
|
* @returns {LintMessage[]} array of all lint messages
|
|
39817
39817
|
*/
|
|
39818
|
-
function lintAll
|
|
39818
|
+
function lintAll(syntaxTree) {
|
|
39819
39819
|
const lintMessages = [...lintEmptyInserts(syntaxTree)];
|
|
39820
39820
|
return lintMessages;
|
|
39821
39821
|
}
|
|
@@ -39827,7 +39827,7 @@
|
|
|
39827
39827
|
* @returns {Source} CodeMirror linting source
|
|
39828
39828
|
*/
|
|
39829
39829
|
function cmFeelersLinter() {
|
|
39830
|
-
const lintFeel = cmFeelLinter
|
|
39830
|
+
const lintFeel = cmFeelLinter();
|
|
39831
39831
|
return editorView => {
|
|
39832
39832
|
const feelMessages = lintFeel(editorView);
|
|
39833
39833
|
|
|
@@ -39836,7 +39836,7 @@
|
|
|
39836
39836
|
return [];
|
|
39837
39837
|
}
|
|
39838
39838
|
const tree = syntaxTree(editorView.state);
|
|
39839
|
-
const feelersMessages = lintAll
|
|
39839
|
+
const feelersMessages = lintAll(tree);
|
|
39840
39840
|
return [...feelMessages, ...feelersMessages.map(message => ({
|
|
39841
39841
|
...message,
|
|
39842
39842
|
source: 'feelers linter'
|
|
@@ -50868,6 +50868,7 @@
|
|
|
50868
50868
|
} = F$1(FormContext$1);
|
|
50869
50869
|
const [isDropdownExpanded, setIsDropdownExpanded] = l$2(false);
|
|
50870
50870
|
const selectRef = s$1();
|
|
50871
|
+
const inputRef = s$1();
|
|
50871
50872
|
const {
|
|
50872
50873
|
state: loadState,
|
|
50873
50874
|
values: options
|
|
@@ -50892,12 +50893,12 @@
|
|
|
50892
50893
|
return ds;
|
|
50893
50894
|
}, [disabled, isDropdownExpanded, loadState, value]);
|
|
50894
50895
|
const onMouseDown = A$1(e => {
|
|
50895
|
-
const
|
|
50896
|
+
const input = inputRef.current;
|
|
50896
50897
|
setIsDropdownExpanded(!isDropdownExpanded);
|
|
50897
50898
|
if (isDropdownExpanded) {
|
|
50898
|
-
|
|
50899
|
+
input.blur();
|
|
50899
50900
|
} else {
|
|
50900
|
-
|
|
50901
|
+
input.focus();
|
|
50901
50902
|
}
|
|
50902
50903
|
e.preventDefault();
|
|
50903
50904
|
}, [isDropdownExpanded]);
|
|
@@ -50934,6 +50935,7 @@
|
|
|
50934
50935
|
id: prefixId$2(`${id}-display`, formId),
|
|
50935
50936
|
children: valueLabel || 'Select'
|
|
50936
50937
|
}), !disabled && e$1("input", {
|
|
50938
|
+
ref: inputRef,
|
|
50937
50939
|
id: prefixId$2(`${id}-search`, formId),
|
|
50938
50940
|
class: "fjs-select-hidden-input",
|
|
50939
50941
|
value: valueLabel,
|
|
@@ -56008,71 +56010,6 @@
|
|
|
56008
56010
|
}
|
|
56009
56011
|
var domify$1 = domify;
|
|
56010
56012
|
|
|
56011
|
-
/**
|
|
56012
|
-
* Create an array of syntax errors in the given tree.
|
|
56013
|
-
*
|
|
56014
|
-
* @param {Tree} syntaxTree
|
|
56015
|
-
* @returns {LintMessage[]} array of syntax errors
|
|
56016
|
-
*/
|
|
56017
|
-
function lintSyntax(syntaxTree) {
|
|
56018
|
-
const lintMessages = [];
|
|
56019
|
-
syntaxTree.iterate({
|
|
56020
|
-
enter: node => {
|
|
56021
|
-
if (node.type.isError) {
|
|
56022
|
-
const error = node.toString();
|
|
56023
|
-
|
|
56024
|
-
/* The error has the pattern [⚠ || ⚠(NodeType)]. The regex extracts the node type from inside the brackets */
|
|
56025
|
-
const match = /\((.*?)\)/.exec(error);
|
|
56026
|
-
const nodeType = match && match[1];
|
|
56027
|
-
let message;
|
|
56028
|
-
if (nodeType) {
|
|
56029
|
-
message = 'unexpected ' + nodeType;
|
|
56030
|
-
} else {
|
|
56031
|
-
message = 'expression expected';
|
|
56032
|
-
}
|
|
56033
|
-
lintMessages.push({
|
|
56034
|
-
from: node.from,
|
|
56035
|
-
to: node.to,
|
|
56036
|
-
severity: 'error',
|
|
56037
|
-
message: message,
|
|
56038
|
-
type: 'syntaxError'
|
|
56039
|
-
});
|
|
56040
|
-
}
|
|
56041
|
-
}
|
|
56042
|
-
});
|
|
56043
|
-
return lintMessages;
|
|
56044
|
-
}
|
|
56045
|
-
|
|
56046
|
-
/**
|
|
56047
|
-
* Generates lint messages for the given syntax tree.
|
|
56048
|
-
*
|
|
56049
|
-
* @param {Tree} syntaxTree
|
|
56050
|
-
* @returns {LintMessage[]} array of all lint messages
|
|
56051
|
-
*/
|
|
56052
|
-
function lintAll(syntaxTree) {
|
|
56053
|
-
const lintMessages = [...lintSyntax(syntaxTree)];
|
|
56054
|
-
return lintMessages;
|
|
56055
|
-
}
|
|
56056
|
-
|
|
56057
|
-
/**
|
|
56058
|
-
* CodeMirror extension that provides linting for FEEL expressions.
|
|
56059
|
-
*
|
|
56060
|
-
* @param {EditorView} editorView
|
|
56061
|
-
* @returns {Source} CodeMirror linting source
|
|
56062
|
-
*/
|
|
56063
|
-
const cmFeelLinter = () => editorView => {
|
|
56064
|
-
// don't lint if the Editor is empty
|
|
56065
|
-
if (editorView.state.doc.length === 0) {
|
|
56066
|
-
return [];
|
|
56067
|
-
}
|
|
56068
|
-
const tree = syntaxTree(editorView.state);
|
|
56069
|
-
const messages = lintAll(tree);
|
|
56070
|
-
return messages.map(message => ({
|
|
56071
|
-
...message,
|
|
56072
|
-
source: 'syntaxError'
|
|
56073
|
-
}));
|
|
56074
|
-
};
|
|
56075
|
-
|
|
56076
56013
|
// helpers ///////////////////////////////
|
|
56077
56014
|
|
|
56078
56015
|
function isNodeEmpty(node) {
|
|
@@ -56088,257 +56025,365 @@
|
|
|
56088
56025
|
return isPathExpression(node.parent);
|
|
56089
56026
|
}
|
|
56090
56027
|
var tags = [{
|
|
56091
|
-
name: "not()",
|
|
56092
|
-
description: "<
|
|
56028
|
+
name: "not(negand)",
|
|
56029
|
+
description: "<p>Returns the logical negation of the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">not(negand: boolean): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">not(true)\n// false\n\nnot(null)\n// null\n</code></pre>\n"
|
|
56030
|
+
}, {
|
|
56031
|
+
name: "is defined(value)",
|
|
56032
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Checks if a given value is not <code>null</code>. If the value is <code>null</code> then the function returns <code>false</code>.\nOtherwise, the function returns <code>true</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">is defined(value: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">is defined(1)\n// true\n\nis defined(null)\n// false\n\nis defined(x)\n// false - if no variable "x" exists\n\nis defined(x.y)\n// false - if no variable "x" exists or it doesn't have a property "y"\n</code></pre>\n<p>:::caution Breaking change</p>\n<p>This function worked differently in previous versions. It returned <code>true</code> if the value was <code>null</code>.\nSince this version, the function returns <code>false</code> if the value is <code>null</code>.</p>\n<p>:::</p>\n"
|
|
56033
|
+
}, {
|
|
56034
|
+
name: "get or else(value, default)",
|
|
56035
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Return the provided value parameter if not <code>null</code>, otherwise return the default parameter</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">get or else(value: Any, default: Any): Any\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">get or else("this", "default")\n// "this"\n\nget or else(null, "default")\n// "default"\n\nget or else(null, null)\n// null\n</code></pre>\n"
|
|
56036
|
+
}, {
|
|
56037
|
+
name: "assert(value, condition)",
|
|
56038
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Verify that the given condition is met. If the condition is <code>true</code>, the function returns the value.\nOtherwise, the evaluation fails with an error.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">assert(value: Any, condition: Any)\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">assert(x, x != null)\n// "value" - if x is "value"\n// error - if x is null or doesn't exist\n\nassert(x, x >= 0)\n// 4 - if x is 4\n// error - if x is less than zero\n</code></pre>\n"
|
|
56039
|
+
}, {
|
|
56040
|
+
name: "assert(value, condition, cause)",
|
|
56041
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Verify that the given condition is met. If the condition is <code>true</code>, the function returns the value.\nOtherwise, the evaluation fails with an error containing the given message.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">assert(value: Any, condition: Any, cause: String)\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">assert(x, x != null, "'x' should not be null")\n// "value" - if x is "value"\n// error('x' should not be null) - if x is null or doesn't exist\n\nassert(x, x >= 0, "'x' should be positive")\n// 4 - if x is 4\n// error('x' should be positive) - if x is less than zero\n</code></pre>\n"
|
|
56042
|
+
}, {
|
|
56043
|
+
name: "get value(context, key)",
|
|
56044
|
+
description: "<p>Returns the value of the context entry with the given key.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">get value(context: context, key: string): Any\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">get value({foo: 123}, "foo")\n// 123\n\nget value({a: 1}, "b")\n// null\n</code></pre>\n"
|
|
56045
|
+
}, {
|
|
56046
|
+
name: "get value(context, keys)",
|
|
56047
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Returns the value of the context entry for a context path defined by the given keys.</p>\n<p>If <code>keys</code> contains the keys <code>[k1, k2]</code> then it returns the value at the nested entry <code>k1.k2</code> of the context.</p>\n<p>If <code>keys</code> are empty or the nested entry defined by the keys doesn't exist in the context, it returns <code>null</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">get value(context: context, keys: list<string>): Any\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">get value({x:1, y: {z:0}}, ["y", "z"])\n// 0\n\nget value({x: {y: {z:0}}}, ["x", "y"])\n// {z:0}\n\nget value({a: {b: 3}}, ["b"])\n// null\n</code></pre>\n"
|
|
56048
|
+
}, {
|
|
56049
|
+
name: "get entries(context)",
|
|
56050
|
+
description: "<p>Returns the entries of the context as a list of key-value-pairs.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">get entries(context: context): list<context>\n</code></pre>\n<p>The return value is a list of contexts. Each context contains two entries for "key" and "value".</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">get entries({foo: 123})\n// [{key: "foo", value: 123}]\n</code></pre>\n"
|
|
56051
|
+
}, {
|
|
56052
|
+
name: "context put(context, key, value)",
|
|
56053
|
+
description: "<p>Adds a new entry with the given key and value to the context. Returns a new context that includes the entry.</p>\n<p>If an entry for the same key already exists in the context, it overrides the value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">context put(context: context, key: string, value: Any): context\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">context put({x:1}, "y", 2)\n// {x:1, y:2}\n</code></pre>\n<p>:::info\nThe function <code>context put()</code> replaced the previous function <code>put()</code> (Camunda Extension). The\nprevious function is deprecated and should not be used anymore.\n:::</p>\n"
|
|
56054
|
+
}, {
|
|
56055
|
+
name: "context put(context, keys, value)",
|
|
56056
|
+
description: "<p>Adds a new entry with the given value to the context. The path of the entry is defined by the keys. Returns a new context that includes the entry.</p>\n<p>If <code>keys</code> contains the keys <code>[k1, k2]</code> then it adds the nested entry <code>k1.k2 = value</code> to the context.</p>\n<p>If an entry for the same keys already exists in the context, it overrides the value.</p>\n<p>If <code>keys</code> are empty, it returns <code>null</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">context put(context: context, keys: list<string>, value: Any): context\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">context put({x:1}, ["y"], 2)\n// {x:1, y:2}\n\ncontext put({x:1, y: {z:0}}, ["y", "z"], 2)\n// {x:1, y: {z:2}}\n\ncontext put({x:1}, ["y", "z"], 2)\n// {x:1, y: {z:2}}\n</code></pre>\n"
|
|
56093
56057
|
}, {
|
|
56094
|
-
name: "
|
|
56095
|
-
description: "<p>
|
|
56058
|
+
name: "context merge(contexts)",
|
|
56059
|
+
description: "<p>Union the given contexts. Returns a new context that includes all entries of the given contexts.</p>\n<p>If an entry for the same key already exists in a context, it overrides the value. The entries are overridden in the same order as in the list of contexts.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">context merge(contexts: list<context>): context\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">context merge([{x:1}, {y:2}])\n// {x:1, y:2}\n\ncontext merge([{x:1, y: 0}, {y:2}])\n// {x:1, y:2}\n</code></pre>\n<p>:::info\nThe function <code>context merge()</code> replaced the previous function <code>put all()</code> (Camunda Extension). The\nprevious function is deprecated and should not be used anymore.\n:::</p>\n"
|
|
56096
56060
|
}, {
|
|
56097
|
-
name: "
|
|
56098
|
-
description: "<p>Returns the value
|
|
56061
|
+
name: "string(from)",
|
|
56062
|
+
description: "<p>Returns the given value as a string representation.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">string(from: Any): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">string(1.1)\n// "1.1"\n\nstring(date("2012-12-25"))\n// "2012-12-25"\n</code></pre>\n"
|
|
56099
56063
|
}, {
|
|
56100
|
-
name: "
|
|
56101
|
-
description: "<p>
|
|
56064
|
+
name: "number(from)",
|
|
56065
|
+
description: "<p>Parses the given string to a number.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">number(from: string): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">number("1500.5")\n// 1500.5\n</code></pre>\n"
|
|
56102
56066
|
}, {
|
|
56103
|
-
name: "
|
|
56104
|
-
description: "<p>
|
|
56067
|
+
name: "context(entries)",
|
|
56068
|
+
description: "<p>Constructs a context of the given list of key-value pairs. It is the reverse function to <a href=\"feel-built-in-functions-context.md#get-entriescontext\">get entries()</a>.</p>\n<p>Each key-value pair must be a context with two entries: <code>key</code> and <code>value</code>. The entry with name <code>key</code> must have a value of the type <code>string</code>.</p>\n<p>It might override context entries if the keys are equal. The entries are overridden in the same order as the contexts in the given list.</p>\n<p>Returns <code>null</code> if one of the entries is not a context or if a context doesn't contain the required entries.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">context(entries: list<context>): context\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">context([{"key":"a", "value":1}, {"key":"b", "value":2}])\n// {a:1, b:2}\n</code></pre>\n"
|
|
56105
56069
|
}, {
|
|
56106
|
-
name: "
|
|
56107
|
-
description: "<p>
|
|
56070
|
+
name: "date(from)",
|
|
56071
|
+
description: "<p>Returns a date from the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">date(from: string): date\n</code></pre>\n<p>Parses the given string into a date.</p>\n<pre><code class=\"language-feel\">date(from: date and time): date\n</code></pre>\n<p>Extracts the date component from the given date and time.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">date("2018-04-29")\n// date("2018-04-29")\n\ndate(date and time("2012-12-25T11:00:00"))\n// date("2012-12-25")\n</code></pre>\n"
|
|
56108
56072
|
}, {
|
|
56109
|
-
name: "date()",
|
|
56110
|
-
description: "<
|
|
56073
|
+
name: "date(year, month, day)",
|
|
56074
|
+
description: "<p>Returns a date from the given components.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">date(year: number, month: number, day: number): date\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">date(2012, 12, 25)\n// date("2012-12-25")\n</code></pre>\n"
|
|
56111
56075
|
}, {
|
|
56112
|
-
name: "time()",
|
|
56113
|
-
description: "<
|
|
56076
|
+
name: "time(from)",
|
|
56077
|
+
description: "<p>Returns a time from the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">time(from: string): time\n</code></pre>\n<p>Parses the given string into a time.</p>\n<pre><code class=\"language-feel\">time(from: date and time): time\n</code></pre>\n<p>Extracts the time component from the given date and time.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">time("12:00:00")\n// time("12:00:00")\n\ntime(date and time("2012-12-25T11:00:00"))\n// time("11:00:00")\n</code></pre>\n"
|
|
56114
56078
|
}, {
|
|
56115
|
-
name: "
|
|
56116
|
-
description: "<
|
|
56079
|
+
name: "time(hour, minute, second)",
|
|
56080
|
+
description: "<p>Returns a time from the given components.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">time(hour: number, minute: number, second: number): time\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">time(23, 59, 0)\n// time("23:59:00")\n</code></pre>\n"
|
|
56117
56081
|
}, {
|
|
56118
|
-
name: "
|
|
56119
|
-
description: "<
|
|
56082
|
+
name: "time(hour, minute, second, offset)",
|
|
56083
|
+
description: "<p>Returns a time from the given components, including a timezone offset.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">time(hour: number, minute: number, second: number, offset: days and time duration): time\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">time(14, 30, 0, duration("PT1H"))\n// time("14:30:00+01:00")\n</code></pre>\n"
|
|
56120
56084
|
}, {
|
|
56121
|
-
name: "
|
|
56122
|
-
description: "<
|
|
56085
|
+
name: "date and time(from)",
|
|
56086
|
+
description: "<p>Parses the given string into a date and time.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">date and time(from: string): date and time\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">date and time("2018-04-29T009:30:00")\n// date and time("2018-04-29T009:30:00")\n</code></pre>\n"
|
|
56123
56087
|
}, {
|
|
56124
|
-
name: "
|
|
56125
|
-
description: "<
|
|
56088
|
+
name: "date and time(date, time)",
|
|
56089
|
+
description: "<p>Returns a date and time from the given components.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">date and time(date: date, time: time): date and time\n</code></pre>\n<pre><code class=\"language-feel\">date and time(date: date and time, time: time): date and time\n</code></pre>\n<p>Returns a date and time value that consists of the date component of <code>date</code> combined with <code>time</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">date and time(date("2012-12-24"),time("T23:59:00"))\n// date and time("2012-12-24T23:59:00")\n\ndate and time(date and time("2012-12-25T11:00:00"),time("T23:59:00"))\n// date and time("2012-12-25T23:59:00")\n</code></pre>\n"
|
|
56126
56090
|
}, {
|
|
56127
|
-
name: "
|
|
56128
|
-
description: "<
|
|
56091
|
+
name: "date and time(date, timezone)",
|
|
56092
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Returns the given date and time value at the given timezone.</p>\n<p>If <code>date</code> has a different timezone than <code>timezone</code> then it adjusts the time to match the local time of <code>timezone</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">date and time(date: date and time, timezone: string): date and time\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">date and time(@"2020-07-31T14:27:30@Europe/Berlin", "America/Los_Angeles")\n// date and time("2020-07-31T05:27:30@America/Los_Angeles")\n\ndate and time(@"2020-07-31T14:27:30", "Z")\n// date and time("2020-07-31T12:27:30Z")\n</code></pre>\n"
|
|
56129
56093
|
}, {
|
|
56130
|
-
name: "
|
|
56131
|
-
description: "<p>
|
|
56094
|
+
name: "duration(from)",
|
|
56095
|
+
description: "<p>Parses the given string into a duration. The duration is either a days and time duration or a years and months duration.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">duration(from: string): days and time duration\n</code></pre>\n<pre><code class=\"language-feel\">duration(from: string): years and months duration\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">duration("P5D")\n// duration("P5D")\n\nduration("P32Y")\n// duration("P32Y")\n</code></pre>\n"
|
|
56132
56096
|
}, {
|
|
56133
|
-
name: "
|
|
56134
|
-
description: "<
|
|
56097
|
+
name: "years and months duration(from, to)",
|
|
56098
|
+
description: "<p>Returns the years and months duration between <code>from</code> and <code>to</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">years and months duration(from: date, to: date): years and months duration\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">years and months duration(date("2011-12-22"), date("2013-08-24"))\n// duration("P1Y8M")\n</code></pre>\n"
|
|
56135
56099
|
}, {
|
|
56136
|
-
name: "
|
|
56137
|
-
description: "<
|
|
56100
|
+
name: "list contains(list, element)",
|
|
56101
|
+
description: "<p>Returns <code>true</code> if the given list contains the element. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">list contains(list: list, element: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">list contains([1,2,3], 2)\n// true\n</code></pre>\n"
|
|
56138
56102
|
}, {
|
|
56139
|
-
name: "
|
|
56140
|
-
description: "<
|
|
56103
|
+
name: "count(list)",
|
|
56104
|
+
description: "<p>Returns the number of elements of the given list.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">count(list: list): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">count([1,2,3])\n// 3\n</code></pre>\n"
|
|
56141
56105
|
}, {
|
|
56142
|
-
name: "
|
|
56143
|
-
description: "<
|
|
56106
|
+
name: "min(list)",
|
|
56107
|
+
description: "<p>Returns the minimum of the given list.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">min(list: list): Any\n</code></pre>\n<p>All elements in <code>list</code> should have the same type and be comparable.</p>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">min([1,2,3])\n// 1\n\nmin(1,2,3)\n// 1\n</code></pre>\n"
|
|
56144
56108
|
}, {
|
|
56145
|
-
name: "
|
|
56146
|
-
description: "<
|
|
56109
|
+
name: "max(list)",
|
|
56110
|
+
description: "<p>Returns the maximum of the given list.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">max(list: list): Any\n</code></pre>\n<p>All elements in <code>list</code> should have the same type and be comparable.</p>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">max([1,2,3])\n// 3\n\nmax(1,2,3)\n// 3\n</code></pre>\n"
|
|
56147
56111
|
}, {
|
|
56148
|
-
name: "
|
|
56149
|
-
description: "<
|
|
56112
|
+
name: "sum(list)",
|
|
56113
|
+
description: "<p>Returns the sum of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">sum(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">sum([1,2,3])\n// 6\n\nsum(1,2,3)\n// 6\n</code></pre>\n"
|
|
56150
56114
|
}, {
|
|
56151
|
-
name: "
|
|
56152
|
-
description: "<p>Returns the
|
|
56115
|
+
name: "product(list)",
|
|
56116
|
+
description: "<p>Returns the product of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">product(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">product([2, 3, 4])\n// 24\n\nproduct(2, 3, 4)\n// 24\n</code></pre>\n"
|
|
56153
56117
|
}, {
|
|
56154
|
-
name: "
|
|
56155
|
-
description: "<p>Returns the
|
|
56118
|
+
name: "mean(list)",
|
|
56119
|
+
description: "<p>Returns the arithmetic mean (i.e. average) of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">mean(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">mean([1,2,3])\n// 2\n\nmean(1,2,3)\n// 2\n</code></pre>\n"
|
|
56156
56120
|
}, {
|
|
56157
|
-
name: "
|
|
56158
|
-
description: "<p>Returns the
|
|
56121
|
+
name: "median(list)",
|
|
56122
|
+
description: "<p>Returns the median element of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">median(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">median(8, 2, 5, 3, 4)\n// 4\n\nmedian([6, 1, 2, 3])\n// 2.5\n</code></pre>\n"
|
|
56159
56123
|
}, {
|
|
56160
|
-
name: "
|
|
56161
|
-
description: "<p>Returns the
|
|
56124
|
+
name: "stddev(list)",
|
|
56125
|
+
description: "<p>Returns the standard deviation of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">stddev(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">stddev(2, 4, 7, 5)\n// 2.0816659994661326\n\nstddev([2, 4, 7, 5])\n// 2.0816659994661326\n</code></pre>\n"
|
|
56162
56126
|
}, {
|
|
56163
|
-
name: "
|
|
56164
|
-
description: "<
|
|
56127
|
+
name: "mode(list)",
|
|
56128
|
+
description: "<p>Returns the mode of the given list of numbers.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">mode(list: list<number>): number\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">mode(6, 3, 9, 6, 6)\n// [6]\n\nmode([6, 1, 9, 6, 1])\n// [1, 6]\n</code></pre>\n"
|
|
56165
56129
|
}, {
|
|
56166
|
-
name: "all()",
|
|
56167
|
-
description: "<
|
|
56130
|
+
name: "all(list)",
|
|
56131
|
+
description: "<p>Returns <code>false</code> if any element of the given list is <code>false</code>. Otherwise, returns <code>true</code>.</p>\n<p>If the given list is empty, it returns <code>true</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">all(list: list<boolean>): boolean\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">all([true,false])\n// false\n\nall(false,null,true)\n// false\n</code></pre>\n<p>:::info\nThe function <code>all()</code> replaced the previous function <code>and()</code>. The previous function is deprecated and\nshould not be used anymore.\n:::</p>\n"
|
|
56168
56132
|
}, {
|
|
56169
|
-
name: "
|
|
56170
|
-
description: "<
|
|
56133
|
+
name: "any(list)",
|
|
56134
|
+
description: "<p>Returns <code>true</code> if any element of the given list is <code>true</code>. Otherwise, returns <code>false</code>.</p>\n<p>If the given list is empty, it returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">any(list: list<boolean>): boolean\n</code></pre>\n<p>The parameter <code>list</code> can be passed as a list or as a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">any([false,true])\n// true\n\nany(false,null,true)\n// true\n</code></pre>\n<p>:::info\nThe function <code>any()</code> replaced the previous function <code>or()</code>. The previous function is deprecated and\nshould not be used anymore.\n:::</p>\n"
|
|
56171
56135
|
}, {
|
|
56172
|
-
name: "
|
|
56173
|
-
description: "<
|
|
56136
|
+
name: "sublist(list, start position)",
|
|
56137
|
+
description: "<p>Returns a partial list of the given value starting at <code>start position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">sublist(list: list, start position: number): list\n</code></pre>\n<p>The <code>start position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">sublist([1,2,3], 2)\n// [2,3]\n</code></pre>\n"
|
|
56174
56138
|
}, {
|
|
56175
|
-
name: "sublist()",
|
|
56176
|
-
description: "<
|
|
56139
|
+
name: "sublist(list, start position, length)",
|
|
56140
|
+
description: "<p>Returns a partial list of the given value starting at <code>start position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">sublist(list: list, start position: number, length: number): list\n</code></pre>\n<p>The <code>start position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">sublist([1,2,3], 1, 2)\n// [1,2]\n</code></pre>\n"
|
|
56177
56141
|
}, {
|
|
56178
|
-
name: "append()",
|
|
56179
|
-
description: "<
|
|
56142
|
+
name: "append(list, items)",
|
|
56143
|
+
description: "<p>Returns the given list with all <code>items</code> appended.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">append(list: list, items: Any): list\n</code></pre>\n<p>The parameter <code>items</code> can be a single element or a sequence of elements.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">append([1], 2, 3)\n// [1,2,3]\n</code></pre>\n"
|
|
56180
56144
|
}, {
|
|
56181
|
-
name: "concatenate()",
|
|
56182
|
-
description: "<
|
|
56145
|
+
name: "concatenate(lists)",
|
|
56146
|
+
description: "<p>Returns a list that includes all elements of the given lists.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">concatenate(lists: list): list\n</code></pre>\n<p>The parameter <code>lists</code> is a sequence of lists.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">concatenate([1,2],[3])\n// [1,2,3]\n\nconcatenate([1],[2],[3])\n// [1,2,3]\n</code></pre>\n"
|
|
56183
56147
|
}, {
|
|
56184
|
-
name: "insert before()",
|
|
56185
|
-
description: "<
|
|
56148
|
+
name: "insert before(list, position, newItem)",
|
|
56149
|
+
description: "<p>Returns the given list with <code>newItem</code> inserted at <code>position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">insert before(list: list, position: number, newItem: Any): list\n</code></pre>\n<p>The <code>position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">insert before([1,3],1,2)\n// [2,1,3]\n</code></pre>\n"
|
|
56186
56150
|
}, {
|
|
56187
|
-
name: "remove()",
|
|
56188
|
-
description: "<
|
|
56151
|
+
name: "remove(list, position)",
|
|
56152
|
+
description: "<p>Returns the given list without the element at <code>position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">remove(list: list, position: number): list\n</code></pre>\n<p>The <code>position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">remove([1,2,3], 2)\n// [1,3]\n</code></pre>\n"
|
|
56189
56153
|
}, {
|
|
56190
|
-
name: "reverse()",
|
|
56191
|
-
description: "<
|
|
56154
|
+
name: "reverse(list)",
|
|
56155
|
+
description: "<p>Returns the given list in revered order.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">reverse(list: list): list\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">reverse([1,2,3])\n// [3,2,1]\n</code></pre>\n"
|
|
56192
56156
|
}, {
|
|
56193
|
-
name: "index of()",
|
|
56194
|
-
description: "<
|
|
56157
|
+
name: "index of(list, match)",
|
|
56158
|
+
description: "<p>Returns an ascending list of positions containing <code>match</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">index of(list: list, match: Any): list<number>\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">index of([1,2,3,2],2)\n// [2,4]\n</code></pre>\n"
|
|
56195
56159
|
}, {
|
|
56196
|
-
name: "union()",
|
|
56197
|
-
description: "<
|
|
56160
|
+
name: "union(list)",
|
|
56161
|
+
description: "<p>Returns a list that includes all elements of the given lists without duplicates.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">union(list: list): list\n</code></pre>\n<p>The parameter <code>list</code> is a sequence of lists.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">union([1,2],[2,3])\n// [1,2,3]\n</code></pre>\n"
|
|
56198
56162
|
}, {
|
|
56199
|
-
name: "distinct values()",
|
|
56200
|
-
description: "<
|
|
56163
|
+
name: "distinct values(list)",
|
|
56164
|
+
description: "<p>Returns the given list without duplicates.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">distinct values(list: list): list\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">distinct values([1,2,3,2,1])\n// [1,2,3]\n</code></pre>\n"
|
|
56201
56165
|
}, {
|
|
56202
|
-
name: "
|
|
56203
|
-
description: "<
|
|
56166
|
+
name: "duplicate values(list)",
|
|
56167
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Returns all duplicate values of the given list.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">duplicate values(list: list): list\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">duplicate values([1,2,3,2,1])\n// [1,2]\n</code></pre>\n"
|
|
56204
56168
|
}, {
|
|
56205
|
-
name: "
|
|
56206
|
-
description: "<
|
|
56169
|
+
name: "flatten(list)",
|
|
56170
|
+
description: "<p>Returns a list that includes all elements of the given list without nested lists.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">flatten(list: list): list\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">flatten([[1,2],[[3]], 4])\n// [1,2,3,4]\n</code></pre>\n"
|
|
56207
56171
|
}, {
|
|
56208
|
-
name: "
|
|
56209
|
-
description: "<p>
|
|
56172
|
+
name: "sort(list, precedes)",
|
|
56173
|
+
description: "<p>Returns the given list sorted by the <code>precedes</code> function.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">sort(list: list, precedes: function<(Any, Any) -> boolean>): list\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">sort(list: [3,1,4,5,2], precedes: function(x,y) x < y)\n// [1,2,3,4,5]\n</code></pre>\n"
|
|
56210
56174
|
}, {
|
|
56211
|
-
name: "
|
|
56212
|
-
description: "<p>
|
|
56175
|
+
name: "string join(list)",
|
|
56176
|
+
description: "<p>Joins a list of strings into a single string. This is similar to\nJava's <a href=\"https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Collectors.html#joining(java.lang.CharSequence,java.lang.CharSequence,java.lang.CharSequence)\">joining</a>\nfunction.</p>\n<p>If an item of the list is <code>null</code>, the item is ignored for the result string. If an item is\nneither a string nor <code>null</code>, the function returns <code>null</code> instead of a string.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">string join(list: list<string>): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">string join(["a","b","c"])\n// "abc"\n\nstring join(["a",null,"c"])\n// "ac"\n\nstring join([])\n// ""\n</code></pre>\n"
|
|
56213
56177
|
}, {
|
|
56214
|
-
name: "
|
|
56215
|
-
description: "<
|
|
56178
|
+
name: "string join(list, delimiter)",
|
|
56179
|
+
description: "<p>Joins a list of strings into a single string. This is similar to\nJava's <a href=\"https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Collectors.html#joining(java.lang.CharSequence,java.lang.CharSequence,java.lang.CharSequence)\">joining</a>\nfunction.</p>\n<p>If an item of the list is <code>null</code>, the item is ignored for the result string. If an item is\nneither a string nor <code>null</code>, the function returns <code>null</code> instead of a string.</p>\n<p>The resulting string contains a <code>delimiter</code> between each element.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">string join(list: list<string>, delimiter: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">string join(["a"], "X")\n// "a"\n\nstring join(["a","b","c"], ", ")\n// "a, b, c"\n</code></pre>\n"
|
|
56216
56180
|
}, {
|
|
56217
|
-
name: "
|
|
56218
|
-
description: "<p>
|
|
56181
|
+
name: "string join(list, delimiter, prefix, suffix)",
|
|
56182
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Joins a list of strings into a single string. This is similar to\nJava's <a href=\"https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/Collectors.html#joining(java.lang.CharSequence,java.lang.CharSequence,java.lang.CharSequence)\">joining</a>\nfunction.</p>\n<p>If an item of the list is <code>null</code>, the item is ignored for the result string. If an item is\nneither a string nor <code>null</code>, the function returns <code>null</code> instead of a string.</p>\n<p>The resulting string starts with <code>prefix</code>, contains a <code>delimiter</code> between each element, and ends\nwith <code>suffix</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">string join(list: list<string>, delimiter: string, prefix: string, suffix: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">string join(["a","b","c"], ", ", "[", "]")\n// "[a, b, c]"\n</code></pre>\n"
|
|
56219
56183
|
}, {
|
|
56220
|
-
name: "
|
|
56221
|
-
description: "<p>
|
|
56184
|
+
name: "decimal(n, scale)",
|
|
56185
|
+
description: "<p>Rounds the given value at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">decimal(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">decimal(1/3, 2)\n// .33\n\ndecimal(1.5, 0)\n// 2\n</code></pre>\n"
|
|
56222
56186
|
}, {
|
|
56223
|
-
name: "
|
|
56224
|
-
description: "<p>
|
|
56187
|
+
name: "floor(n)",
|
|
56188
|
+
description: "<p>Rounds the given value with rounding mode flooring.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">floor(n: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">floor(1.5)\n// 1\n\nfloor(-1.5)\n// -2\n</code></pre>\n"
|
|
56225
56189
|
}, {
|
|
56226
|
-
name: "
|
|
56227
|
-
description: "<p>
|
|
56190
|
+
name: "floor(n, scale)",
|
|
56191
|
+
description: "<p>Rounds the given value with rounding mode flooring at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">floor(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">floor(-1.56, 1)\n// -1.6\n</code></pre>\n"
|
|
56228
56192
|
}, {
|
|
56229
|
-
name: "
|
|
56230
|
-
description: "<p>
|
|
56193
|
+
name: "ceiling(n)",
|
|
56194
|
+
description: "<p>Rounds the given value with rounding mode ceiling.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">ceiling(n: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">ceiling(1.5)\n// 2\n\nceiling(-1.5)\n// -1\n</code></pre>\n"
|
|
56231
56195
|
}, {
|
|
56232
|
-
name: "
|
|
56233
|
-
description: "<p>
|
|
56196
|
+
name: "ceiling(n, scale)",
|
|
56197
|
+
description: "<p>Rounds the given value with rounding mode ceiling at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">ceiling(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">ceiling(-1.56, 1)\n// -1.5\n</code></pre>\n"
|
|
56234
56198
|
}, {
|
|
56235
|
-
name: "
|
|
56236
|
-
description: "<p>
|
|
56199
|
+
name: "round up(n, scale)",
|
|
56200
|
+
description: "<p>Rounds the given value with the rounding mode round-up at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">round up(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">round up(5.5)\n// 6\n\nround up(-5.5)\n// -6\n\nround up(1.121, 2)\n// 1.13\n\nround up(-1.126, 2)\n// -1.13\n</code></pre>\n"
|
|
56237
56201
|
}, {
|
|
56238
|
-
name: "
|
|
56239
|
-
description: "<p>
|
|
56202
|
+
name: "round down(n, scale)",
|
|
56203
|
+
description: "<p>Rounds the given value with the rounding mode round-down at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">round down(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">round down(5.5, 0)\n// 5\n\nround down (-5.5, 0)\n// -5\n\nround down (1.121, 2)\n// 1.12\n\nround down (-1.126, 2)\n// -1.12\n</code></pre>\n"
|
|
56240
56204
|
}, {
|
|
56241
|
-
name: "
|
|
56242
|
-
description: "<
|
|
56205
|
+
name: "round half up(n, scale)",
|
|
56206
|
+
description: "<p>Rounds the given value with the rounding mode round-half-up at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">round half up(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">round half up(5.5, 0)\n// 6\n\nround half up(-5.5, 0)\n// -6\n\nround half up(1.121, 2)\n// 1.12\n\nround half up(-1.126, 2)\n// -1.13\n</code></pre>\n"
|
|
56243
56207
|
}, {
|
|
56244
|
-
name: "
|
|
56245
|
-
description: "<
|
|
56208
|
+
name: "round half down(n, scale)",
|
|
56209
|
+
description: "<p>Rounds the given value with the rounding mode round-half-down at the given scale.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">round half down(n: number, scale: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">round half down (5.5, 0)\n// 5\n\nround half down (-5.5, 0)\n// -5\n\nround half down (1.121, 2)\n// 1.12\n\nround half down (-1.126, 2)\n// -1.13\n</code></pre>\n"
|
|
56246
56210
|
}, {
|
|
56247
|
-
name: "
|
|
56248
|
-
description: "<
|
|
56211
|
+
name: "abs(number)",
|
|
56212
|
+
description: "<p>Returns the absolute value of the given numeric value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">abs(number: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">abs(10)\n// 10\n\nabs(-10)\n// 10\n</code></pre>\n"
|
|
56249
56213
|
}, {
|
|
56250
|
-
name: "
|
|
56251
|
-
description: "<
|
|
56214
|
+
name: "modulo(dividend, divisor)",
|
|
56215
|
+
description: "<p>Returns the remainder of the division of dividend by divisor.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">modulo(dividend: number, divisor: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">modulo(12, 5)\n// 2\n</code></pre>\n"
|
|
56252
56216
|
}, {
|
|
56253
|
-
name: "
|
|
56254
|
-
description: "<
|
|
56217
|
+
name: "sqrt(number)",
|
|
56218
|
+
description: "<p>Returns the square root of the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">sqrt(number: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">sqrt(16)\n// 4\n</code></pre>\n"
|
|
56255
56219
|
}, {
|
|
56256
|
-
name: "
|
|
56257
|
-
description: "<
|
|
56220
|
+
name: "log(number)",
|
|
56221
|
+
description: "<p>Returns the natural logarithm (base e) of the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">log(number: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">log(10)\n// 2.302585092994046\n</code></pre>\n"
|
|
56258
56222
|
}, {
|
|
56259
|
-
name: "
|
|
56260
|
-
description: "<
|
|
56223
|
+
name: "exp(number)",
|
|
56224
|
+
description: "<p>Returns the Euler’s number e raised to the power of the given number .</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">exp(number: number): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">exp(5)\n// 148.4131591025766\n</code></pre>\n"
|
|
56261
56225
|
}, {
|
|
56262
|
-
name: "
|
|
56263
|
-
description: "<
|
|
56226
|
+
name: "odd(number)",
|
|
56227
|
+
description: "<p>Returns <code>true</code> if the given value is odd. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">odd(number: number): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">odd(5)\n// true\n\nodd(2)\n// false\n</code></pre>\n"
|
|
56264
56228
|
}, {
|
|
56265
|
-
name: "
|
|
56266
|
-
description: "<
|
|
56229
|
+
name: "even(number)",
|
|
56230
|
+
description: "<p>Returns <code>true</code> if the given is even. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">even(number: number): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">even(5)\n// false\n\neven(2)\n// true\n</code></pre>\n"
|
|
56267
56231
|
}, {
|
|
56268
|
-
name: "
|
|
56269
|
-
description: "<
|
|
56232
|
+
name: "random number()",
|
|
56233
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Returns a random number between <code>0</code> and <code>1</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">random number(): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">random number()\n// 0.9701618132579795\n</code></pre>\n"
|
|
56270
56234
|
}, {
|
|
56271
|
-
name: "
|
|
56272
|
-
description: "<
|
|
56235
|
+
name: "before(point1, point2)",
|
|
56236
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">before(point1: Any, point2: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">before(1, 10)\n// true\n\nbefore(10, 1)\n// false\n</code></pre>\n"
|
|
56273
56237
|
}, {
|
|
56274
|
-
name: "
|
|
56275
|
-
description: "<
|
|
56238
|
+
name: "before(range, point)",
|
|
56239
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">before(range: range, point: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">before([1..5], 10)\n// true\n</code></pre>\n"
|
|
56276
56240
|
}, {
|
|
56277
|
-
name: "
|
|
56278
|
-
description: "<
|
|
56241
|
+
name: "before(point, range)",
|
|
56242
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">before(point: Any, range: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">before(1, [2..5])\n// true\n</code></pre>\n"
|
|
56279
56243
|
}, {
|
|
56280
|
-
name: "
|
|
56281
|
-
description: "<
|
|
56244
|
+
name: "before(range1, range2)",
|
|
56245
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">before(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">before([1..5], [6..10])\n// true\n\nbefore([1..5),[5..10])\n// true\n</code></pre>\n"
|
|
56282
56246
|
}, {
|
|
56283
|
-
name: "
|
|
56284
|
-
description: "<
|
|
56247
|
+
name: "after(point1, point2)",
|
|
56248
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">after(point1: Any, point2: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">after(10, 1)\n// true\n\nafter(1, 10)\n// false\n</code></pre>\n"
|
|
56285
56249
|
}, {
|
|
56286
|
-
name: "
|
|
56287
|
-
description: "<
|
|
56250
|
+
name: "after(range, point)",
|
|
56251
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">after(range: range, point: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">after([1..5], 10)\n// false\n</code></pre>\n"
|
|
56288
56252
|
}, {
|
|
56289
|
-
name: "
|
|
56290
|
-
description: "<
|
|
56253
|
+
name: "after(point, range)",
|
|
56254
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">after(point: Any, range: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">after(12, [2..5])\n// true\n</code></pre>\n"
|
|
56291
56255
|
}, {
|
|
56292
|
-
name: "
|
|
56293
|
-
description: "<
|
|
56256
|
+
name: "after(range1, range2)",
|
|
56257
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">after(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">after([6..10], [1..5])\n// true\n\nafter([5..10], [1..5))\n// true\n</code></pre>\n"
|
|
56294
56258
|
}, {
|
|
56295
|
-
name: "
|
|
56296
|
-
description: "<
|
|
56259
|
+
name: "meets(range1, range2)",
|
|
56260
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">meets(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">meets([1..5], [5..10])\n// true\n\nmeets([1..3], [4..6])\n// false\n\nmeets([1..3], [3..5])\n// true\n\nmeets([1..5], (5..8])\n// false\n</code></pre>\n"
|
|
56297
56261
|
}, {
|
|
56298
|
-
name: "
|
|
56299
|
-
description: "<
|
|
56262
|
+
name: "met by(range1, range2)",
|
|
56263
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">met by(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">met by([5..10], [1..5])\n// true\n\nmet by([3..4], [1..2])\n// false\n\nmet by([3..5], [1..3])\n// true\n\nmet by((5..8], [1..5))\n// false\n\nmet by([5..10], [1..5))\n// false\n</code></pre>\n"
|
|
56300
56264
|
}, {
|
|
56301
|
-
name: "
|
|
56302
|
-
description: "<
|
|
56265
|
+
name: "overlaps(range1, range2)",
|
|
56266
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">overlaps(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">overlaps([5..10], [1..6])\n// true\n\noverlaps((3..7], [1..4])\n// true\n\noverlaps([1..3], (3..6])\n// false\n\noverlaps((5..8], [1..5))\n// false\n\noverlaps([4..10], [1..5))\n// true\n</code></pre>\n"
|
|
56303
56267
|
}, {
|
|
56304
|
-
name: "
|
|
56305
|
-
description: "<
|
|
56268
|
+
name: "overlaps before(range1, range2)",
|
|
56269
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">overlaps before(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">overlaps before([1..5], [4..10])\n// true\n\noverlaps before([3..4], [1..2])\n// false\n\noverlaps before([1..3], (3..5])\n// false\n\noverlaps before([1..5), (3..8])\n// true\n\noverlaps before([1..5), [5..10])\n// false\n</code></pre>\n"
|
|
56306
56270
|
}, {
|
|
56307
|
-
name: "
|
|
56308
|
-
description: "<
|
|
56271
|
+
name: "overlaps after(range1, range2)",
|
|
56272
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">overlaps after(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">overlaps after([4..10], [1..5])\n// true\n\noverlaps after([3..4], [1..2])\n// false\n\noverlaps after([3..5], [1..3))\n// false\n\noverlaps after((5..8], [1..5))\n// false\n\noverlaps after([4..10], [1..5))\n// true\n</code></pre>\n"
|
|
56309
56273
|
}, {
|
|
56310
|
-
name: "
|
|
56311
|
-
description: "<
|
|
56274
|
+
name: "finishes(point, range)",
|
|
56275
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">finishes(point: Any, range: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">finishes(5, [1..5])\n// true\n\nfinishes(10, [1..7])\n// false\n</code></pre>\n"
|
|
56312
56276
|
}, {
|
|
56313
|
-
name: "
|
|
56314
|
-
description: "<
|
|
56277
|
+
name: "finishes(range1, range2)",
|
|
56278
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">finishes(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">finishes([3..5], [1..5])\n// true\n\nfinishes((1..5], [1..5))\n// false\n\nfinishes([5..10], [1..10))\n// false\n</code></pre>\n"
|
|
56315
56279
|
}, {
|
|
56316
|
-
name: "
|
|
56317
|
-
description: "<
|
|
56280
|
+
name: "finished by(range, point)",
|
|
56281
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">finished by(range: range, point: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">finished by([5..10], 10)\n// true\n\nfinished by([3..4], 2)\n// false\n</code></pre>\n"
|
|
56318
56282
|
}, {
|
|
56319
|
-
name: "
|
|
56320
|
-
description: "<p>
|
|
56283
|
+
name: "finished by(range1, range2)",
|
|
56284
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">finished by(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">finished by([1..5], [3..5])\n// true\n\nfinished by((5..8], [1..5))\n// false\n\nfinished by([5..10], (1..10))\n// false\n</code></pre>\n"
|
|
56285
|
+
}, {
|
|
56286
|
+
name: "includes(range, point)",
|
|
56287
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">includes(range: range, point: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">includes([5..10], 6)\n// true\n\nincludes([3..4], 5)\n// false\n</code></pre>\n"
|
|
56288
|
+
}, {
|
|
56289
|
+
name: "includes(range1, range2)",
|
|
56290
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">includes(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">includes([1..10], [4..6])\n// true\n\nincludes((5..8], [1..5))\n// false\n\nincludes([1..10], [1..5))\n// true\n</code></pre>\n"
|
|
56291
|
+
}, {
|
|
56292
|
+
name: "during(point, range)",
|
|
56293
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">during(point: Any, range: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">during(5, [1..10])\n// true\n\nduring(12, [1..10])\n// false\n\nduring(1, (1..10])\n// false\n</code></pre>\n"
|
|
56294
|
+
}, {
|
|
56295
|
+
name: "during(range1, range2)",
|
|
56296
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">during(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">during([4..6], [1..10))\n// true\n\nduring((1..5], (1..10])\n// true\n</code></pre>\n"
|
|
56297
|
+
}, {
|
|
56298
|
+
name: "starts(point, range)",
|
|
56299
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">starts(point: Any, range: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">starts(1, [1..5])\n// true\n\nstarts(1, (1..8])\n// false\n</code></pre>\n"
|
|
56300
|
+
}, {
|
|
56301
|
+
name: "starts(range1, range2)",
|
|
56302
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">starts(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">starts((1..5], [1..5])\n// false\n\nstarts([1..10], [1..5])\n// false\n\nstarts((1..5), (1..10))\n// true\n</code></pre>\n"
|
|
56303
|
+
}, {
|
|
56304
|
+
name: "started by(range, point)",
|
|
56305
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">started by(range: range, point: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">started by([1..10], 1)\n// true\n\nstarted by((1..10], 1)\n// false\n</code></pre>\n"
|
|
56306
|
+
}, {
|
|
56307
|
+
name: "started by(range1, range2)",
|
|
56308
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">started by(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">started by([1..10], [1..5])\n// true\n\nstarted by((1..10], [1..5))\n// false\n\nstarted by([1..10], [1..10))\n// true\n</code></pre>\n"
|
|
56309
|
+
}, {
|
|
56310
|
+
name: "coincides(point1, point2)",
|
|
56311
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">coincides(point1: Any, point2: Any): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">coincides(5, 5)\n// true\n\ncoincides(3, 4)\n// false\n</code></pre>\n"
|
|
56312
|
+
}, {
|
|
56313
|
+
name: "coincides(range1, range2)",
|
|
56314
|
+
description: "<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">coincides(range1: range, range2: range): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">coincides([1..5], [1..5])\n// true\n\ncoincides((1..5], [1..5))\n// false\n\ncoincides([1..5], [2..6])\n// false\n</code></pre>\n"
|
|
56315
|
+
}, {
|
|
56316
|
+
name: "substring(string, start position)",
|
|
56317
|
+
description: "<p>Returns a substring of the given value starting at <code>start position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">substring(string: string, start position: number): string\n</code></pre>\n<p>The <code>start position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">substring("foobar", 3)\n// "obar"\n</code></pre>\n"
|
|
56318
|
+
}, {
|
|
56319
|
+
name: "substring(string, start position, length)",
|
|
56320
|
+
description: "<p>Returns a substring of the given value starting at <code>start position</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">substring(string: string, start position: number, length: number): string\n</code></pre>\n<p>The <code>start position</code> starts at the index <code>1</code>. The last position is <code>-1</code>.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">substring("foobar", 3, 3)\n// "oba"\n</code></pre>\n"
|
|
56321
|
+
}, {
|
|
56322
|
+
name: "string length(string)",
|
|
56323
|
+
description: "<p>Returns the number of characters in the given value.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">string length(string: string): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">string length("foo")\n// 3\n</code></pre>\n"
|
|
56324
|
+
}, {
|
|
56325
|
+
name: "upper case(string)",
|
|
56326
|
+
description: "<p>Returns the given value with all characters are uppercase.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">upper case(string: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">upper case("aBc4")\n// "ABC4"\n</code></pre>\n"
|
|
56327
|
+
}, {
|
|
56328
|
+
name: "lower case(string)",
|
|
56329
|
+
description: "<p>Returns the given value with all characters are lowercase.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">lower case(string: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">lower case("aBc4")\n// "abc4"\n</code></pre>\n"
|
|
56330
|
+
}, {
|
|
56331
|
+
name: "substring before(string, match)",
|
|
56332
|
+
description: "<p>Returns a substring of the given value that contains all characters before <code>match</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">substring before(string: string, match: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">substring before("foobar", "bar")\n// "foo"\n</code></pre>\n"
|
|
56333
|
+
}, {
|
|
56334
|
+
name: "substring after(string, match)",
|
|
56335
|
+
description: "<p>Returns a substring of the given value that contains all characters after <code>match</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">substring after(string: string, match: string): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">substring after("foobar", "ob")\n// "ar"\n</code></pre>\n"
|
|
56336
|
+
}, {
|
|
56337
|
+
name: "contains(string, match)",
|
|
56338
|
+
description: "<p>Returns <code>true</code> if the given value contains the substring <code>match</code>. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">contains(string: string, match: string): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">contains("foobar", "of")\n// false\n</code></pre>\n"
|
|
56339
|
+
}, {
|
|
56340
|
+
name: "starts with(string, match)",
|
|
56341
|
+
description: "<p>Returns <code>true</code> if the given value starts with the substring <code>match</code>. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">starts with(string: string, match: string): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">starts with("foobar", "fo")\n// true\n</code></pre>\n"
|
|
56342
|
+
}, {
|
|
56343
|
+
name: "ends with(string, match)",
|
|
56344
|
+
description: "<p>Returns <code>true</code> if the given value ends with the substring <code>match</code>. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">ends with(string: string, match: string): boolean\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">ends with("foobar", "r")\n// true\n</code></pre>\n"
|
|
56345
|
+
}, {
|
|
56346
|
+
name: "matches(input, pattern)",
|
|
56347
|
+
description: "<p>Returns <code>true</code> if the given value matches the <code>pattern</code>. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">matches(input: string, pattern: string): boolean\n</code></pre>\n<p>The <code>pattern</code> is a string that contains a regular expression.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">matches("foobar", "^fo*bar")\n// true\n</code></pre>\n"
|
|
56348
|
+
}, {
|
|
56349
|
+
name: "matches(input, pattern, flags)",
|
|
56350
|
+
description: "<p>Returns <code>true</code> if the given value matches the <code>pattern</code>. Otherwise, returns <code>false</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">matches(input: string, pattern: string, flags: string): boolean\n</code></pre>\n<p>The <code>pattern</code> is a string that contains a regular expression.</p>\n<p>The <code>flags</code> can contain one or more of the following characters:</p>\n<ul>\n<li><code>s</code> (dot-all)</li>\n<li><code>m</code> (multi-line)</li>\n<li><code>i</code> (case insensitive)</li>\n<li><code>x</code> (comments)</li>\n</ul>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">matches("FooBar", "foo", "i")\n// true\n</code></pre>\n"
|
|
56351
|
+
}, {
|
|
56352
|
+
name: "replace(input, pattern, replacement)",
|
|
56353
|
+
description: "<p>Returns the resulting string after replacing all occurrences of <code>pattern</code> with <code>replacement</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">replace(input: string, pattern: string, replacement: string): string\n</code></pre>\n<p>The <code>pattern</code> is a string that contains a regular expression.</p>\n<p>The <code>replacement</code> can access the match groups by using <code>$</code> and the number of the group, for example,\n<code>$1</code> to access the first group.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">replace("abcd", "(ab)|(a)", "[1=$1][2=$2]")\n// "[1=ab][2=]cd"\n\nreplace("0123456789", "(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3")\n// "(012) 345-6789"\n</code></pre>\n"
|
|
56354
|
+
}, {
|
|
56355
|
+
name: "replace(input, pattern, replacement, flags)",
|
|
56356
|
+
description: "<p>Returns the resulting string after replacing all occurrences of <code>pattern</code> with <code>replacement</code>.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">replace(input: string, pattern: string, replacement: string, flags: string): string\n</code></pre>\n<p>The <code>pattern</code> is a string that contains a regular expression.</p>\n<p>The <code>replacement</code> can access the match groups by using <code>$</code> and the number of the group, for example,\n<code>$1</code> to access the first group.</p>\n<p>The <code>flags</code> can contain one or more of the following characters:</p>\n<ul>\n<li><code>s</code> (dot-all)</li>\n<li><code>m</code> (multi-line)</li>\n<li><code>i</code> (case insensitive)</li>\n<li><code>x</code> (comments)</li>\n</ul>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">replace("How do you feel?", "Feel", "FEEL", "i")\n// "How do you FEEL?"\n</code></pre>\n"
|
|
56357
|
+
}, {
|
|
56358
|
+
name: "split(string, delimiter)",
|
|
56359
|
+
description: "<p>Splits the given value into a list of substrings, breaking at each occurrence of the <code>delimiter</code> pattern.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">split(string: string, delimiter: string): list<string>\n</code></pre>\n<p>The <code>delimiter</code> is a string that contains a regular expression.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">split("John Doe", "\\s" )\n// ["John", "Doe"]\n\nsplit("a;b;c;;", ";")\n// ["a", "b", "c", "", ""]\n</code></pre>\n"
|
|
56360
|
+
}, {
|
|
56361
|
+
name: "extract(string, pattern)",
|
|
56362
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Returns all matches of the pattern in the given string. Returns an empty list if the pattern doesn't\nmatch.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">extract(string: string, pattern: string): list<string>\n</code></pre>\n<p>The <code>pattern</code> is a string that contains a regular expression.</p>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">extract("references are 1234, 1256, 1378", "12[0-9]*")\n// ["1234","1256"]\n</code></pre>\n"
|
|
56321
56363
|
}, {
|
|
56322
56364
|
name: "now()",
|
|
56323
|
-
description: "<p>Returns the current date and time including the timezone.</p>\n<
|
|
56365
|
+
description: "<p>Returns the current date and time including the timezone.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">now(): date and time\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">now()\n// date and time("2020-07-31T14:27:30@Europe/Berlin")\n</code></pre>\n"
|
|
56324
56366
|
}, {
|
|
56325
56367
|
name: "today()",
|
|
56326
|
-
description: "<p>Returns the current date.</p>\n<
|
|
56368
|
+
description: "<p>Returns the current date.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">today(): date\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">today()\n// date("2020-07-31")\n</code></pre>\n"
|
|
56327
56369
|
}, {
|
|
56328
|
-
name: "day of week()",
|
|
56329
|
-
description: "<p>Returns the day of the week according to the Gregorian calendar. Note that it always returns the English name of the day.</p>\n<
|
|
56370
|
+
name: "day of week(date)",
|
|
56371
|
+
description: "<p>Returns the day of the week according to the Gregorian calendar. Note that it always returns the English name of the day.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">day of week(date: date): string\n</code></pre>\n<pre><code class=\"language-feel\">day of week(date: date and time): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">day of week(date("2019-09-17"))\n// "Tuesday"\n\nday of week(date and time("2019-09-17T12:00:00"))\n// "Tuesday"\n</code></pre>\n"
|
|
56330
56372
|
}, {
|
|
56331
|
-
name: "day of year()",
|
|
56332
|
-
description: "<p>Returns the Gregorian number of the day within the year.</p>\n<
|
|
56373
|
+
name: "day of year(date)",
|
|
56374
|
+
description: "<p>Returns the Gregorian number of the day within the year.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">day of year(date: date): number\n</code></pre>\n<pre><code class=\"language-feel\">day of year(date: date and time): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">day of year(date("2019-09-17"))\n// 260\n\nday of year(date and time("2019-09-17T12:00:00"))\n// 260\n</code></pre>\n"
|
|
56333
56375
|
}, {
|
|
56334
|
-
name: "week of year()",
|
|
56335
|
-
description: "<p>Returns the Gregorian number of the week within the year, according to ISO 8601.</p>\n<
|
|
56376
|
+
name: "week of year(date)",
|
|
56377
|
+
description: "<p>Returns the Gregorian number of the week within the year, according to ISO 8601.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">week of year(date: date): number\n</code></pre>\n<pre><code class=\"language-feel\">week of year(date: date and time): number\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">week of year(date("2019-09-17"))\n// 38\n\nweek of year(date and time("2019-09-17T12:00:00"))\n// 38\n</code></pre>\n"
|
|
56336
56378
|
}, {
|
|
56337
|
-
name: "month of year()",
|
|
56338
|
-
description: "<p>Returns the month of the
|
|
56379
|
+
name: "month of year(date)",
|
|
56380
|
+
description: "<p>Returns the month of the year according to the Gregorian calendar. Note that it always returns the English name of the month.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">month of year(date: date): string\n</code></pre>\n<pre><code class=\"language-feel\">month of year(date: date and time): string\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">month of year(date("2019-09-17"))\n// "September"\n\nmonth of year(date and time("2019-09-17T12:00:00"))\n// "September"\n</code></pre>\n"
|
|
56339
56381
|
}, {
|
|
56340
|
-
name: "abs()",
|
|
56341
|
-
description: "<p>Returns the absolute value of a given duration.</p>\n<
|
|
56382
|
+
name: "abs(n)",
|
|
56383
|
+
description: "<p>Returns the absolute value of a given duration.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">abs(n: days and time duration): days and time duration\n</code></pre>\n<pre><code class=\"language-feel\">abs(n: years and months duration): years and months duration\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">abs(duration("-PT5H"))\n// "duration("PT5H")"\n\nabs(duration("PT5H"))\n// "duration("PT5H")"\n\nabs(duration("-P2M"))\n// duration("P2M")\n</code></pre>\n"
|
|
56384
|
+
}, {
|
|
56385
|
+
name: "last day of month(date)",
|
|
56386
|
+
description: "<p><em>Camunda Extension</em></p>\n<p>Takes the month of the given date or date-time value and returns the last day of this month.</p>\n<p><strong>Function signature</strong></p>\n<pre><code class=\"language-feel\">last day of month(date: date): date\n</code></pre>\n<pre><code class=\"language-feel\">last day of month(date: date and time): date\n</code></pre>\n<p><strong>Examples</strong></p>\n<pre><code class=\"language-feel\">last day of month(date("2022-10-01"))\n// date("2022-10-31"))\n\nlast day of month(date and time("2022-10-16T12:00:00"))\n// date("2022-10-31"))\n</code></pre>\n"
|
|
56342
56387
|
}];
|
|
56343
56388
|
const options = tags.map(tag => snippetCompletion(tag.name.replace('()', '(#{1})'), {
|
|
56344
56389
|
label: tag.name,
|
|
@@ -61111,6 +61156,7 @@
|
|
|
61111
61156
|
const eventBus = useService$1('eventBus'),
|
|
61112
61157
|
formEditor = useService$1('formEditor'),
|
|
61113
61158
|
formFieldRegistry = useService$1('formFieldRegistry'),
|
|
61159
|
+
formFields = useService$1('formFields'),
|
|
61114
61160
|
modeling = useService$1('modeling'),
|
|
61115
61161
|
selection = useService$1('selection');
|
|
61116
61162
|
const {
|
|
@@ -61196,6 +61242,7 @@
|
|
|
61196
61242
|
field: field
|
|
61197
61243
|
}), e$1(ContextPad, {
|
|
61198
61244
|
children: selection.isSelected(field) && field.type !== 'default' ? e$1("button", {
|
|
61245
|
+
title: getRemoveButtonTitle(field, formFields),
|
|
61199
61246
|
class: "fjs-context-pad-item",
|
|
61200
61247
|
onClick: onRemove,
|
|
61201
61248
|
children: e$1(DeleteIcon$1, {})
|
|
@@ -61516,6 +61563,13 @@
|
|
|
61516
61563
|
function defaultPropertiesPanel(propertiesPanelConfig) {
|
|
61517
61564
|
return !(propertiesPanelConfig && propertiesPanelConfig.parent);
|
|
61518
61565
|
}
|
|
61566
|
+
function getRemoveButtonTitle(formField, formFields) {
|
|
61567
|
+
const entry = findPaletteEntry(formField.type, formFields);
|
|
61568
|
+
if (!entry) {
|
|
61569
|
+
return 'Remove form field';
|
|
61570
|
+
}
|
|
61571
|
+
return `Remove ${entry.label}`;
|
|
61572
|
+
}
|
|
61519
61573
|
class Renderer {
|
|
61520
61574
|
constructor(renderConfig, eventBus, formEditor, injector) {
|
|
61521
61575
|
const {
|
|
@@ -62418,11 +62472,13 @@
|
|
|
62418
62472
|
* @param { import('../../../FormEditor').default } formEditor
|
|
62419
62473
|
* @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry
|
|
62420
62474
|
* @param { import('@bpmn-io/form-js-viewer').PathRegistry } pathRegistry
|
|
62475
|
+
* @param { import('@bpmn-io/form-js-viewer').FormLayouter } formLayouter
|
|
62421
62476
|
*/
|
|
62422
|
-
constructor(formEditor, formFieldRegistry, pathRegistry) {
|
|
62477
|
+
constructor(formEditor, formFieldRegistry, pathRegistry, formLayouter) {
|
|
62423
62478
|
this._formEditor = formEditor;
|
|
62424
62479
|
this._formFieldRegistry = formFieldRegistry;
|
|
62425
62480
|
this._pathRegistry = pathRegistry;
|
|
62481
|
+
this._formLayouter = formLayouter;
|
|
62426
62482
|
}
|
|
62427
62483
|
execute(context) {
|
|
62428
62484
|
this.moveFormField(context);
|
|
@@ -62469,8 +62525,8 @@
|
|
|
62469
62525
|
}
|
|
62470
62526
|
const formField = get(schema, [...sourcePath, sourceIndex]);
|
|
62471
62527
|
|
|
62472
|
-
// (1) Add to row
|
|
62473
|
-
updateRow(formField, targetRow ? targetRow.id :
|
|
62528
|
+
// (1) Add to row or create new one
|
|
62529
|
+
updateRow(formField, targetRow ? targetRow.id : this._formLayouter.nextRowId());
|
|
62474
62530
|
|
|
62475
62531
|
// (2) Move form field
|
|
62476
62532
|
mutate(get(schema, sourcePath), sourceIndex, targetIndex);
|
|
@@ -62495,8 +62551,8 @@
|
|
|
62495
62551
|
get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));
|
|
62496
62552
|
const targetPath = [...targetFormField._path, 'components'];
|
|
62497
62553
|
|
|
62498
|
-
// (4) Add to row
|
|
62499
|
-
updateRow(formField, targetRow ? targetRow.id :
|
|
62554
|
+
// (4) Add to row or create new one
|
|
62555
|
+
updateRow(formField, targetRow ? targetRow.id : this._formLayouter.nextRowId());
|
|
62500
62556
|
|
|
62501
62557
|
// (5) Add form field
|
|
62502
62558
|
arrayAdd$1(get(schema, targetPath), targetIndex, formField);
|
|
@@ -62519,7 +62575,7 @@
|
|
|
62519
62575
|
});
|
|
62520
62576
|
}
|
|
62521
62577
|
}
|
|
62522
|
-
MoveFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry', 'pathRegistry'];
|
|
62578
|
+
MoveFormFieldHandler.$inject = ['formEditor', 'formFieldRegistry', 'pathRegistry', 'formLayouter'];
|
|
62523
62579
|
class RemoveFormFieldHandler {
|
|
62524
62580
|
/**
|
|
62525
62581
|
* @constructor
|
|
@@ -63103,12 +63159,21 @@
|
|
|
63103
63159
|
const {
|
|
63104
63160
|
schema
|
|
63105
63161
|
} = this._formEditor._getState();
|
|
63162
|
+
const setRowIds = parent => {
|
|
63163
|
+
if (!parent.components || !parent.components.length) {
|
|
63164
|
+
return;
|
|
63165
|
+
}
|
|
63166
|
+
parent.components.forEach(formField => {
|
|
63167
|
+
const row = this._formLayouter.getRowForField(formField);
|
|
63168
|
+
updateRow(formField, row.id);
|
|
63169
|
+
|
|
63170
|
+
// handle children recursively
|
|
63171
|
+
setRowIds(formField);
|
|
63172
|
+
});
|
|
63173
|
+
};
|
|
63106
63174
|
|
|
63107
63175
|
// make sure rows are persisted in schema (e.g. for migration case)
|
|
63108
|
-
schema
|
|
63109
|
-
const row = this._formLayouter.getRowForField(formField);
|
|
63110
|
-
updateRow(formField, row.id);
|
|
63111
|
-
});
|
|
63176
|
+
setRowIds(schema);
|
|
63112
63177
|
}
|
|
63113
63178
|
}
|
|
63114
63179
|
FormLayoutUpdater.$inject = ['eventBus', 'formLayouter', 'modeling', 'formEditor'];
|
|
@@ -63240,12 +63305,60 @@
|
|
|
63240
63305
|
}
|
|
63241
63306
|
}
|
|
63242
63307
|
ValidateBehavior.$inject = ['eventBus'];
|
|
63308
|
+
class ValuesSourceBehavior extends CommandInterceptor {
|
|
63309
|
+
constructor(eventBus) {
|
|
63310
|
+
super(eventBus);
|
|
63311
|
+
|
|
63312
|
+
/**
|
|
63313
|
+
* Cleanup properties on changing the values source.
|
|
63314
|
+
*
|
|
63315
|
+
* 1) Remove other sources, e.g. set `values` => remove `valuesKey` and `valuesExpression`
|
|
63316
|
+
* 2) Remove default values for all other values sources
|
|
63317
|
+
*/
|
|
63318
|
+
this.preExecute('formField.edit', function (context) {
|
|
63319
|
+
const {
|
|
63320
|
+
properties
|
|
63321
|
+
} = context;
|
|
63322
|
+
const newProperties = {};
|
|
63323
|
+
if (!isValuesSourceUpdate(properties)) {
|
|
63324
|
+
return;
|
|
63325
|
+
}
|
|
63326
|
+
|
|
63327
|
+
// clean up value sources that are not to going to be set
|
|
63328
|
+
Object.values(VALUES_SOURCES).forEach(source => {
|
|
63329
|
+
const path = VALUES_SOURCES_PATHS[source];
|
|
63330
|
+
if (get(properties, path) == undefined) {
|
|
63331
|
+
newProperties[VALUES_SOURCES_PATHS[source]] = undefined;
|
|
63332
|
+
}
|
|
63333
|
+
});
|
|
63334
|
+
|
|
63335
|
+
// clean up default value
|
|
63336
|
+
if (get(properties, VALUES_SOURCES_PATHS[VALUES_SOURCES.EXPRESSION]) !== undefined || get(properties, VALUES_SOURCES_PATHS[VALUES_SOURCES.INPUT]) !== undefined) {
|
|
63337
|
+
newProperties['defaultValue'] = undefined;
|
|
63338
|
+
}
|
|
63339
|
+
context.properties = {
|
|
63340
|
+
...properties,
|
|
63341
|
+
...newProperties
|
|
63342
|
+
};
|
|
63343
|
+
}, true);
|
|
63344
|
+
}
|
|
63345
|
+
}
|
|
63346
|
+
ValuesSourceBehavior.$inject = ['eventBus'];
|
|
63347
|
+
|
|
63348
|
+
// helper ///////////////////
|
|
63349
|
+
|
|
63350
|
+
function isValuesSourceUpdate(properties) {
|
|
63351
|
+
return Object.values(VALUES_SOURCES_PATHS).some(path => {
|
|
63352
|
+
return get(properties, path) !== undefined;
|
|
63353
|
+
});
|
|
63354
|
+
}
|
|
63243
63355
|
var behaviorModule = {
|
|
63244
|
-
__init__: ['idBehavior', 'keyBehavior', 'pathBehavior', 'validateBehavior'],
|
|
63356
|
+
__init__: ['idBehavior', 'keyBehavior', 'pathBehavior', 'validateBehavior', 'valuesSourceBehavior'],
|
|
63245
63357
|
idBehavior: ['type', IdBehavior],
|
|
63246
63358
|
keyBehavior: ['type', KeyBehavior],
|
|
63247
63359
|
pathBehavior: ['type', PathBehavior],
|
|
63248
|
-
validateBehavior: ['type', ValidateBehavior]
|
|
63360
|
+
validateBehavior: ['type', ValidateBehavior],
|
|
63361
|
+
valuesSourceBehavior: ['type', ValuesSourceBehavior]
|
|
63249
63362
|
};
|
|
63250
63363
|
|
|
63251
63364
|
/**
|
|
@@ -63967,6 +64080,29 @@
|
|
|
63967
64080
|
fill: "none",
|
|
63968
64081
|
xmlns: "http://www.w3.org/2000/svg"
|
|
63969
64082
|
};
|
|
64083
|
+
var HelpIcon = function HelpIcon(props) {
|
|
64084
|
+
return e$1("svg", {
|
|
64085
|
+
...props,
|
|
64086
|
+
children: [e$1("path", {
|
|
64087
|
+
d: "M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2Zm0 26a12 12 0 1 1 12-12 12 12 0 0 1-12 12Z"
|
|
64088
|
+
}), e$1("circle", {
|
|
64089
|
+
cx: "16",
|
|
64090
|
+
cy: "23.5",
|
|
64091
|
+
r: "1.5"
|
|
64092
|
+
}), e$1("path", {
|
|
64093
|
+
d: "M17 8h-1.5a4.49 4.49 0 0 0-4.5 4.5v.5h2v-.5a2.5 2.5 0 0 1 2.5-2.5H17a2.5 2.5 0 0 1 0 5h-2v4.5h2V17a4.5 4.5 0 0 0 0-9Z"
|
|
64094
|
+
}), e$1("path", {
|
|
64095
|
+
style: {
|
|
64096
|
+
fill: "none"
|
|
64097
|
+
},
|
|
64098
|
+
d: "M0 0h32v32H0z"
|
|
64099
|
+
})]
|
|
64100
|
+
});
|
|
64101
|
+
};
|
|
64102
|
+
HelpIcon.defaultProps = {
|
|
64103
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
64104
|
+
viewBox: "0 0 32 32"
|
|
64105
|
+
};
|
|
63970
64106
|
function Header(props) {
|
|
63971
64107
|
const {
|
|
63972
64108
|
element,
|
|
@@ -64516,6 +64652,7 @@
|
|
|
64516
64652
|
edited: edited,
|
|
64517
64653
|
hasErrors: hasErrors
|
|
64518
64654
|
}), e$1("button", {
|
|
64655
|
+
type: "button",
|
|
64519
64656
|
title: "Toggle section",
|
|
64520
64657
|
class: "bio-properties-panel-group-header-button bio-properties-panel-arrow",
|
|
64521
64658
|
children: e$1(ArrowIcon, {
|
|
@@ -64696,6 +64833,7 @@
|
|
|
64696
64833
|
ref: inputRef,
|
|
64697
64834
|
onClick: handleClick
|
|
64698
64835
|
}), e$1("button", {
|
|
64836
|
+
type: "button",
|
|
64699
64837
|
title: "Open pop-up editor",
|
|
64700
64838
|
class: "bio-properties-panel-open-feel-popup",
|
|
64701
64839
|
onClick: () => onPopupOpen('feelers'),
|
|
@@ -64816,6 +64954,7 @@
|
|
|
64816
64954
|
ref: inputRef,
|
|
64817
64955
|
onClick: handleClick
|
|
64818
64956
|
}), e$1("button", {
|
|
64957
|
+
type: "button",
|
|
64819
64958
|
title: "Open pop-up editor",
|
|
64820
64959
|
class: "bio-properties-panel-open-feel-popup",
|
|
64821
64960
|
onClick: () => onPopupOpen(),
|
|
@@ -64860,6 +64999,7 @@
|
|
|
64860
64999
|
}
|
|
64861
65000
|
};
|
|
64862
65001
|
return e$1("button", {
|
|
65002
|
+
type: "button",
|
|
64863
65003
|
class: classNames('bio-properties-panel-feel-icon', active ? 'active' : null, feel === 'required' ? 'required' : 'optional'),
|
|
64864
65004
|
onClick: handleClick,
|
|
64865
65005
|
disabled: feel === 'required' || disabled,
|
|
@@ -65306,6 +65446,12 @@
|
|
|
65306
65446
|
domNode: popupRef.current
|
|
65307
65447
|
});
|
|
65308
65448
|
}, []);
|
|
65449
|
+
y(() => {
|
|
65450
|
+
// Set focus on editor when popup is opened
|
|
65451
|
+
if (editorRef.current) {
|
|
65452
|
+
editorRef.current.focus();
|
|
65453
|
+
}
|
|
65454
|
+
}, [editorRef]);
|
|
65309
65455
|
return e$1(Popup, {
|
|
65310
65456
|
container: container,
|
|
65311
65457
|
className: "bio-properties-panel-feel-popup",
|
|
@@ -65327,7 +65473,18 @@
|
|
|
65327
65473
|
children: [e$1(Popup.Title, {
|
|
65328
65474
|
title: title,
|
|
65329
65475
|
emit: emit,
|
|
65330
|
-
draggable: true
|
|
65476
|
+
draggable: true,
|
|
65477
|
+
children: [type === 'feel' && e$1("a", {
|
|
65478
|
+
href: "https://docs.camunda.io/docs/components/modeler/feel/what-is-feel/",
|
|
65479
|
+
target: "_blank",
|
|
65480
|
+
class: "bio-properties-panel-feel-popup__title-link",
|
|
65481
|
+
children: ["Learn FEEL expressions", e$1(HelpIcon, {})]
|
|
65482
|
+
}), type === 'feelers' && e$1("a", {
|
|
65483
|
+
href: "https://docs.camunda.io/docs/components/modeler/forms/configuration/forms-config-templating-syntax/",
|
|
65484
|
+
target: "_blank",
|
|
65485
|
+
class: "bio-properties-panel-feel-popup__title-link",
|
|
65486
|
+
children: ["Learn templating", e$1(HelpIcon, {})]
|
|
65487
|
+
})]
|
|
65331
65488
|
}), e$1(Popup.Body, {
|
|
65332
65489
|
children: e$1("div", {
|
|
65333
65490
|
onKeyDownCapture: onKeyDownCapture,
|
|
@@ -65359,6 +65516,7 @@
|
|
|
65359
65516
|
})
|
|
65360
65517
|
}), e$1(Popup.Footer, {
|
|
65361
65518
|
children: e$1("button", {
|
|
65519
|
+
type: "button",
|
|
65362
65520
|
onClick: onClose,
|
|
65363
65521
|
title: "Close pop-up editor",
|
|
65364
65522
|
class: "bio-properties-panel-feel-popup__close-btn",
|
|
@@ -66600,12 +66758,14 @@
|
|
|
66600
66758
|
class: classNames('bio-properties-panel-collapsible-entry-header-title', !label && 'empty'),
|
|
66601
66759
|
children: label || placeholderLabel
|
|
66602
66760
|
}), e$1("button", {
|
|
66761
|
+
type: "button",
|
|
66603
66762
|
title: "Toggle list item",
|
|
66604
66763
|
class: "bio-properties-panel-arrow bio-properties-panel-collapsible-entry-arrow",
|
|
66605
66764
|
children: e$1(ArrowIcon, {
|
|
66606
66765
|
class: open ? 'bio-properties-panel-arrow-down' : 'bio-properties-panel-arrow-right'
|
|
66607
66766
|
})
|
|
66608
66767
|
}), remove ? e$1("button", {
|
|
66768
|
+
type: "button",
|
|
66609
66769
|
title: "Delete item",
|
|
66610
66770
|
class: "bio-properties-panel-remove-entry",
|
|
66611
66771
|
onClick: remove,
|
|
@@ -66807,6 +66967,7 @@
|
|
|
66807
66967
|
}), e$1("div", {
|
|
66808
66968
|
class: "bio-properties-panel-group-header-buttons",
|
|
66809
66969
|
children: [add ? e$1("button", {
|
|
66970
|
+
type: "button",
|
|
66810
66971
|
title: "Create new list item",
|
|
66811
66972
|
class: "bio-properties-panel-group-header-button bio-properties-panel-add-entry",
|
|
66812
66973
|
onClick: handleAddClick,
|
|
@@ -66819,6 +66980,7 @@
|
|
|
66819
66980
|
class: classNames('bio-properties-panel-list-badge', hasError ? 'bio-properties-panel-list-badge--error' : ''),
|
|
66820
66981
|
children: items.length
|
|
66821
66982
|
}) : null, hasItems ? e$1("button", {
|
|
66983
|
+
type: "button",
|
|
66822
66984
|
title: "Toggle section",
|
|
66823
66985
|
class: "bio-properties-panel-group-header-button bio-properties-panel-arrow",
|
|
66824
66986
|
children: e$1(ArrowIcon, {
|
|
@@ -69491,11 +69653,7 @@
|
|
|
69491
69653
|
const setValue = value => {
|
|
69492
69654
|
let newField = field;
|
|
69493
69655
|
const newProperties = {};
|
|
69494
|
-
|
|
69495
|
-
// Clear all values source definitions and default the newly selected one
|
|
69496
|
-
const newValue = value === source ? VALUES_SOURCES_DEFAULTS[source] : undefined;
|
|
69497
|
-
newProperties[VALUES_SOURCES_PATHS[source]] = newValue;
|
|
69498
|
-
});
|
|
69656
|
+
newProperties[VALUES_SOURCES_PATHS[value]] = VALUES_SOURCES_DEFAULTS[value];
|
|
69499
69657
|
newField = editField(field, newProperties);
|
|
69500
69658
|
return newField;
|
|
69501
69659
|
};
|
|
@@ -72677,7 +72835,8 @@
|
|
|
72677
72835
|
const dataEditor = dataEditorRef.current = new JSONEditor({
|
|
72678
72836
|
value: toString(data),
|
|
72679
72837
|
contentAttributes: {
|
|
72680
|
-
'aria-label': 'Form Input'
|
|
72838
|
+
'aria-label': 'Form Input',
|
|
72839
|
+
tabIndex: 0
|
|
72681
72840
|
},
|
|
72682
72841
|
placeholder: createDataEditorPlaceholder()
|
|
72683
72842
|
});
|
|
@@ -72685,7 +72844,8 @@
|
|
|
72685
72844
|
readonly: true,
|
|
72686
72845
|
value: toString(resultData),
|
|
72687
72846
|
contentAttributes: {
|
|
72688
|
-
'aria-label': 'Form Output'
|
|
72847
|
+
'aria-label': 'Form Output',
|
|
72848
|
+
tabIndex: 0
|
|
72689
72849
|
}
|
|
72690
72850
|
});
|
|
72691
72851
|
const form = formRef.current = new Form({
|