UNPKG

fractal-core

Version:

A minimalist and well crafted app, content or component is our conviction

69 lines 2.8 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const snabbdom_1 = require("snabbdom"); const class_1 = require("snabbdom/modules/class"); const attributes_1 = require("snabbdom/modules/attributes"); const props_1 = require("snabbdom/modules/props"); const style_1 = require("snabbdom/modules/style"); const eventListeners_1 = require("./eventListeners"); const globalListeners_1 = require("./globalListeners"); const sizeBinding_1 = require("./sizeBinding"); const h_1 = require("./h"); exports.h = h_1.default; /* istanbul ignore next */ exports.viewHandler = (selectorElm, cb) => (mod) => { let selector = (typeof selectorElm === 'string') ? selectorElm : ''; let state = { lastContainer: undefined, }; // Common snabbdom patch function (convention over configuration) let patchFn = snabbdom_1.init([ class_1.default, attributes_1.default, props_1.default, style_1.default, eventListeners_1.default(mod), globalListeners_1.default(mod, state), sizeBinding_1.default(mod), ]); function handler(vnode) { let vnode_mapped = exports.h('div' + selector, { key: selector }, [vnode]); state.lastContainer = patchFn(state.lastContainer, vnode_mapped); } return { state, handle: (__, value) => __awaiter(this, void 0, void 0, function* () { if (typeof window === 'undefined') { if (cb) { cb(value); } return; } if (!state.lastContainer) { let container = selector !== '' ? document.querySelector(selector) : selectorElm; if (!container) { return mod.error('view', `There are no element matching selector '${selector}'`); } state.lastContainer = container; handler(state.lastContainer); handler(value); } else { handler(value); } if (cb) { cb(value); } }), destroy: () => { }, }; }; //# sourceMappingURL=index.js.map