Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Last active Jun 24, 2020
Embed
What would you like to do?
Demo Desktop App showcasing Win32 APIs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="/favicon.png" rel="icon">
<link rel="stylesheet" href="/lib/css/bootstrap/bootstrap.css">
<title>{{ title ?? 'Sharp Data' }}</title>
</head>
<body>
{{ 'buttons,buttons-svg' |> cssIncludes }}
{{ 'app' |> cssIncludes |> svgFill('#444') }}
{{#if fileExists('/bundle.css') }}
<link rel="stylesheet" href="/bundle.css">
{{else}}
{{ 'content:/src/css/' |> bundleCss({ minify:false, cache:false, out:'/app.bundle.css' }) }}
{{/if}}
<i hidden>{{ '/js/hot-fileloader.js' |> ifDebugIncludeScript }}</i>
<script>
CONFIG = {
debug: {{ debugMode |> json }},
desktop: {{ desktopInfo |> json }},
hasExcel: {{ (isWin ? typeofProgId('Excel.Application') != null : false) |> json }},
}
</script>
<noscript>You need to enable JavaScript to run this app.</noscript>
{{page}}
{{ [
`/lib/js/vue/vue.min.js`,
`/lib/js/vue-router/vue-router.min.js`,
`/lib/js/vue-class-component/vue-class-component.min.js`,
`/lib/js/vue-property-decorator/vue-property-decorator.min.js`,
`/lib/js/@servicestack/desktop/servicestack-desktop.min.js`,
`/lib/js/@servicestack/client/servicestack-client.min.js`,
`/lib/js/@servicestack/vue/servicestack-vue.min.js`,
] |> map => `<script src="${it}"></script>` |> joinln |> raw }}
<script>
var ALIASES = {
'vue': { default: Vue },
'vue-router': { default: VueRouter },
'vue-class-component': VueClassComponent,
'vue-property-decorator': VuePropertyDecorator,
'@servicestack/vue': ServiceStackVue
};
var global = window;
window.exports = {};
window.require = function(name) {
return ALIASES[name] || exports[name] || window[name] || exports;
};
Object.assign(window, window["@servicestack/desktop"], window["@servicestack/client"]);
</script>
{{#if fileExists('/bundle.js') }}
<script src="/bundle.js"></script>
{{else}}
{{ [
'content:/src/components/',
'content:/src/shared/',
'content:/src/',
] |> bundleJs({ minify:false, cache:false, iife:true, out:`/app.bundle.js` }) }}
{{/if}}
{{ scripts |> raw }}
{{initError |> htmlError}}
{{htmlError}}
</body>
</html>
name win32 demo
appName win32
description Demo Desktop App showcasing Win32 APIs
debug false
CefConfig { Kiosk:true }
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background-color:#f1f1f1}input[type=number]{width:100px}.jsonviewer .ib{display:inline-block}.jsonviewer table{border-collapse:collapse;border:solid 1px #ccc;clear:left}.jsonviewer th{text-align:left;padding:4px 8px;text-shadow:#fff 1px 1px -1px;background:#f1f1f1;white-space:nowrap;font-weight:bold}.jsonviewer td{padding:8px 8px 0 8px;vertical-align:top;line-height:18px}.jsonviewer dl{margin:0;clear:left}.jsonviewer dt{font-weight:bold;width:160px;clear:left;float:left;display:block;white-space:nowrap;line-height:26px}.jsonviewer dd{display:block;float:left;line-height:26px;max-width:600px;margin:0}.jsonviewer dl dl dt{font-weight:bold}.jsonviewer hr{display:none}.jsonviewer td dl HR{display:block;padding:0;clear:left;border:none}.jsonviewer td dl{padding:4px;margin:0;height:100%;max-width:700px}.jsonviewer dl td dl dt{padding:2px;margin:0 10px 0 0;font-weight:bold;width:120px;overflow:hidden;clear:left;float:left;display:block}.jsonviewer dl td dl dd{margin:0;padding:2px;display:block;float:left}
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e};Object.defineProperty(exports,"__esModule",{value:!0});exports.Win32=void 0;var vue_property_decorator_1=require("vue-property-decorator"),desktop_1=require("@servicestack/desktop"),shared_1=require("../../shared"),Win32=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.counter=1,t.toggleScrollbar=!1,t.x=100,t.y=100,t.width=800,t.height=600,t.responseStatus=null,t.loading=!1,t.cmds={chooseColor:function(){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,desktop_1.evaluateCode("chooseColor(`#336699`)")];case 1:return[2,n.sent()]}})})},start:function(){return desktop_1.start("%USERPROFILE%\\\\.sharp-apps")},openUrl:function(){return desktop_1.openUrl("https://google.com")},messageBox:function(){return desktop_1.messageBox("The Title","Caption",desktop_1.MessageBoxType.YesNo|desktop_1.MessageBoxType.IconInformation|desktop_1.MessageBoxType.SystemModal)},clipboard:function(){return desktop_1.clipboard()},setClipboard:function(){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,desktop_1.setClipboard("Counter: "+this.counter++)];case 1:return[2,n.sent()]}})})},expandEnvVars:function(){return desktop_1.expandEnvVars("%USERPROFILE% %windir% %OS%")},openFile:function(){return __awaiter(t,void 0,void 0,function(){var t,n;return __generator(this,function(i){switch(i.label){case 0:return t=desktop_1.openFile,n={title:"Pick Images",filter:"Image files (*.png;*.jpeg)|*.png;*.jpeg|All files (*.*)|*.*"},[4,desktop_1.expandEnvVars("%USERPROFILE%\\\\Pictures")];case 1:return[4,t.apply(void 0,[(n.initialDir=i.sent(),n.defaultExt="*.png",n)])];case 2:return[2,i.sent()]}})})},openFileFolder:function(){return desktop_1.openFile({isFolderPicker:!0})},openFolder:function(){return __awaiter(t,void 0,void 0,function(){var t,n;return __generator(this,function(i){switch(i.label){case 0:return t=desktop_1.openFolder,n={},[4,desktop_1.expandEnvVars("%USERPROFILE%")];case 1:return[2,t.apply(void 0,[(n.initialDir=i.sent(),n)])]}})})},deviceScreenResolution:desktop_1.deviceScreenResolution,primaryMonitorInfo:desktop_1.primaryMonitorInfo,windowSize:desktop_1.windowSize,windowClientSize:desktop_1.windowClientSize,windowClientRect:desktop_1.windowClientRect,windowSendToForeground:desktop_1.windowSendToForeground,windowCenterToScreen:desktop_1.windowCenterToScreen,windowSetPosition:t.windowSetPosition,windowSetSize:t.windowSetSize,windowSetFullScreen:desktop_1.windowSetFullScreen,windowSetFocus:desktop_1.windowSetFocus,windowShowScrollBar:function(){return desktop_1.windowShowScrollBar(t.toggleScrollbar=!t.toggleScrollbar)},windowRedrawFrame:desktop_1.windowRedrawFrame,windowIsVisible:desktop_1.windowIsVisible,windowIsEnabled:desktop_1.windowIsEnabled,windowText:desktop_1.windowText,windowSetText:function(){return desktop_1.windowSetText("Counter: "+t.counter++)},windowHide:desktop_1.windowHide,windowShow:desktop_1.windowShow},t.results={},t.leftScripts=["deviceScreenResolution","primaryMonitorInfo","windowSize","windowClientSize","windowClientRect"],t}return __extends(t,n),t.prototype.windowSetPosition=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,desktop_1.windowSetPosition(this.x,this.y)];case 1:return[2,n.sent()]}})})},t.prototype.windowSetSize=function(){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(n){switch(n.label){case 0:return[4,desktop_1.windowSetSize(this.width,this.height)];case 1:return[2,n.sent()]}})})},Object.defineProperty(t.prototype,"rightScripts",{get:function(){var n=this;return Object.keys(this.cmds).filter(function(t){return t.startsWith("window")&&n.leftScripts.indexOf(t)==-1})},enumerable:!1,configurable:!0}),t.prototype.fnBody=function(n){return n=="windowSetPosition"?"windowSetPosition(x, y)":n=="windowSetSize"?"windowSetSize(width, height)":n=="windowShowScrollBar"?"windowShowScrollBar(toggleScrollbar=!toggleScrollbar)":n=="windowSetText"?"windowSetText(`Counter: ${this.counter++}`)":n.toString()+"()"},t.prototype.exec=function(n){return __awaiter(this,void 0,void 0,function(){var t=this;return __generator(this,function(i){switch(i.label){case 0:return[4,shared_1.exec(this,function(){return __awaiter(t,void 0,void 0,function(){var t,i;return __generator(this,function(r){switch(r.label){case 0:if(t=this.cmds[n],!t)throw"'"+n+"' does not exist";return[4,t()];case 1:return i=r.sent(),this.$set(this.results,n,i),[2]}})})})];case 1:return i.sent(),[2]}})})},__decorate([vue_property_decorator_1.Component({template:'<div id="desktop" class="p-5">\n <div class="row">\n <div class="col col-6">\n <h3 class="mb-4">Custom APIs<\/h3>\n\n <p>\n <pre>chooseColor(\'#336699\')<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'chooseColor\')">chooseColor<\/button>\n <span class="result">{{results.chooseColor}}<\/span>\n <\/p>\n\n <h3 class="mb-4">Desktop General APIs<\/h3>\n\n <p>\n <pre>start(\'%USERPROFILE%\\.sharp-apps\')<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'start\')">start<\/button>\n <span class="result">{{results.open}}<\/span>\n <\/p>\n\n <p>\n <pre>openUrl(\'https://google.com\')<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'openUrl\')">openUrl<\/button>\n <span class="result">{{results.openUrl}}<\/span>\n <\/p>\n\n <p>\n<pre>messageBox(\'The Title\', \'Caption\', \n MessageBoxType.YesNo | MessageBoxType.IconInformation | MessageBoxType.SystemModal)<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'messageBox\')">messageBox<\/button>\n <span class="result">{{results.messageBox}}<\/span>\n <\/p>\n \n <p>\n <button class="btn btn-outline-primary" @click="exec(\'clipboard\')">clipboard<\/button>\n <span class="result">{{results.clipboard}}<\/span>\n <\/p>\n \n <p>\n <pre>setClipboard(`Counter: ${counter++}`)<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'setClipboard\')">setClipboard<\/button>\n <span class="result">{{results.setClipboard}}<\/span>\n <\/p>\n \n <p>\n <pre>expandEnvVars(\'%USERPROFILE% %windir% %OS%\')<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'expandEnvVars\')">expandEnvVars<\/button>\n <span class="result">{{results.expandEnvVars}}<\/span>\n <\/p>\n \n <p>\n<pre>openFile({\n title: \'Pick Images\',\n filter: "Image files (*.png;*.jpeg)|*.png;*.jpeg|All files (*.*)|*.*",\n initialDir: await expandEnvVars(\'%USERPROFILE%\\Pictures\'),\n defaultExt: \'*.png\',\n})<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'openFile\')">openFile<\/button>\n <span class="result">{{results.openFile}}<\/span>\n <\/p>\n \n <p>\n <pre>openFile({ isFolderPicker: true })<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'openFileFolder\')">openFile folder<\/button>\n <span class="result">{{results.openFileFolder}}<\/span>\n <\/p>\n \n \n <p>\n <pre>openFolder({ initialDir: await expandEnvVars(\'%USERPROFILE%\') })<\/pre>\n <button class="btn btn-outline-primary" @click="exec(\'openFolder\')">openFolder<\/button>\n <span class="result">{{results.openFolder}}<\/span>\n <\/p>\n \n <p v-for="fn in leftScripts">\n <pre>{{fnBody(fn)}}<\/pre>\n <button class="btn btn-outline-primary" @click="exec(fn)">{{fn}}<\/button>\n <span>{{results[fn]}}<\/span> \n <\/p>\n <\/div>\n \n <div class="col col-6">\n <h3 class="mb-4">Window APIs<\/h3>\n \n <div>\n X <input type="number" v-model="x" placeholder="X">\n Y <input type="number" v-model="y" placeholder="Y">\n W <input type="number" v-model="width" placeholder="Width">\n H <input type="number" v-model="height" placeholder="Height">\n <\/div>\n \n \n <div>{{x}}, {{y}}, {{width}}, {{height}}<\/div>\n \n <p v-for="fn in rightScripts">\n <pre>{{fnBody(fn)}}<\/pre>\n <button class="btn btn-outline-primary" @click="exec(fn)">{{fn}}<\/button>\n <span>{{results[fn]}}<\/span> \n <\/p>\n \n <\/div>\n <\/div>\n \n <error-summary :responseStatus="responseStatus" />\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.Win32=Win32;exports.default=Win32;
})();
(function(){
"use strict";function exec(n,t){return __awaiter(this,void 0,void 0,function(){var i;return __generator(this,function(r){switch(r.label){case 0:return r.trys.push([0,2,3,4]),n.loading=!0,n.responseStatus=null,[4,t()];case 1:return[2,r.sent()];case 2:return i=r.sent(),log(i),n.responseStatus=i.responseStatus||(typeof i=="string"?{errorCode:"Error",message:i}:null)||i,n.$emit("error",n.responseStatus),[3,4];case 3:return n.loading=!1,[7];case 4:return[2]}})})}function log(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return exports.store.debug&&console.log.apply(console,arguments),t}function openUrl(n){return __awaiter(this,void 0,void 0,function(){return __generator(this,function(t){switch(t.label){case 0:return exports.store.desktop?[4,desktop_1.evaluateCode("openUrl('"+n+"')")]:[3,2];case 1:return t.sent(),[3,3];case 2:window.open(n);t.label=3;case 3:return[2]}})})}var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},__generator=this&&this.__generator||function(n,t){function o(n){return function(t){return s([n,t])}}function s(e){if(f)throw new TypeError("Generator is already executing.");while(r)try{if(f=1,u&&(i=e[0]&2?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;(u=0,i)&&(e=[e[0]&2,i.value]);switch(e[0]){case 0:case 1:i=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++;u=e[1];e=[0];continue;case 7:e=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!i||e[1]>i[0]&&e[1]<i[3])){r.label=e[1];break}if(e[0]===6&&r.label<i[1]){r.label=i[1];i=e;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(e);break}i[2]&&r.ops.pop();r.trys.pop();continue}e=t.call(n,r)}catch(o){e=[6,o];u=0}finally{f=i=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},f,u,i,e;return e={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol=="function"&&(e[Symbol.iterator]=function(){return this}),e},vue_1,client_1,desktop_1,Roles,EventBus;Object.defineProperty(exports,"__esModule",{value:!0});exports.openUrl=exports.log=exports.exec=exports.bus=exports.store=exports.Roles=exports.client=void 0;vue_1=require("vue");client_1=require("@servicestack/client");exports.client=new client_1.JsonServiceClient("/");desktop_1=require("@servicestack/desktop"),function(n){n.Admin="Admin"}(Roles=exports.Roles||(exports.Roles={}));exports.store={debug:global.CONFIG.debug,desktop:global.CONFIG.desktop,hasExcel:global.CONFIG.hasExcel};EventBus=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.store=exports.store,t}return __extends(t,n),t}(vue_1.default);exports.bus=new EventBus({data:exports.store});exports.exec=exec;vue_1.default.filter("json",function(n){return n&&JSON.stringify(n)});exports.log=log;exports.openUrl=openUrl,function(){return __awaiter(void 0,void 0,void 0,function(){var n,t;return __generator(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),n=exports.store,[4,desktop_1.desktopInfo()];case 1:return n.desktop=i.sent(),log("In Desktop app:",exports.store.desktop),[3,3];case 2:return t=i.sent(),log("Not in Desktop app:",t),[3,3];case 3:return[2]}})})}();
})();
(function(){
"use strict";var routes;Object.defineProperty(exports,"__esModule",{value:!0});exports.redirect=exports.router=exports.Routes=void 0;var vue_1=require("vue"),vue_router_1=require("vue-router"),vue_2=require("@servicestack/vue"),Win32_1=require("../components/Win32"),Routes;(function(n){n.Home="/";n.Forbidden="/forbidden"})(Routes=exports.Routes||(exports.Routes={}));vue_1.default.use(vue_router_1.default);routes=[{path:Routes.Home,component:Win32_1.Win32},{path:Routes.Forbidden,component:vue_2.Forbidden},{path:"*",redirect:"/"},];exports.router=new vue_router_1.default({mode:"history",linkActiveClass:"active",routes:routes});exports.default=exports.router;exports.redirect=function(n){var t=n.indexOf("://")>=0;t?location.href=n:exports.router.push({path:n})};
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.App=void 0;var vue_1=require("vue"),vue_property_decorator_1=require("vue-property-decorator"),shared_1=require("./shared"),App=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),Object.defineProperty(t.prototype,"store",{get:function(){return shared_1.store},enumerable:!1,configurable:!0}),__decorate([vue_property_decorator_1.Component({template:"<div>\n <router-view><\/router-view>\n <\/div>"})],t)}(vue_1.default);exports.App=App;exports.default=App;
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u},vue_property_decorator_1,ErrorView;Object.defineProperty(exports,"__esModule",{value:!0});exports.ErrorView=void 0;vue_property_decorator_1=require("vue-property-decorator");ErrorView=function(n){function t(){var t=n!==null&&n.apply(this,arguments)||this;return t.showStackTrace=!1,t}return __extends(t,n),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"responseStatus",void 0),__decorate([vue_property_decorator_1.Component({template:'<div v-if="responseStatus" class="noplugin-error alert alert-danger mt-3 mr-3">\n <div>{{responseStatus.errorCode}}: {{responseStatus.message}}<\/div>\n <div v-if="responseStatus.stackTrace">\n <button v-if="!showStackTrace" class="btn btn-link" style="margin-left: -1em" @click="showStackTrace=true">\n <i class="svg-chevron-right svg-lg mb-1" title="expand" />StackTrace<\/button>\n <div v-if="showStackTrace" class="stacktrace">{{responseStatus.stackTrace}}<\/div>\n <\/div>\n<\/div>'})],t)}(vue_property_decorator_1.Vue);exports.ErrorView=ErrorView;exports.default=ErrorView;vue_property_decorator_1.Vue.component("error-view",ErrorView);
})();
(function(){
"use strict";var __extends=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),__decorate=this&&this.__decorate||function(n,t,i,r){var f=arguments.length,u=f<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,i):r,e,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(n,t,i,r);else for(o=n.length-1;o>=0;o--)(e=n[o])&&(u=(f<3?e(u):f>3?e(t,i,u):e(t,i))||u);return f>3&&u&&Object.defineProperty(t,i,u),u};Object.defineProperty(exports,"__esModule",{value:!0});exports.JsonViewer=void 0;var vue_property_decorator_1=require("vue-property-decorator"),client_1=require("@servicestack/client"),show=function(n){return typeof n!="string"||n.substr(0,2)!=="__"},keyFmt=function(n){return client_1.humanize(client_1.toPascalCase(n))},uniqueKeys=function(n){for(var r,t,u={},i=0,f=n.length;i<f;i++){r=n[i];for(t in r)r.hasOwnProperty(t)&&show(t)&&(u[t]=t)}return u},valueFmt=function(n,t,i){return i},num=function(n){return n},date=function(n){return client_1.toDate(n)},pad=function(n){return n<10?"0"+n:n},dmft=function(n){return n.getFullYear()+"/"+pad(n.getMonth()+1)+"/"+pad(n.getDate())},str=function(n){return n.substr(0,6)==="/Date("?dmft(date(n)):n},obj=function(n){return"<dl>\n "+Object.keys(n).filter(show).map(function(t){return'<dt class="ib">'+keyFmt(t)+"<\/dt><dd>"+valueFmt(t,n[t],val(n[t]))+"<\/dd>"}).join("")+"\n <\/dl>"},arr=function(n){if(typeof n[0]=="string"||typeof n[0]=="number")return"<span>"+n.join(", ")+"<\/span>";var t=uniqueKeys(n);return"\n <table>\n <thead>\n <tr>\n "+Object.keys(t).map(function(n){return"<th><b><\/b>"+keyFmt(n)+"<\/th>"}).join("")+"\n <\/tr>\n <\/thead>\n <tbody>\n "+n.map(function(n){return"<tr>\n "+Object.keys(t).filter(show).map(function(t){return"<td>"+valueFmt(t,n[t],val(n[t]))+"<\/td>"}).join("")+"\n <\/tr>"}).join("")+"\n <\/tbody>\n <\/table>"},val=function(n,t){return(t&&(valueFmt=t),n==null)?"":typeof n=="number"?""+num(n):typeof n=="string"?str(n):typeof n=="boolean"?n?"true":"false":n.length?arr(n):obj(n)},JsonViewer=function(n){function t(){return n!==null&&n.apply(this,arguments)||this}return __extends(t,n),Object.defineProperty(t.prototype,"html",{get:function(){return this.json?val(JSON.parse(this.json)):val(this.value)},enumerable:!1,configurable:!0}),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"value",void 0),__decorate([vue_property_decorator_1.Prop({"default":null})],t.prototype,"json",void 0),__decorate([vue_property_decorator_1.Component({template:'<div class="jsonviewer">\n <div v-html="html"><\/div>\n <span class="clearfix"><\/span>\n <\/div>'})],t)}(vue_property_decorator_1.Vue);exports.JsonViewer=JsonViewer;exports.default=JsonViewer;vue_property_decorator_1.Vue.component("jsonviewer",JsonViewer);
})();
(function(){
"use strict";var vue_1,vue_2;Object.defineProperty(exports,"__esModule",{value:!0});require("./app.scss");require("es6-shim");vue_1=require("vue");vue_2=require("@servicestack/vue");vue_1.default.use(vue_2.default);var App_1=require("./App"),router_1=require("./shared/router"),app=new vue_1.default({el:"#app",render:function(n){return n(App_1.App)},router:router_1.router});
})();
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TUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MTwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NDI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6QmFnLz4KICAgICAgICAgPC9kYzpzdWJqZWN0PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxMy0xMS0xNlQwODoxMToyMzwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+UGl4ZWxtYXRvciAyLjIuMTwveG1wOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4Kpcq+GAAAAsFJREFUWAnVl19oj1EYx2f+lxmFpESZ0hrFhfwp2YU/F6zWSq3kwg3SolyQcqGE4krkguTSlUVJwi1Js7mQi9ViYvOn2VjNzPD52u+t0+l3znvO3td+vz312fu+53me83z3/jnn+VVUTBKbGqGzkthdMA964A9MmMUIlbBZcB+aoBo+wlcoSzuJKokWEnkTNkPZmR79G0jE6vgL7sJWKCs7jRpTaHIuwbdgdbmorUXIECQC7eMAPv0zVVBS0wrwBGyB9nUbMVtKqpTi5wKESrjuvD7AaVASa6SqfQd9163ELyqF0jqKjkaKfUn8hH9o8ynaHilUd/w95P7eTmFSCXKZ1tQW6ALfY7d9fcTvgNxMQpvhAZyADaBt1LaFDJyBAbBFua77id0OuZmWIi3iKvgbXsFF2AR2r7CGMfUCLnH2+BdiN0JutoSZesEsJNFP4RAsgMQk/gh8AzPedf6WuBrIzc4yk6/YKfyLjWrrOddX7soxx58RV23kZjpdS/ZPMAvY5+/wH4M5INO7exvsuGLXN4jTN5HZ9BF1QrEi9tgL4nYWKmpHuhyYt7+Qk/nwMLCghKuTugRJY3I+IPczMSshs4U+RvMOP6eqVgPZBTB9xc7vEKOVJpPdI7vY5Gljn8jbXah8PWCOPYXYcR207HQEFHGJ/kHuPtA8j1PmeY0/eWU4jbPlhH8Hl5CQ8RHy94K6KK0Qvpyj+MdlB8jyTRzqG2aebaDt09d9deFXLxFlM4nWkhMqJi1OW6d2o6spcx7EH2XaEtOKx/r1U2YFfPDM3YZvBgSZfrPHdEUxgtWRtYArR/1EPaSaRKrRdU2UdVytnrqwTk+Na/icNh3PYdBEWcWk5V+hxnFPnW58c+GfaSeYDXrB1bZ1QFqBvPxqdBpg0FOzIelWpHgZrAL1nrKkUxq7+n9/tQE8gnWw1FGm/S9DpCdmD6gwqwAAAABJRU5ErkJggg==
{{#raw}}
<div id="app">
<div class="container">
<div class="row p-4">
<div id="content">
<router-view></router-view>
</div>
</div>
</div>
</div>
{{/raw}}
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AAAAAHMBEwkAAAAAAwABAAAAAAAAAAAAfAFeCgAAAAADAAEAAAAAAAAAAAB8ATQKAAAAAAMAAQAAAAAAAAAAAHwBiAoAAAAAAwABAAAAAAAAAAAAfAG4CgAAAAADAAEAAAAAAAAAAAB8Ae4KAAAAAAUAAAAAAAAAAAAAAAAAMwgAAAAABQAAAAAAAAAAAAAAAAAeBQAAAAAAAAAAAAAAAAAAAAAAALkGAAAAAAMAAQAAAAAAAAAAAHwBvgQAAAAAAwABAAAAAAAAAAAAfAGcAgAAAAAEAAEAAgAAAAAAAABzARULAAAAAAQAAgACAAAAAAAAAHMBXQgAAAAAAwABAAAAAAAAAAAAfAGhBAAAAAANAAIADgAGAA8ADAAbAD8AQwC/AGsANgF7AG4BAAAAAAA8PjlfXzFfMAA8Q3JlYXRlSG9zdEJ1aWxkZXI+Yl9fMV8wADw+Y19fRGlzcGxheUNsYXNzNF8wADxjaG9vc2VDb2xvcj5iX18wAE51bGxhYmxlYDEAQWN0aW9uYDEASVJldHVybmAxAExpc3RgMQBGcm9tV2luMzIAVG9XaW4zMgB3aW4zMgBJbnQzMgBGdW5jYDIAX19TdGF0aWNBcnJheUluaXRUeXBlU2l6ZT02NAAzNEM2OUZBM0NBNTA3OURDRDMxMjAxNjU5MDEwNTEwQkIyQUM2NjRBQzUyOUMwNkIxMEYxMjgzMDVCODA1Nzk3ADw+OQA8TW9kdWxlPgA8UHJpdmF0ZUltcGxlbWVudGF0aW9uRGV0YWlscz4AU2VydmljZVN0YWNrLklPAGxDdXN0RGF0YQA8PmMAY2MAU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMAQ0NIb29rUHJvYwBBZGQAPE5hbWU+a19fQmFja2luZ0ZpZWxkADxDb25maWd1cmF0aW9uPmtfX0JhY2tpbmdGaWVsZABCdWlsZABoV25kAG1ldGhvZABTZXJ2aWNlAGhJbnN0YW5jZQBnZXRfRGVidWdNb2RlAHNldF9EZWJ1Z01vZGUARW5kSW52b2tlAEJlZ2luSW52b2tlAFJ1bnRpbWVGaWVsZEhhbmRsZQBSdW50aW1lVHlwZUhhbmRsZQBFbmFibGVUZW1wbGF0ZUhhbmRsZQBHZXRUeXBlRnJvbUhhbmRsZQBzZXRfQWNjZXNzUm9sZQBnZXRfTmFtZQBzZXRfTmFtZQBscFRlbXBsYXRlTmFtZQBzZXRfQXBwTmFtZQBTeXN0ZW0uUnVudGltZQBzY29wZQBWYWx1ZVR5cGUATWljcm9zb2Z0LkFzcE5ldENvcmUAUHJlQ29uZmlndXJlAEhvdFJlbG9hZEZlYXR1cmUARGVza3RvcEZlYXR1cmUAU2hhcnBQYWdlc0ZlYXR1cmUAQXBwSG9zdEJhc2UATXVsdGljYXN0RGVsZWdhdGUARW5hYmxlVGVtcGxhdGUAQ29tcGlsZXJHZW5lcmF0ZWRBdHRyaWJ1dGUARGVidWdnYWJsZUF0dHJpYnV0ZQBBc3NlbWJseVRpdGxlQXR0cmlidXRlAFRhcmdldEZyYW1ld29ya0F0dHJpYnV0ZQBBc3NlbWJseUZpbGVWZXJzaW9uQXR0cmlidXRlAEFzc2VtYmx5SW5mb3JtYXRpb25hbFZlcnNpb25BdHRyaWJ1dGUAQXNzZW1ibHlDb25maWd1cmF0aW9uQXR0cmlidXRlAENvbXBpbGF0aW9uUmVsYXhhdGlvbnNBdHRyaWJ1dGUAQXNzZW1ibHlQcm9kdWN0QXR0cmlidXRlAEFzc2VtYmx5Q29tcGFueUF0dHJpYnV0ZQBSdW50aW1lQ29tcGF0aWJpbGl0eUF0dHJpYnV0ZQB2YWx1ZQBsU3RydWN0U2l6ZQBTaXplT2YAZ2V0X0NvbmZpZwBTZXRDb25maWcASG9zdENvbmZpZwBTeXN0ZW0uUnVudGltZS5WZXJzaW9uaW5nAE1pY3Jvc29mdC5Bc3BOZXRDb3JlLkhvc3RpbmcATWljcm9zb2Z0LkV4dGVuc2lvbnMuSG9zdGluZwBTeXN0ZW0uRHJhd2luZwBtc2cAQXN5bmNDYWxsYmFjawBzZXRfRW5hYmxlU3BhRmFsbGJhY2sAY2FsbGJhY2sAVXNlU2VydmljZVN0YWNrAEVuYWJsZUhvb2sAbHBmbkhvb2sATWFyc2hhbABDb21EbGczMi5kbGwAd2luMzIuZGxsAEZyb21IdG1sAFRvSHRtbABsUGFyYW0Ad1BhcmFtAFByb2dyYW0AQWxsb2NDb1Rhc2tNZW0ARnJlZUNvVGFza01lbQBTeXN0ZW0AUHJldmVudEZ1bGxPcGVuAE1haW4ASVBsdWdpbgBTZXJ2aWNlU3RhY2suQ29uZmlndXJhdGlvbgBNaWNyb3NvZnQuRXh0ZW5zaW9ucy5Db25maWd1cmF0aW9uAElDb25maWd1cmF0aW9uAGdldF9Db25maWd1cmF0aW9uAGNvbmZpZ3VyYXRpb24ATWljcm9zb2Z0LkV4dGVuc2lvbnMuRGVwZW5kZW5jeUluamVjdGlvbgBTeXN0ZW0uUmVmbGVjdGlvbgBJU2VydmljZUNvbGxlY3Rpb24AU2VydmljZVN0YWNrLkNvbW1vbgBBbGxvd0Fub24ASVJldHVybgBSdW4ASGVsbG8AU2hvd0hlbHAAU2VydmljZVN0YWNrLkRlc2t0b3AAYXBwAFVzZVN0YXJ0dXAARnVucQBJVmlydHVhbFBhdGhQcm92aWRlcgBNaWNyb3NvZnQuQXNwTmV0Q29yZS5CdWlsZGVyAHdlYkJ1aWxkZXIASUFwcGxpY2F0aW9uQnVpbGRlcgBDcmVhdGVEZWZhdWx0QnVpbGRlcgBJSG9zdEJ1aWxkZXIASVdlYkhvc3RCdWlsZGVyAENyZWF0ZUhvc3RCdWlsZGVyAENvbnRhaW5lcgBjb250YWluZXIAaHduZE93bmVyAFNvbGlkQ29sb3IAQ2hvb3NlQ29sb3IAY2hvb3NlQ29sb3IAZGVmYXVsdENvbG9yAEFueUNvbG9yAENvbW1EbGdFeHRlbmRlZEVycm9yAENvbG9yVHJhbnNsYXRvcgAuY3RvcgAuY2N0b3IAU3lzdGVtLkRpYWdub3N0aWNzAEN1c3RvbU1ldGhvZHMAZ2V0X1NjcmlwdE1ldGhvZHMAU2VydmljZVN0YWNrLkludGVyZmFjZXMAQ29uZmlndXJlU2VydmljZXMAU3lzdGVtLlJ1bnRpbWUuSW50ZXJvcFNlcnZpY2VzAFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMATXlTZXJ2aWNlcwBzZXJ2aWNlcwBEZWJ1Z2dpbmdNb2RlcwBJVmlydHVhbEZpbGVzAGdldF9WaXJ0dWFsRmlsZXMAc2V0X1ZpcnR1YWxGaWxlcwBSb2xlTmFtZXMAQ29uZmlndXJlU2hhcnBBcHBGZWF0dXJlcwBTeXN0ZW0uRHJhd2luZy5QcmltaXRpdmVzAENob29zZUNvbG9yRmxhZ3MASUFwcFNldHRpbmdzAGdldF9BcHBTZXR0aW5ncwBzZXRfQXBwU2V0dGluZ3MATmV0Q29yZUFwcFNldHRpbmdzAGFyZ3MAPD40X190aGlzAERlc2t0b3BVdGlscwBnZXRfUGx1Z2lucwBXZWJIb3N0QnVpbGRlckV4dGVuc2lvbnMAR2VuZXJpY0hvc3RCdWlsZGVyRXh0ZW5zaW9ucwBIb3N0aW5nRW52aXJvbm1lbnRFeHRlbnNpb25zAE5ldENvcmVBcHBIb3N0RXh0ZW5zaW9ucwBIb3N0aW5nQWJzdHJhY3Rpb25zSG9zdEV4dGVuc2lvbnMATWljcm9zb2Z0LkFzcE5ldENvcmUuSG9zdGluZy5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuSG9zdGluZy5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuQ29uZmlndXJhdGlvbi5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkV4dGVuc2lvbnMuRGVwZW5kZW5jeUluamVjdGlvbi5BYnN0cmFjdGlvbnMATWljcm9zb2Z0LkFzcE5ldENvcmUuSHR0cC5BYnN0cmFjdGlvbnMAU3lzdGVtLkNvbGxlY3Rpb25zAFJ1bnRpbWVIZWxwZXJzAGN1c3RvbUNvbG9ycwBscEN1c3RDb2xvcnMAQ29uZmlndXJlV2ViSG9zdERlZmF1bHRzAE9iamVjdABvYmplY3QAR2V0AFJnYkluaXQAcmdiUmVzdWx0AElBc3luY1Jlc3VsdAByZXN1bHQASUhvc3RpbmdFbnZpcm9ubWVudABnZXRfSG9zdGluZ0Vudmlyb25tZW50AElXZWJIb3N0RW52aXJvbm1lbnQASXNEZXZlbG9wbWVudABTZXJ2aWNlU3RhY2suU2NyaXB0AHJlcXVlc3QASUhvc3QAU2VydmljZVN0YWNrSG9zdABJQXBwSG9zdABJUHJlQ29uZmlndXJlQXBwSG9zdABhcHBIb3N0AFNjcmlwdFNjb3BlQ29udGV4dABTY3JpcHRDb250ZXh0AGVudgBEb1dpbmRvdwBJbml0aWFsaXplQXJyYXkAZ2V0X0Fzc2VtYmx5AEFueQBDb3B5AAAPIwBmAGYAZgBmAGYAZgAAC3cAaQBuADMAMgAAE0QAZQBiAHUAZwBNAG8AZABlAAAAAAB8mHLEDEEBSIP7keGiIK4B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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment