camunda-bpmn-js 3.3.0 → 3.4.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.
Files changed (35) hide show
  1. package/dist/assets/properties-panel.css +1 -1
  2. package/dist/base-modeler.development.js +233 -53
  3. package/dist/base-modeler.production.min.js +33 -33
  4. package/dist/base-navigated-viewer.development.js +3 -0
  5. package/dist/base-navigated-viewer.production.min.js +1 -1
  6. package/dist/base-viewer.development.js +2 -0
  7. package/dist/base-viewer.production.min.js +1 -1
  8. package/dist/camunda-cloud-modeler.development.js +862 -1784
  9. package/dist/camunda-cloud-modeler.production.min.js +46 -46
  10. package/dist/camunda-cloud-navigated-viewer.development.js +3 -0
  11. package/dist/camunda-cloud-navigated-viewer.production.min.js +1 -1
  12. package/dist/camunda-cloud-viewer.development.js +2 -0
  13. package/dist/camunda-cloud-viewer.production.min.js +1 -1
  14. package/dist/camunda-platform-modeler.development.js +229 -49
  15. package/dist/camunda-platform-modeler.production.min.js +33 -33
  16. package/dist/camunda-platform-navigated-viewer.development.js +3 -0
  17. package/dist/camunda-platform-navigated-viewer.production.min.js +1 -1
  18. package/dist/camunda-platform-viewer.development.js +2 -0
  19. package/dist/camunda-platform-viewer.production.min.js +1 -1
  20. package/lib/base/Modeler.d.ts +15 -15
  21. package/lib/base/NavigatedViewer.d.ts +2 -2
  22. package/lib/base/Viewer.d.ts +2 -2
  23. package/lib/camunda-cloud/ElementTemplatesValidator.d.ts +1 -1
  24. package/lib/camunda-cloud/Modeler.d.ts +3 -3
  25. package/lib/camunda-cloud/NavigatedViewer.d.ts +3 -3
  26. package/lib/camunda-cloud/Viewer.d.ts +3 -3
  27. package/lib/camunda-cloud/features/rules/BpmnRules.d.ts +32 -32
  28. package/lib/camunda-cloud/features/rules/index.d.ts +6 -6
  29. package/lib/camunda-cloud/util/commonModules.d.ts +9 -9
  30. package/lib/camunda-platform/Modeler.d.ts +3 -3
  31. package/lib/camunda-platform/NavigatedViewer.d.ts +5 -5
  32. package/lib/camunda-platform/Viewer.d.ts +5 -5
  33. package/lib/camunda-platform/util/commonModules.d.ts +9 -9
  34. package/lib/util/ExtensionElementsUtil.d.ts +24 -24
  35. package/package.json +19 -18
