@dooboostore/simple-web-component 1.0.36 → 1.0.38

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.
Files changed (281) hide show
  1. package/README.md +396 -68
  2. package/dist/cjs/{elements/SwcAppEngine.js → SwcAppEngine.js} +9 -6
  3. package/dist/cjs/SwcAppEngine.js.map +7 -0
  4. package/dist/cjs/decorators/addEventListener.js +20 -4
  5. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  6. package/dist/cjs/decorators/applyAttribute.js.map +1 -1
  7. package/dist/cjs/decorators/applyClass.js.map +1 -1
  8. package/dist/cjs/decorators/applyNode.js +109 -26
  9. package/dist/cjs/decorators/applyNode.js.map +2 -2
  10. package/dist/cjs/decorators/applySlot.js +129 -0
  11. package/dist/cjs/decorators/applySlot.js.map +7 -0
  12. package/dist/cjs/decorators/applyStyle.js.map +2 -2
  13. package/dist/cjs/decorators/attribute.js.map +1 -1
  14. package/dist/cjs/decorators/elementDefine.js +90 -52
  15. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  16. package/dist/cjs/decorators/emitCustomEvent.js.map +1 -1
  17. package/dist/cjs/decorators/index.js +2 -0
  18. package/dist/cjs/decorators/index.js.map +2 -2
  19. package/dist/cjs/decorators/lifecycles.js +88 -24
  20. package/dist/cjs/decorators/lifecycles.js.map +3 -3
  21. package/dist/cjs/decorators/publishSwcAppMessage.js.map +2 -2
  22. package/dist/cjs/decorators/query.js +1 -1
  23. package/dist/cjs/decorators/query.js.map +2 -2
  24. package/dist/cjs/decorators/queryAll.js.map +1 -1
  25. package/dist/cjs/decorators/setProperty.js.map +1 -1
  26. package/dist/cjs/decorators/state.js +84 -0
  27. package/dist/cjs/decorators/state.js.map +7 -0
  28. package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +1 -1
  29. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  30. package/dist/cjs/elements/SwcApp.js +231 -0
  31. package/dist/cjs/elements/SwcApp.js.map +7 -0
  32. package/dist/cjs/elements/SwcAppMixin.js +78 -80
  33. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  34. package/dist/cjs/elements/index.js +2 -1
  35. package/dist/cjs/elements/index.js.map +2 -2
  36. package/dist/cjs/elements/tt/SwcAppMixin.js +1 -0
  37. package/dist/cjs/elements/tt/SwcAppMixin.js.map +7 -0
  38. package/dist/cjs/elements/tt/SwcAsync.js +1 -0
  39. package/dist/cjs/elements/tt/SwcAsync.js.map +7 -0
  40. package/dist/cjs/elements/tt/SwcAsyncTemplate.js +1 -0
  41. package/dist/cjs/elements/tt/SwcAsyncTemplate.js.map +7 -0
  42. package/dist/cjs/elements/tt/SwcChoose.js +1 -0
  43. package/dist/cjs/elements/tt/SwcChoose.js.map +7 -0
  44. package/dist/cjs/elements/tt/SwcChooseTemplate.js +1 -0
  45. package/dist/cjs/elements/tt/SwcChooseTemplate.js.map +7 -0
  46. package/dist/cjs/elements/tt/SwcIf.js +1 -0
  47. package/dist/cjs/elements/tt/SwcIf.js.map +7 -0
  48. package/dist/cjs/elements/tt/SwcIfTemplate.js +1 -0
  49. package/dist/cjs/elements/tt/SwcIfTemplate.js.map +7 -0
  50. package/dist/cjs/elements/tt/SwcLoop.js +1 -0
  51. package/dist/cjs/elements/tt/SwcLoop.js.map +7 -0
  52. package/dist/cjs/elements/tt/SwcLoopTemplate.js +1 -0
  53. package/dist/cjs/elements/tt/SwcLoopTemplate.js.map +7 -0
  54. package/dist/cjs/elements/tt/SwcSubTemplates.js +1 -0
  55. package/dist/cjs/elements/tt/SwcSubTemplates.js.map +7 -0
  56. package/dist/cjs/elements/tt/register.js +1 -0
  57. package/dist/cjs/elements/tt/register.js.map +7 -0
  58. package/dist/cjs/index.js +10 -8
  59. package/dist/cjs/index.js.map +2 -2
  60. package/dist/cjs/{types.js → types/index.js} +1 -1
  61. package/dist/cjs/types/index.js.map +7 -0
  62. package/dist/cjs/types/window.d.js +16 -0
  63. package/dist/cjs/types/window.d.js.map +7 -0
  64. package/dist/cjs/utils/Utils.js +168 -26
  65. package/dist/cjs/utils/Utils.js.map +3 -3
  66. package/dist/esm/{elements/SwcAppEngine.js → SwcAppEngine.js} +7 -4
  67. package/dist/esm/SwcAppEngine.js.map +7 -0
  68. package/dist/esm/decorators/addEventListener.js +20 -4
  69. package/dist/esm/decorators/addEventListener.js.map +2 -2
  70. package/dist/esm/decorators/applyAttribute.js.map +1 -1
  71. package/dist/esm/decorators/applyClass.js.map +1 -1
  72. package/dist/esm/decorators/applyNode.js +109 -26
  73. package/dist/esm/decorators/applyNode.js.map +2 -2
  74. package/dist/esm/decorators/applySlot.js +110 -0
  75. package/dist/esm/decorators/applySlot.js.map +7 -0
  76. package/dist/esm/decorators/applyStyle.js.map +2 -2
  77. package/dist/esm/decorators/attribute.js.map +1 -1
  78. package/dist/esm/decorators/elementDefine.js +96 -58
  79. package/dist/esm/decorators/elementDefine.js.map +2 -2
  80. package/dist/esm/decorators/emitCustomEvent.js.map +1 -1
  81. package/dist/esm/decorators/index.js +2 -0
  82. package/dist/esm/decorators/index.js.map +2 -2
  83. package/dist/esm/decorators/lifecycles.js +88 -24
  84. package/dist/esm/decorators/lifecycles.js.map +3 -3
  85. package/dist/esm/decorators/publishSwcAppMessage.js.map +2 -2
  86. package/dist/esm/decorators/query.js +1 -1
  87. package/dist/esm/decorators/query.js.map +2 -2
  88. package/dist/esm/decorators/queryAll.js.map +1 -1
  89. package/dist/esm/decorators/setProperty.js.map +1 -1
  90. package/dist/esm/decorators/state.js +65 -0
  91. package/dist/esm/decorators/state.js.map +7 -0
  92. package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +1 -1
  93. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  94. package/dist/esm/elements/SwcApp.js +212 -0
  95. package/dist/esm/elements/SwcApp.js.map +7 -0
  96. package/dist/esm/elements/SwcAppMixin.js +76 -78
  97. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  98. package/dist/esm/elements/index.js +2 -1
  99. package/dist/esm/elements/index.js.map +2 -2
  100. package/dist/esm/elements/tt/SwcAppMixin.js +1 -0
  101. package/dist/esm/elements/tt/SwcAppMixin.js.map +7 -0
  102. package/dist/esm/elements/tt/SwcAsync.js +1 -0
  103. package/dist/esm/elements/tt/SwcAsync.js.map +7 -0
  104. package/dist/esm/elements/tt/SwcAsyncTemplate.js +1 -0
  105. package/dist/esm/elements/tt/SwcAsyncTemplate.js.map +7 -0
  106. package/dist/esm/elements/tt/SwcChoose.js +1 -0
  107. package/dist/esm/elements/tt/SwcChoose.js.map +7 -0
  108. package/dist/esm/elements/tt/SwcChooseTemplate.js +1 -0
  109. package/dist/esm/elements/tt/SwcChooseTemplate.js.map +7 -0
  110. package/dist/esm/elements/tt/SwcIf.js +1 -0
  111. package/dist/esm/elements/tt/SwcIf.js.map +7 -0
  112. package/dist/esm/elements/tt/SwcIfTemplate.js +1 -0
  113. package/dist/esm/elements/tt/SwcIfTemplate.js.map +7 -0
  114. package/dist/esm/elements/tt/SwcLoop.js +1 -0
  115. package/dist/esm/elements/tt/SwcLoop.js.map +7 -0
  116. package/dist/esm/elements/tt/SwcLoopTemplate.js +1 -0
  117. package/dist/esm/elements/tt/SwcLoopTemplate.js.map +7 -0
  118. package/dist/esm/elements/tt/SwcSubTemplates.js +1 -0
  119. package/dist/esm/elements/tt/SwcSubTemplates.js.map +7 -0
  120. package/dist/esm/elements/tt/register.js +1 -0
  121. package/dist/esm/elements/tt/register.js.map +7 -0
  122. package/dist/esm/index.js +11 -9
  123. package/dist/esm/index.js.map +2 -2
  124. package/dist/esm/{types.js → types/index.js} +1 -1
  125. package/dist/esm/types/index.js.map +7 -0
  126. package/dist/esm/types/window.d.js +1 -0
  127. package/dist/esm/types/window.d.js.map +7 -0
  128. package/dist/esm/utils/Utils.js +168 -26
  129. package/dist/esm/utils/Utils.js.map +3 -3
  130. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +7477 -2828
  131. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  132. package/dist/types/{elements/SwcAppEngine.d.ts → SwcAppEngine.d.ts} +9 -4
  133. package/dist/types/SwcAppEngine.d.ts.map +1 -0
  134. package/dist/types/decorators/addEventListener.d.ts +5 -2
  135. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  136. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  137. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  138. package/dist/types/decorators/applyNode.d.ts +24 -8
  139. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  140. package/dist/types/decorators/applySlot.d.ts +27 -0
  141. package/dist/types/decorators/applySlot.d.ts.map +1 -0
  142. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  143. package/dist/types/decorators/attribute.d.ts.map +1 -1
  144. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  145. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  146. package/dist/types/decorators/index.d.ts +2 -0
  147. package/dist/types/decorators/index.d.ts.map +1 -1
  148. package/dist/types/decorators/lifecycles.d.ts +26 -15
  149. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  150. package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
  151. package/dist/types/decorators/query.d.ts +1 -1
  152. package/dist/types/decorators/query.d.ts.map +1 -1
  153. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  154. package/dist/types/decorators/setProperty.d.ts +1 -1
  155. package/dist/types/decorators/setProperty.d.ts.map +1 -1
  156. package/dist/types/decorators/state.d.ts +9 -0
  157. package/dist/types/decorators/state.d.ts.map +1 -0
  158. package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
  159. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +5 -1
  160. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
  161. package/dist/types/elements/SwcApp.d.ts +36 -0
  162. package/dist/types/elements/SwcApp.d.ts.map +1 -0
  163. package/dist/types/elements/SwcAppMixin.d.ts +26 -7
  164. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  165. package/dist/types/elements/index.d.ts +2 -1
  166. package/dist/types/elements/index.d.ts.map +1 -1
  167. package/dist/types/elements/tt/SwcAppMixin.d.ts +1 -0
  168. package/dist/types/elements/tt/SwcAppMixin.d.ts.map +1 -0
  169. package/dist/types/elements/tt/SwcAsync.d.ts +1 -0
  170. package/dist/types/elements/tt/SwcAsync.d.ts.map +1 -0
  171. package/dist/types/elements/tt/SwcAsyncTemplate.d.ts +1 -0
  172. package/dist/types/elements/tt/SwcAsyncTemplate.d.ts.map +1 -0
  173. package/dist/types/elements/tt/SwcChoose.d.ts +1 -0
  174. package/dist/types/elements/tt/SwcChoose.d.ts.map +1 -0
  175. package/dist/types/elements/tt/SwcChooseTemplate.d.ts +1 -0
  176. package/dist/types/elements/tt/SwcChooseTemplate.d.ts.map +1 -0
  177. package/dist/types/elements/tt/SwcIf.d.ts +1 -0
  178. package/dist/types/elements/{SwcIf.d.ts.map → tt/SwcIf.d.ts.map} +1 -1
  179. package/dist/types/elements/tt/SwcIfTemplate.d.ts +1 -0
  180. package/dist/types/elements/tt/SwcIfTemplate.d.ts.map +1 -0
  181. package/dist/types/elements/tt/SwcLoop.d.ts +1 -0
  182. package/dist/types/elements/tt/SwcLoop.d.ts.map +1 -0
  183. package/dist/types/elements/tt/SwcLoopTemplate.d.ts +1 -0
  184. package/dist/types/elements/tt/SwcLoopTemplate.d.ts.map +1 -0
  185. package/dist/types/elements/tt/SwcSubTemplates.d.ts +1 -0
  186. package/dist/types/elements/tt/SwcSubTemplates.d.ts.map +1 -0
  187. package/dist/types/elements/tt/register.d.ts +1 -0
  188. package/dist/types/elements/tt/register.d.ts.map +1 -0
  189. package/dist/types/index.d.ts +2 -2
  190. package/dist/types/index.d.ts.map +1 -1
  191. package/dist/types/{types.d.ts → types/index.d.ts} +12 -12
  192. package/dist/types/types/index.d.ts.map +1 -0
  193. package/dist/types/utils/Utils.d.ts +18 -5
  194. package/dist/types/utils/Utils.d.ts.map +1 -1
  195. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +7478 -2829
  196. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  197. package/package.json +4 -4
  198. package/src/{elements/SwcAppEngine.ts → SwcAppEngine.ts} +17 -8
  199. package/src/decorators/addEventListener.ts +21 -5
  200. package/src/decorators/applyAttribute.ts +1 -1
  201. package/src/decorators/applyClass.ts +1 -1
  202. package/src/decorators/applyNode.ts +186 -66
  203. package/src/decorators/applySlot.ts +188 -0
  204. package/src/decorators/applyStyle.ts +4 -4
  205. package/src/decorators/attribute.ts +1 -1
  206. package/src/decorators/elementDefine.ts +142 -68
  207. package/src/decorators/emitCustomEvent.ts +1 -1
  208. package/src/decorators/index.ts +3 -0
  209. package/src/decorators/lifecycles.ts +119 -30
  210. package/src/decorators/publishSwcAppMessage.ts +2 -3
  211. package/src/decorators/query.ts +4 -4
  212. package/src/decorators/queryAll.ts +1 -1
  213. package/src/decorators/setProperty.ts +1 -1
  214. package/src/decorators/state.ts +84 -0
  215. package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +1 -1
  216. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +4 -3
  217. package/src/elements/SwcApp.ts +241 -0
  218. package/src/elements/SwcAppMixin.ts +98 -146
  219. package/src/elements/index.ts +4 -1
  220. package/src/elements/tt/SwcAppMixin.ts +13 -0
  221. package/src/elements/tt/SwcAsync.ts +139 -0
  222. package/src/elements/tt/SwcAsyncTemplate.ts +126 -0
  223. package/src/elements/tt/SwcChoose.ts +182 -0
  224. package/src/elements/tt/SwcChooseTemplate.ts +229 -0
  225. package/src/elements/tt/SwcIf.ts +145 -0
  226. package/src/elements/tt/SwcIfTemplate.ts +158 -0
  227. package/src/elements/tt/SwcLoop.ts +222 -0
  228. package/src/elements/tt/SwcLoopTemplate.ts +255 -0
  229. package/src/elements/tt/SwcSubTemplates.ts +6 -0
  230. package/src/elements/tt/register.ts +720 -0
  231. package/src/index.ts +11 -9
  232. package/src/{types.ts → types/index.ts} +15 -11
  233. package/src/types/window.d.ts +46 -0
  234. package/src/utils/Utils.ts +214 -24
  235. package/dist/cjs/elements/SwcAppEngine.js.map +0 -7
  236. package/dist/cjs/elements/SwcAsync.js +0 -129
  237. package/dist/cjs/elements/SwcAsync.js.map +0 -7
  238. package/dist/cjs/elements/SwcChoose.js +0 -155
  239. package/dist/cjs/elements/SwcChoose.js.map +0 -7
  240. package/dist/cjs/elements/SwcIf.js +0 -117
  241. package/dist/cjs/elements/SwcIf.js.map +0 -7
  242. package/dist/cjs/elements/SwcLoop.js +0 -176
  243. package/dist/cjs/elements/SwcLoop.js.map +0 -7
  244. package/dist/cjs/elements/SwcSubTemplates.js +0 -13
  245. package/dist/cjs/elements/SwcSubTemplates.js.map +0 -7
  246. package/dist/cjs/elements/register.js +0 -1026
  247. package/dist/cjs/elements/register.js.map +0 -7
  248. package/dist/cjs/types.js.map +0 -7
  249. package/dist/esm/elements/SwcAppEngine.js.map +0 -7
  250. package/dist/esm/elements/SwcAsync.js +0 -129
  251. package/dist/esm/elements/SwcAsync.js.map +0 -7
  252. package/dist/esm/elements/SwcChoose.js +0 -155
  253. package/dist/esm/elements/SwcChoose.js.map +0 -7
  254. package/dist/esm/elements/SwcIf.js +0 -117
  255. package/dist/esm/elements/SwcIf.js.map +0 -7
  256. package/dist/esm/elements/SwcLoop.js +0 -176
  257. package/dist/esm/elements/SwcLoop.js.map +0 -7
  258. package/dist/esm/elements/SwcSubTemplates.js +0 -13
  259. package/dist/esm/elements/SwcSubTemplates.js.map +0 -7
  260. package/dist/esm/elements/register.js +0 -1007
  261. package/dist/esm/elements/register.js.map +0 -7
  262. package/dist/esm/types.js.map +0 -7
  263. package/dist/types/elements/SwcAppEngine.d.ts.map +0 -1
  264. package/dist/types/elements/SwcAsync.d.ts +0 -2
  265. package/dist/types/elements/SwcAsync.d.ts.map +0 -1
  266. package/dist/types/elements/SwcChoose.d.ts +0 -2
  267. package/dist/types/elements/SwcChoose.d.ts.map +0 -1
  268. package/dist/types/elements/SwcIf.d.ts +0 -2
  269. package/dist/types/elements/SwcLoop.d.ts +0 -2
  270. package/dist/types/elements/SwcLoop.d.ts.map +0 -1
  271. package/dist/types/elements/SwcSubTemplates.d.ts +0 -13
  272. package/dist/types/elements/SwcSubTemplates.d.ts.map +0 -1
  273. package/dist/types/elements/register.d.ts +0 -4
  274. package/dist/types/elements/register.d.ts.map +0 -1
  275. package/dist/types/types.d.ts.map +0 -1
  276. package/src/elements/SwcAsync.ts +0 -126
  277. package/src/elements/SwcChoose.ts +0 -190
  278. package/src/elements/SwcIf.ts +0 -124
  279. package/src/elements/SwcLoop.ts +0 -205
  280. package/src/elements/SwcSubTemplates.ts +0 -6
  281. package/src/elements/register.ts +0 -1022
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import 'reflect-metadata';
2
- import { registerAllElements } from './elements/register';
2
+ export * from './elements'
3
+ import { defineSwcAppAll } from './elements';
3
4
  import {ConstructorType} from "@dooboostore/core";
