camunda-bpmn-js 5.6.0 → 5.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46255,6 +46255,7 @@
46255
46255
 
46256
46256
  /**
46257
46257
  * @typedef {import('didi').Injector} Injector
46258
+ * @typedef {import('diagram-js/lib/core/Canvas').default} Canvas
46258
46259
  *
46259
46260
  * @typedef {import('../../model/Types').Shape} Shape
46260
46261
  *
@@ -46264,13 +46265,17 @@
46264
46265
 
46265
46266
  /**
46266
46267
  * @param {Injector} injector
46268
+ * @param {Canvas} canvas
46267
46269
  */
46268
- function BpmnSpaceTool(injector) {
46270
+ function BpmnSpaceTool(injector, canvas) {
46269
46271
  injector.invoke(SpaceTool, this);
46272
+
46273
+ this._canvas = canvas;
46270
46274
  }
46271
46275
 
46272
46276
  BpmnSpaceTool.$inject = [
46273
- 'injector'
46277
+ 'injector',
46278
+ 'canvas'
46274
46279
  ];
46275
46280
 
46276
46281
  e$5(BpmnSpaceTool, SpaceTool);
@@ -46284,7 +46289,26 @@
46284
46289
  * @return {Object}
46285
46290
  */
46286
46291
  BpmnSpaceTool.prototype.calculateAdjustments = function(elements, axis, delta, start) {
46287
- var adjustments = SpaceTool.prototype.calculateAdjustments.call(this, elements, axis, delta, start);
46292
+
46293
+ var canvasRoot = this._canvas.getRootElement(),
46294
+ spaceRoot = elements[0] === canvasRoot ? null : elements[0],
46295
+ enclosedArtifacts = [];
46296
+
46297
+ // ensure
46298
+ if (spaceRoot) {
46299
+ enclosedArtifacts = values(
46300
+ getEnclosedElements(
46301
+ canvasRoot.children.filter(
46302
+ (child) => is$1(child, 'bpmn:Artifact')
46303
+ ),
46304
+ getBBox(spaceRoot)
46305
+ )
46306
+ );
46307
+ }
46308
+
46309
+ const elementsToMove = [ ...elements, ...enclosedArtifacts ];
46310
+
46311
+ var adjustments = SpaceTool.prototype.calculateAdjustments.call(this, elementsToMove, axis, delta, start);
46288
46312
 
46289
46313
  // do not resize:
46290
46314
  //
@@ -99475,19 +99499,19 @@
99475
99499
  errors: {}
99476
99500
  });
99477
99501
 
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
99502
+ /**
99503
+ * @typedef {Function} <propertiesPanel.showEntry> callback
99504
+ *
99505
+ * @example
99506
+ *
99507
+ * useEvent('propertiesPanel.showEntry', ({ focus = false, ...rest }) => {
99508
+ * // ...
99509
+ * });
99510
+ *
99511
+ * @param {Object} context
99512
+ * @param {boolean} [context.focus]
99513
+ *
99514
+ * @returns void
99491
99515
  */
99492
99516
 
99493
99517
  const EventContext = F$2({
@@ -99506,20 +99530,20 @@
99506
99530
  getTooltipForId: () => {}
99507
99531
  });
99508
99532
 
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}
99533
+ /**
99534
+ * Accesses the global TooltipContext and returns a tooltip for a given id and element.
99535
+ *
99536
+ * @example
99537
+ * ```jsx
99538
+ * function TextField(props) {
99539
+ * const tooltip = useTooltipContext('input1', element);
99540
+ * }
99541
+ * ```
99542
+ *
99543
+ * @param {string} id
99544
+ * @param {object} element
99545
+ *
99546
+ * @returns {string}
99523
99547
  */
