@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
67 lines (66 loc) • 2.11 kB
JavaScript
import { EventEmitter } from './EventEmitter';
export class DataTreeProvider {
data;
onDidChangeTreeDataEmitter = new EventEmitter();
onSetData;
constructor(items, onSetData){
this.data = {
items: {
...items
}
};
this.onSetData = onSetData;
}
async getTreeItem(itemId) {
// console.log('getTreeItem', itemId);
return this.data.items[itemId];
}
async onChangeItemChildren(itemId, children) {
// console.log('onChangeItemChildren', itemId);
/*
const items = { ...this.data.items };
const item = { ...items[itemId] };
item.children = [...children];
items[itemId] = item;
this.data = { items };
console.log(this.data);
*/ this.data.items[itemId].children = children;
this.onItemsDidChange_(this.data.items);
this.onDidChangeTreeDataEmitter.emit([
itemId
]);
}
async onRenameItem(item, name) {
// console.log('onRenameItem', item, name);
if (typeof this.onSetData === 'function') {
/*
const items = { ...this.data.items };
const newItem = { ...item };
items[item.index] = this.onSetData(newItem, {
...newItem.data,
title: name
});
this.data = { items };
*/ this.data.items[item.index] = this.onSetData(item, {
...item.data,
title: name
});
this.onItemsDidChange_(this.data.items);
// this.onDidChangeTreeDataEmitter.emit(item.index);
}
}
onDidChangeTreeData(callback) {
// console.log('onDidChangeTreeData', callback);
const handlerId = this.onDidChangeTreeDataEmitter.on((payload)=>callback(payload));
return {
dispose: ()=>this.onDidChangeTreeDataEmitter.off(handlerId)
};
}
onItemsDidChange_(items) {
console.log('onItemsDidChange_', items);
}
onItemsDidChange(callback) {
this.onItemsDidChange_ = callback;
}
}
//# sourceMappingURL=DataTreeProvider.js.map