@@ -1237,7 +1237,7 @@ textarea.bio-properties-panel-input {
1237
1237
  --feel-popup-close-background-color: hsla(219, 99%, 53%, 1);
1238
1238
  --feel-popup-gutters-background-color: hsla(0, 0%, 90%, 1);
1239
1239
 
1240
- position: absolute;
1240
+ position: fixed;
1241
1241
  display: flex;
1242
1242
  flex: auto;
1243
1243
  flex-direction: column;
@@ -3827,10 +3827,7 @@
3827
3827
  if (typeof f == "function") {
3828
3828
  var a = function a () {
3829
3829
  if (this instanceof a) {
3830
- var args = [null];
3831
- args.push.apply(args, arguments);
3832
- var Ctor = Function.bind.apply(f, args);
3833
- return new Ctor();
3830
+ return Reflect.construct(f, arguments, this.constructor);
3834
3831
  }
3835
3832
  return f.apply(this, arguments);
3836
3833
  };
@@ -17000,6 +16997,7 @@
17000
16997
  */
17001
16998
 
17002
16999
 
17000
+
17003
17001
  // inlined ../../resources/logo.svg
17004
17002
  var BPMNIO_LOGO_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14.02 5.57" width="53" height="21"><path fill="currentColor" d="M1.88.92v.14c0 .41-.13.68-.4.8.33.14.46.44.46.86v.33c0 .61-.33.95-.95.95H0V0h.95c.65 0 .93.3.93.92zM.63.57v1.06h.24c.24 0 .38-.1.38-.43V.98c0-.28-.1-.4-.32-.4zm0 1.63v1.22h.36c.2 0 .32-.1.32-.39v-.35c0-.37-.12-.48-.4-.48H.63zM4.18.99v.52c0 .64-.31.98-.94.98h-.3V4h-.62V0h.92c.63 0 .94.35.94.99zM2.94.57v1.35h.3c.2 0 .3-.09.3-.37v-.6c0-.29-.1-.38-.3-.38h-.3zm2.89 2.27L6.25 0h.88v4h-.6V1.12L6.1 3.99h-.6l-.46-2.82v2.82h-.55V0h.87zM8.14 1.1V4h-.56V0h.79L9 2.4V0h.56v4h-.64zm2.49 2.29v.6h-.6v-.6zM12.12 1c0-.63.33-1 .95-1 .61 0 .95.37.95 1v2.04c0 .64-.34 1-.95 1-.62 0-.95-.37-.95-1zm.62 2.08c0 .28.13.39.33.39s.32-.1.32-.4V.98c0-.29-.12-.4-.32-.4s-.33.11-.33.4z"/><path fill="currentColor" d="M0 4.53h14.02v1.04H0zM11.08 0h.63v.62h-.63zm.63 4V1h-.63v2.98z"/></svg>';
17005
17003
 
@@ -52503,6 +52501,7 @@
52503
52501
  * @typedef {import('../../util/Types').Rect} Rect
52504
52502
  */
52505
52503
 
52504
+
52506
52505
  /**
52507
52506
  * Return direction given axis and delta.
52508
52507
  *
@@ -60404,6 +60403,7 @@
60404
60403
  */
60405
60404
 
60406
60405
 
60406
+
60407
60407
  /**
60408
60408
  * A base connection layouter implementation
60409
60409
  * that layouts the connection by directly connecting
@@ -67143,7 +67143,7 @@
67143
67143
  };
67144
67144
  }
67145
67145
 
67146
- var index$4 = {
67146
+ var index$5 = {
67147
67147
  __init__: [ 'minimap' ],
67148
67148
  minimap: [ 'type', Minimap ]
67149
67149
  };
@@ -67299,7 +67299,7 @@
67299
67299
  return Math.trunc(Math.random() * 1000000);
67300
67300
  }
67301
67301
 
67302
- var index$1 = {
67302
+ var index$4 = {
67303
67303
  __init__: [ 'grid' ],
67304
67304
  grid: [ 'type', Grid ]
67305
67305
  };
@@ -98001,20 +98001,24 @@
98001
98001
 
98002
98002
  // set edited state depending on all entries
98003
98003
  p(() => {
98004
- const hasOneEditedEntry = entries.find(entry => {
98005
- const {
98006
- id,
98007
- isEdited
98008
- } = entry;
98009
- const entryNode = query(`[data-entry-id="${id}"]`);
98010
- if (!isFunction(isEdited) || !entryNode) {
98011
- return false;
98012
- }
98013
- const inputNode = query('.bio-properties-panel-input', entryNode);
98014
- return isEdited(inputNode);
98004
+ // TODO(@barmac): replace with CSS when `:has()` is supported in all major browsers, or rewrite as in https://github.com/camunda/camunda-modeler/issues/3815#issuecomment-1733038161
98005
+ const scheduled = requestAnimationFrame(() => {
98006
+ const hasOneEditedEntry = entries.find(entry => {
98007
+ const {
98008
+ id,
98009
+ isEdited
98010
+ } = entry;
98011
+ const entryNode = query(`[data-entry-id="${id}"]`);
98012
+ if (!isFunction(isEdited) || !entryNode) {
98013
+ return false;
98014
+ }
98015
+ const inputNode = query('.bio-properties-panel-input', entryNode);
98016
+ return isEdited(inputNode);
98017
+ });
98018
+ setEdited(hasOneEditedEntry);
98015
98019
  });
98016
- setEdited(hasOneEditedEntry);
98017
- }, [entries]);
98020
+ return () => cancelAnimationFrame(scheduled);
98021
+ }, [entries, setEdited]);
98018
98022
 
98019
98023
  // set error state depending on all entries
98020
98024
  const allErrors = useErrors();
@@ -98402,7 +98406,11 @@
98402
98406
  // (2) setup drag listeners
98403
98407
 
98404
98408
  // attach drag + cleanup event
98405
- document.addEventListener('dragover', onDrag);
98409
+ // we need to do this to make sure we track cursor
98410
+ // movements before we reach other drag event handlers,
98411
+ // e.g. in child containers.
98412
+ document.addEventListener('dragover', onDrag, true);
98413
+ document.addEventListener('dragenter', preventDefault, true);
98406
98414
  document.addEventListener('dragend', onEnd);
98407
98415
  document.addEventListener('drop', preventDefault);
98408
98416
  }
@@ -98416,7 +98424,8 @@
98416
98424
  return fn.call(self, event, delta);
98417
98425
  }
98418
98426
  function onEnd() {
98419
- document.removeEventListener('dragover', onDrag);
98427
+ document.removeEventListener('dragover', onDrag, true);
98428
+ document.removeEventListener('dragenter', preventDefault, true);
98420
98429
  document.removeEventListener('dragend', onEnd);
98421
98430
  document.removeEventListener('drop', preventDefault);
98422
98431
  }
@@ -98438,6 +98447,7 @@
98438
98447
  * @param {Object} props
98439
98448
  * @param {HTMLElement} [props.container]
98440
98449
  * @param {string} [props.className]
98450
+ * @param {boolean} [props.delayInitialFocus]
98441
98451
  * @param {{x: number, y: number}} [props.position]
98442
98452
  * @param {number} [props.width]
98443
98453
  * @param {number} [props.height]
@@ -98445,12 +98455,15 @@
98445
98455
  * @param {Function} [props.onPostActivate]
98446
98456
  * @param {Function} [props.onPostDeactivate]
98447
98457
  * @param {boolean} [props.returnFocus]
98458
+ * @param {boolean} [props.closeOnEscape]
98448
98459
  * @param {string} props.title
98460
+ * @param {Ref} [ref]
98449
98461
  */
98450
- function Popup(props) {
98462
+ function PopupComponent(props, globalRef) {
98451
98463
  const {
98452
98464
  container,
98453
98465
  className,
98466
+ delayInitialFocus,
98454
98467
  position,
98455
98468
  width,
98456
98469
  height,
@@ -98458,12 +98471,16 @@
98458
98471
  onPostActivate = noop$3,
98459
98472
  onPostDeactivate = noop$3,
98460
98473
  returnFocus = true,
98474
+ closeOnEscape = true,
98461
98475
  title
98462
98476
  } = props;
98463
98477
  const focusTrapRef = _$1(null);
98464
- const popupRef = _$1(null);
98465
- const handleKeyPress = event => {
98466
- if (event.key === 'Escape') {
98478
+ const localRef = _$1(null);
98479
+ const popupRef = globalRef || localRef;
98480
+ const handleKeydown = event => {
98481
+ // do not allow keyboard events to bubble
98482
+ event.stopPropagation();
98483
+ if (closeOnEscape && event.key === 'Escape') {
98467
98484
  onClose();
98468
98485
  }
98469
98486
  };
@@ -98488,14 +98505,6 @@
98488
98505
  if (height) {
98489
98506
  style.height = height + 'px';
98490
98507
  }
98491
- p(() => {
98492
- if (popupRef.current) {
98493
- popupRef.current.addEventListener('keydown', handleKeyPress);
98494
- }
98495
- return () => {
98496
- popupRef.current.removeEventListener('keydown', handleKeyPress);
98497
- };
98498
- }, [popupRef]);
98499
98508
  p(() => {
98500
98509
  if (popupRef.current) {
98501
98510
  popupRef.current.addEventListener('focusin', handleFocus);
@@ -98508,6 +98517,7 @@
98508
98517
  if (popupRef.current) {
98509
98518
  focusTrapRef.current = createFocusTrap(popupRef.current, {
98510
98519
  clickOutsideDeactivates: true,
98520
+ delayInitialFocus,
98511
98521
  fallbackFocus: popupRef.current,
98512
98522
  onPostActivate,
98513
98523
  onPostDeactivate,
@@ -98521,12 +98531,14 @@
98521
98531
  "aria-label": title,
98522
98532
  tabIndex: -1,
98523
98533
  ref: popupRef,
98534
+ onKeyDown: handleKeydown,
98524
98535
  role: "dialog",
98525
98536
  class: classnames('bio-properties-panel-popup', className),
98526
98537
  style: style,
98527
98538
  children: props.children
98528
98539
  }), container || document.body);
98529
98540
  }
98541
+ const Popup = k(PopupComponent);
98530
98542
  Popup.Title = Title;
98531
98543
  Popup.Body = Body;
98532
98544
  Popup.Footer = Footer;
@@ -98535,6 +98547,7 @@
98535
98547
  children,
98536
98548
  className,
98537
98549
  draggable,
98550
+ emit = () => {},
98538
98551
  title,
98539
98552
  ...rest
98540
98553
  } = props;
@@ -98547,7 +98560,8 @@
98547
98560
  });
98548
98561
  const dragPreviewRef = _$1();
98549
98562
  const titleRef = _$1();
98550
- const onMove = throttle((_, delta) => {
98563
+ const onMove = (event, delta) => {
98564
+ cancel(event);
98551
98565
  const {
98552
98566
  x: dx,
98553
98567
  y: dy
@@ -98559,20 +98573,33 @@
98559
98573
  const popupParent = getPopupParent(titleRef.current);
98560
98574
  popupParent.style.top = newPosition.y + 'px';
98561
98575
  popupParent.style.left = newPosition.x + 'px';
98562
- });
98576
+
98577
+ // notify interested parties
98578
+ emit('dragover', {
98579
+ newPosition,
98580
+ delta
98581
+ });
98582
+ };
98563
98583
  const onMoveStart = event => {
98564
98584
  // initialize drag handler
98565
98585
  const onDragStart = createDragger(onMove, dragPreviewRef.current);
98566
98586
  onDragStart(event);
98587
+ event.stopPropagation();
98567
98588
  const popupParent = getPopupParent(titleRef.current);
98568
98589
  const bounds = popupParent.getBoundingClientRect();
98569
98590
  context.current.startPosition = {
98570
98591
  x: bounds.left,
98571
98592
  y: bounds.top
98572
98593
  };
98594
+
98595
+ // notify interested parties
98596
+ emit('dragstart');
98573
98597
  };
98574
98598
  const onMoveEnd = () => {
98575
98599
  context.current.newPosition = null;
98600
+
98601
+ // notify interested parties
98602
+ emit('dragend');
98576
98603
  };
98577
98604
  return o("div", {
98578
98605
  class: classnames('bio-properties-panel-popup__header', draggable && 'draggable', className),
@@ -98625,27 +98652,53 @@
98625
98652
  function getPopupParent(node) {
98626
98653
  return node.closest('.bio-properties-panel-popup');
98627
98654
  }
98655
+ function cancel(event) {
98656
+ event.preventDefault();
98657
+ event.stopPropagation();
98658
+ }
98628
98659
 
98629
98660
  const FEEL_POPUP_WIDTH = 700;
98630
98661
  const FEEL_POPUP_HEIGHT = 250;
98631
98662
 
98632
98663
  /**
98633
- * FEEL popup component, built as a singleton.
98664
+ * FEEL popup component, built as a singleton. Emits lifecycle events as follows:
98665
+ * - `feelPopup.open` - fired before the popup is mounted
98666
+ * - `feelPopup.opened` - fired after the popup is mounted. Event context contains the DOM node of the popup
98667
+ * - `feelPopup.close` - fired before the popup is unmounted. Event context contains the DOM node of the popup
98668
+ * - `feelPopup.closed` - fired after the popup is unmounted
98634
98669
  */
98635
98670
  function FEELPopupRoot(props) {
98636
98671
  const {
98637
- element
98672
+ element,
98673
+ eventBus = {
98674
+ fire() {},
98675
+ on() {},
98676
+ off() {}
98677
+ },
98678
+ popupContainer
98638
98679
  } = props;
98639
98680
  const prevElement = usePrevious(element);
98640
98681
  const [popupConfig, setPopupConfig] = h({});
98641
98682
  const [open, setOpen] = h(false);
98642
98683
  const [source, setSource] = h(null);
98643
98684
  const [sourceElement, setSourceElement] = h(null);
98644
- const handleOpen = (key, config, _sourceElement) => {
98645
- setSource(key);
98685
+ const emit = (type, context) => {
98686
+ eventBus.fire('feelPopup.' + type, context);
98687
+ };
98688
+ const isOpen = T$1(() => {
98689
+ return !!open;
98690
+ }, [open]);
98691
+ useUpdateEffect(() => {
98692
+ if (!open) {
98693
+ emit('closed');
98694
+ }
98695
+ }, [open]);
98696
+ const handleOpen = (entryId, config, _sourceElement) => {
98697
+ setSource(entryId);
98646
98698
  setPopupConfig(config);
98647
98699
  setOpen(true);
98648
98700
  setSourceElement(_sourceElement);
98701
+ emit('open');
98649
98702
  };
98650
98703
  const handleClose = () => {
98651
98704
  setOpen(false);
@@ -98659,21 +98712,47 @@
98659
98712
 
98660
98713
  // close popup on element change, cf. https://github.com/bpmn-io/properties-panel/issues/270
98661
98714
  p(() => {
98662
- if (element && element !== prevElement) {
98715
+ if (element && prevElement && element !== prevElement) {
98663
98716
  handleClose();
98664
98717
  }
98665
98718
  }, [element]);
98719
+
98720
+ // allow close and open via events
98721
+ p(() => {
98722
+ const handlePopupOpen = context => {
98723
+ const {
98724
+ entryId,
98725
+ popupConfig,
98726
+ sourceElement
98727
+ } = context;
98728
+ handleOpen(entryId, popupConfig, sourceElement);
98729
+ };
98730
+ const handleIsOpen = () => {
98731
+ return isOpen();
98732
+ };
98733
+ eventBus.on('feelPopup._close', handleClose);
98734
+ eventBus.on('feelPopup._open', handlePopupOpen);
98735
+ eventBus.on('feelPopup._isOpen', handleIsOpen);
98736
+ return () => {
98737
+ eventBus.off('feelPopup._close', handleClose);
98738
+ eventBus.off('feelPopup._open', handleOpen);
98739
+ eventBus.off('feelPopup._isOpen', handleIsOpen);
98740
+ };
98741
+ }, [eventBus, isOpen]);
98666
98742
  return o(FeelPopupContext.Provider, {
98667
98743
  value: feelPopupContext,
98668
98744
  children: [open && o(FeelPopupComponent, {
98669
98745
  onClose: handleClose,
98746
+ container: popupContainer,
98670
98747
  sourceElement: sourceElement,
98748
+ emit: emit,
98671
98749
  ...popupConfig
98672
98750
  }), props.children]
98673
98751
  });
98674
98752
  }
98675
98753
  function FeelPopupComponent(props) {
98676
98754
  const {
98755
+ container,
98677
98756
  id,
98678
98757
  hostLanguage,
98679
98758
  onInput,
@@ -98685,20 +98764,45 @@
98685
98764
  tooltipContainer,
98686
98765
  type,
98687
98766
  value,
98688
- variables
98767
+ variables,
98768
+ emit
98689
98769
  } = props;
98690
98770
  const editorRef = _$1();
98771
+ const popupRef = _$1();
98772
+ const isAutoCompletionOpen = _$1(false);
98691
98773
  const handleSetReturnFocus = () => {
98692
98774
  sourceElement && sourceElement.focus();
98693
98775
  };
98694
- p(() => {
98695
- const editor = editorRef.current;
98696
- if (editor) {
98697
- editor.focus();
98776
+ const onKeyDownCapture = event => {
98777
+ // we use capture here to make sure we handle the event before the editor does
98778
+ if (event.key === 'Escape') {
98779
+ isAutoCompletionOpen.current = autoCompletionOpen(event.target);
98780
+ }
98781
+ };
98782
+ const onKeyDown = event => {
98783
+ if (event.key === 'Escape') {
98784
+ // close popup only if auto completion is not open
98785
+ // we need to do check this because the editor is not
98786
+ // stop propagating the keydown event
98787
+ // cf. https://discuss.codemirror.net/t/how-can-i-replace-the-default-autocompletion-keymap-v6/3322/5
98788
+ if (!isAutoCompletionOpen.current) {
98789
+ onClose();
98790
+ isAutoCompletionOpen.current = false;
98791
+ }
98698
98792
  }
98699
- }, [editorRef, id]);
98793
+ };
98794
+ p(() => {
98795
+ emit('opened', {
98796
+ domNode: popupRef.current
98797
+ });
98798
+ return () => emit('close', {
98799
+ domNode: popupRef.current
98800
+ });
98801
+ }, []);
98700
98802
  return o(Popup, {
98803
+ container: container,
98701
98804
  className: "bio-properties-panel-feel-popup",
98805
+ emit: emit,
98702
98806
  position: position,
98703
98807
  title: title,
98704
98808
  onClose: onClose
@@ -98706,14 +98810,20 @@
98706
98810
  // handle focus manually on deactivate
98707
98811
  ,
98708
98812
  returnFocus: false,
98813
+ closeOnEscape: false,
98814
+ delayInitialFocus: false,
98709
98815
  onPostDeactivate: handleSetReturnFocus,
98710
98816
  height: FEEL_POPUP_HEIGHT,
98711
98817
  width: FEEL_POPUP_WIDTH,
98818
+ ref: popupRef,
98712
98819
  children: [o(Popup.Title, {
98713
98820
  title: title,
98821
+ emit: emit,
98714
98822
  draggable: true
98715
98823
  }), o(Popup.Body, {
98716
98824
  children: o("div", {
98825
+ onKeyDownCapture: onKeyDownCapture,
98826
+ onKeyDown: onKeyDown,
98717
98827
  class: "bio-properties-panel-feel-popup__body",
98718
98828
  children: [type === 'feel' && o(CodeEditor, {
98719
98829
  enableGutters: true,
@@ -98755,6 +98865,26 @@
98755
98865
  function prefixId$8(id) {
98756
98866
  return `bio-properties-panel-${id}`;
98757
98867
  }
98868
+ function autoCompletionOpen(element) {
98869
+ return element.closest('.cm-editor').querySelector('.cm-tooltip-autocomplete');
98870
+ }
98871
+
98872
+ /**
98873
+ * This hook behaves like useEffect, but does not trigger on the first render.
98874
+ *
98875
+ * @param {Function} effect
98876
+ * @param {Array} deps
98877
+ */
98878
+ function useUpdateEffect(effect, deps) {
98879
+ const isMounted = _$1(false);
98880
+ p(() => {
98881
+ if (isMounted.current) {
98882
+ return effect();
98883
+ } else {
98884
+ isMounted.current = true;
98885
+ }
98886
+ }, deps);
98887
+ }
98758
98888
 
98759
98889
  function ToggleSwitch(props) {
98760
98890
  const {
@@ -99185,6 +99315,7 @@
99185
99315
  * @param {Function} [props.descriptionLoaded]
99186
99316
  * @param {TooltipConfig} [props.tooltipConfig]
99187
99317
  * @param {Function} [props.tooltipLoaded]
99318
+ * @param {HTMLElement} [props.feelPopupContainer]
99188
99319
  * @param {Object} [props.eventBus]
99189
99320
  */
99190
99321
  function PropertiesPanel(props) {
@@ -99199,6 +99330,7 @@
99199
99330
  descriptionLoaded,
99200
99331
  tooltipConfig,
99201
99332
  tooltipLoaded,
99333
+ feelPopupContainer,
99202
99334
  eventBus
99203
99335
  } = props;
99204
99336
 
@@ -99301,6 +99433,8 @@
99301
99433
  value: eventContext,
99302
99434
  children: o(FEELPopupRoot, {
99303
99435
  element: element,
99436
+ eventBus: eventBus,
99437
+ popupContainer: feelPopupContainer,
99304
99438
  children: o("div", {
99305
99439
  class: "bio-properties-panel",
99306
99440
  children: [o(Header, {
@@ -99951,10 +100085,51 @@
99951
100085
  }
99952
100086
  debounceInput.$inject = ['config.debounceInput'];
99953
100087
 
99954
- var index = {
100088
+ var index$1 = {
99955
100089
  debounceInput: ['factory', debounceInput]
99956
100090
  };
99957
100091
 
100092
+ class FeelPopupModule {
100093
+ constructor(eventBus) {
100094
+ this._eventBus = eventBus;
100095
+ }
100096
+
100097
+ /**
100098
+ * Check if the FEEL popup is open.
100099
+ * @return {Boolean}
100100
+ */
100101
+ isOpen() {
100102
+ return this._eventBus.fire('feelPopup._isOpen');
100103
+ }
100104
+
100105
+ /**
100106
+ * Open the FEEL popup.
100107
+ *
100108
+ * @param {String} entryId
100109
+ * @param {Object} popupConfig
100110
+ * @param {HTMLElement} sourceElement
100111
+ */
100112
+ open(entryId, popupConfig, sourceElement) {
100113
+ return this._eventBus.fire('feelPopup._open', {
100114
+ entryId,
100115
+ popupConfig,
100116
+ sourceElement
100117
+ });
100118
+ }
100119
+
100120
+ /**
100121
+ * Close the FEEL popup.
100122
+ */
100123
+ close() {
100124
+ return this._eventBus.fire('feelPopup._close');
100125
+ }
100126
+ }
100127
+ FeelPopupModule.$inject = ['eventBus'];
100128
+
100129
+ var index = {
100130
+ feelPopup: ['type', FeelPopupModule]
100131
+ };
100132
+
99958
100133
  var zeebe = {};
99959
100134
 
99960
100135
  var require$$0 = /*@__PURE__*/getAugmentedNamespace(index_esm);
@@ -102835,7 +103010,8 @@
102835
103010
  getProviders,
102836
103011
  layoutConfig: initialLayoutConfig,
102837
103012
  descriptionConfig,
102838
- tooltipConfig
103013
+ tooltipConfig,
103014
+ feelPopupContainer
102839
103015
  } = props;
102840
103016
  const canvas = injector.get('canvas');
102841
103017
  const elementRegistry = injector.get('elementRegistry');
@@ -103011,6 +103187,7 @@
103011
103187
  descriptionLoaded: onDescriptionLoaded,
103012
103188
  tooltipConfig: tooltipConfig,
103013
103189
  tooltipLoaded: onTooltipLoaded,
103190
+ feelPopupContainer: feelPopupContainer,
103014
103191
  eventBus: eventBus
103015
103192
  })
103016
103193
  });
@@ -103043,13 +103220,15 @@
103043
103220
  parent,
103044
103221
  layout: layoutConfig,
103045
103222
  description: descriptionConfig,
103046
- tooltip: tooltipConfig
103223
+ tooltip: tooltipConfig,
103224
+ feelPopupContainer
103047
103225
  } = config || {};
103048
103226
  this._eventBus = eventBus;
103049
103227
  this._injector = injector;
103050
103228
  this._layoutConfig = layoutConfig;
103051
103229
  this._descriptionConfig = descriptionConfig;
103052
103230
  this._tooltipConfig = tooltipConfig;
103231
+ this._feelPopupContainer = feelPopupContainer;
103053
103232
  this._container = domify$1('<div style="height: 100%" class="bio-properties-panel-container"></div>');
103054
103233
  var commandStack = injector.get('commandStack', false);
103055
103234
  commandStack && setupKeyboard(this._container, eventBus, commandStack);
@@ -103160,7 +103339,8 @@
103160
103339
  getProviders: this._getProviders.bind(this),
103161
103340
  layoutConfig: this._layoutConfig,
103162
103341
  descriptionConfig: this._descriptionConfig,
103163
- tooltipConfig: this._tooltipConfig
103342
+ tooltipConfig: this._tooltipConfig,
103343
+ feelPopupContainer: this._feelPopupContainer
103164
103344
  }), this._container);
103165
103345
  this._eventBus.fire('propertiesPanel.rendered');
103166
103346
  }
@@ -103248,7 +103428,7 @@
103248
103428
  };
103249
103429
 
103250
103430
  var index$3 = {
103251
- __depends__: [Commands, index],
103431
+ __depends__: [Commands, index$1, index],
103252
103432
  __init__: ['propertiesPanel'],
103253
103433
  propertiesPanel: ['type', BpmnPropertiesPanelRenderer]
103254
103434
  };
@@ -105507,12 +105687,12 @@
105507
105687
  : alignToOriginModule,
105508
105688
  options.disableGrid
105509
105689
  ? {}
105510
- : index$1
105690
+ : index$4
105511
105691
  ];
105512
105692
  };
105513
105693
 
105514
105694
  Modeler.prototype._extensionModules = [
105515
- index$4,
105695
+ index$5,
105516
105696
  ExecutableFixModule,
105517
105697
  index$3,
105518
105698
  index$2