ModelUtil.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import {
  2. some
  3. } from 'min-dash';
  4. /**
  5. * @typedef { import('../model/Types').Element } Element
  6. * @typedef { import('../model/Types').ModdleElement } ModdleElement
  7. */
  8. /**
  9. * Is an element of the given BPMN type?
  10. *
  11. * @param {Element|ModdleElement} element
  12. * @param {string} type
  13. *
  14. * @return {boolean}
  15. */
  16. export function is(element, type) {
  17. var bo = getBusinessObject(element);
  18. return bo && (typeof bo.$instanceOf === 'function') && bo.$instanceOf(type);
  19. }
  20. /**
  21. * Return true if element has any of the given types.
  22. *
  23. * @param {Element|ModdleElement} element
  24. * @param {string[]} types
  25. *
  26. * @return {boolean}
  27. */
  28. export function isAny(element, types) {
  29. return some(types, function(t) {
  30. return is(element, t);
  31. });
  32. }
  33. /**
  34. * Return the business object for a given element.
  35. *
  36. * @param {Element|ModdleElement} element
  37. *
  38. * @return {ModdleElement}
  39. */
  40. export function getBusinessObject(element) {
  41. return (element && element.businessObject) || element;
  42. }
  43. /**
  44. * Return the di object for a given element.
  45. *
  46. * @param {Element} element
  47. *
  48. * @return {ModdleElement}
  49. */
  50. export function getDi(element) {
  51. return element && element.di;
  52. }