Skip to content

Commit

Permalink
test: add auto-save module
Browse files Browse the repository at this point in the history
  • Loading branch information
nikku authored and fake-join[bot] committed Mar 3, 2021
1 parent f57a5b2 commit a5015bf
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions test/spec/auto-save/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
var LOW_PRIORITY = 250;

/**
* Saves the diagram, on change.
*
* @constructor
*
* @param {didi.Injector} injector
* @param {Object} config save config
*
* @example
*
* ```javascript
* // once used, components may safely hook into `saveXML.done`
* // to get notified on every save
*
* const modeler = new BpmnModeler({
* additionalModules: [
* AutoSaveModule
* ]
* });
*
* modeler.on('saveXML.done', function(event) {
* const {
* error,
* xml
* } = event;
*
* // ...
* });
* ```
*/
function AutoSave(injector, config) {

config = config || { format: true };

var parent = injector.get('_parent', false);

var modeler = parent || injector.get('bpmnjs', false) || injector.get('cmmnjs');

if (!modeler) {
throw new Error('no modeler context');
}

var eventBus = parent && parent._eventBus || injector.get('eventBus');

function subscribeChanged() {
eventBus.once('commandStack.changed', LOW_PRIORITY, function() {
modeler.saveXML(config)
.catch(function(error) {
console.error('[auto-save] failed', error);
})
.finally(subscribeChanged);
});
}

subscribeChanged();
}

AutoSave.$inject = [ 'injector', 'config.autoSave' ];


export default {
__init__: [
'autoSave'
],
autoSave: [ 'type', AutoSave ]
};

0 comments on commit a5015bf

Please sign in to comment.