UNPKG

can

Version:

MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.

72 lines (71 loc) 2.26 kB
/*! * CanJS - 2.3.34 * http://canjs.com/ * Copyright (c) 2018 Bitovi * Mon, 30 Apr 2018 20:56:51 GMT * Licensed MIT */ /*can@2.3.34#map/app/app*/ define([ 'can/util/library', 'can/map', 'can/compute' ], function (can) { function sortedSetJson(set) { if (set == null) { return set; } else { var sorted = {}; var keys = []; for (var k in set) { keys.push(k); } keys.sort(); can.each(keys, function (prop) { sorted[prop] = set[prop]; }); return JSON.stringify(sorted); } } can.AppMap = can.Map.extend({ setup: function () { can.Map.prototype.setup.apply(this, arguments); this.__readyPromises = []; this.__pageData = {}; if (typeof System !== 'undefined' && System.has('asset-register')) { var register = System.get('asset-register')['default']; var self = this; register('inline-cache', function () { var script = document.createElement('script'); var text = document.createTextNode('\nINLINE_CACHE = ' + JSON.stringify(self.__pageData) + ';\n'); script.appendChild(text); return script; }); } }, waitFor: function (promise) { this.__readyPromises.push(promise); return promise; }, pageData: can.__notObserve(function (key, set, inst) { var appState = this; function store(data) { var keyData = appState.__pageData[key]; if (!keyData) { keyData = appState.__pageData[key] = {}; } keyData[sortedSetJson(set)] = typeof data.serialize === 'function' ? data.serialize() : data; } if (can.isPromise(inst)) { this.waitFor(inst); inst.then(function (data) { store(data); }); } else { store(inst); } return inst; }) }); return can.AppMap; });