@operato/shell 9.0.0-beta.6 → 9.0.0-beta.88
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 +157 -0
- package/dist/src/app/app.js +15 -10
- package/dist/src/app/app.js.map +1 -1
- package/dist/src/app/pages/page-404.js +17 -17
- package/dist/src/app/pages/page-404.js.map +1 -1
- package/dist/src/entries/public/home.js +28 -28
- package/dist/src/entries/public/home.js.map +1 -1
- package/dist/src/object-store.js +4 -6
- package/dist/src/object-store.js.map +1 -1
- package/dist/src/reducers/app.js +2 -1
- package/dist/src/reducers/app.js.map +1 -1
- package/dist/src/reducers/route.js +1 -2
- package/dist/src/reducers/route.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/stories/app.stories.d.ts +0 -22
- package/dist/stories/app.stories.js +0 -38
- package/dist/stories/app.stories.js.map +0 -1
- package/yarn-error.log +0 -17014
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,163 @@
|
|
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.88](https://github.com/hatiolab/operato/compare/v9.0.0-beta.87...v9.0.0-beta.88) (2025-06-04)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @operato/shell
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
## [9.0.0-beta.87](https://github.com/hatiolab/operato/compare/v9.0.0-beta.86...v9.0.0-beta.87) (2025-06-04)
|
15
|
+
|
16
|
+
**Note:** Version bump only for package @operato/shell
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
## [9.0.0-beta.52](https://github.com/hatiolab/operato/compare/v9.0.0-beta.51...v9.0.0-beta.52) (2025-03-04)
|
23
|
+
|
24
|
+
**Note:** Version bump only for package @operato/shell
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
## [9.0.0-beta.49](https://github.com/hatiolab/operato/compare/v9.0.0-beta.48...v9.0.0-beta.49) (2025-02-14)
|
31
|
+
|
32
|
+
**Note:** Version bump only for package @operato/shell
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
## [9.0.0-beta.48](https://github.com/hatiolab/operato/compare/v9.0.0-beta.47...v9.0.0-beta.48) (2025-02-14)
|
39
|
+
|
40
|
+
**Note:** Version bump only for package @operato/shell
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
## [9.0.0-beta.47](https://github.com/hatiolab/operato/compare/v9.0.0-beta.46...v9.0.0-beta.47) (2025-02-14)
|
47
|
+
|
48
|
+
**Note:** Version bump only for package @operato/shell
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
## [9.0.0-beta.38](https://github.com/hatiolab/operato/compare/v9.0.0-beta.37...v9.0.0-beta.38) (2025-02-02)
|
55
|
+
|
56
|
+
|
57
|
+
### :rocket: New Features
|
58
|
+
|
59
|
+
* support domain-type for context-aware multi-tenancy ([4ac819a](https://github.com/hatiolab/operato/commit/4ac819a2a88785551480c0d6248e10e80e265946))
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
## [9.0.0-beta.37](https://github.com/hatiolab/operato/compare/v9.0.0-beta.36...v9.0.0-beta.37) (2025-02-01)
|
64
|
+
|
65
|
+
**Note:** Version bump only for package @operato/shell
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
## [9.0.0-beta.34](https://github.com/hatiolab/operato/compare/v9.0.0-beta.33...v9.0.0-beta.34) (2025-01-31)
|
72
|
+
|
73
|
+
**Note:** Version bump only for package @operato/shell
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
## [9.0.0-beta.33](https://github.com/hatiolab/operato/compare/v9.0.0-beta.32...v9.0.0-beta.33) (2025-01-31)
|
80
|
+
|
81
|
+
**Note:** Version bump only for package @operato/shell
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
## [9.0.0-beta.32](https://github.com/hatiolab/operato/compare/v9.0.0-beta.31...v9.0.0-beta.32) (2025-01-31)
|
88
|
+
|
89
|
+
**Note:** Version bump only for package @operato/shell
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
## [9.0.0-beta.28](https://github.com/hatiolab/operato/compare/v9.0.0-beta.27...v9.0.0-beta.28) (2025-01-28)
|
96
|
+
|
97
|
+
**Note:** Version bump only for package @operato/shell
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
## [9.0.0-beta.21](https://github.com/hatiolab/operato/compare/v9.0.0-beta.20...v9.0.0-beta.21) (2025-01-28)
|
104
|
+
|
105
|
+
**Note:** Version bump only for package @operato/shell
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
## [9.0.0-beta.20](https://github.com/hatiolab/operato/compare/v9.0.0-beta.19...v9.0.0-beta.20) (2025-01-27)
|
112
|
+
|
113
|
+
|
114
|
+
### :rocket: New Features
|
115
|
+
|
116
|
+
* module property-panel ([03fb303](https://github.com/hatiolab/operato/commit/03fb303816c1629adca2a0ad843a8696ffaa4bef))
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
## [9.0.0-beta.18](https://github.com/hatiolab/operato/compare/v9.0.0-beta.17...v9.0.0-beta.18) (2025-01-27)
|
121
|
+
|
122
|
+
**Note:** Version bump only for package @operato/shell
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
## [9.0.0-beta.15](https://github.com/hatiolab/operato/compare/v9.0.0-beta.14...v9.0.0-beta.15) (2025-01-27)
|
129
|
+
|
130
|
+
**Note:** Version bump only for package @operato/shell
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
## [9.0.0-beta.14](https://github.com/hatiolab/operato/compare/v9.0.0-beta.13...v9.0.0-beta.14) (2025-01-27)
|
137
|
+
|
138
|
+
|
139
|
+
### :rocket: New Features
|
140
|
+
|
141
|
+
* module property-panel ([d78e4cf](https://github.com/hatiolab/operato/commit/d78e4cf7080b95fa74e61b42094b9f3f59f1409b))
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
## [9.0.0-beta.11](https://github.com/hatiolab/operato/compare/v9.0.0-beta.10...v9.0.0-beta.11) (2025-01-25)
|
146
|
+
|
147
|
+
|
148
|
+
### :bug: Bug Fix
|
149
|
+
|
150
|
+
* tsconfig option useDefineForClassFields=false ([0d77c0a](https://github.com/hatiolab/operato/commit/0d77c0aa620282c65b3c05f8e0b559e82836b6ab))
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
## [9.0.0-beta.10](https://github.com/hatiolab/operato/compare/v9.0.0-beta.9...v9.0.0-beta.10) (2025-01-25)
|
155
|
+
|
156
|
+
|
157
|
+
### :bug: Bug Fix
|
158
|
+
|
159
|
+
* tweak tsconfig.json ([3c424b1](https://github.com/hatiolab/operato/commit/3c424b18d046f95d5619076d113d49a4b4dc9bbb))
|
160
|
+
|
161
|
+
|
162
|
+
|
6
163
|
## [9.0.0-beta.6](https://github.com/hatiolab/operato/compare/v9.0.0-beta.5...v9.0.0-beta.6) (2025-01-20)
|
7
164
|
|
8
165
|
|
package/dist/src/app/app.js
CHANGED
@@ -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 =
|
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
|
-
|
69
|
+
for (let idx = 0; idx < modules.length; idx++) {
|
70
|
+
const m = modules[idx];
|
64
71
|
try {
|
65
|
-
|
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
|
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);
|
package/dist/src/app/app.js.map
CHANGED
@@ -1 +1 @@
|
|
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,iBAAf,MAAM,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;IAAlD;;QA8BI,gBAAW,GAAY,WAAS,CAAC,WAAW,CAAA;QAC5C,YAAO,GAAe,WAAS,CAAC,OAAO,CAAA;IA8NlD,CAAC;IA1NC,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,MAAM,CAAC,EAAE;YACd,IAAI,OAAO,GAGL,MAAM,CAAC,OAAO,CAAA;YAEpB,+BAA+B;YAC/B,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;gBACvC,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,CAAC,CAAA;YAEF,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,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7E,CAAC;;AA3PM,gBAAM,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,AAA9B,CAA8B;AAEpC,2BAAiB,GAAkB,aAAa,CAAC,eAAe,AAA/C,CAA+C;AAChE,iBAAO,GAAe,EAAE,AAAjB,CAAiB;AAgBxB,mBAAS,GAAe,EAAE,AAAjB,CAAiB;AAG6B;IAA7D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC;oDAA2B;AAE/E;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,CA6PrB","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":"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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 = 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
|
-
|
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;
|
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"]}
|
@@ -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
|
-
|
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;
|
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"]}
|
package/dist/src/object-store.js
CHANGED
@@ -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
|
-
|
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
|
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;
|
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"]}
|
package/dist/src/reducers/app.js
CHANGED
@@ -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;
|
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"]}
|
@@ -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 =
|
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)}` : '')
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/reducers/route.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,kBAAkB,EAClB,cAAc,EACd,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAE5B,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAoB,CAAA;AAE/F,IAAI,QAA4B,CAAA;AAChC,IAAI,YAAY,EAAE,CAAC;IACjB,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAA;AACjC,CAAC;AAED,MAAM,aAAa,GAOf;IACF,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;CACd,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,MAAW,EAAE,EAAE
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/reducers/route.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,kBAAkB,EAClB,cAAc,EACd,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAE5B,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAoB,CAAA;AAE/F,IAAI,QAA4B,CAAA;AAChC,IAAI,YAAY,EAAE,CAAC;IACjB,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAA;AACjC,CAAC;AAED,MAAM,aAAa,GAOf;IACF,IAAI,EAAE,EAAE;IACR,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;CACd,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,aAAa,EAAE,MAAW,EAAE,EAAE;IACnD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAA;QACH,KAAK,cAAc;YACjB,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAA;YACjC,IAAI,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;YAEzD,cAAc,CAAC;gBACb,KAAK,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,CAAC,CAAA;YACF,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE;aAChF,CAAA;QACH,KAAK,kBAAkB;YACrB,OAAO;gBACL,GAAG,KAAK;gBACR,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAA;QAEH,KAAK,4BAA4B;YAC/B,OAAO;gBACL,GAAG,KAAK;gBACR,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC;aACjD,CAAA;QACH,KAAK,8BAA8B;YACjC,OAAO;gBACL,GAAG,KAAK;gBACR,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aAC5E,CAAA;QAEH;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAA","sourcesContent":["import startCase from 'lodash-es/startCase.js'\nimport { updateMetadata } from 'pwa-helpers/metadata.js'\n\nimport {\n REGISTER_NAVIGATION_CALLBACK,\n UNREGISTER_NAVIGATION_CALLBACK,\n UPDATE_ACTIVE_PAGE,\n UPDATE_CONTEXT,\n UPDATE_PAGE\n} from '../actions/const.js'\n\nconst APP_TITLE_EL = document.querySelector('meta[name=\"application-name\"]') as HTMLMetaElement\n\nvar appTitle: string | undefined\nif (APP_TITLE_EL) {\n appTitle = APP_TITLE_EL.content\n}\n\nconst INITIAL_STATE: {\n page: string\n resourceId: string\n params: any\n activePage: any\n context: any\n callbacks: any[]\n} = {\n page: '',\n resourceId: '',\n params: {},\n activePage: null,\n context: {},\n callbacks: []\n}\n\nconst route = (state = INITIAL_STATE, action: any) => {\n switch (action.type) {\n case UPDATE_PAGE:\n return {\n ...state,\n page: action.page,\n resourceId: action.resourceId,\n params: action.params\n }\n case UPDATE_CONTEXT:\n let title = action.context?.title\n let text = typeof title === 'object' ? title.text : title\n\n updateMetadata({\n title: appTitle + (text ? ` - ${startCase(text)}` : '')\n })\n return {\n ...state,\n context: action.context || (state.activePage && state.activePage.context) || {}\n }\n case UPDATE_ACTIVE_PAGE:\n return {\n ...state,\n activePage: action.activePage\n }\n\n case REGISTER_NAVIGATION_CALLBACK:\n return {\n ...state,\n callbacks: [...state.callbacks, action.callback]\n }\n case UNREGISTER_NAVIGATION_CALLBACK:\n return {\n ...state,\n callbacks: state.callbacks.filter(callback => callback !== action.callback)\n }\n\n default:\n return state\n }\n}\n\nexport default route\n"]}
|