This increase the safety of our build; external consumers
do no longer need to account for the `browser` field to
bundle bpmn-js (or otherwise bundle a Node shim, unintentionally).
This commit promisifies following APIs:
BaseViewer#importXML
BaseViewer#importDefinitions
BaseViewer#open
BaseViewer#saveXML
BaseViewer#saveSVG
Modeler#createDiagram
Related to https://github.com/bpmn-io/bpmn-js/issues/812
BREAKING CHANGES:
* Users are now expected to have Promises either by default or
polyfilled as the APIs return a Promise now.
This implements custom hit areas for participants, lanes and
expanded subprocesses.
Given these changes, users need to grab container elements
on the boarder or the label area to move them.
Closes https://github.com/bpmn-io/bpmn-js/issues/957
This implements custom hit areas for participants, lanes and
expanded subprocesses.
Given these changes, users need to grab container elements
on the boarder or the label area to move them.
Closes https://github.com/bpmn-io/bpmn-js/issues/957
* in the context of bpmn-js returning true when asked wether two elements can be connected is not sufficient
* remove BpmnConnectionPreview since it's not needed after tests are fixed
Closes#1034
* Treat features as optional dependencies and register action
only if feature exists
* Explicitly add features to the Modeler and NavigatedViewer types
* use ES6 import / export
* UTILS: export individual utilities
* TESTS: localize TestHelper includes
BREAKING CHANGE:
* all utilities export independent functions
* library sources got ported to ES6. You must now use
a ES module bundler such as Browserify + babelify or
Webpack to consume this library (or parts of it).
Elements will automatically be created at appropriate
positions when context menu create entries are being
clicked (rather than dragged).
This marks a major step forward for mobile modeling,
too as dragging, especially dragging out from very small
controls is very cumbersome to do.
Things we take into account:
* for bpmn:FlowNodes, we try to compute the current
distance between elements on the flow based on
connections going in and out of the flow nodes
source element
* for bpmn:TextAnnotation we assume placement of the
element top right of the source shape
* for bpmn:DataObject and friends we assume a
placement bottom right of the source shape
* for all elements, we try not to place elements on
top of each other; i.e. new elements will be pushed
up or down accordingly, if an element at a chosen
position does already exist
Integration into other services:
* context pad provider works with autoPlace, if
available and defaults to drag start without
* auto placed elements are selected and direct editing
may conditionally be activated based on element type
(LabelEditingProvider knows the rules)
Users can out out of autoPlace by specifying the configuration
property `config.contextPad.autoPlace = false`.
Closes#563
BREAKING CHANGE:
* This breaks the default interaction from the context
pad; if you rely on clicking to start the drag
you can opt out of autoPlace:
```
new BpmnJS({ contextPad: { autoPlace: false } });
```
This allows bundled users (f.ex without browserify)
to use the modeler + viewers easily without having to monkey patch or
load more than one bundled file.
Closes#541
This commit adds more life-cycle events users can
plug into during xml parsing and rendering:
* import.parse.start
* import.parse.complete
* import.render.start
* import.render.complete
* import.done
Some other events had to go because of that, namely
* import.start
* import.(success|error)
BREAKING CHANGE:
* the event import.start got renamed to import.render.start
* the events import.success and import.error got removed
in favour of import.render.complete (passing err, warnings)
* simplifies event handling
* relies on Diagram#clear to reset the diagram before
successive imports
* allows diagram services to be re-used across imports
* allows diagram services to be injected (or retrieved)
before import
Closes#237
This simplifies the ways we work with replacements.
Instead of monkey-patching the original replace functionality we
* create the business object / target object
* pass it to replace
A simple way that works well with our existing infrastructure.
Other changes:
* fixes redo / undo issues.
* splits context-pad + replace
Closes#180