Home Reference Source Test

source/template.js

import { prettify } from '@tech_query/node-toolkit';

import { identifierOf } from './utility';


/**
 * @private
 *
 * @return {String}
 */
export function index_html() {

    return `<template>
    <style>
        h1 {
            color: lightblue;
        }
    </style>

    <h1>Hello, WebCell !</h1>
</template>`;
}


/**
 * @private
 *
 * @param {String}   name
 * @param {String[]} [keys=[]]
 *
 * @return {String}
 */
export function index_js(name,  keys = [ ]) {

    return prettify(`
import { component${keys[0] ? ', mapProperty, mapData' : ''} } from 'web-cell';

import template from './index.html';


@component({ template })
export default  class ${identifierOf(name, true)} extends HTMLElement {

    constructor() {  super().construct();  }
${
    keys[0] ? `
    @mapProperty
    static get observedAttributes() {

        return  ${JSON.stringify( keys )};
    }

    @mapData
    attributeChangedCallback() { }` : ''}
}`);
}


/**
 * @private
 *
 * @param {String}   name
 * @param {String[]} page
 *
 * @return {String}
 */
export  function router_js(name, page) {

    return prettify(`import { component } from 'web-cell';

import HTMLRouter, { load } from 'cell-router';


@component()
export default  class ${identifierOf(name, true)}Router extends HTMLRouter {
${page.map(name => {

        name = name.toLowerCase();

        return `
    @load('/${name}')
    ${name}Page() {  return '<page-${name} />';  }
`;}).join('\n')}
}`);
}