99524
99548
  function useTooltipContext(id, element) {
99525
99549
  const {
@@ -99541,7 +99565,7 @@
99541
99565
  return u(Tooltip, {
99542
99566
  ...props,
99543
99567
  value: value,
99544
- forId: prefixId$9(forId)
99568
+ forId: `bio-properties-panel-${forId}`
99545
99569
  });
99546
99570
  }
99547
99571
  function Tooltip(props) {
@@ -99552,71 +99576,52 @@
99552
99576
  direction = 'right',
99553
99577
  position
99554
99578
  } = props;
99555
- const [visible, setShow] = h(false);
99556
- const [focusedViaKeyboard, setFocusedViaKeyboard] = h(false);
99579
+ const [visible, setVisible] = h(false);
99580
+
99581
+ // Tooltip will be shown after SHOW_DELAY ms from hovering over the source element.
99582
+ const SHOW_DELAY = 200;
99557
99583
  let timeout = null;
99558
99584
  const wrapperRef = _(null);
99559
99585
  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
- }
99586
+ const show = (_, delay) => {
99587
+ if (visible) return;
99588
+ if (delay) {
99589
+ timeout = setTimeout(() => {
99590
+ setVisible(true);
99591
+ }, SHOW_DELAY);
99592
+ } else {
99593
+ setVisible(true);
99569
99594
  }
99570
99595
  };
