@xiamh/block-shareable-procedures-custom
Version:
A plugin that adds procedure blocks which are backed by explicit data models.
53 lines (47 loc) • 2.21 kB
text/typescript
/**
* @license
* Copyright 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import * as Blockly from 'blockly/core';
import {ObservableParameterModel} from './observable_parameter_model';
import {ObservableProcedureModel} from './observable_procedure_model';
export {blocks} from './blocks';
export {IProcedureBlock, isProcedureBlock} from './i_procedure_block';
export {ProcedureBase, ProcedureBaseJson} from './events_procedure_base';
export {ProcedureChangeReturn, ProcedureChangeReturnJson} from './events_procedure_change_return';
export {ProcedureCreate, ProcedureCreateJson} from './events_procedure_create';
export {ProcedureDelete, ProcedureDeleteJson} from './events_procedure_delete';
export {ProcedureParameterBase, ProcedureParameterBaseJson} from './events_procedure_parameter_base';
export {ProcedureParameterCreate, ProcedureParameterCreateJson} from './events_procedure_parameter_create';
export {ProcedureParameterDelete, ProcedureParameterDeleteJson} from './events_procedure_parameter_delete';
export {ProcedureParameterRename, ProcedureParameterRenameJson} from './events_procedure_parameter_rename';
export {ProcedureRename, ProcedureRenameJson} from './events_procedure_rename';
export {triggerProceduresUpdate} from './update_procedures';
export {
ObservableParameterModel,
ObservableProcedureModel,
};
/**
* Unregisters all of the procedure blocks.
*
* Usually used to unregister the built-in blocks, before register the
* blocks provided by this plugin.
*/
export function unregisterProcedureBlocks() {
delete Blockly.Blocks['procedures_defnoreturn'];
delete Blockly.Blocks['procedures_callnoreturn'];
delete Blockly.Blocks['procedures_defreturn'];
delete Blockly.Blocks['procedures_callreturn'];
}
/**
* Unregisters any existing procedure serializer, and registers a new one
* parameterized with the shareable procedure backing data models.
*/
export function registerProcedureSerializer() {
Blockly.serialization.registry.unregister('procedures');
Blockly.serialization.registry.register(
'procedures',
new Blockly.serialization.procedures.ProcedureSerializer(
ObservableProcedureModel, ObservableParameterModel));
}