• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements.  See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership.  The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License.  You may obtain a copy of the License at
9 *
10 *   http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied.  See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20import { App } from '../../app/App';
21import { PageLinkedMap } from '../../app/map';
22import Page from '../../page';
23
24const pageMap: PageLinkedMap = App.pageMap;
25
26/**
27 * Get an element tree of a page.
28 * @param  {string} id - Page id.
29 * @return {Object} A virtual dom tree.
30 */
31export function getRoot(id: string): object {
32  const page: Page = pageMap[id];
33  let result: any;
34  if (page) {
35    const doc: any = page.doc || {};
36    const body = doc.body || {};
37    result = body.toJSON ? body.toJSON() : {};
38  } else {
39    result = new Error(`invalid page id "${id}"`);
40  }
41  return result;
42}
43