Skip to content

Commit

Permalink
feat: add toFlyoutData method for compatibility with backpack (google…
Browse files Browse the repository at this point in the history
  • Loading branch information
BeksOmega authored and johnnesky committed Apr 13, 2024
1 parent fea8923 commit a5f8ba5
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions core/block_svg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ import {IconType} from './icons/icon_types.js';
import {BlockCopyData, BlockPaster} from './clipboard/block_paster.js';
import {BlockDragStrategy} from './dragging/block_drag_strategy.js';
import {IDeletable} from './blockly.js';
import {FlyoutItemInfo} from './utils/toolbox.js';

/**
* Class for a block's SVG representation.
Expand Down Expand Up @@ -1655,4 +1656,30 @@ export class BlockSvg
revertDrag(): void {
this.dragStrategy.revertDrag();
}

/**
* Returns a representation of this block that can be displayed in a flyout.
*/
toFlyoutData(): FlyoutItemInfo[] {
const json: FlyoutItemInfo = {
kind: 'BLOCK',
...blocks.save(this),
};

const toRemove = new Set(['id', 'height', 'width', 'pinned', 'enabled']);

// Traverse the JSON recursively.
const traverseJson = function (json: {[key: string]: unknown}) {
for (const key in json) {
if (toRemove.has(key)) {
delete json[key];
} else if (typeof json[key] === 'object') {
traverseJson(json[key] as {[key: string]: unknown});
}
}
};

traverseJson(json as unknown as {[key: string]: unknown});
return [json];
}
}

0 comments on commit a5f8ba5

Please sign in to comment.