@dooboostore/simple-web-component 1.0.30 → 1.0.32
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/README.md +220 -1
- package/dist/cjs/decorators/applyStyle.js +1 -1
- package/dist/cjs/decorators/applyStyle.js.map +2 -2
- package/dist/cjs/decorators/attribute.js +17 -1
- package/dist/cjs/decorators/attribute.js.map +2 -2
- package/dist/cjs/decorators/elementDefine.js +29 -12
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/elements/SwcAppEngine.js +3 -3
- package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
- package/dist/cjs/elements/SwcAppMixin.js +1 -8
- package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
- package/dist/cjs/elements/SwcAsync.js +71 -78
- package/dist/cjs/elements/SwcAsync.js.map +2 -2
- package/dist/cjs/elements/SwcChoose.js +66 -81
- package/dist/cjs/elements/SwcChoose.js.map +2 -2
- package/dist/cjs/elements/SwcIf.js +52 -96
- package/dist/cjs/elements/SwcIf.js.map +2 -2
- package/dist/cjs/elements/SwcLoop.js +60 -103
- package/dist/cjs/elements/SwcLoop.js.map +2 -2
- package/dist/cjs/elements/SwcSubTemplates.js +0 -27
- package/dist/cjs/elements/SwcSubTemplates.js.map +2 -2
- package/dist/cjs/elements/register.js +314 -343
- package/dist/cjs/elements/register.js.map +2 -2
- package/dist/cjs/router/ElementRouter.js +1 -8
- package/dist/cjs/router/ElementRouter.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/Utils.js +31 -24
- package/dist/cjs/utils/Utils.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +1 -1
- package/dist/esm/decorators/applyStyle.js.map +2 -2
- package/dist/esm/decorators/attribute.js +18 -2
- package/dist/esm/decorators/attribute.js.map +2 -2
- package/dist/esm/decorators/elementDefine.js +27 -10
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/elements/SwcAppEngine.js +3 -3
- package/dist/esm/elements/SwcAppEngine.js.map +2 -2
- package/dist/esm/elements/SwcAppMixin.js +1 -8
- package/dist/esm/elements/SwcAppMixin.js.map +2 -2
- package/dist/esm/elements/SwcAsync.js +72 -60
- package/dist/esm/elements/SwcAsync.js.map +2 -2
- package/dist/esm/elements/SwcChoose.js +67 -63
- package/dist/esm/elements/SwcChoose.js.map +2 -2
- package/dist/esm/elements/SwcIf.js +53 -78
- package/dist/esm/elements/SwcIf.js.map +2 -2
- package/dist/esm/elements/SwcLoop.js +61 -85
- package/dist/esm/elements/SwcLoop.js.map +2 -2
- package/dist/esm/elements/SwcSubTemplates.js +0 -8
- package/dist/esm/elements/SwcSubTemplates.js.map +2 -2
- package/dist/esm/elements/register.js +246 -275
- package/dist/esm/elements/register.js.map +2 -2
- package/dist/esm/router/ElementRouter.js +1 -8
- package/dist/esm/router/ElementRouter.js.map +2 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/Utils.js +31 -24
- package/dist/esm/utils/Utils.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +2223 -2009
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/decorators/attribute.d.ts.map +1 -1
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
- package/dist/types/elements/SwcAsync.d.ts +1 -11
- package/dist/types/elements/SwcAsync.d.ts.map +1 -1
- package/dist/types/elements/SwcChoose.d.ts +1 -13
- package/dist/types/elements/SwcChoose.d.ts.map +1 -1
- package/dist/types/elements/SwcIf.d.ts +1 -13
- package/dist/types/elements/SwcIf.d.ts.map +1 -1
- package/dist/types/elements/SwcLoop.d.ts +1 -13
- package/dist/types/elements/SwcLoop.d.ts.map +1 -1
- package/dist/types/elements/SwcSubTemplates.d.ts +6 -6
- package/dist/types/elements/SwcSubTemplates.d.ts.map +1 -1
- package/dist/types/elements/register.d.ts.map +1 -1
- package/dist/types/router/ElementRouter.d.ts.map +1 -1
- package/dist/types/types.d.ts +11 -1
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/Utils.d.ts +10 -0
- package/dist/types/utils/Utils.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +2223 -2009
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +3 -3
- package/src/decorators/applyStyle.ts +1 -1
- package/src/decorators/attribute.ts +35 -30
- package/src/decorators/elementDefine.ts +32 -10
- package/src/elements/SwcAppEngine.ts +3 -3
- package/src/elements/SwcAppMixin.ts +6 -27
- package/src/elements/SwcAsync.ts +75 -57
- package/src/elements/SwcChoose.ts +69 -77
- package/src/elements/SwcIf.ts +50 -75
- package/src/elements/SwcLoop.ts +56 -82
- package/src/elements/SwcSubTemplates.ts +6 -6
- package/src/elements/register.ts +234 -285
- package/src/router/ElementRouter.ts +1 -12
- package/src/types.ts +9 -2
- package/src/utils/Utils.ts +48 -37
|
@@ -6,18 +6,7 @@ export class ElementRouter extends Router {
|
|
|
6
6
|
private _currentIndex = -1;
|
|
7
7
|
|
|
8
8
|
constructor(config: RouterConfig) {
|
|
9
|
-
|
|
10
|
-
// firstUrl을 제거하고 넘긴 뒤 자식에서 수동 처리합니다.
|
|
11
|
-
const { firstUrl, ...rest } = config;
|
|
12
|
-
super(rest);
|
|
13
|
-
|
|
14
|
-
const startUrl = firstUrl ?? '/';
|
|
15
|
-
this._history = [{ url: startUrl, data: null }];
|
|
16
|
-
this._currentIndex = 0;
|
|
17
|
-
|
|
18
|
-
if (firstUrl) {
|
|
19
|
-
this.replace(firstUrl, { config: { noEventAndPublish: true } });
|
|
20
|
-
}
|
|
9
|
+
super(config);
|
|
21
10
|
}
|
|
22
11
|
|
|
23
12
|
// Override pushState to manage internal history
|
package/src/types.ts
CHANGED
|
@@ -41,8 +41,15 @@ export type HostSet = {
|
|
|
41
41
|
$lastAppHost: SwcAppInterface | null;
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
export type HelperHostSet = HelperSet & HostSet;
|
|
45
|
-
|
|
44
|
+
export type HelperHostSet = HelperSet & HostSet & {$this: any};
|
|
45
|
+
export interface SwcChooseInterface extends HTMLTemplateElement {
|
|
46
|
+
value: any;
|
|
47
|
+
refresh(): void;
|
|
48
|
+
}
|
|
49
|
+
export interface SwcIfInterface extends HTMLTemplateElement {
|
|
50
|
+
value: any;
|
|
51
|
+
refresh(): void;
|
|
52
|
+
}
|
|
46
53
|
export interface SwcAppInterface extends HTMLElement {
|
|
47
54
|
simpleApplication?: SimpleApplication;
|
|
48
55
|
router?: Router;
|
package/src/utils/Utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SwcAppInterface, HostSet, HelperSet, HelperHostSet } from '../types';
|
|
2
2
|
import {getElementConfig} from "../decorators";
|
|
3
|
+
import { getExpression, ExpressionResult, GetExpressionConfig, GetExpressionResult } from '@dooboostore/core';
|
|
3
4
|
|
|
4
5
|
export const SWC_NOT_FOUND = Symbol.for('simple-web-component:not-found');
|
|
5
6
|
|
|
@@ -148,6 +149,27 @@ export const htmlArticleElement = (options?: { doc?: Document; attrs?: Record<st
|
|
|
148
149
|
};
|
|
149
150
|
|
|
150
151
|
export namespace SwcUtils {
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
export const parsePathPatternsSetAttributeString = (pathPattern: string[], path: string) => {
|
|
155
|
+
return JSON.stringify(SwcUtils.parsePathPatternsSet(pathPattern, path)).replace(/"/g, "'");
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export const parsePathPatternsSet = (pathPattern: string[], path: string) => {
|
|
159
|
+
return {
|
|
160
|
+
path: path,
|
|
161
|
+
pathData: SwcUtils.parsePathPatterns(pathPattern, path)
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
export const parsePathPatterns = (pathPattern: string[], path: string) => {
|
|
165
|
+
for (const pattern of pathPattern) {
|
|
166
|
+
const data = SwcUtils.parsePathPattern(pattern, path || '/');
|
|
167
|
+
if (data !== null) {
|
|
168
|
+
return data;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
151
173
|
export const getHelperSet = (win: Window): HelperSet => {
|
|
152
174
|
const doc: Document = win.document;
|
|
153
175
|
return {
|
|
@@ -164,7 +186,8 @@ export namespace SwcUtils {
|
|
|
164
186
|
const hostSet = getHostSet(el);
|
|
165
187
|
return {
|
|
166
188
|
...helperSet,
|
|
167
|
-
...hostSet
|
|
189
|
+
...hostSet,
|
|
190
|
+
$this: el,
|
|
168
191
|
};
|
|
169
192
|
};
|
|
170
193
|
|
|
@@ -255,34 +278,30 @@ export namespace SwcUtils {
|
|
|
255
278
|
export const findAllParentAppHostsDirect = (el: HTMLElement): SwcAppInterface[] => {
|
|
256
279
|
const appHosts: SwcAppInterface[] = [];
|
|
257
280
|
|
|
258
|
-
//
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
281
|
+
// el 자체부터 시작 (el이 app host일 수도 있음)
|
|
282
|
+
let current: HTMLElement | null = el;
|
|
283
|
+
|
|
262
284
|
while (current) {
|
|
263
|
-
// console.log('vvvvvvv');
|
|
264
|
-
// alert(1)
|
|
265
|
-
// debugger;
|
|
266
285
|
const isAppHost =
|
|
267
|
-
current.tagName.toLowerCase() === 'swc-app' ||
|
|
286
|
+
current.tagName.toLowerCase() === 'swc-app' ||
|
|
268
287
|
current.getAttribute('is')?.startsWith('swc-app-');
|
|
269
288
|
if (isAppHost) {
|
|
270
289
|
appHosts.push(current as SwcAppInterface);
|
|
271
290
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
291
|
+
|
|
292
|
+
// 다음 부모 찾기
|
|
293
|
+
if (current.parentElement) {
|
|
294
|
+
// Light DOM: 정상적인 부모 요소
|
|
295
|
+
current = current.parentElement;
|
|
275
296
|
} else {
|
|
276
|
-
//
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
} else {
|
|
282
|
-
break;
|
|
283
|
-
}
|
|
297
|
+
// parentElement가 없음 = Shadow root의 직접 자식일 수 있음
|
|
298
|
+
const root = current.getRootNode();
|
|
299
|
+
if (root instanceof ShadowRoot) {
|
|
300
|
+
// Shadow host로 올라가기
|
|
301
|
+
current = root.host as HTMLElement;
|
|
284
302
|
} else {
|
|
285
|
-
|
|
303
|
+
// Document root 도달
|
|
304
|
+
break;
|
|
286
305
|
}
|
|
287
306
|
}
|
|
288
307
|
}
|
|
@@ -290,22 +309,12 @@ export namespace SwcUtils {
|
|
|
290
309
|
};
|
|
291
310
|
|
|
292
311
|
export const getHostSet = (el: HTMLElement): HostSet => {
|
|
293
|
-
const isSwc = !!getElementConfig(el);
|
|
294
312
|
const ancestors = findAllSwcHosts(el); // [root, ..., parent]
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
$host = el;
|
|
301
|
-
$parentHost = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;
|
|
302
|
-
} else {
|
|
303
|
-
$host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : el;
|
|
304
|
-
$parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
const $hosts = isSwc ? [...ancestors, el] : ancestors;
|
|
308
|
-
const $firstHost = $hosts.length > 0 ? $hosts[0] : null;
|
|
313
|
+
|
|
314
|
+
const $host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;
|
|
315
|
+
const $parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;
|
|
316
|
+
const $hosts = ancestors;
|
|
317
|
+
const $firstHost = ancestors.length > 0 ? ancestors[0] : null;
|
|
309
318
|
|
|
310
319
|
// Collect loop contexts
|
|
311
320
|
const loopContext: Record<string, any> = {};
|
|
@@ -369,4 +378,6 @@ export namespace SwcUtils {
|
|
|
369
378
|
|
|
370
379
|
return result;
|
|
371
380
|
};
|
|
372
|
-
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
};
|