ItemNode.ts 605 B

12345678910111213141516171819202122232425
  1. import { IPage } from '../../../interfaces/page';
  2. import { HasObjectId } from '../../../interfaces/has-object-id';
  3. type IPageForItem = Partial<IPage & {isTarget?: boolean} & HasObjectId>;
  4. export class ItemNode {
  5. page: IPageForItem;
  6. children?: ItemNode[];
  7. constructor(page: IPageForItem, children: ItemNode[] = []) {
  8. this.page = page;
  9. this.children = children;
  10. }
  11. hasChildren(): boolean {
  12. return this.children != null && this.children?.length > 0;
  13. }
  14. static generateNodesFromPages(pages: IPageForItem[]): ItemNode[] {
  15. return pages.map(page => new ItemNode(page));
  16. }
  17. }