4
5
 
5
6
  // Decorators
@@ -15,15 +16,16 @@ export * from './utils/Utils';
15
16
  export * from './config/config';
16
17
 
17
18
  // Registration Factory
18
- export default (w: Window, other?: (((w: Window) => ConstructorType<any>) | any) []) => {
19
- const cr = registerAllElements(w);
20
- const r = other?.map(fn => {
21
- if (typeof fn === 'function') {
22
- const a = fn(w);
23
- } else {
19
+ export default async (w: Window, other?: (((w: Window) => Promise<CustomElementConstructor> | CustomElementConstructor) | any) []) => {
20
+ const cr = await defineSwcAppAll(w);
21
+ // const cr = await elementFactories(w);
22
+ if (other) {
23
+ for (const fn of other) {
24
+ if (typeof fn === 'function') {
25
+ await fn(w);
26
+ }
24
27
  }
25
- });
28
+ }
26
29
 
27
30
  return cr;
28
- // return r??[];
29
31
  };
@@ -1,6 +1,6 @@
1
- import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';
1
+ import { SimpleApplication } from '@dooboostore/simple-boot';
2
2
  import { Router } from '@dooboostore/core-web';
3
- import {SwcAttributeConfigType} from "./elements/SwcAppEngine";
3
+ import {SwcAttributeConfigType, SwcConfigType} from "../SwcAppEngine";
4
4
 
5
5
  export enum InjectSituationType {
6
6
  HOST_SET = 'SIMPLE_WEB_COMPONENT://HOSTSET',
@@ -35,7 +35,7 @@ export type HostSet = {
35
35
  $hosts: HTMLElement[]; // All SWC ancestors [root, ..., parent]
36
36
  $firstHost: HTMLElement | null; // Top-most SWC ancestor
37
37
  $lastHost: HTMLElement | null; // Same as $host
38
- $templateHost: HTMLTemplateElement | null | undefined;
38
+ // $templateHost: HTMLTemplateElement | null | undefined;
39
39
  $appHost: SwcAppInterface | null;
40
40
  $appHosts: SwcAppInterface[];
41
41
  $firstAppHost: SwcAppInterface | null;
@@ -50,16 +50,10 @@ export type SwcAppMessage<T = any> = {
50
50
  type?: string;
51
51
  };
52
52
 
53
- export interface SwcChooseInterface extends HTMLTemplateElement {
54
- value: any;
55
- refresh(): void;
56
- }
57
- export interface SwcIfInterface extends HTMLTemplateElement {
58
- value: any;
59
- refresh(): void;
60
- }
53
+
61
54
  export interface SwcAppInterface extends HTMLElement {
62
55
  simpleApplication?: SimpleApplication;
56
+ config?: SwcConfigType;
63
57
  router?: Router;
64
58
  connect(config?: SwcAttributeConfigType): Promise<void>;
65
59
  routing(path: string): Promise<void>;
@@ -68,3 +62,13 @@ export interface SwcAppInterface extends HTMLElement {
68
62
  forward(): void;
69
63
  publishMessage(message: SwcAppMessage): void;
70
64
  }
65
+
66
+ export interface SwcElement {
67
+ // _swcId: string;
68
+ createSlotString(id: string): string
69
+ createEaHtml(id: string, script: string): string
70
+ createEaText(id: string, script: string): string
71
+ createEaAttribute(id: string, attributeName: string): string
72
+ createEaEvent(id: string, eventName: string): string
73
+ createEaProperty(id: string, propertyName: string): string
74
+ }
@@ -0,0 +1,46 @@
1
+ import {HTMLDialogElement} from "@dooboostore/dom-parser";
2
+
3
+ /**
4
+ * Global type augmentation for @dooboostore showcase
5
+ */
6
+ declare global {
7
+ interface Window {
8
+ HTMLElement: typeof HTMLElement;
9
+ HTMLDivElement: typeof HTMLDivElement;
10
+ HTMLButtonElement: typeof HTMLButtonElement;
11
+ HTMLTemplateElement: typeof HTMLTemplateElement;
12
+ HTMLAnchorElement: typeof HTMLAnchorElement;
13
+ HTMLDialogElement: typeof HTMLDialogElement;
14
+ HTMLBodyElement: typeof HTMLBodyElement;
15
+ HTMLSectionElement: typeof HTMLSectionElement;
16
+ HTMLMainElement: typeof HTMLMainElement;
17
+ ShadowRoot: typeof ShadowRoot;
18
+ location: Location;
19
+ document: Document;
20
+ history: History;
21
+ console: Console;
22
+ IntersectionObserver: typeof IntersectionObserver;
23
+ SwaggerUIBundle: any;
24
+
25
+ }
26
+
27
+ namespace Dooboostore {
28
+ interface PackageInfo {
29
+ id: string;
30
+ name: string;
31
+ description: string;
32
+ longDescription: string;
33
+ icon: string;
34
+ color: string;
35
+ features: PackageFeature[];
36
+ example: string;
37
+ }
38
+
39
+ interface PackageFeature {
40
+ title: string;
41
+ desc: string;
42
+ }
43
+ }
44
+ }
45
+
46
+ export {};
@@ -1,16 +1,26 @@
1
- import { SwcAppInterface, HostSet, HelperSet, HelperHostSet } from '../types';
1
+ import {SwcAppInterface, HostSet, HelperSet, HelperHostSet} from '../types';
2
2
  import {getElementConfig} from "../decorators";
3
- import { getExpression, ExpressionResult, GetExpressionConfig, GetExpressionResult } from '@dooboostore/core';
4
- import {Router} from "@dooboostore/core-web";
3
+ import {getExpression, ExpressionResult, GetExpressionConfig, GetExpressionResult, ActionExpression} from '@dooboostore/core';
4
+ import {ElementApply, NodeSlot, Router} from "@dooboostore/core-web";
5
5
 
6
6
  export const SWC_NOT_FOUND = Symbol.for('simple-web-component:not-found');
7
7
 
8
+
9
+ export const html = (str: string, document: Document) => {
10
+ return [...document.createRange().createContextualFragment(str).childNodes];
11
+ }
8
12
  // DOM Creation Utilities
9
- export const htmlFragment = (html: string, doc?: Document): DocumentFragment => {
10
- const d = doc || (typeof document !== 'undefined' ? document : undefined);
11
- if (!d) throw new Error('Document is not available');
12
- const template = d.createElement('template');
13
- template.innerHTML = html.trim();
13
+ export const htmlFragment = (html: string | Node | Node[], doc: Document): DocumentFragment => {
14
+ if (!doc) throw new Error('Document is not available');
15
+ const template = doc.createElement('template');
16
+ if (typeof html === 'string') {
17
+ template.innerHTML = html.trim();
18
+ } else if (html instanceof Node) {
19
+ template.appendChild(html);
20
+ } else if (Array.isArray(html)) {
21
+ template.append(...html);
22
+ }
23
+ // template.innerHTML = html.trim();
14
24
  return template.content;
15
25
  };
16
26
 
@@ -26,16 +36,21 @@ export const commentNode = (comment: string | any, doc?: Document): Comment => {
26
36
  return d.createComment(comment !== undefined && comment !== null ? String(comment) : '');
27
37
  };
28
38
 
39
+ export type CreateElementConfig = { innerHtml?: string; property?: Record<string, any>, attrs?: Record<string, any>; };
29
40
  export const createElement = <T extends HTMLElement>(
41
+ documentOrWindow: Document | Window,
30
42
  tagName: string,
31
- options?: { html?: string; attrs?: Record<string, any>; doc?: Document }
43
+ options?: CreateElementConfig
32
44
  ): T => {
33
- const d = options?.doc || (typeof document !== 'undefined' ? document : undefined);
34
- if (!d) throw new Error('Document is not available');
35
- const el = d.createElement(tagName) as T;
36
- if (options?.html) el.innerHTML = options.html;
45
+ const doc = 'document' in documentOrWindow ? documentOrWindow.document : documentOrWindow;
46
+ if (!doc) throw new Error('Document is not available');
47
+ const el = doc.createElement(tagName) as T;
48
+ if (options?.innerHtml) el.innerHTML = options.innerHtml;
37
49
  if (options?.attrs) {
38
- Object.entries(options.attrs).forEach(([k, v]) => el.setAttribute(k, String(v)));
50
+ Object.entries(options.attrs).filter(([k,v])=>v).forEach(([k, v]) => el.setAttribute(k, String(v)));
51
+ }
52
+ if (options?.property) {
53
+ Object.entries(options.property).forEach(([k, v]) => el[k] = v);
39
54
  }
40
55
  return el;
41
56
  };
@@ -170,7 +185,7 @@ export namespace SwcUtils {
170
185
  const qs = p.split('?')[1];
171
186
  qs?.split('&').forEach(it => {
172
187
  const [k, v] = it.split('=');
173
- searchParams.set(k,v);
188
+ searchParams.set(k, v);
174
189
  })
175
190
  return {
176
191
  path: p,
@@ -265,6 +280,180 @@ export namespace SwcUtils {
265
280
  return findNearestSwcHostIncludingSelf(el);
266
281
  };
267
282
 
283
+
284
+ export function projectProcessHtml(id: string, htmlOrNode: string, document: Document): string;
285
+ export function projectProcessHtml(id: string, htmlOrNode: ((Node)[]) | Node, document: Document): (Node)[];
286
+ export function projectProcessHtml(id: string, htmlOrNode: string | ((Node)[]) | Node, document: Document): string | (Node)[] {
287
+ if (typeof htmlOrNode === 'string') {
288
+ // slot
289
+ let t = htmlOrNode;
290
+ // if (!config?.excludeSlot) {
291
+ t = SwcUtils.processHtml(id, t, {document: document, replaceWrap: {start: '<!--[[', end: ']]-->'}, replacer: (id, script) => NodeSlot.slot(id, script)});
292
+ // }
293
+ // if (!config?.excludeHtml) {
294
+ // Ea html
295
+ t = SwcUtils.processHtml(id, t, {document: document, replaceWrap: {start: '<!--[html', end: ']-->'}, replacer: (id, script) => ElementApply.html(id, script)});
296
+ // }
297
+
298
+ // if (!config?.excludeText) {
299
+ // Ea text
300
+ t = SwcUtils.processHtml(id, t, {document: document, replaceWrap: {start: '<!--[text', end: ']-->'}, replacer: (id, script) => ElementApply.text(id, script)});
301
+ // }
302
+
303
+ // if (!config.excludeAttribute) {
304
+ // Ea attribute
305
+ t = SwcUtils.processHtml(id, t, {
306
+ document: document,
307
+ replaceWrap: {start: /a::\w+=\s*"/, end: /"\s/}, replacer: (id, script, er) => {
308
+ console.log('start: /a-->', er)
309
+ const match = er.expressionStart.match(/^\w+::(\w+)="/)
310
+ const name = match?.[1];
311
+ return ElementApply.attribute(id, name, script)
312
+ }
313
+ });
314
+ // }
315
+
316
+ // if (!config.excludeEvent) {
317
+ t = SwcUtils.processHtml(id, t, {
318
+ document: document,
319
+ replaceWrap: {start: /e::\w+=\s*"/, end: /"\s/}, replacer: (id, script, er) => {
320
+ console.log('start: /e-->', er)
321
+ const match = er.expressionStart.match(/^\w+::(\w+)="/)
322
+ const name = match?.[1];
323
+ return ElementApply.event(id, name, script)
324
+ }
325
+ });
326
+ // }
327
+
328
+
329
+ // if (!config.excludeProperty) {
330
+ t = SwcUtils.processHtml(id, t, {
331
+ document: document,
332
+ replaceWrap: {start: /p:\w+=\s*"/, end: /"\s/}, replacer: (id, script, er) => {
333
+ console.log('start: /p-->', er)
334
+ const match = er.expressionStart.match(/^\w+:(\w+)="/)
335
+ const name = match?.[1];
336
+ return ElementApply.property(id, name, script)
337
+ }
338
+ });
339
+ return t;
340
+ } else if (htmlOrNode) {
341
+
342
+ // 아래 node일떄도 처리하도록 만듬 아직테스트는 안해봄 테스트후 주석지울것.
343
+ const nodes = Array.isArray(htmlOrNode) ? htmlOrNode : [htmlOrNode];
344
+ const window = document.defaultView;
345
+ nodes.forEach(node => {
346
+ // TextNode 합치기
347
+ node.normalize();
348
+ const nodes = document.createTreeWalker(node, window.NodeFilter.SHOW_ELEMENT | window.NodeFilter.SHOW_COMMENT)
349
+
350
+ const getSlotData = (s: string) => {
351
+ return s.match(/^\[\[([\s\S]+)\]\]$/)?.[1]?.trim();
352
+ }
353
+ const getHtmlData = (s: string) => {
354
+ return s.match(/^\[html([\s\S]+)\]$/)?.[1]?.trim();
355
+ // return s.startsWith('[html') && s.endsWith(']');
356
+ }
357
+ const getTextData = (s: string) => {
358
+ return s.match(/^\[text([\s\S]+)\]$/)?.[1]?.trim();
359
+ // return s.startsWith('[text') && s.endsWith(']');
360
+ }
361
+ while (nodes.nextNode()) {
362
+ const currentNode = nodes.currentNode;
363
+ if (currentNode.nodeType === window.Node.COMMENT_NODE) {
364
+ const targetNode = currentNode as Comment;
365
+ const v = targetNode.data.trim();
366
+ const slotData = getSlotData(v);
367
+ const htmlData = getHtmlData(v);
368
+ const textData = getTextData(v);
369
+ if (v && slotData) {
370
+ const res = NodeSlot.slotIds(id, slotData)
371
+ targetNode.data = res.start;
372
+ const end = document.createComment(res.end)
373
+ targetNode.parentNode?.insertBefore(end, targetNode.nextSibling);
374
+ // document.createTe
375
+
376
+ } else if (v && htmlData) {
377
+ const s = ElementApply.htmlDataSet(id, htmlData);
378
+ targetNode.data = s.start;
379
+ const end = document.createComment(s.end)
380
+ targetNode.parentNode?.insertBefore(end, targetNode.nextSibling);
381
+ } else if (v && textData) {
382
+ const s = ElementApply.textDataSet(id, textData);
383
+ const end = document.createComment(s.end)
384
+ targetNode.data = s.start;
385
+ targetNode.parentNode?.insertBefore(end, targetNode.nextSibling);
386
+ }
387
+
388
+ } else if (currentNode.nodeType === window.Node.ELEMENT_NODE) {
389
+ const targetNode = currentNode as Element;
390
+ targetNode.getAttributeNames().forEach(it => {
391
+ const e = it.match(/e::(\w+)$/);
392
+ const eventName = e?.[1];
393
+ const p = it.match(/p::(\w+)$/);
394
+ const propertyName = p?.[1];
395
+ const a = it.match(/a::(\w+)$/);
396
+ const attributeName = a?.[1];
397
+
398
+ const value = targetNode.getAttribute(it);
399
+ if (eventName) {
400
+ targetNode.setAttribute(ElementApply.eventName(id, eventName), value);
401
+ targetNode.removeAttribute(it);
402
+ } else if (propertyName) {
403
+ targetNode.setAttribute(ElementApply.propertyName(id, propertyName), value);
404
+ targetNode.removeAttribute(it);
405
+ } else if (attributeName) {
406
+ targetNode.setAttribute(ElementApply.attributeName(id, attributeName), value);
407
+ targetNode.removeAttribute(it);
408
+ }
409
+ })
410
+ }
411
+ }
412
+
413
+ })
414
+
415
+ return nodes;
416
+ }
417
+ // }
418
+
419
+
420
+ }
421
+
422
+ // export function processHtml(id: string, htmlOrNode: string, config: { document: Document, replaceWrap: { start: string | RegExp, end: string | RegExp }, replacer: (id: string, script: string, er: ExpressionResult) => string }): string;
423
+ // export function processHtml(id: string, htmlOrNode: (Node | string)[], config: { document: Document, replaceWrap: { start: string | RegExp, end: string | RegExp }, replacer: (id: string, script: string, er: ExpressionResult) => string }): (Node | string)[] ;
424
+ export function processHtml(
425
+ id: string,
426
+ html: string,
427
+ config: { document: Document, replaceWrap: { start: string | RegExp, end: string | RegExp }, replacer: (id: string, script: string, er: ExpressionResult) => string }
428
+ ): string {
429
+ const replaceStart = config.replaceWrap.start;
430
+ const replaceEnd = config.replaceWrap.end;
431
+ const callReturnStart = `${config.replaceWrap.start}=`;
432
+ const callReturnEnd = `${config.replaceWrap.end}`;
433
+ const callStart = `${config.replaceWrap.start}@`;
434
+ const callEnd = `${config.replaceWrap.end}`;
435
+ const hasPattern = (text: string | null | undefined, start: string, end: string) => {
436
+ if (!text) return false;
437
+ const s = text.indexOf(start);
438
+ const e = text.indexOf(end, s + start.length);
439
+ return s !== -1 && e !== -1 && s < e;
440
+ };
441
+
442
+ const actionConfig: GetExpressionConfig = {expression: {replace: {start: replaceStart, end: replaceEnd}, callReturn: {start: callReturnStart, end: callReturnEnd}, call: {start: callStart, end: callEnd}}};
443
+ const runActionExpression = (source: string) => {
444
+ const actionExpression = new ActionExpression(source, actionConfig);
445
+ actionExpression.getExpressions().filter(it => it.type === 'replace').forEach(it => {
446
+ actionExpression.replace(it, config.replacer(id, it.script?.trim(), it));
447
+ });
448
+ return actionExpression.toResult();
449
+ };
450
+
451
+ return runActionExpression(html);
452
+ // if (typeof html === 'string') {
453
+ // } else {
454
+ // }
455
+ }
456
+
268
457
  export const getAppHosts = (el: HTMLElement): SwcAppInterface[] => {
269
458
  // const hosts = getHosts(el);
270
459
  // return hosts.filter(host => host.tagName.toLowerCase() === 'swc-app' || host.getAttribute('is')?.startsWith('swc-app-')) as SwcAppInterface[];
@@ -337,7 +526,7 @@ export namespace SwcUtils {
337
526
 
338
527
  export const getHostSet = (el: HTMLElement): HostSet => {
339
528
  const ancestors = findAllSwcHostsIncludingSelf(el); // [root, ..., parent]
340
-
529
+
341
530
  const $host = ancestors.length > 0 ? ancestors[ancestors.length - 1] : null;
342
531
  const $parentHost = ancestors.length > 1 ? ancestors[ancestors.length - 2] : null;
343
532
  const $hosts = ancestors;
@@ -364,7 +553,7 @@ export namespace SwcUtils {
364
553
  $hosts,
365
554
  $firstHost,
366
555
  $lastHost: $host,
367
- $templateHost: (el as any).__swc_template_host,
556
+ // $templateHost: (el as any).__swc_template_host,
368
557
  $appHost,
369
558
  $appHosts,
370
559
  $firstAppHost,
@@ -376,11 +565,11 @@ export namespace SwcUtils {
376
565
  export const parsePathPattern = (pattern: string | undefined, currentPath: string): { [key: string]: string } | null => {
377
566
  // pattern이 null/undefined면 와일드카드 (모든 경로 매칭)
378
567
  if (pattern === null || pattern === undefined) return {};
379
-
568
+
380
569
  // 공백만 있는 패턴도 와일드카드
381
570
  const trimmedPattern = pattern.trim();
382
571
  if (trimmedPattern === '' && pattern !== '') return {}; // 공백 문자만 있는 경우
383
-
572
+
384
573
  // 패턴을 정규식으로 변환
385
574
  // 지원 형식:
386
575
  // {id} → ([^/]+) 기본 (/ 제외한 모든 문자)
@@ -392,19 +581,20 @@ export namespace SwcUtils {
392
581
  // customRegex가 있으면 사용, 없으면 기본값 ([^/]+)
393
582
  return `(${customRegex || '[^/]+'})`;
394
583
  });
395
-
584
+
396
585
  const regex = new RegExp(`^${regexPattern}$`);
397
586
  const match = currentPath.match(regex);
398
-
587
+
399
588
  if (!match) return null;
400
-
589
+
401
590
  const result: { [key: string]: string } = {};
402
591
  paramNames.forEach((name, index) => {
403
592
  result[name] = match[index + 1];
404
593
  });
405
-
594
+
406
595
  return result;
407
596
  };
408
597
 
409
598
 
410
- };
599
+ }
600
+ ;
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/elements/SwcAppEngine.ts"],
4
- "sourcesContent": ["import { SimpleApplication } from '@dooboostore/simple-boot/SimpleApplication';\nimport { HashRouter, PathRouter, Router, RouterEventType } from '@dooboostore/core-web';\nimport { ElementRouter } from '../router/ElementRouter';\nimport { SimOption } from '@dooboostore/simple-boot/SimOption';\nimport { ConstructorType, OptionalType, Subscription } from '@dooboostore/core';\n\nimport { SwcAppInterface } from '../types';\nimport { SimConfig } from '@dooboostore/simple-boot';\n\nexport type SwcConfigType = {\n routeType: 'path' | 'hash' | 'element';\n connectMode?: 'direct' | 'swap' | 'clear-swap';\n container?: symbol;\n otherInstanceSim?: Map<ConstructorType<any> | Function | SimConfig | symbol, any>;\n path?: string;\n window: Window;\n onEngineStarted?: (sp: SimpleApplication, app: SwcAppInterface) => void;\n onConnected?: (app: SwcAppInterface) => void;\n onDisconnected?: (app: SwcAppInterface) => void;\n\n onChildrenConnectedDone?: (app: SwcAppInterface) => void;\n // onChildrenSwcAppStartedDone?: (app: SwcAppInterface) => void;\n // childrenSwcAppStartedDoneCheckIntervalTime?: number;\n onChildrenRouteChanged?: (event: RouterEventType, app: SwcAppInterface) => void;\n childrenRouteChangedCheckIntervalTime?: number; // \uC790\uC2DD \uC5F0\uACB0 \uC644\uB8CC \uC774\uBCA4\uD2B8 \uB514\uBC14\uC6B4\uC2A4 \uD0C0\uC784 (ms)\n childrenConnectedDoneCheckIntervalTime?: number;\n};\n\nexport type SwcAttributeConfigType = OptionalType<SwcConfigType, 'routeType' | 'window'>;\n\nexport class SwcAppEngine {\n public simpleApplication?: SimpleApplication;\n public router?: Router;\n private routerSubscription?: Subscription;\n private _config?: SwcConfigType;\n\n constructor(private host: HTMLElement) {}\n\n get config() {\n return this._config;\n }\n\n async connect(config: SwcConfigType) {\n try {\n this._config = config;\n\n // Router Selection\n if (this._config.routeType === 'path') {\n this.router = new PathRouter({ window: this._config.window, firstUrl: this._config.path });\n } else if (this._config.routeType === 'hash') {\n this.router = new HashRouter({ window: this._config.window, firstUrl: this._config.path });\n } else if (this._config.routeType === 'element') {\n this.router = new ElementRouter({ window: this._config.window, firstUrl: this._config.path });\n }\n\n // console.log('vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv', this.router)\n\n // App start\n this.simpleApplication = new SimpleApplication(\n new SimOption({\n excludeProxys: [(this._config.window as any).Node],\n container: this._config.container\n })\n );\n\n const otherInstanceSim = new Map<any, any>();\n this.config?.otherInstanceSim?.forEach((v, k) => {\n otherInstanceSim.set(k, v);\n });\n if (this.router) otherInstanceSim.set(Router, this.router);\n this.simpleApplication.run(otherInstanceSim);\n\n if (this._config.onEngineStarted) {\n this._config.onEngineStarted(this.simpleApplication, this.host as unknown as SwcAppInterface);\n }\n } catch (e) {\n console.error('[SWC-APP-ENGINE] Init failed:', e, this._config);\n }\n }\n\n disconnect() {\n this.routerSubscription?.unsubscribe();\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAAkC;AAClC,sBAAgE;AAChE,2BAA8B;AAC9B,uBAA0B;AA2BnB,MAAM,aAAa;AAAA,EAMxB,YAAoB,MAAmB;AAAnB;AALpB,wBAAO;AACP,wBAAO;AACP,wBAAQ;AACR,wBAAQ;AAAA,EAEgC;AAAA,EAExC,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,QAAQ,QAAuB;AACnC,QAAI;AACF,WAAK,UAAU;AAGf,UAAI,KAAK,QAAQ,cAAc,QAAQ;AACrC,aAAK,SAAS,IAAI,2BAAW,EAAE,QAAQ,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,CAAC;AAAA,MAC3F,WAAW,KAAK,QAAQ,cAAc,QAAQ;AAC5C,aAAK,SAAS,IAAI,2BAAW,EAAE,QAAQ,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,CAAC;AAAA,MAC3F,WAAW,KAAK,QAAQ,cAAc,WAAW;AAC/C,aAAK,SAAS,IAAI,mCAAc,EAAE,QAAQ,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,CAAC;AAAA,MAC9F;AAKA,WAAK,oBAAoB,IAAI;AAAA,QAC3B,IAAI,2BAAU;AAAA,UACZ,eAAe,CAAE,KAAK,QAAQ,OAAe,IAAI;AAAA,UACjD,WAAW,KAAK,QAAQ;AAAA,QAC1B,CAAC;AAAA,MACH;AAEA,YAAM,mBAAmB,oBAAI,IAAc;AAC3C,WAAK,QAAQ,kBAAkB,QAAQ,CAAC,GAAG,MAAM;AAC/C,yBAAiB,IAAI,GAAG,CAAC;AAAA,MAC3B,CAAC;AACD,UAAI,KAAK,OAAQ,kBAAiB,IAAI,wBAAQ,KAAK,MAAM;AACzD,WAAK,kBAAkB,IAAI,gBAAgB;AAE3C,UAAI,KAAK,QAAQ,iBAAiB;AAChC,aAAK,QAAQ,gBAAgB,KAAK,mBAAmB,KAAK,IAAkC;AAAA,MAC9F;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,MAAM,iCAAiC,GAAG,KAAK,OAAO;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,aAAa;AACX,SAAK,oBAAoB,YAAY;AAAA,EACvC;AACF;",
6
- "names": []
7
- }
@@ -1,129 +0,0 @@
1
- var import_changedAttributeThis = require("../decorators/changedAttributeThis");
2
- var import_Utils = require("../utils/Utils");
3
- var import_core = require("@dooboostore/core");
4
- var import_core_web = require("@dooboostore/core-web");
5
- var import_decorators = require("../decorators");
6
- var __decorate = function(decorators, target, key, desc) {
7
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
10
- return c > 3 && r && Object.defineProperty(target, key, r), r;
11
- };
12
- var __metadata = function(k, v) {
13
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
14
- };
15
- class SwcAsync extends HTMLTemplateElement {
16
- constructor() {
17
- super(...arguments);
18
- this._nodes = [];
19
- }
20
- get value() {
21
- return this._value;
22
- }
23
- set value(nv) {
24
- this.executeAsync(nv);
25
- }
26
- setValue(valueAttr) {
27
- this.executeAsync(this._value);
28
- }
29
- // @changedAttributeThis('replace-wrap')
30
- // private setReplaceWrap() {
31
- // this.executeAsync(this._value);
32
- // }
33
- executeAsync(result = this._value) {
34
- if (result === void 0 || result === null) {
35
- this.refresh("default");
36
- return;
37
- }
38
- if (result instanceof Promise) {
39
- this.refresh("loading");
40
- result.then((v) => {
41
- this.resultValue = v;
42
- this.refresh("success");
43
- }).catch((e) => {
44
- console.error("[SWC-ASYNC] Promise rejected:", e);
45
- this.resultValue = e;
46
- this.refresh("error");
47
- });
48
- } else {
49
- this.resultValue = result;
50
- this.refresh("success");
51
- }
52
- }
53
- replaceExpressions(html, groupArgs, context, wrap) {
54
- let config = void 0;
55
- if (wrap) {
56
- config = {
57
- expression: {
58
- replace: { start: `${wrap.start}`, end: `${wrap.end}` },
59
- callReturn: { start: `${wrap.start}=`, end: `${wrap.end}` },
60
- call: { start: `${wrap.start}@`, end: `${wrap.end}` }
61
- }
62
- };
63
- }
64
- const ae = new import_core.ActionExpression(html, config);
65
- const win = this.ownerDocument?.defaultView || window;
66
- for (const expr of ae.getExpressions("replace")) {
67
- try {
68
- const value = import_core.FunctionUtils.executeReturn({
69
- script: import_core_web.ConvertUtils.decodeHtmlEntity(expr.script, win.document),
70
- context,
71
- args: groupArgs
72
- });
73
- ae.replace(expr, String(value));
74
- } catch (e) {
75
- console.error(`[SWC] Failed to execute ${expr.original}:`, e);
76
- }
77
- }
78
- return ae.getUnprocessedTemplate();
79
- }
80
- refresh(state = "default") {
81
- this.cleanup();
82
- const portal = import_Utils.SwcUtils.getParentContainer(this);
83
- if (!portal)
84
- return;
85
- const win = this.ownerDocument?.defaultView || window;
86
- const helperSet = import_Utils.SwcUtils.getHelperAndHostSet(win, this);
87
- const t = this.content.querySelector(`template[is="swc-${state}"]`);
88
- if (t) {
89
- let htmlString = t.innerHTML;
90
- const groupArgs = { ...helperSet, $value: this._value, $state: state, $templateHost: this };
91
- htmlString = this.replaceExpressions(htmlString, groupArgs, this, { start: this._replaceWrapStart ?? "{#{", end: this._replaceWrapEnd ?? "}#}" });
92
- const temp = this.ownerDocument?.createElement("template") || document.createElement("template");
93
- temp.innerHTML = htmlString;
94
- const content = temp.content;
95
- this._nodes = Array.from(content.childNodes);
96
- this._nodes.forEach((node) => {
97
- if (node instanceof HTMLElement)
98
- node.__template_swc_host = this;
99
- });
100
- portal.insertBefore(content, this.nextSibling);
101
- }
102
- }
103
- cleanup() {
104
- this._nodes.forEach((n) => n.parentElement?.removeChild(n));
105
- this._nodes = [];
106
- }
107
- disconnectedCallback() {
108
- this.cleanup();
109
- }
110
- }
111
- __decorate([
112
- (0, import_decorators.attributeThis)("value"),
113
- __metadata("design:type", Object)
114
- ], SwcAsync.prototype, "_value", void 0);
115
- __decorate([
116
- (0, import_decorators.attributeThis)("replace-wrap-start"),
117
- __metadata("design:type", String)
118
- ], SwcAsync.prototype, "_replaceWrapStart", void 0);
119
- __decorate([
120
- (0, import_decorators.attributeThis)("replace-wrap-end"),
121
- __metadata("design:type", String)
122
- ], SwcAsync.prototype, "_replaceWrapEnd", void 0);
123
- __decorate([
124
- (0, import_changedAttributeThis.changedAttributeThis)("value"),
125
- __metadata("design:type", Function),
126
- __metadata("design:paramtypes", [String]),
127
- __metadata("design:returntype", void 0)
128
- ], SwcAsync.prototype, "setValue", null);
129
- //# sourceMappingURL=SwcAsync.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/elements/SwcAsync.ts"],
4
- "sourcesContent": ["import { changedAttributeThis } from '../decorators/changedAttributeThis';\nimport { SwcUtils } from '../utils/Utils';\nimport { FunctionUtils, ActionExpression } from '@dooboostore/core';\nimport { ConvertUtils } from '@dooboostore/core-web';\nimport { attributeThis } from '../decorators';\n\nclass SwcAsync extends HTMLTemplateElement {\n @attributeThis('value')\n _value: any;\n @attributeThis('replace-wrap-start')\n _replaceWrapStart: string | null;\n @attributeThis('replace-wrap-end')\n _replaceWrapEnd: string | null; resultValue?: any;\n\n get value(): boolean {\n return this._value;\n }\n\n set value(nv: any) {\n this.executeAsync(nv);\n }\n\n private _nodes: Node[] = [];\n\n @changedAttributeThis('value')\n private setValue(valueAttr?: string | null) {\n this.executeAsync(this._value);\n }\n\n // @changedAttributeThis('replace-wrap')\n // private setReplaceWrap() {\n // this.executeAsync(this._value);\n // }\n\n private executeAsync(result: any = this._value) {\n if (result === undefined || result === null) {\n this.refresh('default');\n return;\n }\n\n if (result instanceof Promise) {\n this.refresh('loading');\n result\n .then(v => {\n this.resultValue = v;\n this.refresh('success');\n })\n .catch(e => {\n console.error('[SWC-ASYNC] Promise rejected:', e);\n this.resultValue = e;\n this.refresh('error');\n });\n } else {\n this.resultValue = result;\n this.refresh('success');\n }\n }\n\n private replaceExpressions(html: string, groupArgs: any, context: any, wrap: {start: string, end: string}): string {\n let config: any = undefined;\n if (wrap) {\n config = {\n expression: {\n replace: { start: `${wrap.start}`, end: `${wrap.end}` },\n callReturn: { start: `${wrap.start}=`, end: `${wrap.end}` },\n call: { start: `${wrap.start}@`, end: `${wrap.end}` }\n }\n };\n }\n const ae = new ActionExpression(html, config);\n const win = this.ownerDocument?.defaultView || window;\n\n // @ts-ignore\n for (const expr of ae.getExpressions('replace')) {\n try {\n const value = FunctionUtils.executeReturn({\n script: ConvertUtils.decodeHtmlEntity(expr.script, win.document),\n context,\n args: groupArgs\n });\n ae.replace(expr, String(value));\n } catch (e) {\n console.error(`[SWC] Failed to execute ${expr.original}:`, e);\n }\n }\n return ae.getUnprocessedTemplate();\n }\n\n refresh(state: string = 'default') {\n // console.log('rrrrrrrrrrrrrrrrr', state);\n this.cleanup();\n const portal = SwcUtils.getParentContainer(this);\n if (!portal) return;\n\n const win = this.ownerDocument?.defaultView || window;\n const helperSet = SwcUtils.getHelperAndHostSet(win, this);\n\n const t = this.content.querySelector(`template[is=\"swc-${state}\"]`) as HTMLTemplateElement;\n if (t) {\n let htmlString = t.innerHTML;\n const groupArgs = { ...helperSet, $value: this._value, $state: state, $templateHost: this };\n\n htmlString = this.replaceExpressions(htmlString, groupArgs, this, {start:this._replaceWrapStart ?? '{#{', end: this._replaceWrapEnd ?? '}#}'});\n\n const temp = this.ownerDocument?.createElement('template') || document.createElement('template');\n temp.innerHTML = htmlString;\n const content = temp.content;\n\n this._nodes = Array.from(content.childNodes);\n this._nodes.forEach((node: any) => {\n if (node instanceof HTMLElement) (node as any).__template_swc_host = this;\n });\n\n portal.insertBefore(content, this.nextSibling);\n }\n }\n\n private cleanup() {\n this._nodes.forEach(n => n.parentElement?.removeChild(n));\n this._nodes = [];\n }\n\n disconnectedCallback() {\n this.cleanup();\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }