mirror of
https://github.com/google/blockly.git
synced 2026-01-08 01:20:12 +01:00
chore: clean up leftover procedure-related things in core (#6797)
* chore: remove triggering updates * chore: export isObservable * chore: move the observable procedure model out of its own directory
This commit is contained in:
65
core/observable_procedure_map.ts
Normal file
65
core/observable_procedure_map.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2022 Google LLC
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import {IProcedureMap} from './interfaces/i_procedure_map.js';
|
||||
import type {IProcedureModel} from './interfaces/i_procedure_model.js';
|
||||
import {isObservable} from './interfaces/i_observable.js';
|
||||
|
||||
|
||||
export class ObservableProcedureMap extends
|
||||
Map<string, IProcedureModel> implements IProcedureMap {
|
||||
/** @internal */
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given procedure model to the procedure map.
|
||||
*/
|
||||
override set(id: string, proc: IProcedureModel): this {
|
||||
if (this.get(id) === proc) return this;
|
||||
super.set(id, proc);
|
||||
if (isObservable(proc)) proc.startPublishing();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the ProcedureModel with the given ID from the procedure map (if it
|
||||
* exists).
|
||||
*/
|
||||
override delete(id: string): boolean {
|
||||
const proc = this.get(id);
|
||||
const existed = super.delete(id);
|
||||
if (!existed) return existed;
|
||||
if (isObservable(proc)) proc.stopPublishing();
|
||||
return existed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all ProcedureModels from the procedure map.
|
||||
*/
|
||||
override clear() {
|
||||
if (!this.size) return;
|
||||
for (const id of this.keys()) {
|
||||
this.delete(id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given ProcedureModel to the map of procedure models, so that
|
||||
* blocks can find it.
|
||||
*/
|
||||
add(proc: IProcedureModel): this {
|
||||
return this.set(proc.getId(), proc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all of the procedures stored in this map.
|
||||
*/
|
||||
getProcedures(): IProcedureModel[] {
|
||||
return [...this.values()];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user