@operato/shell 9.0.0-beta.5 → 9.0.0-beta.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,156 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [9.0.0-beta.52](https://github.com/hatiolab/operato/compare/v9.0.0-beta.51...v9.0.0-beta.52) (2025-03-04)
7
+
8
+ **Note:** Version bump only for package @operato/shell
9
+
10
+
11
+
12
+
13
+
14
+ ## [9.0.0-beta.49](https://github.com/hatiolab/operato/compare/v9.0.0-beta.48...v9.0.0-beta.49) (2025-02-14)
15
+
16
+ **Note:** Version bump only for package @operato/shell
17
+
18
+
19
+
20
+
21
+
22
+ ## [9.0.0-beta.48](https://github.com/hatiolab/operato/compare/v9.0.0-beta.47...v9.0.0-beta.48) (2025-02-14)
23
+
24
+ **Note:** Version bump only for package @operato/shell
25
+
26
+
27
+
28
+
29
+
30
+ ## [9.0.0-beta.47](https://github.com/hatiolab/operato/compare/v9.0.0-beta.46...v9.0.0-beta.47) (2025-02-14)
31
+
32
+ **Note:** Version bump only for package @operato/shell
33
+
34
+
35
+
36
+
37
+
38
+ ## [9.0.0-beta.38](https://github.com/hatiolab/operato/compare/v9.0.0-beta.37...v9.0.0-beta.38) (2025-02-02)
39
+
40
+
41
+ ### :rocket: New Features
42
+
43
+ * support domain-type for context-aware multi-tenancy ([4ac819a](https://github.com/hatiolab/operato/commit/4ac819a2a88785551480c0d6248e10e80e265946))
44
+
45
+
46
+
47
+ ## [9.0.0-beta.37](https://github.com/hatiolab/operato/compare/v9.0.0-beta.36...v9.0.0-beta.37) (2025-02-01)
48
+
49
+ **Note:** Version bump only for package @operato/shell
50
+
51
+
52
+
53
+
54
+
55
+ ## [9.0.0-beta.34](https://github.com/hatiolab/operato/compare/v9.0.0-beta.33...v9.0.0-beta.34) (2025-01-31)
56
+
57
+ **Note:** Version bump only for package @operato/shell
58
+
59
+
60
+
61
+
62
+
63
+ ## [9.0.0-beta.33](https://github.com/hatiolab/operato/compare/v9.0.0-beta.32...v9.0.0-beta.33) (2025-01-31)
64
+
65
+ **Note:** Version bump only for package @operato/shell
66
+
67
+
68
+
69
+
70
+
71
+ ## [9.0.0-beta.32](https://github.com/hatiolab/operato/compare/v9.0.0-beta.31...v9.0.0-beta.32) (2025-01-31)
72
+
73
+ **Note:** Version bump only for package @operato/shell
74
+
75
+
76
+
77
+
78
+
79
+ ## [9.0.0-beta.28](https://github.com/hatiolab/operato/compare/v9.0.0-beta.27...v9.0.0-beta.28) (2025-01-28)
80
+
81
+ **Note:** Version bump only for package @operato/shell
82
+
83
+
84
+
85
+
86
+
87
+ ## [9.0.0-beta.21](https://github.com/hatiolab/operato/compare/v9.0.0-beta.20...v9.0.0-beta.21) (2025-01-28)
88
+
89
+ **Note:** Version bump only for package @operato/shell
90
+
91
+
92
+
93
+
94
+
95
+ ## [9.0.0-beta.20](https://github.com/hatiolab/operato/compare/v9.0.0-beta.19...v9.0.0-beta.20) (2025-01-27)
96
+
97
+
98
+ ### :rocket: New Features
99
+
100
+ * module property-panel ([03fb303](https://github.com/hatiolab/operato/commit/03fb303816c1629adca2a0ad843a8696ffaa4bef))
101
+
102
+
103
+
104
+ ## [9.0.0-beta.18](https://github.com/hatiolab/operato/compare/v9.0.0-beta.17...v9.0.0-beta.18) (2025-01-27)
105
+
106
+ **Note:** Version bump only for package @operato/shell
107
+
108
+
109
+
110
+
111
+
112
+ ## [9.0.0-beta.15](https://github.com/hatiolab/operato/compare/v9.0.0-beta.14...v9.0.0-beta.15) (2025-01-27)
113
+
114
+ **Note:** Version bump only for package @operato/shell
115
+
116
+
117
+
118
+
119
+
120
+ ## [9.0.0-beta.14](https://github.com/hatiolab/operato/compare/v9.0.0-beta.13...v9.0.0-beta.14) (2025-01-27)
121
+
122
+
123
+ ### :rocket: New Features
124
+
125
+ * module property-panel ([d78e4cf](https://github.com/hatiolab/operato/commit/d78e4cf7080b95fa74e61b42094b9f3f59f1409b))
126
+
127
+
128
+
129
+ ## [9.0.0-beta.11](https://github.com/hatiolab/operato/compare/v9.0.0-beta.10...v9.0.0-beta.11) (2025-01-25)
130
+
131
+
132
+ ### :bug: Bug Fix
133
+
134
+ * tsconfig option useDefineForClassFields=false ([0d77c0a](https://github.com/hatiolab/operato/commit/0d77c0aa620282c65b3c05f8e0b559e82836b6ab))
135
+
136
+
137
+
138
+ ## [9.0.0-beta.10](https://github.com/hatiolab/operato/compare/v9.0.0-beta.9...v9.0.0-beta.10) (2025-01-25)
139
+
140
+
141
+ ### :bug: Bug Fix
142
+
143
+ * tweak tsconfig.json ([3c424b1](https://github.com/hatiolab/operato/commit/3c424b18d046f95d5619076d113d49a4b4dc9bbb))
144
+
145
+
146
+
147
+ ## [9.0.0-beta.6](https://github.com/hatiolab/operato/compare/v9.0.0-beta.5...v9.0.0-beta.6) (2025-01-20)
148
+
149
+
150
+ ### :bug: Bug Fix
151
+
152
+ * esm module ([9642b97](https://github.com/hatiolab/operato/commit/9642b97650623d9ce71f6db0fd1995a2379205b5))
153
+
154
+
155
+
6
156
  ## [9.0.0-beta.5](https://github.com/hatiolab/operato/compare/v9.0.0-beta.4...v9.0.0-beta.5) (2025-01-20)
7
157
 
8
158
 
@@ -15,12 +15,18 @@ var MODULES_STATE;
15
15
  MODULES_STATE[MODULES_STATE["INITIALIZING"] = 1] = "INITIALIZING";
16
16
  MODULES_STATE[MODULES_STATE["INITIALIZED"] = 2] = "INITIALIZED";
17
17
  })(MODULES_STATE || (MODULES_STATE = {}));
18
- let ThingsApp = ThingsApp_1 = class ThingsApp extends connect(store)(LitElement) {
18
+ let ThingsApp = class ThingsApp extends connect(store)(LitElement) {
19
19
  constructor() {
20
20
  super(...arguments);
21
+ this.contextPathPrefix = undefined;
21
22
  this.contextPath = ThingsApp_1.contextPath;
22
23
  this.modules = ThingsApp_1.modules;
23
24
  }
25
+ static { ThingsApp_1 = this; }
26
+ static { this.styles = [ScrollbarStyles, AppStyle]; }
27
+ static { this.moduleInitialized = MODULES_STATE.NOT_INITIALIZED; }
28
+ static { this.modules = []; }
29
+ static { this.callbacks = []; }
24
30
  render() {
25
31
  var params = this.params || {};
26
32
  var fullbleed = (this.context && this.context.fullbleed) || (params.fullbleed && params.fullbleed == 'Y');
@@ -57,17 +63,20 @@ let ThingsApp = ThingsApp_1 = class ThingsApp extends connect(store)(LitElement)
57
63
  /* webpackPrefetch: true */
58
64
  /* webpackPreload: true */
59
65
  /* webpackChunkName: "modules" */
60
- '../module-importer.import').then(module => {
66
+ '../module-importer.import').then(async (module) => {
61
67
  var modules = module.modules;
62
68
  /* lifecycle - bootstrapping */
63
- modules.forEach(async (m, idx) => {
69
+ for (let idx = 0; idx < modules.length; idx++) {
70
+ const m = modules[idx];
64
71
  try {
65
- m.bootstrap && (await m.bootstrap(m));
72
+ if (m.bootstrap) {
73
+ await m.bootstrap(m);
74
+ }
66
75
  }
67
76
  catch (e) {
68
77
  console.error(`[${idx} BOOTSTRAP ERROR -${m.name}]`, e);
69
78
  }
70
- });
79
+ }
71
80
  /* shouldUpdate를 활성화한다. */
72
81
  ThingsApp_1.moduleInitialized = MODULES_STATE.INITIALIZED;
73
82
  /* modules를 store에 dispatch 함으로써, update를 invoke 시킨다. */
@@ -194,13 +203,9 @@ let ThingsApp = ThingsApp_1 = class ThingsApp extends connect(store)(LitElement)
194
203
  }
195
204
  setBase() {
196
205
  const base = document.querySelector('base');
197
- base === null || base === void 0 ? void 0 : base.setAttribute('href', this.contextPath ? `${this.contextPath}/` : '/');
206
+ base?.setAttribute('href', this.contextPath ? `${this.contextPath}/` : '/');
198
207
  }
199
208
  };
200
- ThingsApp.styles = [ScrollbarStyles, AppStyle];
201
- ThingsApp.moduleInitialized = MODULES_STATE.NOT_INITIALIZED;
202
- ThingsApp.modules = [];
203
- ThingsApp.callbacks = [];
204
209
  __decorate([
205
210
  property({ type: String, attribute: 'context-path-prefix' })
206
211
  ], ThingsApp.prototype, "contextPathPrefix", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\nimport { installRouter } from 'pwa-helpers/router.js'\n\nimport { ScrollbarStyles } from '@operato/styles'\nimport { setContextPathPrefix, getPathInfo } from '@operato/utils'\n\nimport { navigateWithSilence, UPDATE_ACTIVE_PAGE, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '../actions/index.js'\nimport { store } from '../store.js'\nimport { AppStyle } from './app-style.js'\nimport { PageView } from './pages/page-view.js'\n\nenum MODULES_STATE {\n NOT_INITIALIZED,\n INITIALIZING,\n INITIALIZED\n}\n\n@customElement('things-app')\nexport class ThingsApp extends connect(store)(LitElement) {\n static styles = [ScrollbarStyles, AppStyle]\n\n static moduleInitialized: MODULES_STATE = MODULES_STATE.NOT_INITIALIZED\n static modules: Array<any> = []\n\n /* \n 모든 모듈의 routes 리스트가 수집될 때까지, routeToPage(..) 를 hold 시키기 위해서 ThingsApp.pages를 Promise로 정의한다. \n */\n static pagesResolver: (\n value:\n | {\n [path: string]: string\n }\n | PromiseLike<{\n [path: string]: string\n }>\n ) => void\n static pages: Promise<{ [path: string]: string }>\n\n static callbacks: Array<any> = []\n static contextPath?: string\n\n @property({ type: String, attribute: 'context-path-prefix' }) contextPathPrefix?: string\n\n @state() resourceId?: string\n @state() page?: string\n @state() params?: any\n @state() activePage?: PageView\n @state() context: any\n @state() contextPath?: string = ThingsApp.contextPath\n @state() modules: Array<any> = ThingsApp.modules\n\n @query('main') private main!: HTMLElement\n\n render() {\n var params = this.params || {}\n var fullbleed = (this.context && this.context.fullbleed) || (params.fullbleed && params.fullbleed == 'Y')\n var widebleed = (this.context && this.context.widebleed) || (params.widebleed && params.widebleed == 'Y')\n\n return html`\n <div>\n <ox-page-header-bar header></ox-page-header-bar>\n <main></main>\n <ox-page-footer-bar footer></ox-page-footer-bar>\n </div>\n\n <ox-header-bar ?fullbleed=${fullbleed}></ox-header-bar>\n\n <ox-nav-bar ?fullbleed=${fullbleed || widebleed}></ox-nav-bar>\n\n <ox-aside-bar ?fullbleed=${fullbleed || widebleed}></ox-aside-bar>\n\n <ox-footer-bar ?fullbleed=${fullbleed}></ox-footer-bar>\n\n <ox-snack-bar></ox-snack-bar>\n `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.setBase()\n\n if (ThingsApp.moduleInitialized != MODULES_STATE.NOT_INITIALIZED) {\n /* 첫번째 이후로 생성되는 경우에는 강제로 'popstate'를 발생시켜서, routing 기회를 준다 */\n window.dispatchEvent(new CustomEvent('popstate'))\n\n return\n }\n\n ThingsApp.moduleInitialized = MODULES_STATE.INITIALIZING\n\n /* 모듈 임포트를 동적으로 처리한다. */\n import(\n /* webpackPrefetch: true */\n /* webpackPreload: true */\n /* webpackChunkName: \"modules\" */\n '../module-importer.import'\n ).then(module => {\n var modules: {\n name: string\n bootstrap: (m?: any /* self */) => void\n }[] = module.modules\n\n /* lifecycle - bootstrapping */\n modules.forEach(async (m, idx) => {\n try {\n m.bootstrap && (await m.bootstrap(m))\n } catch (e) {\n console.error(`[${idx} BOOTSTRAP ERROR -${m.name}]`, e)\n }\n })\n\n /* shouldUpdate를 활성화한다. */\n ThingsApp.moduleInitialized = MODULES_STATE.INITIALIZED\n\n /* modules를 store에 dispatch 함으로써, update를 invoke 시킨다. */\n store.dispatch({\n type: UPDATE_MODULES,\n modules\n })\n\n var lastPathName: string = ''\n\n installRouter(async (location, e) => {\n var { pathname } = location\n var { contextPath } = getPathInfo(pathname)\n\n /* 페이지를 나가기 전에 옮기지 않도록 개입할 기회를 준다 */\n if (\n lastPathName &&\n lastPathName != pathname &&\n this.activePage &&\n this.activePage.canDeactivate &&\n !(await this.activePage.canDeactivate())\n ) {\n history.pushState({}, this.activePage.title, lastPathName)\n return\n }\n\n lastPathName = pathname\n\n if (ThingsApp.contextPath !== contextPath) {\n store.dispatch({\n type: UPDATE_CONTEXT_PATH,\n contextPath\n })\n }\n\n store.dispatch(navigateWithSilence(location) as any)\n\n ThingsApp.callbacks &&\n ThingsApp.callbacks.forEach(callback => {\n try {\n callback.call(this, location, e)\n } catch (ex) {\n console.error(ex)\n }\n })\n })\n })\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n }\n\n async routeToPage() {\n const activePages = this.renderRoot.querySelectorAll('main > .page[active]')\n activePages.forEach(page => {\n page.removeAttribute('active')\n })\n\n this.activePage = this.renderRoot.querySelector(`main > .page[data-page=${this.page}]`) as PageView\n\n if (!this.activePage) {\n /* 해당 route에 연결된 page가 없는 경우에 main 섹션에 해당 element를 추가해준다. */\n const tagname = (await ThingsApp.pages)[this.page!]\n if (tagname) {\n const el = document.createElement(tagname) as PageView\n el.setAttribute('class', 'page')\n el.setAttribute('data-page', this.page!)\n\n this.main.appendChild(el)\n\n this.activePage = el\n }\n }\n\n if (this.activePage) {\n this.activePage.setAttribute('active', '')\n this.activePage.setAttribute('context-path', this.contextPath!)\n this.activePage.lifecycle = {\n ...(this.activePage.lifecycle || {}),\n active: true,\n params: this.params,\n resourceId: this.resourceId,\n page: this.page\n }\n }\n\n store.dispatch({\n type: UPDATE_ACTIVE_PAGE,\n activePage: this.activePage\n })\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('contextPathPrefix')) {\n setContextPathPrefix(this.contextPathPrefix)\n }\n\n if (changes.has('modules')) {\n ThingsApp.registerPages()\n }\n\n if (changes.has('page') || changes.has('resourceId') || changes.has('params')) {\n this.routeToPage()\n }\n\n if (changes.has('contextPath')) {\n this.setBase()\n }\n }\n\n shouldUpdate() {\n return ThingsApp.moduleInitialized == 2\n }\n\n stateChanged(state: any) {\n this.page = state.route.page\n this.params = state.route.params\n this.resourceId = state.route.resourceId\n this.context = state.route.context\n\n ThingsApp.modules = this.modules = state.app.modules\n ThingsApp.contextPath = this.contextPath = state.app.contextPath\n ThingsApp.callbacks = state.route.callbacks\n }\n\n static async registerPages() {\n ThingsApp.pages = new Promise<{ [path: string]: string }>(resolve => (ThingsApp.pagesResolver = resolve))\n\n var reversedModules = [...ThingsApp.modules].reverse()\n const pages: { [path: string]: string } = {}\n\n /* 모듈 참조 순서 역순으로 page를 추가한다. (for overidable) */\n for (const m of reversedModules) {\n if (!m.routes) {\n continue\n }\n\n /* \n 각 모듈의 routes가 모두 완성될 때까지 ThingsApp.pages 구성을 지연한다.\n 각 모듈의 routes를 동적으로도 구성할 수 있도록 하기 위해서이다.\n */\n const routes = await m.routes\n\n routes.forEach((route: any) => {\n if (!pages[route.page]) {\n pages[route.page] = route.tagname\n }\n })\n }\n\n ThingsApp.pagesResolver(pages)\n }\n\n setBase() {\n const base = document.querySelector('base')\n base?.setAttribute('href', this.contextPath ? `${this.contextPath}/` : '/')\n }\n}\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAClH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,IAAK,aAIJ;AAJD,WAAK,aAAa;IAChB,uEAAe,CAAA;IACf,iEAAY,CAAA;IACZ,+DAAW,CAAA;AACb,CAAC,EAJI,aAAa,KAAb,aAAa,QAIjB;AAGM,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;IAAlD;;QAuByD,sBAAiB,GAAY,SAAS,CAAA;QAO3F,gBAAW,GAAY,WAAS,CAAC,WAAW,CAAA;QAC5C,YAAO,GAAe,WAAS,CAAC,OAAO,CAAA;IAiOlD,CAAC;;aA/PQ,WAAM,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,AAA9B,CAA8B;aAEpC,sBAAiB,GAAkB,aAAa,CAAC,eAAe,AAA/C,CAA+C;aAChE,YAAO,GAAe,EAAE,AAAjB,CAAiB;aAgBxB,cAAS,GAAe,EAAE,AAAjB,CAAiB;IAejC,MAAM;QACJ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA;QAC9B,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;QACzG,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAA;QAEzG,OAAO,IAAI,CAAA;;;;;;;kCAOmB,SAAS;;+BAEZ,SAAS,IAAI,SAAS;;iCAEpB,SAAS,IAAI,SAAS;;kCAErB,SAAS;;;KAGtC,CAAA;IACH,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAEzB,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IAAI,WAAS,CAAC,iBAAiB,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC;YACjE,6DAA6D;YAC7D,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;YAEjD,OAAM;QACR,CAAC;QAED,WAAS,CAAC,iBAAiB,GAAG,aAAa,CAAC,YAAY,CAAA;QAExD,wBAAwB;QACxB,MAAM;QACJ,2BAA2B;QAC3B,0BAA0B;QAC1B,iCAAiC;QACjC,2BAA2B,CAC5B,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACpB,IAAI,OAAO,GAGL,MAAM,CAAC,OAAO,CAAA;YAEpB,+BAA+B;YAC/B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;gBACtB,IAAI,CAAC;oBACH,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;wBAChB,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;gBACzD,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,WAAS,CAAC,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAA;YAEvD,wDAAwD;YACxD,KAAK,CAAC,QAAQ,CAAC;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO;aACR,CAAC,CAAA;YAEF,IAAI,YAAY,GAAW,EAAE,CAAA;YAE7B,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAA;gBAC3B,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;gBAE3C,oCAAoC;gBACpC,IACE,YAAY;oBACZ,YAAY,IAAI,QAAQ;oBACxB,IAAI,CAAC,UAAU;oBACf,IAAI,CAAC,UAAU,CAAC,aAAa;oBAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EACxC,CAAC;oBACD,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;oBAC1D,OAAM;gBACR,CAAC;gBAED,YAAY,GAAG,QAAQ,CAAA;gBAEvB,IAAI,WAAS,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBAC1C,KAAK,CAAC,QAAQ,CAAC;wBACb,IAAI,EAAE,mBAAmB;wBACzB,WAAW;qBACZ,CAAC,CAAA;gBACJ,CAAC;gBAED,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAQ,CAAC,CAAA;gBAEpD,WAAS,CAAC,SAAS;oBACjB,WAAS,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;wBACrC,IAAI,CAAC;4BACH,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;wBAClC,CAAC;wBAAC,OAAO,EAAE,EAAE,CAAC;4BACZ,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;wBACnB,CAAC;oBACH,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAA;QAC5E,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,0BAA0B,IAAI,CAAC,IAAI,GAAG,CAAa,CAAA;QAEnG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,4DAA4D;YAC5D,MAAM,OAAO,GAAG,CAAC,MAAM,WAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,CAAA;YACnD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAa,CAAA;gBACtD,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAChC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAK,CAAC,CAAA;gBAExC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;gBAEzB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;YACtB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC1C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,WAAY,CAAC,CAAA;YAC/D,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG;gBAC1B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;gBACpC,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAA;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC;YACb,IAAI,EAAE,kBAAkB;YACxB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA6B;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,WAAS,CAAC,aAAa,EAAE,CAAA;QAC3B,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9E,IAAI,CAAC,WAAW,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,WAAS,CAAC,iBAAiB,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAA;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;QAElC,WAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAA;QACpD,WAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAA;QAChE,WAAS,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,aAAa;QACxB,WAAS,CAAC,KAAK,GAAG,IAAI,OAAO,CAA6B,OAAO,CAAC,EAAE,CAAC,CAAC,WAAS,CAAC,aAAa,GAAG,OAAO,CAAC,CAAC,CAAA;QAEzG,IAAI,eAAe,GAAG,CAAC,GAAG,WAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAA;QACtD,MAAM,KAAK,GAA+B,EAAE,CAAA;QAE5C,gDAAgD;QAChD,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACd,SAAQ;YACV,CAAC;YAED;;;cAGE;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAA;YAE7B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAA;gBACnC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,WAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC3C,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7E,CAAC;;AAxO6D;IAA7D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;oDAAuC;AAE3F;IAAR,KAAK,EAAE;6CAAoB;AACnB;IAAR,KAAK,EAAE;uCAAc;AACb;IAAR,KAAK,EAAE;yCAAa;AACZ;IAAR,KAAK,EAAE;6CAAsB;AACrB;IAAR,KAAK,EAAE;0CAAa;AACZ;IAAR,KAAK,EAAE;8CAA6C;AAC5C;IAAR,KAAK,EAAE;0CAAwC;AAEzB;IAAtB,KAAK,CAAC,MAAM,CAAC;uCAA2B;AAjC9B,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CAgQrB","sourcesContent":["import { html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\nimport { installRouter } from 'pwa-helpers/router.js'\n\nimport { ScrollbarStyles } from '@operato/styles'\nimport { setContextPathPrefix, getPathInfo } from '@operato/utils'\n\nimport { navigateWithSilence, UPDATE_ACTIVE_PAGE, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '../actions/index.js'\nimport { store } from '../store.js'\nimport { AppStyle } from './app-style.js'\nimport { PageView } from './pages/page-view.js'\n\nenum MODULES_STATE {\n NOT_INITIALIZED,\n INITIALIZING,\n INITIALIZED\n}\n\n@customElement('things-app')\nexport class ThingsApp extends connect(store)(LitElement) {\n static styles = [ScrollbarStyles, AppStyle]\n\n static moduleInitialized: MODULES_STATE = MODULES_STATE.NOT_INITIALIZED\n static modules: Array<any> = []\n\n /* \n 모든 모듈의 routes 리스트가 수집될 때까지, routeToPage(..) 를 hold 시키기 위해서 ThingsApp.pages를 Promise로 정의한다. \n */\n static pagesResolver: (\n value:\n | {\n [path: string]: string\n }\n | PromiseLike<{\n [path: string]: string\n }>\n ) => void\n static pages: Promise<{ [path: string]: string }>\n\n static callbacks: Array<any> = []\n static contextPath?: string\n\n @property({ type: String, attribute: 'context-path-prefix' }) contextPathPrefix?: string = undefined\n\n @state() resourceId?: string\n @state() page?: string\n @state() params?: any\n @state() activePage?: PageView\n @state() context: any\n @state() contextPath?: string = ThingsApp.contextPath\n @state() modules: Array<any> = ThingsApp.modules\n\n @query('main') private main!: HTMLElement\n\n render() {\n var params = this.params || {}\n var fullbleed = (this.context && this.context.fullbleed) || (params.fullbleed && params.fullbleed == 'Y')\n var widebleed = (this.context && this.context.widebleed) || (params.widebleed && params.widebleed == 'Y')\n\n return html`\n <div>\n <ox-page-header-bar header></ox-page-header-bar>\n <main></main>\n <ox-page-footer-bar footer></ox-page-footer-bar>\n </div>\n\n <ox-header-bar ?fullbleed=${fullbleed}></ox-header-bar>\n\n <ox-nav-bar ?fullbleed=${fullbleed || widebleed}></ox-nav-bar>\n\n <ox-aside-bar ?fullbleed=${fullbleed || widebleed}></ox-aside-bar>\n\n <ox-footer-bar ?fullbleed=${fullbleed}></ox-footer-bar>\n\n <ox-snack-bar></ox-snack-bar>\n `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.setBase()\n\n if (ThingsApp.moduleInitialized != MODULES_STATE.NOT_INITIALIZED) {\n /* 첫번째 이후로 생성되는 경우에는 강제로 'popstate'를 발생시켜서, routing 기회를 준다 */\n window.dispatchEvent(new CustomEvent('popstate'))\n\n return\n }\n\n ThingsApp.moduleInitialized = MODULES_STATE.INITIALIZING\n\n /* 모듈 임포트를 동적으로 처리한다. */\n import(\n /* webpackPrefetch: true */\n /* webpackPreload: true */\n /* webpackChunkName: \"modules\" */\n '../module-importer.import'\n ).then(async module => {\n var modules: {\n name: string\n bootstrap: (m?: any /* self */) => void\n }[] = module.modules\n\n /* lifecycle - bootstrapping */\n for (let idx = 0; idx < modules.length; idx++) {\n const m = modules[idx]\n try {\n if (m.bootstrap) {\n await m.bootstrap(m)\n }\n } catch (e) {\n console.error(`[${idx} BOOTSTRAP ERROR -${m.name}]`, e)\n }\n }\n\n /* shouldUpdate를 활성화한다. */\n ThingsApp.moduleInitialized = MODULES_STATE.INITIALIZED\n\n /* modules를 store에 dispatch 함으로써, update를 invoke 시킨다. */\n store.dispatch({\n type: UPDATE_MODULES,\n modules\n })\n\n var lastPathName: string = ''\n\n installRouter(async (location, e) => {\n var { pathname } = location\n var { contextPath } = getPathInfo(pathname)\n\n /* 페이지를 나가기 전에 옮기지 않도록 개입할 기회를 준다 */\n if (\n lastPathName &&\n lastPathName != pathname &&\n this.activePage &&\n this.activePage.canDeactivate &&\n !(await this.activePage.canDeactivate())\n ) {\n history.pushState({}, this.activePage.title, lastPathName)\n return\n }\n\n lastPathName = pathname\n\n if (ThingsApp.contextPath !== contextPath) {\n store.dispatch({\n type: UPDATE_CONTEXT_PATH,\n contextPath\n })\n }\n\n store.dispatch(navigateWithSilence(location) as any)\n\n ThingsApp.callbacks &&\n ThingsApp.callbacks.forEach(callback => {\n try {\n callback.call(this, location, e)\n } catch (ex) {\n console.error(ex)\n }\n })\n })\n })\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback()\n }\n\n async routeToPage() {\n const activePages = this.renderRoot.querySelectorAll('main > .page[active]')\n activePages.forEach(page => {\n page.removeAttribute('active')\n })\n\n this.activePage = this.renderRoot.querySelector(`main > .page[data-page=${this.page}]`) as PageView\n\n if (!this.activePage) {\n /* 해당 route에 연결된 page가 없는 경우에 main 섹션에 해당 element를 추가해준다. */\n const tagname = (await ThingsApp.pages)[this.page!]\n if (tagname) {\n const el = document.createElement(tagname) as PageView\n el.setAttribute('class', 'page')\n el.setAttribute('data-page', this.page!)\n\n this.main.appendChild(el)\n\n this.activePage = el\n }\n }\n\n if (this.activePage) {\n this.activePage.setAttribute('active', '')\n this.activePage.setAttribute('context-path', this.contextPath!)\n this.activePage.lifecycle = {\n ...(this.activePage.lifecycle || {}),\n active: true,\n params: this.params,\n resourceId: this.resourceId,\n page: this.page\n }\n }\n\n store.dispatch({\n type: UPDATE_ACTIVE_PAGE,\n activePage: this.activePage\n })\n }\n\n async updated(changes: PropertyValues<this>) {\n if (changes.has('contextPathPrefix')) {\n setContextPathPrefix(this.contextPathPrefix)\n }\n\n if (changes.has('modules')) {\n ThingsApp.registerPages()\n }\n\n if (changes.has('page') || changes.has('resourceId') || changes.has('params')) {\n this.routeToPage()\n }\n\n if (changes.has('contextPath')) {\n this.setBase()\n }\n }\n\n shouldUpdate() {\n return ThingsApp.moduleInitialized == 2\n }\n\n stateChanged(state: any) {\n this.page = state.route.page\n this.params = state.route.params\n this.resourceId = state.route.resourceId\n this.context = state.route.context\n\n ThingsApp.modules = this.modules = state.app.modules\n ThingsApp.contextPath = this.contextPath = state.app.contextPath\n ThingsApp.callbacks = state.route.callbacks\n }\n\n static async registerPages() {\n ThingsApp.pages = new Promise<{ [path: string]: string }>(resolve => (ThingsApp.pagesResolver = resolve))\n\n var reversedModules = [...ThingsApp.modules].reverse()\n const pages: { [path: string]: string } = {}\n\n /* 모듈 참조 순서 역순으로 page를 추가한다. (for overidable) */\n for (const m of reversedModules) {\n if (!m.routes) {\n continue\n }\n\n /* \n 각 모듈의 routes가 모두 완성될 때까지 ThingsApp.pages 구성을 지연한다.\n 각 모듈의 routes를 동적으로도 구성할 수 있도록 하기 위해서이다.\n */\n const routes = await m.routes\n\n routes.forEach((route: any) => {\n if (!pages[route.page]) {\n pages[route.page] = route.tagname\n }\n })\n }\n\n ThingsApp.pagesResolver(pages)\n }\n\n setBase() {\n const base = document.querySelector('base')\n base?.setAttribute('href', this.contextPath ? `${this.contextPath}/` : '/')\n }\n}\n"]}
@@ -3,22 +3,7 @@ import { css, html } from 'lit';
3
3
  import { customElement } from 'lit/decorators.js';
4
4
  import { PageView } from './page-view.js';
5
5
  let Page404 = class Page404 extends PageView {
6
- get context() {
7
- return {
8
- title: 'Page Not Found'
9
- };
10
- }
11
- render() {
12
- return html `
13
- <section>
14
- <md-icon>error_outline</md-icon>
15
- <h2>page not found!</h2>
16
- The page you requested cannot be found.
17
- </section>
18
- `;
19
- }
20
- };
21
- Page404.styles = css `
6
+ static { this.styles = css `
22
7
  :host {
23
8
  display: block;
24
9
  box-sizing: border-box;
@@ -55,7 +40,22 @@ Page404.styles = css `
55
40
  font-size: 2em;
56
41
  }
57
42
  }
58
- `;
43
+ `; }
44
+ get context() {
45
+ return {
46
+ title: 'Page Not Found'
47
+ };
48
+ }
49
+ render() {
50
+ return html `
51
+ <section>
52
+ <md-icon>error_outline</md-icon>
53
+ <h2>page not found!</h2>
54
+ The page you requested cannot be found.
55
+ </section>
56
+ `;
57
+ }
58
+ };
59
59
  Page404 = __decorate([
60
60
  customElement('page-404')
61
61
  ], Page404);
@@ -1 +1 @@
1
- {"version":3,"file":"page-404.js","sourceRoot":"","sources":["../../../../src/app/pages/page-404.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGlC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,QAAQ;IAwCnC,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,gBAAgB;SACxB,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;KAMV,CAAA;IACH,CAAC;;AArDM,cAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqClB,AArCY,CAqCZ;AAtCU,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAuDnB","sourcesContent":["import { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { PageView } from './page-view.js'\n\n@customElement('page-404')\nexport class Page404 extends PageView {\n static styles = css`\n :host {\n display: block;\n box-sizing: border-box;\n background-color: var(--md-sys-color-background);\n --spacing-large: 15%;\n }\n\n section {\n padding: var(--spacing-large) 0 0 0;\n text-align: center;\n color: var(--md-sys-color-on-background);\n }\n\n md-icon {\n --md-icon-size: 120px;\n color: var(--md-sys-color-error);\n text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);\n }\n\n h2 {\n margin: 0 auto;\n font-size: 2.5em;\n text-transform: capitalize;\n color: var(--md-sys-color-primary);\n }\n\n @media only screen and (max-width: 460px) {\n md-icon {\n padding-top: 25%;\n --md-icon-size: 90px;\n }\n\n h2 {\n font-size: 2em;\n }\n }\n `\n\n get context() {\n return {\n title: 'Page Not Found'\n }\n }\n\n render() {\n return html`\n <section>\n <md-icon>error_outline</md-icon>\n <h2>page not found!</h2>\n The page you requested cannot be found.\n </section>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"page-404.js","sourceRoot":"","sources":["../../../../src/app/pages/page-404.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGlC,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,QAAQ;aAC5B,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqClB,AArCY,CAqCZ;IAED,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,gBAAgB;SACxB,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;KAMV,CAAA;IACH,CAAC;;AAtDU,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAuDnB","sourcesContent":["import { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { PageView } from './page-view.js'\n\n@customElement('page-404')\nexport class Page404 extends PageView {\n static styles = css`\n :host {\n display: block;\n box-sizing: border-box;\n background-color: var(--md-sys-color-background);\n --spacing-large: 15%;\n }\n\n section {\n padding: var(--spacing-large) 0 0 0;\n text-align: center;\n color: var(--md-sys-color-on-background);\n }\n\n md-icon {\n --md-icon-size: 120px;\n color: var(--md-sys-color-error);\n text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);\n }\n\n h2 {\n margin: 0 auto;\n font-size: 2.5em;\n text-transform: capitalize;\n color: var(--md-sys-color-primary);\n }\n\n @media only screen and (max-width: 460px) {\n md-icon {\n padding-top: 25%;\n --md-icon-size: 90px;\n }\n\n h2 {\n font-size: 2em;\n }\n }\n `\n\n get context() {\n return {\n title: 'Page Not Found'\n }\n }\n\n render() {\n return html`\n <section>\n <md-icon>error_outline</md-icon>\n <h2>page not found!</h2>\n The page you requested cannot be found.\n </section>\n `\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { LitElement } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
- import isEqual from 'lodash-es/isEqual';
4
+ import isEqual from 'lodash-es/isEqual.js';
5
5
  import { UPDATE_CONTEXT } from '../../actions/const.js';
6
6
  import { store } from '../../store.js';
7
7
  function diff(after, before) {
@@ -1 +1 @@
1
- {"version":3,"file":"page-view.js","sourceRoot":"","sources":["../../../../src/app/pages/page-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport isEqual from 'lodash-es/isEqual'\n\nimport { UPDATE_CONTEXT } from '../../actions/const.js'\nimport { store } from '../../store.js'\n\nexport type PageLifecycle = {\n active: boolean\n params: object\n resourceId?: string\n page?: string\n}\n\nfunction diff(after: any, before: any): any {\n var changed = false\n var changes: { [key: string]: any } = {}\n\n Object.getOwnPropertyNames(after).forEach(function (key) {\n let before_val = before[key]\n let after_val = after[key]\n\n if (!isEqual(before_val, after_val)) {\n changes[key] = after_val\n changed = true\n }\n })\n\n return changed && changes\n}\n\n/**\n * PageView is a base class for creating page elements with lifecycle management.\n * Subclasses can extend PageView to define custom behavior and handle page lifecycle events.\n */\nexport class PageView extends LitElement {\n /**\n * Determines whether the page can be deactivated. Subclasses can override this method\n * to implement custom deactivation logic.\n * @returns A Promise that resolves to true if the page can be deactivated, or false otherwise.\n */\n async canDeactivate(): Promise<boolean> {\n return true\n }\n\n /**\n * Determines whether the page should update. This method is called whenever there are\n * changes to the page's properties.\n * @param changes - A map of changed property values.\n * @returns True if the page should update, or false otherwise.\n */\n shouldUpdate(changes: PropertyValues<this>) {\n var active = String(this.active) == 'true'\n var { active: oldActive = false } = this._oldLifecycleInfo$ || {}\n\n /*\n * page lifecycle\n * case 1. page가 새로 activate 되었다.\n * case 2. page가 active 상태에서 lifecycle 정보가 바뀌었다.\n **/\n if (active) {\n this.pageUpdate({\n active\n })\n } else if (oldActive) {\n this.pageUpdate({\n active\n })\n }\n\n return active\n }\n\n /**\n * Indicates whether the page is currently active.\n */\n @property({ type: Boolean }) active: boolean = false\n\n /**\n * Stores information about the page's lifecycle.\n */\n @property({ type: Object }) lifecycle!: PageLifecycle\n\n /**\n * The context path for the page.\n */\n @property({ type: String, attribute: 'context-path' }) contextPath?: string\n\n _oldLifecycleInfo$: any\n\n /* lifecycle */\n\n /**\n * Handles page updates and lifecycle events. Subclasses can override this method\n * to implement custom logic for initializing, updating, and disposing of the page.\n * @param changes - A map of changed properties.\n * @param force - If true, forces an update of the page.\n */\n async pageUpdate(changes: any = {}, force: boolean = false) {\n var before = this._oldLifecycleInfo$ || {}\n\n var after = {\n ...before,\n ...this.lifecycle,\n contextPath: this.contextPath,\n ...changes\n }\n\n if (!('initialized' in changes) && after.active && !before.initialized) {\n after.initialized = true\n }\n\n if (force) {\n after.updated = Date.now()\n }\n\n var changed = diff(after, before)\n if (!changed) {\n return\n }\n\n this._oldLifecycleInfo$ = after\n\n /* page의 이미 초기화된 상태에서 contextPath가 바뀐다면, 무조건 page가 리셋되어야 한다. */\n if (before.initialized && changed.contextPath) {\n await this.pageReset()\n return\n }\n\n if (changed.initialized) {\n await this.pageInitialized(after)\n }\n\n if ('initialized' in changed) {\n if (changed.initialized) {\n /*\n * 방금 초기화된 경우라면, 엘리먼트들이 만들어지지 않았을 가능성이 있으므로,\n * 다음 animationFrame에서 pageUpdated 콜백을 호출한다.\n */\n requestAnimationFrame(async () => {\n await this.pageUpdated(changed, after, before)\n /* active page인 경우에는, page Context 갱신도 필요할 것이다. */\n after.active && this.updateContext()\n })\n } else {\n await this.pageDisposed(after)\n }\n } else {\n await this.pageUpdated(changed, after, before)\n /* active page인 경우에는, page Context 갱신도 필요할 것이다. */\n after.active && this.updateContext()\n }\n }\n\n /**\n * Resets the page. Subclasses can override this method to perform custom reset logic.\n */\n async pageReset() {\n var { initialized } = this._oldLifecycleInfo$ || {}\n\n if (initialized) {\n await this.pageDispose()\n await this.pageUpdate({}, true)\n }\n }\n\n /**\n * Disposes of the page. Subclasses can override this method to perform custom disposal logic.\n */\n async pageDispose() {\n await this.pageUpdate({\n initialized: false\n })\n }\n\n /**\n * Initializes the page. Subclasses can override this method to perform custom initialization logic.\n * @param pageInfo - Information about the page's state.\n */\n pageInitialized(pageInfo: any) {}\n\n /**\n * Handles page updates and changes in properties.\n * Subclasses can override this method to implement custom update logic.\n * @param changes - A map of changed properties.\n * @param after - The current state of the page.\n * @param before - The previous state of the page.\n */\n pageUpdated(changes: any, after: any, before: any) {}\n\n /**\n * Handles the disposal of the page. Subclasses can override this method\n * to implement custom disposal logic.\n * @param pageInfo - Information about the page's state.\n */\n pageDisposed(pageInfo: any) {}\n\n /* context */\n updateContext(override?: any) {\n store.dispatch({\n type: UPDATE_CONTEXT,\n context: override ? { ...this.context, ...override } : this.context\n })\n }\n\n /**\n * Updates the context of the page. Subclasses can override the `context` getter\n * to provide specific context information for the page. The context will be updated\n * using the `updateContext` method inherited from PageView.\n * @param override - An optional object with context properties to override.\n */\n get context() {\n return {}\n }\n}\n"]}
1
+ {"version":3,"file":"page-view.js","sourceRoot":"","sources":["../../../../src/app/pages/page-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport isEqual from 'lodash-es/isEqual.js'\n\nimport { UPDATE_CONTEXT } from '../../actions/const.js'\nimport { store } from '../../store.js'\n\nexport type PageLifecycle = {\n active: boolean\n params: object\n resourceId?: string\n page?: string\n}\n\nfunction diff(after: any, before: any): any {\n var changed = false\n var changes: { [key: string]: any } = {}\n\n Object.getOwnPropertyNames(after).forEach(function (key) {\n let before_val = before[key]\n let after_val = after[key]\n\n if (!isEqual(before_val, after_val)) {\n changes[key] = after_val\n changed = true\n }\n })\n\n return changed && changes\n}\n\n/**\n * PageView is a base class for creating page elements with lifecycle management.\n * Subclasses can extend PageView to define custom behavior and handle page lifecycle events.\n */\nexport class PageView extends LitElement {\n /**\n * Determines whether the page can be deactivated. Subclasses can override this method\n * to implement custom deactivation logic.\n * @returns A Promise that resolves to true if the page can be deactivated, or false otherwise.\n */\n async canDeactivate(): Promise<boolean> {\n return true\n }\n\n /**\n * Determines whether the page should update. This method is called whenever there are\n * changes to the page's properties.\n * @param changes - A map of changed property values.\n * @returns True if the page should update, or false otherwise.\n */\n shouldUpdate(changes: PropertyValues<this>) {\n var active = String(this.active) == 'true'\n var { active: oldActive = false } = this._oldLifecycleInfo$ || {}\n\n /*\n * page lifecycle\n * case 1. page가 새로 activate 되었다.\n * case 2. page가 active 상태에서 lifecycle 정보가 바뀌었다.\n **/\n if (active) {\n this.pageUpdate({\n active\n })\n } else if (oldActive) {\n this.pageUpdate({\n active\n })\n }\n\n return active\n }\n\n /**\n * Indicates whether the page is currently active.\n */\n @property({ type: Boolean }) active: boolean = false\n\n /**\n * Stores information about the page's lifecycle.\n */\n @property({ type: Object }) lifecycle!: PageLifecycle\n\n /**\n * The context path for the page.\n */\n @property({ type: String, attribute: 'context-path' }) contextPath?: string\n\n _oldLifecycleInfo$: any\n\n /* lifecycle */\n\n /**\n * Handles page updates and lifecycle events. Subclasses can override this method\n * to implement custom logic for initializing, updating, and disposing of the page.\n * @param changes - A map of changed properties.\n * @param force - If true, forces an update of the page.\n */\n async pageUpdate(changes: any = {}, force: boolean = false) {\n var before = this._oldLifecycleInfo$ || {}\n\n var after = {\n ...before,\n ...this.lifecycle,\n contextPath: this.contextPath,\n ...changes\n }\n\n if (!('initialized' in changes) && after.active && !before.initialized) {\n after.initialized = true\n }\n\n if (force) {\n after.updated = Date.now()\n }\n\n var changed = diff(after, before)\n if (!changed) {\n return\n }\n\n this._oldLifecycleInfo$ = after\n\n /* page의 이미 초기화된 상태에서 contextPath가 바뀐다면, 무조건 page가 리셋되어야 한다. */\n if (before.initialized && changed.contextPath) {\n await this.pageReset()\n return\n }\n\n if (changed.initialized) {\n await this.pageInitialized(after)\n }\n\n if ('initialized' in changed) {\n if (changed.initialized) {\n /*\n * 방금 초기화된 경우라면, 엘리먼트들이 만들어지지 않았을 가능성이 있으므로,\n * 다음 animationFrame에서 pageUpdated 콜백을 호출한다.\n */\n requestAnimationFrame(async () => {\n await this.pageUpdated(changed, after, before)\n /* active page인 경우에는, page Context 갱신도 필요할 것이다. */\n after.active && this.updateContext()\n })\n } else {\n await this.pageDisposed(after)\n }\n } else {\n await this.pageUpdated(changed, after, before)\n /* active page인 경우에는, page Context 갱신도 필요할 것이다. */\n after.active && this.updateContext()\n }\n }\n\n /**\n * Resets the page. Subclasses can override this method to perform custom reset logic.\n */\n async pageReset() {\n var { initialized } = this._oldLifecycleInfo$ || {}\n\n if (initialized) {\n await this.pageDispose()\n await this.pageUpdate({}, true)\n }\n }\n\n /**\n * Disposes of the page. Subclasses can override this method to perform custom disposal logic.\n */\n async pageDispose() {\n await this.pageUpdate({\n initialized: false\n })\n }\n\n /**\n * Initializes the page. Subclasses can override this method to perform custom initialization logic.\n * @param pageInfo - Information about the page's state.\n */\n pageInitialized(pageInfo: any) {}\n\n /**\n * Handles page updates and changes in properties.\n * Subclasses can override this method to implement custom update logic.\n * @param changes - A map of changed properties.\n * @param after - The current state of the page.\n * @param before - The previous state of the page.\n */\n pageUpdated(changes: any, after: any, before: any) {}\n\n /**\n * Handles the disposal of the page. Subclasses can override this method\n * to implement custom disposal logic.\n * @param pageInfo - Information about the page's state.\n */\n pageDisposed(pageInfo: any) {}\n\n /* context */\n updateContext(override?: any) {\n store.dispatch({\n type: UPDATE_CONTEXT,\n context: override ? { ...this.context, ...override } : this.context\n })\n }\n\n /**\n * Updates the context of the page. Subclasses can override the `context` getter\n * to provide specific context information for the page. The context will be updated\n * using the `updateContext` method inherited from PageView.\n * @param override - An optional object with context properties to override.\n */\n get context() {\n return {}\n }\n}\n"]}
@@ -3,33 +3,7 @@ import '@material/web/icon/icon.js';
3
3
  import { css, html, LitElement } from 'lit';
4
4
  import { customElement } from 'lit/decorators.js';
5
5
  let HomePage = class HomePage extends LitElement {
6
- render() {
7
- var { title, description } = this.applicationMeta;
8
- return html `
9
- <md-icon home @click=${() => (window.location.href = '/')}>home</md-icon>
10
-
11
- <div message>
12
- <strong>${title}</strong>
13
- ${description}
14
- <img src="/assets/images/home.png" />
15
- </div>
16
- `;
17
- }
18
- get applicationMeta() {
19
- if (!this._applicationMeta) {
20
- var iconLink = document.querySelector('link[rel="application-icon"]');
21
- var titleMeta = document.querySelector('meta[name="application-name"]');
22
- var descriptionMeta = document.querySelector('meta[name="application-description"]');
23
- this._applicationMeta = {
24
- icon: iconLink === null || iconLink === void 0 ? void 0 : iconLink.href,
25
- title: titleMeta ? titleMeta.content : 'Things Factory',
26
- description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'
27
- };
28
- }
29
- return this._applicationMeta;
30
- }
31
- };
32
- HomePage.styles = css `
6
+ static { this.styles = css `
33
7
  :host {
34
8
  background-color: var(--md-sys-color-background);
35
9
 
@@ -78,7 +52,33 @@ HomePage.styles = css `
78
52
  font-size: 1.6rem;
79
53
  }
80
54
  }
81
- `;
55
+ `; }
56
+ render() {
57
+ var { title, description } = this.applicationMeta;
58
+ return html `
59
+ <md-icon home @click=${() => (window.location.href = '/')}>home</md-icon>
60
+
61
+ <div message>
62
+ <strong>${title}</strong>
63
+ ${description}
64
+ <img src="/assets/images/home.png" />
65
+ </div>
66
+ `;
67
+ }
68
+ get applicationMeta() {
69
+ if (!this._applicationMeta) {
70
+ var iconLink = document.querySelector('link[rel="application-icon"]');
71
+ var titleMeta = document.querySelector('meta[name="application-name"]');
72
+ var descriptionMeta = document.querySelector('meta[name="application-description"]');
73
+ this._applicationMeta = {
74
+ icon: iconLink?.href,
75
+ title: titleMeta ? titleMeta.content : 'Things Factory',
76
+ description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'
77
+ };
78
+ }
79
+ return this._applicationMeta;
80
+ }
81
+ };
82
82
  HomePage = __decorate([
83
83
  customElement('home-page')
84
84
  ], HomePage);
@@ -1 +1 @@
1
- {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../../src/entries/public/home.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAG1C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IA0DtC,MAAM;QACJ,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QAEjD,OAAO,IAAI,CAAA;6BACc,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;;;kBAG7C,KAAK;UACb,WAAW;;;KAGhB,CAAA;IACH,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,8BAA8B,CAAoB,CAAA;YACxF,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAoB,CAAA;YAC1F,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,sCAAsC,CAAoB,CAAA;YAEvG,IAAI,CAAC,gBAAgB,GAAG;gBACtB,IAAI,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI;gBACpB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;gBACvD,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aAChF,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;;AArFM,eAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDlB,AAjDY,CAiDZ;AAlDU,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAuFpB","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('home-page')\nexport class HomePage extends LitElement {\n static styles = css`\n :host {\n background-color: var(--md-sys-color-background);\n\n display: block;\n position: relative;\n }\n\n [home] {\n position: absolute;\n left: 20px;\n top: 20px;\n font-size: 2em;\n color: white;\n }\n\n [message] {\n background-color: rgba(50, 66, 97, 0.8);\n padding: 60px 50px 0 50px;\n color: #fff;\n text-align: center;\n font-size: 20px;\n\n strong {\n display: block;\n font-size: 2.5rem;\n }\n\n img {\n width: 450px;\n max-width: 90%;\n display: block;\n margin: auto;\n margin-top: 20px;\n }\n }\n\n @media screen and (max-width: 460px) {\n [message] {\n padding: 60px 30px 0 30px;\n color: #fff;\n text-align: center;\n font-size: 15px;\n }\n\n [message] strong {\n font-size: 1.6rem;\n }\n }\n `\n\n _applicationMeta?: {\n icon: string\n title: string\n description: string\n }\n\n render() {\n var { title, description } = this.applicationMeta\n\n return html`\n <md-icon home @click=${() => (window.location.href = '/')}>home</md-icon>\n\n <div message>\n <strong>${title}</strong>\n ${description}\n <img src=\"/assets/images/home.png\" />\n </div>\n `\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink = document.querySelector('link[rel=\"application-icon\"]') as HTMLLinkElement\n var titleMeta = document.querySelector('meta[name=\"application-name\"]') as HTMLMetaElement\n var descriptionMeta = document.querySelector('meta[name=\"application-description\"]') as HTMLMetaElement\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
1
+ {"version":3,"file":"home.js","sourceRoot":"","sources":["../../../../src/entries/public/home.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAG1C,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;aAC/B,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDlB,AAjDY,CAiDZ;IAQD,MAAM;QACJ,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,eAAe,CAAA;QAEjD,OAAO,IAAI,CAAA;6BACc,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;;;kBAG7C,KAAK;UACb,WAAW;;;KAGhB,CAAA;IACH,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,8BAA8B,CAAoB,CAAA;YACxF,IAAI,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAoB,CAAA;YAC1F,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,sCAAsC,CAAoB,CAAA;YAEvG,IAAI,CAAC,gBAAgB,GAAG;gBACtB,IAAI,EAAE,QAAQ,EAAE,IAAI;gBACpB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB;gBACvD,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aAChF,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;;AAtFU,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAuFpB","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('home-page')\nexport class HomePage extends LitElement {\n static styles = css`\n :host {\n background-color: var(--md-sys-color-background);\n\n display: block;\n position: relative;\n }\n\n [home] {\n position: absolute;\n left: 20px;\n top: 20px;\n font-size: 2em;\n color: white;\n }\n\n [message] {\n background-color: rgba(50, 66, 97, 0.8);\n padding: 60px 50px 0 50px;\n color: #fff;\n text-align: center;\n font-size: 20px;\n\n strong {\n display: block;\n font-size: 2.5rem;\n }\n\n img {\n width: 450px;\n max-width: 90%;\n display: block;\n margin: auto;\n margin-top: 20px;\n }\n }\n\n @media screen and (max-width: 460px) {\n [message] {\n padding: 60px 30px 0 30px;\n color: #fff;\n text-align: center;\n font-size: 15px;\n }\n\n [message] strong {\n font-size: 1.6rem;\n }\n }\n `\n\n _applicationMeta?: {\n icon: string\n title: string\n description: string\n }\n\n render() {\n var { title, description } = this.applicationMeta\n\n return html`\n <md-icon home @click=${() => (window.location.href = '/')}>home</md-icon>\n\n <div message>\n <strong>${title}</strong>\n ${description}\n <img src=\"/assets/images/home.png\" />\n </div>\n `\n }\n\n get applicationMeta() {\n if (!this._applicationMeta) {\n var iconLink = document.querySelector('link[rel=\"application-icon\"]') as HTMLLinkElement\n var titleMeta = document.querySelector('meta[name=\"application-name\"]') as HTMLMetaElement\n var descriptionMeta = document.querySelector('meta[name=\"application-description\"]') as HTMLMetaElement\n\n this._applicationMeta = {\n icon: iconLink?.href,\n title: titleMeta ? titleMeta.content : 'Things Factory',\n description: descriptionMeta ? descriptionMeta.content : 'Reimagining Software'\n }\n }\n\n return this._applicationMeta\n }\n}\n"]}
@@ -4,6 +4,8 @@
4
4
  */
5
5
  /* promise queue */
6
6
  class Queue {
7
+ static { this.queue = []; }
8
+ static { this.workingOnPromise = false; }
7
9
  static enqueue(promise) {
8
10
  return new Promise((resolve, reject) => {
9
11
  this.queue.push({
@@ -44,8 +46,6 @@ class Queue {
44
46
  return true;
45
47
  }
46
48
  }
47
- Queue.queue = [];
48
- Queue.workingOnPromise = false;
49
49
  function getStore(storeName) {
50
50
  return [
51
51
  'add',
@@ -67,8 +67,7 @@ function getStore(storeName) {
67
67
  const request = method.apply(store, params);
68
68
  return await new Promise((resolve, reject) => {
69
69
  request.onsuccess = (event) => {
70
- var _a;
71
- resolve((_a = event.target) === null || _a === void 0 ? void 0 : _a.result);
70
+ resolve(event.target?.result);
72
71
  };
73
72
  request.onerror = (event) => {
74
73
  reject(event);
@@ -109,8 +108,7 @@ function getIndexDB() {
109
108
  reject(event);
110
109
  };
111
110
  request.onupgradeneeded = function (event) {
112
- var _a;
113
- var db = (_a = event.target) === null || _a === void 0 ? void 0 : _a.result;
111
+ var db = event.target?.result;
114
112
  var store = db.createObjectStore('notifications', { keyPath: 'id', autoIncrement: true });
115
113
  store.createIndex('notification_id_unqiue', 'id', { unique: true });
116
114
  var store = db.createObjectStore('client_settings', { keyPath: 'key', autoIncrement: true });
@@ -1 +1 @@
1
- {"version":3,"file":"object-store.js","sourceRoot":"","sources":["../../src/object-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,mBAAmB;AACnB,MAAM,KAAK;IAST,MAAM,CAAC,OAAO,CAAC,OAAqB;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,OAAO;gBACP,OAAO;gBACP,MAAM;aACP,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC,OAAO;iBACT,IAAI,CAAC,KAAK,CAAC,EAAE;gBACZ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;gBAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACnB,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChB,IAAI,CAAC,OAAO,EAAE,CAAA;YAChB,CAAC,CAAC,CAAA;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChB,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;;AA9Cc,WAAK,GAId,EAAE,CAAA;AAEO,sBAAgB,GAAY,KAAK,CAAA;AA2ClD,SAAS,QAAQ,CAAC,SAAiB;IACjC,OAAO;QACL,KAAK;QACL,QAAQ;QACR,OAAO;QACP,KAAK;QACL,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,KAAK;QACL,YAAY;QACZ,eAAe;KAChB,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACT,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,MAAW,EAAE,EAAE;YAChC,MAAM,EAAE,GAAG,CAAC,MAAM,UAAU,EAAE,CAAgB,CAAA;YAE9C,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAChD,MAAM,MAAM,GAAwB,KAAa,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAE3C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC3C,OAAO,CAAC,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;;oBACnC,OAAO,CAAC,MAAC,KAAK,CAAC,MAAqB,0CAAE,MAAM,CAAC,CAAA;gBAC/C,CAAC,CAAA;gBAED,OAAO,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;oBACjC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACf,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC,EACD;QACE,KAAK,CAAC,KAAK,CAAsB,KAAK,GAAG,EAAE;YACzC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;YACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;KACK,CACT,CAAA;AACH,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,SAAS,CAAA;IACzB,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;AACH,CAAC;AAED,IAAI,EAAe,CAAA;AAEnB,SAAS,UAAU;IACjB,IAAI,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAClB,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QACnC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;QAEhC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,yCAAyC,CAAC,CAAA;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QAEzD,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK;YAC/B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;YACjE,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAA;QAED,OAAO,CAAC,eAAe,GAAG,UAAU,KAA4B;;YAC9D,IAAI,EAAE,GAAgB,MAAC,KAAK,CAAC,MAAqB,0CAAE,MAAM,CAAA;YAE1D,IAAI,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACzF,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAEnE,IAAI,KAAK,GAAG,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5F,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,CAAC,CAAA;QAED,OAAO,CAAC,SAAS,GAAG,UAAU,KAAK;YACjC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;YAC5C,EAAE,GAAG,OAAO,CAAC,MAAM,CAAA;YACnB,OAAO,CAAC,EAAE,CAAC,CAAA;QACb,CAAC,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,kBAAkB,GAAkB,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAkB,QAAQ,CAAC,eAAe,CAAC,CAAA","sourcesContent":["/*\n * [ Caution ]\n * Since this module is being used by a service worker, be very careful about adding imports or using functions for browsers.\n */\n\ntype OxObjectStore = {\n add: (value: any, key?: IDBValidKey | undefined) => IDBValidKey\n delete: (query: IDBValidKey | IDBKeyRange) => undefined\n clear: () => undefined\n get: (query: IDBValidKey | IDBKeyRange) => any\n getAll: (query?: IDBValidKey | IDBKeyRange | null | undefined, count?: number | undefined) => any[]\n getAllKeys: (query?: IDBValidKey | IDBKeyRange | null | undefined, count?: number | undefined) => IDBValidKey[]\n count: (query?: IDBValidKey | IDBKeyRange | undefined) => number\n put: (value: any, key?: IDBValidKey | undefined) => IDBValidKey\n openCursor: (\n query?: IDBValidKey | IDBKeyRange | null | undefined,\n direction?: IDBCursorDirection | undefined\n ) => IDBCursorWithValue | null\n openKeyCursor: (\n query?: IDBValidKey | IDBKeyRange | null | undefined,\n direction?: IDBCursorDirection | undefined\n ) => IDBCursor | null\n limit: (limit?: number) => undefined\n}\n\n/* promise queue */\nclass Queue {\n private static queue: {\n promise: Promise<IDBDatabase>\n resolve: (db: IDBDatabase) => void\n reject: (reason?: any) => void\n }[] = []\n\n private static workingOnPromise: boolean = false\n\n static enqueue(promise: Promise<any>) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n promise,\n resolve,\n reject\n })\n this.dequeue()\n })\n }\n\n static dequeue() {\n if (this.workingOnPromise) {\n return false\n }\n const item = this.queue.shift()\n if (!item) {\n return false\n }\n try {\n this.workingOnPromise = true\n item.promise\n .then(value => {\n this.workingOnPromise = false\n item.resolve(value)\n this.dequeue()\n })\n .catch(err => {\n this.workingOnPromise = false\n item.reject(err)\n this.dequeue()\n })\n } catch (err) {\n this.workingOnPromise = false\n item.reject(err)\n this.dequeue()\n }\n return true\n }\n}\n\nfunction getStore(storeName: string): OxObjectStore {\n return [\n 'add',\n 'delete',\n 'clear',\n 'get',\n 'getAll',\n 'getAllKeys',\n 'count',\n 'put',\n 'openCursor',\n 'openKeyCursor'\n ].reduce(\n (sum, m) => {\n sum[m] = async (...params: any) => {\n const db = (await getIndexDB()) as IDBDatabase\n\n const transaction = db.transaction(storeName, 'readwrite')\n const store = transaction.objectStore(storeName)\n const method: (...p: any) => any = (store as any)[m]\n const request = method.apply(store, params)\n\n return await new Promise((resolve, reject) => {\n request.onsuccess = (event: Event) => {\n resolve((event.target as IDBRequest)?.result)\n }\n\n request.onerror = (event: Event) => {\n reject(event)\n }\n })\n }\n\n return sum\n },\n {\n async limit(this: OxObjectStore, limit = 50) {\n const keys = (await this.getAllKeys()).slice(0, -limit)\n for (let i = 0; i < keys.length; i++) {\n await this.delete(keys[i])\n }\n }\n } as any\n )\n}\n\nfunction getIndexedDB(): IDBFactory {\n if (typeof window !== 'undefined') {\n return window.indexedDB\n } else {\n return self.indexedDB\n }\n}\n\nvar db: IDBDatabase\n\nfunction getIndexDB() {\n if (db) {\n return db\n }\n\n return Queue.enqueue(\n new Promise(function (resolve, reject) {\n const indexedDB = getIndexedDB()\n\n if (!indexedDB) {\n reject('this browser does not support indexedDB')\n }\n const request = indexedDB.open('things-factory-database')\n\n request.onerror = function (event) {\n console.log(\"Why didn't you allow my web app to use IndexedDB?!\")\n reject(event)\n }\n\n request.onupgradeneeded = function (event: IDBVersionChangeEvent) {\n var db: IDBDatabase = (event.target as IDBRequest)?.result\n\n var store = db.createObjectStore('notifications', { keyPath: 'id', autoIncrement: true })\n store.createIndex('notification_id_unqiue', 'id', { unique: true })\n\n var store = db.createObjectStore('client_settings', { keyPath: 'key', autoIncrement: true })\n store.createIndex('client_setting_key_unqiue', 'key', { unique: true })\n }\n\n request.onsuccess = function (event) {\n console.log('IndexedDB opened successfully')\n db = request.result\n resolve(db)\n }\n })\n )\n}\n\n/* ready indexedDB Stores */\nexport const clientSettingStore: OxObjectStore = getStore('client_settings')\nexport const notificationStore: OxObjectStore = getStore('notifications')\n"]}
1
+ {"version":3,"file":"object-store.js","sourceRoot":"","sources":["../../src/object-store.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * [ Caution ]\n * Since this module is being used by a service worker, be very careful about adding imports or using functions for browsers.\n */\n\ntype OxObjectStore = {\n add: (value: any, key?: IDBValidKey | undefined) => IDBValidKey\n delete: (query: IDBValidKey | IDBKeyRange) => undefined\n clear: () => undefined\n get: (query: IDBValidKey | IDBKeyRange) => any\n getAll: (query?: IDBValidKey | IDBKeyRange | null | undefined, count?: number | undefined) => any[]\n getAllKeys: (query?: IDBValidKey | IDBKeyRange | null | undefined, count?: number | undefined) => IDBValidKey[]\n count: (query?: IDBValidKey | IDBKeyRange | undefined) => number\n put: (value: any, key?: IDBValidKey | undefined) => IDBValidKey\n openCursor: (\n query?: IDBValidKey | IDBKeyRange | null | undefined,\n direction?: IDBCursorDirection | undefined\n ) => IDBCursorWithValue | null\n openKeyCursor: (\n query?: IDBValidKey | IDBKeyRange | null | undefined,\n direction?: IDBCursorDirection | undefined\n ) => IDBCursor | null\n limit: (limit?: number) => undefined\n}\n\n/* promise queue */\nclass Queue {\n private static queue: {\n promise: Promise<IDBDatabase>\n resolve: (db: IDBDatabase) => void\n reject: (reason?: any) => void\n }[] = []\n\n private static workingOnPromise: boolean = false\n\n static enqueue(promise: Promise<any>) {\n return new Promise((resolve, reject) => {\n this.queue.push({\n promise,\n resolve,\n reject\n })\n this.dequeue()\n })\n }\n\n static dequeue() {\n if (this.workingOnPromise) {\n return false\n }\n const item = this.queue.shift()\n if (!item) {\n return false\n }\n try {\n this.workingOnPromise = true\n item.promise\n .then(value => {\n this.workingOnPromise = false\n item.resolve(value)\n this.dequeue()\n })\n .catch(err => {\n this.workingOnPromise = false\n item.reject(err)\n this.dequeue()\n })\n } catch (err) {\n this.workingOnPromise = false\n item.reject(err)\n this.dequeue()\n }\n return true\n }\n}\n\nfunction getStore(storeName: string): OxObjectStore {\n return [\n 'add',\n 'delete',\n 'clear',\n 'get',\n 'getAll',\n 'getAllKeys',\n 'count',\n 'put',\n 'openCursor',\n 'openKeyCursor'\n ].reduce(\n (sum, m) => {\n sum[m] = async (...params: any) => {\n const db = (await getIndexDB()) as IDBDatabase\n\n const transaction = db.transaction(storeName, 'readwrite')\n const store = transaction.objectStore(storeName)\n const method: (...p: any) => any = (store as any)[m]\n const request = method.apply(store, params)\n\n return await new Promise((resolve, reject) => {\n request.onsuccess = (event: Event) => {\n resolve((event.target as IDBRequest)?.result)\n }\n\n request.onerror = (event: Event) => {\n reject(event)\n }\n })\n }\n\n return sum\n },\n {\n async limit(this: OxObjectStore, limit = 50) {\n const keys = (await this.getAllKeys()).slice(0, -limit)\n for (let i = 0; i < keys.length; i++) {\n await this.delete(keys[i])\n }\n }\n } as any\n )\n}\n\nfunction getIndexedDB(): IDBFactory {\n if (typeof window !== 'undefined') {\n return window.indexedDB\n } else {\n return self.indexedDB\n }\n}\n\nvar db: IDBDatabase\n\nfunction getIndexDB() {\n if (db) {\n return db\n }\n\n return Queue.enqueue(\n new Promise(function (resolve, reject) {\n const indexedDB = getIndexedDB()\n\n if (!indexedDB) {\n reject('this browser does not support indexedDB')\n }\n const request = indexedDB.open('things-factory-database')\n\n request.onerror = function (event) {\n console.log(\"Why didn't you allow my web app to use IndexedDB?!\")\n reject(event)\n }\n\n request.onupgradeneeded = function (event: IDBVersionChangeEvent) {\n var db: IDBDatabase = (event.target as IDBRequest)?.result\n\n var store = db.createObjectStore('notifications', { keyPath: 'id', autoIncrement: true })\n store.createIndex('notification_id_unqiue', 'id', { unique: true })\n\n var store = db.createObjectStore('client_settings', { keyPath: 'key', autoIncrement: true })\n store.createIndex('client_setting_key_unqiue', 'key', { unique: true })\n }\n\n request.onsuccess = function (event) {\n console.log('IndexedDB opened successfully')\n db = request.result\n resolve(db)\n }\n })\n )\n}\n\n/* ready indexedDB Stores */\nexport const clientSettingStore: OxObjectStore = getStore('client_settings')\nexport const notificationStore: OxObjectStore = getStore('notifications')\n"]}
@@ -1,4 +1,4 @@
1
- import { getPathInfo } from '@operato/utils';
1
+ import { getPathInfo, setContextPathPrefix } from '@operato/utils';
2
2
  import { SET_DOMAINS, UPDATE_BASE_URL, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '../actions/app.js';
3
3
  const INITIAL_STATE = {
4
4
  baseUrl: location.origin,
@@ -23,6 +23,7 @@ const app = (state = INITIAL_STATE, action) => {
23
23
  contextPath: action.contextPath
24
24
  };
25
25
  case SET_DOMAINS:
26
+ setContextPathPrefix(action.domain.type || 'domain');
26
27
  return {
27
28
  ...state,
28
29
  domains: action.domains,
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/reducers/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAErG,MAAM,aAAa,GAOf;IACF,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW;IACvD,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,MAAW,EAAE,EAAE;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,cAAc;YACjB,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,KAAK,eAAe;YAClB,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,KAAK,mBAAmB;YACtB,OAAO;gBACL,GAAG,KAAK;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAA;QAEH,KAAK,WAAW;YACd,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAA;QAEH;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAED,eAAe,GAAG,CAAA","sourcesContent":["import { getPathInfo } from '@operato/utils'\n\nimport { SET_DOMAINS, UPDATE_BASE_URL, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '../actions/app.js'\n\nconst INITIAL_STATE: {\n baseUrl: string\n contextPath: string\n domains: {\n name: string\n subdomain: string\n }[]\n} = {\n baseUrl: location.origin,\n contextPath: getPathInfo(location.pathname).contextPath,\n domains: []\n}\n\nconst app = (state = INITIAL_STATE, action: any) => {\n switch (action.type) {\n case UPDATE_MODULES:\n return {\n ...state,\n modules: action.modules\n }\n case UPDATE_BASE_URL:\n return {\n ...state,\n baseUrl: action.baseUrl\n }\n case UPDATE_CONTEXT_PATH:\n return {\n ...state,\n contextPath: action.contextPath\n }\n\n case SET_DOMAINS:\n return {\n ...state,\n domains: action.domains,\n domain: action.domain\n }\n\n default:\n return state\n }\n}\n\nexport default app\n"]}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/reducers/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAErG,MAAM,aAAa,GAOf;IACF,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW;IACvD,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,MAAW,EAAE,EAAE;IACjD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,cAAc;YACjB,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,KAAK,eAAe;YAClB,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAA;QACH,KAAK,mBAAmB;YACtB,OAAO;gBACL,GAAG,KAAK;gBACR,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAA;QAEH,KAAK,WAAW;YACd,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAA;YACpD,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAA;QAEH;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAED,eAAe,GAAG,CAAA","sourcesContent":["import { getPathInfo, setContextPathPrefix } from '@operato/utils'\n\nimport { SET_DOMAINS, UPDATE_BASE_URL, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '../actions/app.js'\n\nconst INITIAL_STATE: {\n baseUrl: string\n contextPath: string\n domains: {\n name: string\n subdomain: string\n }[]\n} = {\n baseUrl: location.origin,\n contextPath: getPathInfo(location.pathname).contextPath,\n domains: []\n}\n\nconst app = (state = INITIAL_STATE, action: any) => {\n switch (action.type) {\n case UPDATE_MODULES:\n return {\n ...state,\n modules: action.modules\n }\n case UPDATE_BASE_URL:\n return {\n ...state,\n baseUrl: action.baseUrl\n }\n case UPDATE_CONTEXT_PATH:\n return {\n ...state,\n contextPath: action.contextPath\n }\n\n case SET_DOMAINS:\n setContextPathPrefix(action.domain.type || 'domain')\n return {\n ...state,\n domains: action.domains,\n domain: action.domain\n }\n\n default:\n return state\n }\n}\n\nexport default app\n"]}
@@ -1,4 +1,4 @@
1
- import startCase from 'lodash-es/startCase';
1
+ import startCase from 'lodash-es/startCase.js';
2
2
  import { updateMetadata } from 'pwa-helpers/metadata.js';
3
3
  import { REGISTER_NAVIGATION_CALLBACK, UNREGISTER_NAVIGATION_CALLBACK, UPDATE_ACTIVE_PAGE, UPDATE_CONTEXT, UPDATE_PAGE } from '../actions/const.js';
4
4
  const APP_TITLE_EL = document.querySelector('meta[name="application-name"]');
@@ -15,7 +15,6 @@ const INITIAL_STATE = {
15
15
  callbacks: []
16
16
  };
17
17
  const route = (state = INITIAL_STATE, action) => {
18
- var _a;
19
18
  switch (action.type) {
20
19
  case UPDATE_PAGE:
21
20
  return {
@@ -25,7 +24,7 @@ const route = (state = INITIAL_STATE, action) => {
25
24
  params: action.params
26
25
  };
27
26
  case UPDATE_CONTEXT:
28
- let title = (_a = action.context) === null || _a === void 0 ? void 0 : _a.title;
27
+ let title = action.context?.title;
29
28
  let text = typeof title === 'object' ? title.text : title;
30
29
  updateMetadata({
31
30
  title: appTitle + (text ? ` - ${startCase(text)}` : '')