12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import {createAppPageComponent} from './components/app-page';
-
- function init() {
- const components = loadComponents();
- const categories = loadCategories(components);
- const themes = loadThemes();
- const patterns = loadPatterns();
-
- window.components = components;
- window.categories = categories;
- window.themes = themes;
- window.patterns = patterns;
-
- const app = new Vue(createAppPageComponent({
- components,
- categories
- }));
- };
-
- function loadCategories(components) {
- const set = new Set();
- components.forEach(component => {
- set.add(component.category);
- });
-
- return [...set.values()].map(value => {
- return {
- name: value,
- hash: value.toLowerCase().replace(/ /g, '_')
- };
- });
- }
-
- function loadComponents() {
- return JSON.parse(document.querySelector('#data').getAttribute('data-components')).map(component => {
- component = component.annotation;
- component.id = component.name.toLowerCase().replace(/ /g, '_');
- return component;
- });
- }
-
- function loadThemes() {
- const themes = JSON.parse(document.querySelector('#data').getAttribute('data-themes')).map(theme => {
- return theme;
- }).filter(theme => {
- return theme !== 'onsen-css-components';
- });
-
- // デフォルトのテーマを先頭に追加
- themes.unshift('onsen-css-components');
-
- return themes;
- }
-
- function loadPatterns() {
- return JSON.parse(document.querySelector('#data').getAttribute('data-patterns')).map(pattern => {
- pattern.id = pattern.name.toLowerCase().replace(/ +/g, '_');
-
- return pattern;
- });
- }
-
- window.onload = init;
|