camunda-bpmn-js 5.6.0 → 5.6.2

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.
@@ -40735,6 +40735,7 @@
40735
40735
 
40736
40736
  if (
40737
40737
  !is$1(newShape, 'bpmn:SubProcess') ||
40738
+ is$1(newShape,'bpmn:AdHocSubProcess') ||
40738
40739
  ! (is$1(oldShape, 'bpmn:Task') || is$1(oldShape, 'bpmn:CallActivity')) ||
40739
40740
  !isExpanded(newShape)
40740
40741
  ) {
@@ -46255,6 +46256,7 @@
46255
46256
 
46256
46257
  /**
46257
46258
  * @typedef {import('didi').Injector} Injector
46259
+ * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
46258
46260
  *
46259
46261
  * @typedef {import('../../model/Types').Shape} Shape
46260
46262
  *
@@ -46264,13 +46266,17 @@
46264
46266
 
46265
46267
  /**
46266
46268
  * @param {Injector} injector
46269
+ * @param {Canvas} canvas
46267
46270
  */
46268
- function BpmnSpaceTool(injector) {
46271
+ function BpmnSpaceTool(injector, canvas) {
46269
46272
  injector.invoke(SpaceTool, this);
46273
+
46274
+ this._canvas = canvas;
46270
46275
  }
46271
46276
 
46272
46277
  BpmnSpaceTool.$inject = [
46273
- 'injector'
46278
+ 'injector',
46279
+ 'canvas'
46274
46280
  ];
46275
46281
 
46276
46282
  e$5(BpmnSpaceTool, SpaceTool);
@@ -46284,7 +46290,26 @@
46284
46290
  * @return {Object}
46285
46291
  */
46286
46292
  BpmnSpaceTool.prototype.calculateAdjustments = function(elements, axis, delta, start) {
46287
- var adjustments = SpaceTool.prototype.calculateAdjustments.call(this, elements, axis, delta, start);
46293
+
46294
+ var canvasRoot = this._canvas.getRootElement(),
46295
+ spaceRoot = elements[0] === canvasRoot ? null : elements[0],
46296
+ enclosedArtifacts = [];
46297
+
46298
+ // ensure
46299
+ if (spaceRoot) {
46300
+ enclosedArtifacts = values(
46301
+ getEnclosedElements(
46302
+ canvasRoot.children.filter(
46303
+ (child) => is$1(child, 'bpmn:Artifact')
46304
+ ),
46305
+ getBBox(spaceRoot)
46306
+ )
46307
+ );
46308
+ }
46309
+
46310
+ const elementsToMove = [ ...elements, ...enclosedArtifacts ];
46311
+
46312
+ var adjustments = SpaceTool.prototype.calculateAdjustments.call(this, elementsToMove, axis, delta, start);
46288
46313
 
46289
46314
  // do not resize:
46290
46315
  //
@@ -61627,6 +61652,7 @@
61627
61652
  */
61628
61653
 
61629
61654
  var COLLAB_ERR_MSG = 'flow elements must be children of pools/participants';
61655
+ var DATA_OBJECT_ERR_MSG = 'Data object must be placed within a pool/participant.';
61630
61656
 
61631
61657
  /**
61632
61658
  * @param {EventBus} eventBus
@@ -61652,8 +61678,12 @@
61652
61678
  shape = context.shape,
61653
61679
  target = context.target;
61654
61680
 
61655
- if (is$1(target, 'bpmn:Collaboration') && is$1(shape, 'bpmn:FlowNode')) {
61656
- showError(event, translate(COLLAB_ERR_MSG));
61681
+ if (is$1(target, 'bpmn:Collaboration')) {
61682
+ if (is$1(shape, 'bpmn:FlowNode')) {
61683
+ showError(event, translate(COLLAB_ERR_MSG));
61684
+ } else if (is$1(shape, 'bpmn:DataObjectReference')) {
61685
+ showError(event, translate(DATA_OBJECT_ERR_MSG));
61686
+ }
61657
61687
  }
61658
61688
  });
61659
61689
 
@@ -99475,19 +99505,19 @@
99475
99505
  errors: {}
99476
99506
  });
99477
99507
 
99478
- /**
99479
- * @typedef {Function} <propertiesPanel.showEntry> callback
99480
- *
99481
- * @example
99482
- *
99483
- * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {
99484
- * // ...
99485
- * });
99486
- *
99487
- * @param {Object} context
99488
- * @param {boolean} [context.focus]
99489
- *
99490
- * @returns void
99508
+ /**
99509
+ * @typedef {Function} <propertiesPanel.showEntry> callback
99510
+ *
99511
+ * @example
99512
+ *
99513
+ * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {
99514
+ * // ...
99515
+ * });
99516
+ *
99517
+ * @param {Object} context
99518
+ * @param {boolean} [context.focus]
99519
+ *
99520
+ * @returns void
99491
99521
  */
99492
99522
 
99493
99523
  const EventContext = F$2({
@@ -99506,20 +99536,20 @@
99506
99536
  getTooltipForId: () => {}
99507
99537
  });
99508
99538
 
99509
- /**
99510
- * Accesses the global TooltipContext and returns a tooltip for a given id and element.
99511
- *
99512
- * @example
99513
- * ```jsx
99514
- * function TextField(props) {
99515
- * const tooltip = useTooltipContext('input1', element);
99516
- * }
99517
- * ```
99518
- *
99519
- * @param {string} id
99520
- * @param {object} element
99521
- *
99522
- * @returns {string}
99539
+ /**
99540
+ * Accesses the global TooltipContext and returns a tooltip for a given id and element.
99541
+ *
99542
+ * @example
99543
+ * ```jsx
99544
+ * function TextField(props) {
99545
+ * const tooltip = useTooltipContext('input1', element);
99546
+ * }
99547
+ * ```
99548
+ *
99549
+ * @param {string} id
99550
+ * @param {object} element
99551
+ *
99552
+ * @returns {string}
99523
99553
  */
99524
99554
  function useTooltipContext(id, element) {
99525
99555
  const {
@@ -99541,7 +99571,7 @@
99541
99571
  return u(Tooltip, {
99542
99572
  ...props,
99543
99573
  value: value,
99544
- forId: prefixId$9(forId)
99574
+ forId: `bio-properties-panel-${forId}`
99545
99575
  });
99546
99576
  }
99547
99577
  function Tooltip(props) {
@@ -99552,71 +99582,52 @@
99552
99582
  direction = 'right',
99553
99583
  position
99554
99584
  } = props;
99555
- const [visible, setShow] = h(false);
99556
- const [focusedViaKeyboard, setFocusedViaKeyboard] = h(false);
99585
+ const [visible, setVisible] = h(false);
99586
+
99587
+ // Tooltip will be shown after SHOW_DELAY ms from hovering over the source element.
99588
+ const SHOW_DELAY = 200;
99557
99589
  let timeout = null;
99558
99590
  const wrapperRef = _(null);
99559
99591
  const tooltipRef = _(null);
99560
- const showTooltip = async event => {
99561
- const show = () => setShow(true);
99562
- if (!visible && !timeout) {
99563
- if (event instanceof MouseEvent) {
99564
- timeout = setTimeout(show, 200);
99565
- } else {
99566
- show();
99567
- setFocusedViaKeyboard(true);
99568
- }
99592
+ const show = (_, delay) => {
99593
+ if (visible) return;
99594
+ if (delay) {
99595
+ timeout = setTimeout(() => {
99596
+ setVisible(true);
99597
+ }, SHOW_DELAY);
99598
+ } else {
99599
+ setVisible(true);
99569
99600
  }
99570
99601
  };
99571
- const hideTooltip = () => {
99572
- setShow(false);
99573
- setFocusedViaKeyboard(false);
99574
- };
99575
- const hideTooltipViaEscape = e => {
99576
- e.code === 'Escape' && hideTooltip();
99602
+ const hide = () => {
99603
+ clearTimeout(timeout);
99604
+ setVisible(false);
99577
99605
  };
99578
- const isTooltipHovered = ({
99579
- x,
99580
- y
99606
+ const handleMouseLeave = ({
99607
+ relatedTarget
99581
99608
  }) => {
99582
- const tooltip = tooltipRef.current;
99583
- const wrapper = wrapperRef.current;
99584
- return tooltip && (inBounds(x, y, wrapper.getBoundingClientRect()) || inBounds(x, y, tooltip.getBoundingClientRect()));
99609
+ // Don't hide the tooltip when moving mouse between the wrapper and the tooltip.
99610
+ if (relatedTarget === wrapperRef.current || relatedTarget === tooltipRef.current || relatedTarget?.parentElement === tooltipRef.current) {
99611
+ return;
99612
+ }
99613
+ hide();
99585
99614
  };
99586
- p(() => {
99615
+ const handleFocusOut = e => {
99587
99616
  const {
99588
- current
99589
- } = wrapperRef;
99590
- if (!current) {
99617
+ target
99618
+ } = e;
99619
+
99620
+ // Don't hide the tooltip if the wrapper or the tooltip itself is clicked.
99621
+ const isHovered = target.matches(':hover') || tooltipRef.current?.matches(':hover');
99622
+ if (target === wrapperRef.current && isHovered) {
99623
+ e.stopPropagation();
99591
99624
  return;
99592
99625
  }
99593
- const hideHoveredTooltip = e => {
99594
- const isFocused = document.activeElement === wrapperRef.current || document.activeElement.closest('.bio-properties-panel-tooltip');
99595
- if (visible && !isTooltipHovered({
99596
- x: e.x,
99597
- y: e.y
99598
- }) && !(isFocused && focusedViaKeyboard)) {
99599
- hideTooltip();
99600
- }
99601
- };
99602
- const hideFocusedTooltip = e => {
99603
- const {
99604
- relatedTarget
99605
- } = e;
99606
- const isTooltipChild = el => !!el.closest('.bio-properties-panel-tooltip');
99607
- if (visible && !isHovered(wrapperRef.current) && relatedTarget && !isTooltipChild(relatedTarget)) {
99608
- hideTooltip();
99609
- }
99610
- };
99611
- document.addEventListener('wheel', hideHoveredTooltip);
99612
- document.addEventListener('focusout', hideFocusedTooltip);
99613
- document.addEventListener('mousemove', hideHoveredTooltip);
99614
- return () => {
99615
- document.removeEventListener('wheel', hideHoveredTooltip);
99616
- document.removeEventListener('mousemove', hideHoveredTooltip);
99617
- document.removeEventListener('focusout', hideFocusedTooltip);
99618
- };
99619
- }, [wrapperRef.current, visible, focusedViaKeyboard]);
99626
+ hide();
99627
+ };
99628
+ const hideTooltipViaEscape = e => {
99629
+ e.code === 'Escape' && hide();
99630
+ };
99620
99631
  const renderTooltip = () => {
99621
99632
  return u("div", {
99622
99633
  class: `bio-properties-panel-tooltip ${direction}`,
@@ -99626,6 +99637,7 @@
99626
99637
  style: position || getTooltipPosition(wrapperRef.current),
99627
99638
  ref: tooltipRef,
99628
99639
  onClick: e => e.stopPropagation(),
99640
+ onMouseLeave: handleMouseLeave,
99629
99641
  children: [u("div", {
99630
99642
  class: "bio-properties-panel-tooltip-content",
99631
99643
  children: value
@@ -99638,54 +99650,38 @@
99638
99650
  class: "bio-properties-panel-tooltip-wrapper",
99639
99651
  tabIndex: "0",
99640
99652
  ref: wrapperRef,
99641
- onMouseEnter: showTooltip,
99642
- onMouseLeave: () => {
99643
- clearTimeout(timeout);
99644
- timeout = null;
99645
- },
99646
- onFocus: showTooltip,
99653
+ onMouseEnter: e => show(e, true),
99654
+ onMouseLeave: handleMouseLeave,
99655
+ onFocus: show,
99656
+ onBlur: handleFocusOut,
99647
99657
  onKeyDown: hideTooltipViaEscape,
99648
99658
  children: [props.children, visible ? parent ? j(renderTooltip(), parent.current) : renderTooltip() : null]
99649
99659
  });
99650
99660
  }
99651
99661
 
99652
99662
  // helper
99653
- function inBounds(x, y, bounds) {
99654
- const {
99655
- top,
99656
- right,
99657
- bottom,
99658
- left
99659
- } = bounds;
99660
- return x >= left && x <= right && y >= top && y <= bottom;
99661
- }
99663
+
99662
99664
  function getTooltipPosition(refElement) {
99663
99665
  const refPosition = refElement.getBoundingClientRect();
99664
99666
  const right = `calc(100% - ${refPosition.x}px)`;
99665
99667
  const top = `${refPosition.top - 10}px`;
99666
99668
  return `right: ${right}; top: ${top};`;
99667
99669
  }
99668
- function isHovered(element) {
99669
- return element.matches(':hover');
99670
- }
99671
- function prefixId$9(id) {
99672
- return `bio-properties-panel-${id}`;
99673
- }
99674
99670
 
99675
- /**
99676
- * Accesses the global DescriptionContext and returns a description for a given id and element.
99677
- *
99678
- * @example
99679
- * ```jsx
99680
- * function TextField(props) {
99681
- * const description = useDescriptionContext('input1', element);
99682
- * }
99683
- * ```
99684
- *
99685
- * @param {string} id
99686
- * @param {object} element
99687
- *
99688
- * @returns {string}
99671
+ /**
99672
+ * Accesses the global DescriptionContext and returns a description for a given id and element.
99673
+ *
99674
+ * @example
99675
+ * ```jsx
99676
+ * function TextField(props) {
99677
+ * const description = useDescriptionContext('input1', element);
99678
+ * }
99679
+ * ```
99680
+ *
99681
+ * @param {string} id
99682
+ * @param {object} element
99683
+ *
99684
+ * @returns {string}
99689
99685
  */
99690
99686
  function useDescriptionContext(id, element) {
99691
99687
  const {
@@ -99707,11 +99703,11 @@
99707
99703
  return errors;
99708
99704
  }
99709
99705
 
99710
- /**
99711
- * Subscribe to an event immediately. Update subscription after inputs changed.
99712
- *
99713
- * @param {string} event
99714
- * @param {Function} callback
99706
+ /**
99707
+ * Subscribe to an event immediately. Update subscription after inputs changed.
99708
+ *
99709
+ * @param {string} event
99710
+ * @param {Function} callback
99715
99711
  */
99716
99712
  function useEvent(event, callback, eventBus) {
99717
99713
  const eventContext = q$1(EventContext);
@@ -99741,20 +99737,20 @@
99741
99737
  }, [callback, event, eventBus]);
99742
99738
  }
99743
99739
 
99744
- /**
99745
- * Creates a state that persists in the global LayoutContext.
99746
- *
99747
- * @example
99748
- * ```jsx
99749
- * function Group(props) {
99750
- * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);
99751
- * }
99752
- * ```
99753
- *
99754
- * @param {(string|number)[]} path
99755
- * @param {any} [defaultValue]
99756
- *
99757
- * @returns {[ any, Function ]}
99740
+ /**
99741
+ * Creates a state that persists in the global LayoutContext.
99742
+ *
99743
+ * @example
99744
+ * ```jsx
99745
+ * function Group(props) {
99746
+ * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);
99747
+ * }
99748
+ * ```
99749
+ *
99750
+ * @param {(string|number)[]} path
99751
+ * @param {any} [defaultValue]
99752
+ *
99753
+ * @returns {[ any, Function ]}
99758
99754
  */
99759
99755
  function useLayoutState(path, defaultValue) {
99760
99756
  const {
@@ -99768,11 +99764,11 @@
99768
99764
  return [layoutForKey, setState];
99769
99765
  }
99770
99766
 
99771
- /**
99772
- * @pinussilvestrus: we need to introduce our own hook to persist the previous
99773
- * state on updates.
99774
- *
99775
- * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state
99767
+ /**
99768
+ * @pinussilvestrus: we need to introduce our own hook to persist the previous
99769
+ * state on updates.
99770
+ *
99771
+ * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state
99776
99772
  */
99777
99773
 
99778
99774
  function usePrevious(value) {
@@ -99783,12 +99779,12 @@
99783
99779
  return ref.current;
99784
99780
  }
99785
99781
 
99786
- /**
99787
- * Subscribe to `propertiesPanel.showEntry`.
99788
- *
99789
- * @param {string} id
99790
- *
99791
- * @returns {import('preact').Ref}
99782
+ /**
99783
+ * Subscribe to `propertiesPanel.showEntry`.
99784
+ *
99785
+ * @param {string} id
99786
+ *
99787
+ * @returns {import('preact').Ref}
99792
99788
  */
99793
99789
  function useShowEntryEvent(id) {
99794
99790
  const {
@@ -99819,20 +99815,20 @@
99819
99815
  return ref;
99820
99816
  }
99821
99817
 
99822
- /**
99823
- * @callback setSticky
99824
- * @param {boolean} value
99818
+ /**
99819
+ * @callback setSticky
99820
+ * @param {boolean} value
99825
99821
  */
99826
99822
 
99827
- /**
99828
- * Use IntersectionObserver to identify when DOM element is in sticky mode.
99829
- * If sticky is observered setSticky(true) will be called.
99830
- * If sticky mode is left, setSticky(false) will be called.
99831
- *
99832
- *
99833
- * @param {Object} ref
99834
- * @param {string} scrollContainerSelector
99835
- * @param {setSticky} setSticky
99823
+ /**
99824
+ * Use IntersectionObserver to identify when DOM element is in sticky mode.
99825
+ * If sticky is observered setSticky(true) will be called.
99826
+ * If sticky mode is left, setSticky(false) will be called.
99827
+ *
99828
+ *
99829
+ * @param {Object} ref
99830
+ * @param {string} scrollContainerSelector
99831
+ * @param {setSticky} setSticky
99836
99832
  */
99837
99833
  function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {
99838
99834
  const [scrollContainer, setScrollContainer] = h(query(scrollContainerSelector));
@@ -99886,19 +99882,19 @@
99886
99882
  }, [ref.current, scrollContainer, setSticky]);
99887
99883
  }
99888
99884
 
99889
- /**
99890
- * Creates a static function reference with changing body.
99891
- * This is necessary when external libraries require a callback function
99892
- * that has references to state variables.
99893
- *
99894
- * Usage:
99895
- * const callback = useStaticCallback((val) => {val === currentState});
99896
- *
99897
- * The `callback` reference is static and can be safely used in external
99898
- * libraries or as a prop that does not cause rerendering of children.
99899
- *
99900
- * @param {Function} callback function with changing reference
99901
- * @returns {Function} static function reference
99885
+ /**
99886
+ * Creates a static function reference with changing body.
99887
+ * This is necessary when external libraries require a callback function
99888
+ * that has references to state variables.
99889
+ *
99890
+ * Usage:
99891
+ * const callback = useStaticCallback((val) => {val === currentState});
99892
+ *
99893
+ * The `callback` reference is static and can be safely used in external
99894
+ * libraries or as a prop that does not cause rerendering of children.
99895
+ *
99896
+ * @param {Function} callback function with changing reference
99897
+ * @returns {Function} static function reference
99902
99898
  */
99903
99899
  function useStaticCallback(callback) {
99904
99900
  const callbackRef = _(callback);
@@ -100041,13 +100037,13 @@
100041
100037
  return null;
100042
100038
  }
100043
100039
 
100044
- /**
100045
- * @typedef { {
100046
- * text: (element: object) => string,
100047
- * icon?: (element: Object) => import('preact').Component
100048
- * } } PlaceholderDefinition
100049
- *
100050
- * @param { PlaceholderDefinition } props
100040
+ /**
100041
+ * @typedef { {
100042
+ * text: (element: object) => string,
100043
+ * icon?: (element: Object) => import('preact').Component
100044
+ * } } PlaceholderDefinition
100045
+ *
100046
+ * @param { PlaceholderDefinition } props
100051
100047
  */
100052
100048
  function Placeholder(props) {
100053
100049
  const {
@@ -100086,9 +100082,9 @@
100086
100082
 
100087
100083
  const noop$6 = () => {};
100088
100084
 
100089
- /**
100090
- * Buffer `.focus()` calls while the editor is not initialized.
100091
- * Set Focus inside when the editor is ready.
100085
+ /**
100086
+ * Buffer `.focus()` calls while the editor is not initialized.
100087
+ * Set Focus inside when the editor is ready.
100092
100088
  */
100093
100089
  const useBufferedFocus$1 = function (editor, ref) {
100094
100090
  const [buffer, setBuffer] = h(undefined);
@@ -100189,9 +100185,9 @@
100189
100185
 
100190
100186
  const noop$5 = () => {};
100191
100187
 
100192
- /**
100193
- * Buffer `.focus()` calls while the editor is not initialized.
100194
- * Set Focus inside when the editor is ready.
100188
+ /**
100189
+ * Buffer `.focus()` calls while the editor is not initialized.
100190
+ * Set Focus inside when the editor is ready.
100195
100191
  */
100196
100192
  const useBufferedFocus = function (editor, ref) {
100197
100193
  const [buffer, setBuffer] = h(undefined);
@@ -100240,10 +100236,10 @@
100240
100236
  p(() => {
100241
100237
  let editor;
100242
100238
 
100243
- /* Trigger FEEL toggle when
100244
- *
100245
- * - `backspace` is pressed
100246
- * - AND the cursor is at the beginning of the input
100239
+ /* Trigger FEEL toggle when
100240
+ *
100241
+ * - `backspace` is pressed
100242
+ * - AND the cursor is at the beginning of the input
100247
100243
  */
100248
100244
  const onKeyDown = e => {
100249
100245
  if (e.key !== 'Backspace' || !editor) {
@@ -100325,22 +100321,22 @@
100325
100321
  source: null
100326
100322
  });
100327
100323
 
100328
- /**
100329
- * Add a dragger that calls back the passed function with
100330
- * { event, delta } on drag.
100331
- *
100332
- * @example
100333
- *
100334
- * function dragMove(event, delta) {
100335
- * // we are dragging (!!)
100336
- * }
100337
- *
100338
- * domElement.addEventListener('dragstart', dragger(dragMove));
100339
- *
100340
- * @param {Function} fn
100341
- * @param {Element} [dragPreview]
100342
- *
100343
- * @return {Function} drag start callback function
100324
+ /**
100325
+ * Add a dragger that calls back the passed function with
100326
+ * { event, delta } on drag.
100327
+ *
100328
+ * @example
100329
+ *
100330
+ * function dragMove(event, delta) {
100331
+ * // we are dragging (!!)
100332
+ * }
100333
+ *
100334
+ * domElement.addEventListener('dragstart', dragger(dragMove));
100335
+ *
100336
+ * @param {Function} fn
100337
+ * @param {Element} [dragPreview]
100338
+ *
100339
+ * @return {Function} drag start callback function
100344
100340
  */
100345
100341
  function createDragger(fn, dragPreview) {
100346
100342
  let self;
@@ -100395,23 +100391,23 @@
100395
100391
 
100396
100392
  const noop$3 = () => {};
100397
100393
 
100398
- /**
100399
- * A generic popup component.
100400
- *
100401
- * @param {Object} props
100402
- * @param {HTMLElement} [props.container]
100403
- * @param {string} [props.className]
100404
- * @param {boolean} [props.delayInitialFocus]
100405
- * @param {{x: number, y: number}} [props.position]
100406
- * @param {number} [props.width]
100407
- * @param {number} [props.height]
100408
- * @param {Function} props.onClose
100409
- * @param {Function} [props.onPostActivate]
100410
- * @param {Function} [props.onPostDeactivate]
100411
- * @param {boolean} [props.returnFocus]
100412
- * @param {boolean} [props.closeOnEscape]
100413
- * @param {string} props.title
100414
- * @param {Ref} [ref]
100394
+ /**
100395
+ * A generic popup component.
100396
+ *
100397
+ * @param {Object} props
100398
+ * @param {HTMLElement} [props.container]
100399
+ * @param {string} [props.className]
100400
+ * @param {boolean} [props.delayInitialFocus]
100401
+ * @param {{x: number, y: number}} [props.position]
100402
+ * @param {number} [props.width]
100403
+ * @param {number} [props.height]
100404
+ * @param {Function} props.onClose
100405
+ * @param {Function} [props.onPostActivate]
100406
+ * @param {Function} [props.onPostDeactivate]
100407
+ * @param {boolean} [props.returnFocus]
100408
+ * @param {boolean} [props.closeOnEscape]
100409
+ * @param {string} props.title
100410
+ * @param {Ref} [ref]
100415
100411
  */
100416
100412
  function PopupComponent(props, globalRef) {
100417
100413
  const {
@@ -100630,12 +100626,12 @@
100630
100626
  const FEEL_POPUP_WIDTH = 700;
100631
100627
  const FEEL_POPUP_HEIGHT = 250;
100632
100628
 
100633
- /**
100634
- * FEEL popup component, built as a singleton. Emits lifecycle events as follows:
100635
- * - `feelPopup.open` - fired before the popup is mounted
100636
- * - `feelPopup.opened` - fired after the popup is mounted. Event context contains the DOM node of the popup
100637
- * - `feelPopup.close` - fired before the popup is unmounted. Event context contains the DOM node of the popup
100638
- * - `feelPopup.closed` - fired after the popup is unmounted
100629
+ /**
100630
+ * FEEL popup component, built as a singleton. Emits lifecycle events as follows:
100631
+ * - `feelPopup.open` - fired before the popup is mounted
100632
+ * - `feelPopup.opened` - fired after the popup is mounted. Event context contains the DOM node of the popup
100633
+ * - `feelPopup.close` - fired before the popup is unmounted. Event context contains the DOM node of the popup
100634
+ * - `feelPopup.closed` - fired after the popup is unmounted
100639
100635
  */
100640
100636
  function FEELPopupRoot(props) {
100641
100637
  const {
@@ -100861,11 +100857,11 @@
100861
100857
  return element.closest('.cm-editor').querySelector('.cm-tooltip-autocomplete');
100862
100858
  }
100863
100859
 
100864
- /**
100865
- * This hook behaves like useEffect, but does not trigger on the first render.
100866
- *
100867
- * @param {Function} effect
100868
- * @param {Array} deps
100860
+ /**
100861
+ * This hook behaves like useEffect, but does not trigger on the first render.
100862
+ *
100863
+ * @param {Function} effect
100864
+ * @param {Array} deps
100869
100865
  */
100870
100866
  function useUpdateEffect(effect, deps) {
100871
100867
  const isMounted = _(false);
@@ -101230,85 +101226,85 @@
101230
101226
  const DEFAULT_DESCRIPTION = {};
101231
101227
  const DEFAULT_TOOLTIP = {};
101232
101228
 
101233
- /**
101234
- * @typedef { {
101235
- * component: import('preact').Component,
101236
- * id: String,
101237
- * isEdited?: Function
101238
- * } } EntryDefinition
101239
- *
101240
- * @typedef { {
101241
- * autoFocusEntry: String,
101242
- * autoOpen?: Boolean,
101243
- * entries: Array<EntryDefinition>,
101244
- * id: String,
101245
- * label: String,
101246
- * remove: (event: MouseEvent) => void
101247
- * } } ListItemDefinition
101248
- *
101249
- * @typedef { {
101250
- * add: (event: MouseEvent) => void,
101251
- * component: import('preact').Component,
101252
- * element: Object,
101253
- * id: String,
101254
- * items: Array<ListItemDefinition>,
101255
- * label: String,
101256
- * shouldOpen?: Boolean
101257
- * } } ListGroupDefinition
101258
- *
101259
- * @typedef { {
101260
- * component?: import('preact').Component,
101261
- * entries: Array<EntryDefinition>,
101262
- * id: String,
101263
- * label: String,
101264
- * shouldOpen?: Boolean
101265
- * } } GroupDefinition
101266
- *
101267
- * @typedef { {
101268
- * [id: String]: GetDescriptionFunction
101269
- * } } DescriptionConfig
101270
- *
101271
- * @typedef { {
101272
- * [id: String]: GetTooltipFunction
101273
- * } } TooltipConfig
101274
- *
101275
- * @callback { {
101276
- * @param {string} id
101277
- * @param {Object} element
101278
- * @returns {string}
101279
- * } } GetDescriptionFunction
101280
- *
101281
- * @callback { {
101282
- * @param {string} id
101283
- * @param {Object} element
101284
- * @returns {string}
101285
- * } } GetTooltipFunction
101286
- *
101287
- * @typedef { {
101288
- * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,
101289
- * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition
101290
- * } } PlaceholderProvider
101291
- *
101229
+ /**
101230
+ * @typedef { {
101231
+ * component: import('preact').Component,
101232
+ * id: String,
101233
+ * isEdited?: Function
101234
+ * } } EntryDefinition
101235
+ *
101236
+ * @typedef { {
101237
+ * autoFocusEntry: String,
101238
+ * autoOpen?: Boolean,
101239
+ * entries: Array<EntryDefinition>,
101240
+ * id: String,
101241
+ * label: String,
101242
+ * remove: (event: MouseEvent) => void
101243
+ * } } ListItemDefinition
101244
+ *
101245
+ * @typedef { {
101246
+ * add: (event: MouseEvent) => void,
101247
+ * component: import('preact').Component,
101248
+ * element: Object,
101249
+ * id: String,
101250
+ * items: Array<ListItemDefinition>,
101251
+ * label: String,
101252
+ * shouldOpen?: Boolean
101253
+ * } } ListGroupDefinition
101254
+ *
101255
+ * @typedef { {
101256
+ * component?: import('preact').Component,
101257
+ * entries: Array<EntryDefinition>,
101258
+ * id: String,
101259
+ * label: String,
101260
+ * shouldOpen?: Boolean
101261
+ * } } GroupDefinition
101262
+ *
101263
+ * @typedef { {
101264
+ * [id: String]: GetDescriptionFunction
101265
+ * } } DescriptionConfig
101266
+ *
101267
+ * @typedef { {
101268
+ * [id: String]: GetTooltipFunction
101269
+ * } } TooltipConfig
101270
+ *
101271
+ * @callback { {
101272
+ * @param {string} id
101273
+ * @param {Object} element
101274
+ * @returns {string}
101275
+ * } } GetDescriptionFunction
101276
+ *
101277
+ * @callback { {
101278
+ * @param {string} id
101279
+ * @param {Object} element
101280
+ * @returns {string}
101281
+ * } } GetTooltipFunction
101282
+ *
101283
+ * @typedef { {
101284
+ * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,
101285
+ * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition
101286
+ * } } PlaceholderProvider
101287
+ *
101292
101288
  */
101293
101289
 
101294
- /**
101295
- * A basic properties panel component. Describes *how* content will be rendered, accepts
101296
- * data from implementor to describe *what* will be rendered.
101297
- *
101298
- * @param {Object} props
101299
- * @param {Object|Array} props.element
101300
- * @param {import('./components/Header').HeaderProvider} props.headerProvider
101301
- * @param {PlaceholderProvider} [props.placeholderProvider]
101302
- * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups
101303
- * @param {Object} [props.layoutConfig]
101304
- * @param {Function} [props.layoutChanged]
101305
- * @param {DescriptionConfig} [props.descriptionConfig]
101306
- * @param {Function} [props.descriptionLoaded]
101307
- * @param {TooltipConfig} [props.tooltipConfig]
101308
- * @param {Function} [props.tooltipLoaded]
101309
- * @param {HTMLElement} [props.feelPopupContainer]
101310
- * @param {Function} [props.getFeelPopupLinks]
101311
- * @param {Object} [props.eventBus]
101290
+ /**
101291
+ * A basic properties panel component. Describes *how* content will be rendered, accepts
101292
+ * data from implementor to describe *what* will be rendered.
101293
+ *
101294
+ * @param {Object} props
101295
+ * @param {Object|Array} props.element
101296
+ * @param {import('./components/Header').HeaderProvider} props.headerProvider
101297
+ * @param {PlaceholderProvider} [props.placeholderProvider]
101298
+ * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups
101299
+ * @param {Object} [props.layoutConfig]
101300
+ * @param {Function} [props.layoutChanged]
101301
+ * @param {DescriptionConfig} [props.descriptionConfig]
101302
+ * @param {Function} [props.descriptionLoaded]
101303
+ * @param {TooltipConfig} [props.tooltipConfig]
101304
+ * @param {Function} [props.tooltipLoaded]
101305
+ * @param {HTMLElement} [props.feelPopupContainer]
101306
+ * @param {Function} [props.getFeelPopupLinks]
101307
+ * @param {Object} [props.eventBus]
101312
101308
  */
101313
101309
  function PropertiesPanel(props) {
101314
101310
  const {
@@ -101481,11 +101477,11 @@
101481
101477
 
101482
101478
  // hooks //////////////////
101483
101479
 
101484
- /**
101485
- * This hook behaves like useLayoutEffect, but does not trigger on the first render.
101486
- *
101487
- * @param {Function} effect
101488
- * @param {Array} deps
101480
+ /**
101481
+ * This hook behaves like useLayoutEffect, but does not trigger on the first render.
101482
+ *
101483
+ * @param {Function} effect
101484
+ * @param {Array} deps
101489
101485
  */
101490
101486
  function useUpdateLayoutEffect(effect, deps) {
101491
101487
  const isMounted = _(false);
@@ -101552,18 +101548,18 @@
101552
101548
  });
101553
101549
  }
101554
101550
 
101555
- /**
101556
- * @param {Object} props
101557
- * @param {Object} props.element
101558
- * @param {String} props.id
101559
- * @param {String} props.description
101560
- * @param {String} props.label
101561
- * @param {Function} props.getValue
101562
- * @param {Function} props.setValue
101563
- * @param {Function} props.onFocus
101564
- * @param {Function} props.onBlur
101565
- * @param {string|import('preact').Component} props.tooltip
101566
- * @param {boolean} [props.disabled]
101551
+ /**
101552
+ * @param {Object} props
101553
+ * @param {Object} props.element
101554
+ * @param {String} props.id
101555
+ * @param {String} props.description
101556
+ * @param {String} props.label
101557
+ * @param {Function} props.getValue
101558
+ * @param {Function} props.setValue
101559
+ * @param {Function} props.onFocus
101560
+ * @param {Function} props.onBlur
101561
+ * @param {string|import('preact').Component} props.tooltip
101562
+ * @param {boolean} [props.disabled]
101567
101563
  */
101568
101564
  function CheckboxEntry(props) {
101569
101565
  const {
@@ -101684,20 +101680,20 @@
101684
101680
  });
101685
101681
  }
101686
101682
 
101687
- /**
101688
- * @param {object} props
101689
- * @param {object} props.element
101690
- * @param {string} props.id
101691
- * @param {string} [props.description]
101692
- * @param {string} props.label
101693
- * @param {Function} props.getValue
101694
- * @param {Function} props.setValue
101695
- * @param {Function} props.onFocus
101696
- * @param {Function} props.onBlur
101697
- * @param {Function} props.getOptions
101698
- * @param {boolean} [props.disabled]
101699
- * @param {Function} [props.validate]
101700
- * @param {string|import('preact').Component} props.tooltip
101683
+ /**
101684
+ * @param {object} props
101685
+ * @param {object} props.element
101686
+ * @param {string} props.id
101687
+ * @param {string} [props.description]
101688
+ * @param {string} props.label
101689
+ * @param {Function} props.getValue
101690
+ * @param {Function} props.setValue
101691
+ * @param {Function} props.onFocus
101692
+ * @param {Function} props.onBlur
101693
+ * @param {Function} props.getOptions
101694
+ * @param {boolean} [props.disabled]
101695
+ * @param {Function} [props.validate]
101696
+ * @param {string|import('preact').Component} props.tooltip
101701
101697
  */
101702
101698
  function SelectEntry(props) {
101703
101699
  const {
@@ -101990,20 +101986,20 @@
101990
101986
  });
101991
101987
  }
101992
101988
 
101993
- /**
101994
- * @param {Object} props
101995
- * @param {Object} props.element
101996
- * @param {String} props.id
101997
- * @param {String} props.description
101998
- * @param {Boolean} props.debounce
101999
- * @param {Boolean} props.disabled
102000
- * @param {String} props.label
102001
- * @param {Function} props.getValue
102002
- * @param {Function} props.setValue
102003
- * @param {Function} props.onFocus
102004
- * @param {Function} props.onBlur
102005
- * @param {string|import('preact').Component} props.tooltip
102006
- * @param {Function} props.validate
101989
+ /**
101990
+ * @param {Object} props
101991
+ * @param {Object} props.element
101992
+ * @param {String} props.id
101993
+ * @param {String} props.description
101994
+ * @param {Boolean} props.debounce
101995
+ * @param {Boolean} props.disabled
101996
+ * @param {String} props.label
101997
+ * @param {Function} props.getValue
101998
+ * @param {Function} props.setValue
101999
+ * @param {Function} props.onFocus
102000
+ * @param {Function} props.onBlur
102001
+ * @param {string|import('preact').Component} props.tooltip
102002
+ * @param {Function} props.validate
102007
102003
  */
102008
102004
  function TextfieldEntry(props) {
102009
102005
  const {
@@ -102096,20 +102092,20 @@
102096
102092
  this._eventBus = eventBus;
102097
102093
  }
102098
102094
 
102099
- /**
102100
- * Check if the FEEL popup is open.
102101
- * @return {Boolean}
102095
+ /**
102096
+ * Check if the FEEL popup is open.
102097
+ * @return {Boolean}
102102
102098
  */
102103
102099
  isOpen() {
102104
102100
  return this._eventBus.fire('feelPopup._isOpen');
102105
102101
  }
102106
102102
 
102107
- /**
102108
- * Open the FEEL popup.
102109
- *
102110
- * @param {String} entryId
102111
- * @param {Object} popupConfig
102112
- * @param {HTMLElement} sourceElement
102103
+ /**
102104
+ * Open the FEEL popup.
102105
+ *
102106
+ * @param {String} entryId
102107
+ * @param {Object} popupConfig
102108
+ * @param {HTMLElement} sourceElement
102113
102109
  */
102114
102110
  open(entryId, popupConfig, sourceElement) {
102115
102111
  return this._eventBus.fire('feelPopup._open', {
@@ -102119,8 +102115,8 @@
102119
102115
  });
102120
102116
  }
102121
102117
 
102122
- /**
102123
- * Close the FEEL popup.
102118
+ /**
102119
+ * Close the FEEL popup.
102124
102120
  */
102125
102121
  close() {
102126
102122
  return this._eventBus.fire('feelPopup._close');