99571
- const hideTooltip = () => {
99572
- setShow(false);
99573
- setFocusedViaKeyboard(false);
99574
- };
99575
- const hideTooltipViaEscape = e => {
99576
- e.code === 'Escape' && hideTooltip();
99596
+ const hide = () => {
99597
+ clearTimeout(timeout);
99598
+ setVisible(false);
99577
99599
  };
99578
- const isTooltipHovered = ({
99579
- x,
99580
- y
99600
+ const handleMouseLeave = ({
99601
+ relatedTarget
99581
99602
  }) => {
99582
- const tooltip = tooltipRef.current;
99583
- const wrapper = wrapperRef.current;
99584
- return tooltip && (inBounds(x, y, wrapper.getBoundingClientRect()) || inBounds(x, y, tooltip.getBoundingClientRect()));
99603
+ // Don't hide the tooltip when moving mouse between the wrapper and the tooltip.
99604
+ if (relatedTarget === wrapperRef.current || relatedTarget === tooltipRef.current || relatedTarget?.parentElement === tooltipRef.current) {
99605
+ return;
99606
+ }
99607
+ hide();
99585
99608
  };
99586
- p(() => {
99609
+ const handleFocusOut = e => {
99587
99610
  const {
99588
- current
99589
- } = wrapperRef;
99590
- if (!current) {
99611
+ target
99612
+ } = e;
99613
+
99614
+ // Don't hide the tooltip if the wrapper or the tooltip itself is clicked.
99615
+ const isHovered = target.matches(':hover') || tooltipRef.current?.matches(':hover');
99616
+ if (target === wrapperRef.current && isHovered) {
99617
+ e.stopPropagation();
99591
99618
  return;
99592
99619
  }
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]);
99620
+ hide();
99621
+ };
99622
+ const hideTooltipViaEscape = e => {
99623
+ e.code === 'Escape' && hide();
99624
+ };
99620
99625
  const renderTooltip = () => {
99621
99626
  return u("div", {
99622
99627
  class: `bio-properties-panel-tooltip ${direction}`,
@@ -99626,6 +99631,7 @@
99626
99631
  style: position || getTooltipPosition(wrapperRef.current),
99627
99632
  ref: tooltipRef,
99628
99633
  onClick: e => e.stopPropagation(),
99634
+ onMouseLeave: handleMouseLeave,
99629
99635
  children: [u("div", {
99630
99636
  class: "bio-properties-panel-tooltip-content",
99631
99637
  children: value
@@ -99638,54 +99644,38 @@
99638
99644
  class: "bio-properties-panel-tooltip-wrapper",
99639
99645
  tabIndex: "0",
99640
99646
  ref: wrapperRef,
99641
- onMouseEnter: showTooltip,
99642
- onMouseLeave: () => {
99643
- clearTimeout(timeout);
99644
- timeout = null;
99645
- },
99646
- onFocus: showTooltip,
99647
+ onMouseEnter: e => show(e, true),
99648
+ onMouseLeave: handleMouseLeave,
99649
+ onFocus: show,
99650
+ onBlur: handleFocusOut,
99647
99651
  onKeyDown: hideTooltipViaEscape,
99648
99652
  children: [props.children, visible ? parent ? j(renderTooltip(), parent.current) : renderTooltip() : null]
99649
99653
  });
99650
99654
  }
99651
99655
 
99652
99656
  // 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
- }
99657
+
99662
99658
  function getTooltipPosition(refElement) {
99663
99659
  const refPosition = refElement.getBoundingClientRect();
99664
99660
  const right = `calc(100% - ${refPosition.x}px)`;
99665
99661
  const top = `${refPosition.top - 10}px`;
99666
99662
  return `right: ${right}; top: ${top};`;
99667
99663
  }
99668
- function isHovered(element) {
99669
- return element.matches(':hover');
99670
- }
99671
- function prefixId$9(id) {
99672
- return `bio-properties-panel-${id}`;
99673
- }
99674
99664
 
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}
99665
+ /**
99666
+ * Accesses the global DescriptionContext and returns a description for a given id and element.
99667
+ *
99668
+ * @example
99669
+ * ```jsx
99670
+ * function TextField(props) {
99671
+ * const description = useDescriptionContext('input1', element);
99672
+ * }
99673
+ * ```
99674
+ *
99675
+ * @param {string} id
99676
+ * @param {object} element
99677
+ *
99678
+ * @returns {string}
99689
99679
  */
99690
99680
  function useDescriptionContext(id, element) {
99691
99681
  const {
@@ -99707,11 +99697,11 @@
99707
99697
  return errors;
99708
99698
  }
99709
99699
 
99710
- /**
99711
- * Subscribe to an event immediately. Update subscription after inputs changed.
99712
- *
99713
- * @param {string} event
99714
- * @param {Function} callback
99700
+ /**
99701
+ * Subscribe to an event immediately. Update subscription after inputs changed.
99702
+ *
99703
+ * @param {string} event
99704
+ * @param {Function} callback
99715
99705
  */
99716
99706
  function useEvent(event, callback, eventBus) {
99717
99707
  const eventContext = q$1(EventContext);
@@ -99741,20 +99731,20 @@
99741
99731
  }, [callback, event, eventBus]);
99742
99732
  }
99743
99733
 
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 ]}
99734
+ /**
99735
+ * Creates a state that persists in the global LayoutContext.
99736
+ *
99737
+ * @example
99738
+ * ```jsx
99739
+ * function Group(props) {
99740
+ * const [ open, setOpen ] = useLayoutState([ 'groups', 'foo', 'open' ], false);
99741
+ * }
99742
+ * ```
99743
+ *
99744
+ * @param {(string|number)[]} path
99745
+ * @param {any} [defaultValue]
99746
+ *
99747
+ * @returns {[ any, Function ]}
99758
99748
  */
99759
99749
  function useLayoutState(path, defaultValue) {
99760
99750
  const {
@@ -99768,11 +99758,11 @@
99768
99758
  return [layoutForKey, setState];
99769
99759
  }
99770
99760
 
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
99761
+ /**
99762
+ * @pinussilvestrus: we need to introduce our own hook to persist the previous
99763
+ * state on updates.
99764
+ *
99765
+ * cf. https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state
99776
99766
  */
99777
99767
 
99778
99768
  function usePrevious(value) {
@@ -99783,12 +99773,12 @@
99783
99773
  return ref.current;
99784
99774
  }
99785
99775
 
99786
- /**
99787
- * Subscribe to `propertiesPanel.showEntry`.
99788
- *
99789
- * @param {string} id
99790
- *
99791
- * @returns {import('preact').Ref}
99776
+ /**
99777
+ * Subscribe to `propertiesPanel.showEntry`.
99778
+ *
99779
+ * @param {string} id
99780
+ *
99781
+ * @returns {import('preact').Ref}
99792
99782
  */
99793
99783
  function useShowEntryEvent(id) {
99794
99784
  const {
@@ -99819,20 +99809,20 @@
99819
99809
  return ref;
99820
99810
  }
99821
99811
 
99822
- /**
99823
- * @callback setSticky
99824
- * @param {boolean} value
99812
+ /**
99813
+ * @callback setSticky
99814
+ * @param {boolean} value
99825
99815
  */
99826
99816
 
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
99817
+ /**
99818
+ * Use IntersectionObserver to identify when DOM element is in sticky mode.
99819
+ * If sticky is observered setSticky(true) will be called.
99820
+ * If sticky mode is left, setSticky(false) will be called.
99821
+ *
99822
+ *
99823
+ * @param {Object} ref
99824
+ * @param {string} scrollContainerSelector
99825
+ * @param {setSticky} setSticky
99836
99826
  */
99837
99827
  function useStickyIntersectionObserver(ref, scrollContainerSelector, setSticky) {
99838
99828
  const [scrollContainer, setScrollContainer] = h(query(scrollContainerSelector));
@@ -99886,19 +99876,19 @@
99886
99876
  }, [ref.current, scrollContainer, setSticky]);
99887
99877
  }
99888
99878
 
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
99879
+ /**
99880
+ * Creates a static function reference with changing body.
99881
+ * This is necessary when external libraries require a callback function
99882
+ * that has references to state variables.
99883
+ *
99884
+ * Usage:
99885
+ * const callback = useStaticCallback((val) => {val === currentState});
99886
+ *
99887
+ * The `callback` reference is static and can be safely used in external
99888
+ * libraries or as a prop that does not cause rerendering of children.
99889
+ *
99890
+ * @param {Function} callback function with changing reference
99891
+ * @returns {Function} static function reference
99902
99892
  */
99903
99893
  function useStaticCallback(callback) {
99904
99894
  const callbackRef = _(callback);
@@ -100041,13 +100031,13 @@
100041
100031
  return null;
100042
100032
  }
100043
100033
 
100044
- /**
100045
- * @typedef { {
100046
- * text: (element: object) => string,
100047
- * icon?: (element: Object) => import('preact').Component
100048
- * } } PlaceholderDefinition
100049
- *
100050
- * @param { PlaceholderDefinition } props
100034
+ /**
100035
+ * @typedef { {
100036
+ * text: (element: object) => string,
100037
+ * icon?: (element: Object) => import('preact').Component
100038
+ * } } PlaceholderDefinition
100039
+ *
100040
+ * @param { PlaceholderDefinition } props
100051
100041
  */
100052
100042
  function Placeholder(props) {
100053
100043
  const {
@@ -100086,9 +100076,9 @@
100086
100076
 
100087
100077
  const noop$6 = () => {};
100088
100078
 
100089
- /**
100090
- * Buffer `.focus()` calls while the editor is not initialized.
100091
- * Set Focus inside when the editor is ready.
100079
+ /**
100080
+ * Buffer `.focus()` calls while the editor is not initialized.
100081
+ * Set Focus inside when the editor is ready.
100092
100082
  */
100093
100083
  const useBufferedFocus$1 = function (editor, ref) {
100094
100084
  const [buffer, setBuffer] = h(undefined);
@@ -100189,9 +100179,9 @@
100189
100179
 
100190
100180
  const noop$5 = () => {};
100191
100181
 
100192
- /**
100193
- * Buffer `.focus()` calls while the editor is not initialized.
100194
- * Set Focus inside when the editor is ready.
100182
+ /**
100183
+ * Buffer `.focus()` calls while the editor is not initialized.
100184
+ * Set Focus inside when the editor is ready.
100195
100185
  */
100196
100186
  const useBufferedFocus = function (editor, ref) {
100197
100187
  const [buffer, setBuffer] = h(undefined);
@@ -100240,10 +100230,10 @@
100240
100230
  p(() => {
100241
100231
  let editor;
100242
100232
 
100243
- /* Trigger FEEL toggle when
100244
- *
100245
- * - `backspace` is pressed
100246
- * - AND the cursor is at the beginning of the input
100233
+ /* Trigger FEEL toggle when
100234
+ *
100235
+ * - `backspace` is pressed
100236
+ * - AND the cursor is at the beginning of the input
100247
100237
  */
100248
100238
  const onKeyDown = e => {
100249
100239
  if (e.key !== 'Backspace' || !editor) {
@@ -100325,22 +100315,22 @@
100325
100315
  source: null
100326
100316
  });
100327
100317
 
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
100318
+ /**
100319
+ * Add a dragger that calls back the passed function with
100320
+ * { event, delta } on drag.
100321
+ *
100322
+ * @example
100323
+ *
100324
+ * function dragMove(event, delta) {
100325
+ * // we are dragging (!!)
100326
+ * }
100327
+ *
100328
+ * domElement.addEventListener('dragstart', dragger(dragMove));
100329
+ *
100330
+ * @param {Function} fn
100331
+ * @param {Element} [dragPreview]
100332
+ *
100333
+ * @return {Function} drag start callback function
100344
100334
  */
100345
100335
  function createDragger(fn, dragPreview) {
100346
100336
  let self;
@@ -100395,23 +100385,23 @@
100395
100385
 
100396
100386
  const noop$3 = () => {};
100397
100387
 
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]
100388
+ /**
100389
+ * A generic popup component.
100390
+ *
100391
+ * @param {Object} props
100392
+ * @param {HTMLElement} [props.container]
100393
+ * @param {string} [props.className]
100394
+ * @param {boolean} [props.delayInitialFocus]
100395
+ * @param {{x: number, y: number}} [props.position]
100396
+ * @param {number} [props.width]
100397
+ * @param {number} [props.height]
100398
+ * @param {Function} props.onClose
100399
+ * @param {Function} [props.onPostActivate]
100400
+ * @param {Function} [props.onPostDeactivate]
100401
+ * @param {boolean} [props.returnFocus]
100402
+ * @param {boolean} [props.closeOnEscape]
100403
+ * @param {string} props.title
100404
+ * @param {Ref} [ref]
100415
100405
  */
100416
100406
  function PopupComponent(props, globalRef) {
100417
100407
  const {
@@ -100630,12 +100620,12 @@
100630
100620
  const FEEL_POPUP_WIDTH = 700;
100631
100621
  const FEEL_POPUP_HEIGHT = 250;
100632
100622
 
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
100623
+ /**
100624
+ * FEEL popup component, built as a singleton. Emits lifecycle events as follows:
100625
+ * - `feelPopup.open` - fired before the popup is mounted
100626
+ * - `feelPopup.opened` - fired after the popup is mounted. Event context contains the DOM node of the popup
100627
+ * - `feelPopup.close` - fired before the popup is unmounted. Event context contains the DOM node of the popup
100628
+ * - `feelPopup.closed` - fired after the popup is unmounted
100639
100629
  */
100640
100630
  function FEELPopupRoot(props) {
100641
100631
  const {
@@ -100861,11 +100851,11 @@
100861
100851
  return element.closest('.cm-editor').querySelector('.cm-tooltip-autocomplete');
100862
100852
  }
100863
100853
 
100864
- /**
100865
- * This hook behaves like useEffect, but does not trigger on the first render.
100866
- *
100867
- * @param {Function} effect
100868
- * @param {Array} deps
100854
+ /**
100855
+ * This hook behaves like useEffect, but does not trigger on the first render.
100856
+ *
100857
+ * @param {Function} effect
100858
+ * @param {Array} deps
100869
100859
  */
100870
100860
  function useUpdateEffect(effect, deps) {
100871
100861
  const isMounted = _(false);
@@ -101230,85 +101220,85 @@
101230
101220
  const DEFAULT_DESCRIPTION = {};
101231
101221
  const DEFAULT_TOOLTIP = {};
101232
101222
 
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
- *
101223
+ /**
101224
+ * @typedef { {
101225
+ * component: import('preact').Component,
101226
+ * id: String,
101227
+ * isEdited?: Function
101228
+ * } } EntryDefinition
101229
+ *
101230
+ * @typedef { {
101231
+ * autoFocusEntry: String,
101232
+ * autoOpen?: Boolean,
101233
+ * entries: Array<EntryDefinition>,
101234
+ * id: String,
101235
+ * label: String,
101236
+ * remove: (event: MouseEvent) => void
101237
+ * } } ListItemDefinition
101238
+ *
101239
+ * @typedef { {
101240
+ * add: (event: MouseEvent) => void,
101241
+ * component: import('preact').Component,
101242
+ * element: Object,
101243
+ * id: String,
101244
+ * items: Array<ListItemDefinition>,
101245
+ * label: String,
101246
+ * shouldOpen?: Boolean
101247
+ * } } ListGroupDefinition
101248
+ *
101249
+ * @typedef { {
101250
+ * component?: import('preact').Component,
101251
+ * entries: Array<EntryDefinition>,
101252
+ * id: String,
101253
+ * label: String,
101254
+ * shouldOpen?: Boolean
101255
+ * } } GroupDefinition
101256
+ *
101257
+ * @typedef { {
101258
+ * [id: String]: GetDescriptionFunction
101259
+ * } } DescriptionConfig
101260
+ *
101261
+ * @typedef { {
101262
+ * [id: String]: GetTooltipFunction
101263
+ * } } TooltipConfig
101264
+ *
101265
+ * @callback { {
101266
+ * @param {string} id
101267
+ * @param {Object} element
101268
+ * @returns {string}
101269
+ * } } GetDescriptionFunction
101270
+ *
101271
+ * @callback { {
101272
+ * @param {string} id
101273
+ * @param {Object} element
101274
+ * @returns {string}
101275
+ * } } GetTooltipFunction
101276
+ *
101277
+ * @typedef { {
101278
+ * getEmpty: (element: object) => import('./components/Placeholder').PlaceholderDefinition,
101279
+ * getMultiple: (element: Object) => import('./components/Placeholder').PlaceholderDefinition
101280
+ * } } PlaceholderProvider
101281
+ *
101292
101282
  */
101293
101283
 
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]
101284
+ /**
101285
+ * A basic properties panel component. Describes *how* content will be rendered, accepts
101286
+ * data from implementor to describe *what* will be rendered.
101287
+ *
101288
+ * @param {Object} props
101289
+ * @param {Object|Array} props.element
101290
+ * @param {import('./components/Header').HeaderProvider} props.headerProvider
101291
+ * @param {PlaceholderProvider} [props.placeholderProvider]
101292
+ * @param {Array<GroupDefinition|ListGroupDefinition>} props.groups
101293
+ * @param {Object} [props.layoutConfig]
101294
+ * @param {Function} [props.layoutChanged]
101295
+ * @param {DescriptionConfig} [props.descriptionConfig]
101296
+ * @param {Function} [props.descriptionLoaded]
101297
+ * @param {TooltipConfig} [props.tooltipConfig]
101298
+ * @param {Function} [props.tooltipLoaded]
101299
+ * @param {HTMLElement} [props.feelPopupContainer]
101300
+ * @param {Function} [props.getFeelPopupLinks]
101301
+ * @param {Object} [props.eventBus]
101312
101302
  */
101313
101303
  function PropertiesPanel(props) {
101314
101304
  const {
@@ -101481,11 +101471,11 @@
101481
101471
 
101482
101472
  // hooks //////////////////
101483
101473
 
101484
- /**
101485
- * This hook behaves like useLayoutEffect, but does not trigger on the first render.
101486
- *
101487
- * @param {Function} effect
101488
- * @param {Array} deps
101474
+ /**
101475
+ * This hook behaves like useLayoutEffect, but does not trigger on the first render.
101476
+ *
101477
+ * @param {Function} effect
101478
+ * @param {Array} deps
101489
101479
  */
101490
101480
  function useUpdateLayoutEffect(effect, deps) {
101491
101481
  const isMounted = _(false);
@@ -101552,18 +101542,18 @@
101552
101542
  });
101553
101543
  }
101554
101544
 
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]
101545
+ /**
101546
+ * @param {Object} props
101547
+ * @param {Object} props.element
101548
+ * @param {String} props.id
101549
+ * @param {String} props.description
101550
+ * @param {String} props.label
101551
+ * @param {Function} props.getValue
101552
+ * @param {Function} props.setValue
101553
+ * @param {Function} props.onFocus
101554
+ * @param {Function} props.onBlur
101555
+ * @param {string|import('preact').Component} props.tooltip
101556
+ * @param {boolean} [props.disabled]
101567
101557
  */
101568
101558
  function CheckboxEntry(props) {
101569
101559
  const {
@@ -101684,20 +101674,20 @@
101684
101674
  });
101685
101675
  }
101686
101676
 
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
101677
+ /**
101678
+ * @param {object} props
101679
+ * @param {object} props.element
101680
+ * @param {string} props.id
101681
+ * @param {string} [props.description]
101682
+ * @param {string} props.label
101683
+ * @param {Function} props.getValue
101684
+ * @param {Function} props.setValue
101685
+ * @param {Function} props.onFocus
101686
+ * @param {Function} props.onBlur
101687
+ * @param {Function} props.getOptions
101688
+ * @param {boolean} [props.disabled]
101689
+ * @param {Function} [props.validate]
101690
+ * @param {string|import('preact').Component} props.tooltip
101701
101691
  */
101702
101692
  function SelectEntry(props) {
101703
101693
  const {
@@ -101990,20 +101980,20 @@
101990
101980
  });
101991
101981
  }
101992
101982
 
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
101983
+ /**
101984
+ * @param {Object} props
101985
+ * @param {Object} props.element
101986
+ * @param {String} props.id
101987
+ * @param {String} props.description
101988
+ * @param {Boolean} props.debounce
101989
+ * @param {Boolean} props.disabled
101990
+ * @param {String} props.label
101991
+ * @param {Function} props.getValue
101992
+ * @param {Function} props.setValue
101993
+ * @param {Function} props.onFocus
101994
+ * @param {Function} props.onBlur
101995
+ * @param {string|import('preact').Component} props.tooltip
101996
+ * @param {Function} props.validate
102007
101997
  */
102008
101998
  function TextfieldEntry(props) {
102009
101999
  const {
@@ -102096,20 +102086,20 @@
102096
102086
  this._eventBus = eventBus;
102097
102087
  }
102098
102088
 
102099
- /**
102100
- * Check if the FEEL popup is open.
102101
- * @return {Boolean}
102089
+ /**
102090
+ * Check if the FEEL popup is open.
102091
+ * @return {Boolean}
102102
102092
  */
102103
102093
  isOpen() {
102104
102094
  return this._eventBus.fire('feelPopup._isOpen');
102105
102095
  }
102106
102096
 
102107
- /**
102108
- * Open the FEEL popup.
102109
- *
102110
- * @param {String} entryId
102111
- * @param {Object} popupConfig
102112
- * @param {HTMLElement} sourceElement
102097
+ /**
102098
+ * Open the FEEL popup.
102099
+ *
102100
+ * @param {String} entryId
102101
+ * @param {Object} popupConfig
102102
+ * @param {HTMLElement} sourceElement
102113
102103
  */
102114
102104
  open(entryId, popupConfig, sourceElement) {
102115
102105
  return this._eventBus.fire('feelPopup._open', {
@@ -102119,8 +102109,8 @@
102119
102109
  });
102120
102110
  }
102121
102111
 
102122
- /**
102123
- * Close the FEEL popup.
102112
+ /**
102113
+ * Close the FEEL popup.
102124
102114
  */
102125
102115
  close() {
102126
102116
  return this._eventBus.fire('feelPopup._close');