ds-one 0.2.0-alpha.3 → 0.2.5-alpha.10

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 (271) hide show
  1. package/DS1/0-face/{2025-04-23-device.ts → device.ts} +10 -6
  2. package/DS1/{utils/language.ts → 0-face/i18n.ts} +236 -92
  3. package/DS1/0-face/preferences.ts +23 -0
  4. package/DS1/0-face/pricing.ts +57 -0
  5. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  6. package/DS1/1-root/one.css +76 -107
  7. package/DS1/2-core/ds-banner.ts +3 -0
  8. package/DS1/2-core/ds-button.ts +13 -16
  9. package/DS1/2-core/ds-cycle.ts +84 -39
  10. package/DS1/2-core/{ds-year.ts → ds-date.ts} +5 -6
  11. package/DS1/2-core/ds-icon.ts +4 -4
  12. package/DS1/2-core/ds-input.ts +1 -0
  13. package/DS1/2-core/ds-text.ts +27 -3
  14. package/DS1/2-core/ds-tooltip.ts +9 -14
  15. package/DS1/3-unit/ds-list.ts +7 -0
  16. package/DS1/3-unit/ds-row.ts +4 -5
  17. package/DS1/3-unit/ds-table.ts +5 -6
  18. package/DS1/4-page/ds-grid.ts +9 -59
  19. package/DS1/4-page/ds-layout.ts +123 -18
  20. package/DS1/index.ts +39 -37
  21. package/LICENSE +1 -1
  22. package/README.md +43 -133
  23. package/dist/0-face/{2025-04-23-device.d.ts → device.d.ts} +1 -1
  24. package/dist/0-face/device.d.ts.map +1 -0
  25. package/dist/0-face/{2025-04-23-device.js → device.js} +7 -3
  26. package/dist/{utils/language.d.ts → 0-face/i18n.d.ts} +1 -3
  27. package/dist/0-face/i18n.d.ts.map +1 -0
  28. package/dist/{utils/language.js → 0-face/i18n.js} +178 -76
  29. package/dist/0-face/preferences.d.ts +9 -0
  30. package/dist/0-face/preferences.d.ts.map +1 -0
  31. package/dist/0-face/preferences.js +14 -0
  32. package/dist/0-face/pricing.d.ts +15 -0
  33. package/dist/0-face/pricing.d.ts.map +1 -0
  34. package/dist/0-face/pricing.js +46 -0
  35. package/dist/0-face/theme.d.ts.map +1 -0
  36. package/dist/2-core/ds-banner.d.ts +1 -0
  37. package/dist/2-core/ds-banner.d.ts.map +1 -0
  38. package/dist/2-core/ds-banner.js +2 -0
  39. package/dist/2-core/ds-button.d.ts +2 -7
  40. package/dist/2-core/ds-button.d.ts.map +1 -1
  41. package/dist/2-core/ds-button.js +12 -14
  42. package/dist/2-core/ds-cycle.d.ts +2 -0
  43. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  44. package/dist/2-core/ds-cycle.js +80 -34
  45. package/dist/2-core/{ds-year.d.ts → ds-date.d.ts} +4 -4
  46. package/dist/2-core/ds-date.d.ts.map +1 -0
  47. package/dist/2-core/{ds-year.js → ds-date.js} +5 -5
  48. package/dist/2-core/ds-icon.js +4 -4
  49. package/dist/2-core/ds-input.d.ts +1 -0
  50. package/dist/2-core/ds-input.d.ts.map +1 -0
  51. package/dist/2-core/ds-input.js +1 -0
  52. package/dist/2-core/ds-text.d.ts +2 -0
  53. package/dist/2-core/ds-text.d.ts.map +1 -1
  54. package/dist/2-core/ds-text.js +26 -3
  55. package/dist/2-core/ds-tooltip.d.ts +1 -1
  56. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  57. package/dist/2-core/ds-tooltip.js +9 -13
  58. package/dist/3-unit/ds-list.d.ts.map +1 -1
  59. package/dist/3-unit/ds-list.js +3 -0
  60. package/dist/3-unit/{ds-doublenav.d.ts → ds-portfolio-doublenav.d.ts} +4 -4
  61. package/dist/3-unit/ds-portfolio-doublenav.d.ts.map +1 -0
  62. package/dist/3-unit/{ds-doublenav.js → ds-portfolio-doublenav.js} +4 -4
  63. package/dist/3-unit/{ds-panel.d.ts → ds-portfolio-panel.d.ts} +3 -3
  64. package/dist/3-unit/ds-portfolio-panel.d.ts.map +1 -0
  65. package/dist/3-unit/{ds-panel.js → ds-portfolio-panel.js} +3 -3
  66. package/dist/3-unit/{ds-singlenav.d.ts → ds-portfolio-singlenav.d.ts} +4 -4
  67. package/dist/3-unit/ds-portfolio-singlenav.d.ts.map +1 -0
  68. package/dist/3-unit/{ds-singlenav.js → ds-portfolio-singlenav.js} +7 -7
  69. package/dist/3-unit/ds-row.js +4 -4
  70. package/dist/3-unit/ds-table.d.ts.map +1 -1
  71. package/dist/3-unit/ds-table.js +5 -6
  72. package/dist/4-page/ds-grid.d.ts +0 -7
  73. package/dist/4-page/ds-grid.d.ts.map +1 -1
  74. package/dist/4-page/ds-grid.js +9 -54
  75. package/dist/4-page/ds-layout.d.ts +1 -1
  76. package/dist/4-page/ds-layout.d.ts.map +1 -1
  77. package/dist/4-page/ds-layout.js +126 -17
  78. package/dist/ds-one.bundle.js +2515 -4132
  79. package/dist/ds-one.bundle.js.map +4 -4
  80. package/dist/ds-one.bundle.min.js +245 -787
  81. package/dist/ds-one.bundle.min.js.map +4 -4
  82. package/dist/index.d.ts +16 -26
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +32 -34
  85. package/package.json +8 -9
  86. package/DS1/0-face/2025-04-23-language.ts +0 -4
  87. package/DS1/2-core/ds-article.ts +0 -454
  88. package/DS1/2-core/ds-attributes.ts +0 -155
  89. package/DS1/2-core/ds-downloadcv.ts +0 -146
  90. package/DS1/2-core/ds-header.ts +0 -82
  91. package/DS1/2-core/ds-home.ts +0 -168
  92. package/DS1/2-core/ds-link.ts +0 -121
  93. package/DS1/2-core/ds-markdown.ts +0 -252
  94. package/DS1/2-core/ds-price.ts +0 -108
  95. package/DS1/2-core/ds-squarecircle.ts +0 -155
  96. package/DS1/2-core/ds-title.ts +0 -139
  97. package/DS1/2-core/ds-viewtoggle.ts +0 -83
  98. package/DS1/3-unit/ds-doublenav.ts +0 -106
  99. package/DS1/3-unit/ds-panel.ts +0 -27
  100. package/DS1/3-unit/ds-singlenav.ts +0 -79
  101. package/DS1/utils/cdn-loader.ts +0 -208
  102. package/DS1/utils/keys.json +0 -41
  103. package/DS1/utils/pricing.ts +0 -24
  104. package/DS1/utils/scroll.ts +0 -184
  105. package/DS1/utils/settings.ts +0 -23
  106. package/DS1/utils/viewMode.ts +0 -55
  107. package/dist/0-face/2025-04-23-device.d.ts.map +0 -1
  108. package/dist/0-face/2025-04-23-language.d.ts +0 -1
  109. package/dist/0-face/2025-04-23-language.d.ts.map +0 -1
  110. package/dist/0-face/2025-04-23-language.js +0 -3
  111. package/dist/2-core/article-v1.d.ts +0 -129
  112. package/dist/2-core/article-v1.d.ts.map +0 -1
  113. package/dist/2-core/article-v1.js +0 -361
  114. package/dist/2-core/attributes-v1.d.ts +0 -47
  115. package/dist/2-core/attributes-v1.d.ts.map +0 -1
  116. package/dist/2-core/attributes-v1.js +0 -128
  117. package/dist/2-core/cycle-v1.d.ts +0 -66
  118. package/dist/2-core/cycle-v1.d.ts.map +0 -1
  119. package/dist/2-core/cycle-v1.js +0 -586
  120. package/dist/2-core/downloadcv-v1.d.ts +0 -58
  121. package/dist/2-core/downloadcv-v1.d.ts.map +0 -1
  122. package/dist/2-core/downloadcv-v1.js +0 -119
  123. package/dist/2-core/ds-article.d.ts +0 -129
  124. package/dist/2-core/ds-article.d.ts.map +0 -1
  125. package/dist/2-core/ds-article.js +0 -361
  126. package/dist/2-core/ds-attributes.d.ts +0 -47
  127. package/dist/2-core/ds-attributes.d.ts.map +0 -1
  128. package/dist/2-core/ds-attributes.js +0 -128
  129. package/dist/2-core/ds-button.figma.d.ts +0 -2
  130. package/dist/2-core/ds-button.figma.d.ts.map +0 -1
  131. package/dist/2-core/ds-button.figma.js +0 -6
  132. package/dist/2-core/ds-downloadcv.d.ts +0 -58
  133. package/dist/2-core/ds-downloadcv.d.ts.map +0 -1
  134. package/dist/2-core/ds-downloadcv.js +0 -119
  135. package/dist/2-core/ds-header.d.ts +0 -28
  136. package/dist/2-core/ds-header.d.ts.map +0 -1
  137. package/dist/2-core/ds-header.js +0 -66
  138. package/dist/2-core/ds-home.d.ts +0 -26
  139. package/dist/2-core/ds-home.d.ts.map +0 -1
  140. package/dist/2-core/ds-home.js +0 -148
  141. package/dist/2-core/ds-link.d.ts +0 -35
  142. package/dist/2-core/ds-link.d.ts.map +0 -1
  143. package/dist/2-core/ds-link.js +0 -85
  144. package/dist/2-core/ds-markdown.d.ts +0 -7
  145. package/dist/2-core/ds-markdown.d.ts.map +0 -1
  146. package/dist/2-core/ds-markdown.js +0 -240
  147. package/dist/2-core/ds-price.d.ts +0 -46
  148. package/dist/2-core/ds-price.d.ts.map +0 -1
  149. package/dist/2-core/ds-price.js +0 -72
  150. package/dist/2-core/ds-squarecircle.d.ts +0 -50
  151. package/dist/2-core/ds-squarecircle.d.ts.map +0 -1
  152. package/dist/2-core/ds-squarecircle.js +0 -133
  153. package/dist/2-core/ds-title.d.ts +0 -50
  154. package/dist/2-core/ds-title.d.ts.map +0 -1
  155. package/dist/2-core/ds-title.js +0 -103
  156. package/dist/2-core/ds-viewtoggle.d.ts +0 -27
  157. package/dist/2-core/ds-viewtoggle.d.ts.map +0 -1
  158. package/dist/2-core/ds-viewtoggle.js +0 -49
  159. package/dist/2-core/ds-year.d.ts.map +0 -1
  160. package/dist/2-core/header-v1.d.ts +0 -28
  161. package/dist/2-core/header-v1.d.ts.map +0 -1
  162. package/dist/2-core/header-v1.js +0 -66
  163. package/dist/2-core/home-v1.d.ts +0 -26
  164. package/dist/2-core/home-v1.d.ts.map +0 -1
  165. package/dist/2-core/home-v1.js +0 -148
  166. package/dist/2-core/icon-v1.d.ts +0 -28
  167. package/dist/2-core/icon-v1.d.ts.map +0 -1
  168. package/dist/2-core/icon-v1.js +0 -297
  169. package/dist/2-core/link-v1.d.ts +0 -35
  170. package/dist/2-core/link-v1.d.ts.map +0 -1
  171. package/dist/2-core/link-v1.js +0 -85
  172. package/dist/2-core/markdown-v1.d.ts +0 -7
  173. package/dist/2-core/markdown-v1.d.ts.map +0 -1
  174. package/dist/2-core/markdown-v1.js +0 -240
  175. package/dist/2-core/price-v1.d.ts +0 -46
  176. package/dist/2-core/price-v1.d.ts.map +0 -1
  177. package/dist/2-core/price-v1.js +0 -72
  178. package/dist/2-core/squarecircle-v1.d.ts +0 -50
  179. package/dist/2-core/squarecircle-v1.d.ts.map +0 -1
  180. package/dist/2-core/squarecircle-v1.js +0 -133
  181. package/dist/2-core/text-v1.d.ts +0 -48
  182. package/dist/2-core/text-v1.d.ts.map +0 -1
  183. package/dist/2-core/text-v1.js +0 -83
  184. package/dist/2-core/title-v1.d.ts +0 -50
  185. package/dist/2-core/title-v1.d.ts.map +0 -1
  186. package/dist/2-core/title-v1.js +0 -103
  187. package/dist/2-core/tooltip-v1.d.ts +0 -39
  188. package/dist/2-core/tooltip-v1.d.ts.map +0 -1
  189. package/dist/2-core/tooltip-v1.js +0 -145
  190. package/dist/2-core/viewtoggle-v1.d.ts +0 -27
  191. package/dist/2-core/viewtoggle-v1.d.ts.map +0 -1
  192. package/dist/2-core/viewtoggle-v1.js +0 -49
  193. package/dist/2-core/year-v1.d.ts +0 -16
  194. package/dist/2-core/year-v1.d.ts.map +0 -1
  195. package/dist/2-core/year-v1.js +0 -21
  196. package/dist/3-unit/ds-doublenav.d.ts.map +0 -1
  197. package/dist/3-unit/ds-panel.d.ts.map +0 -1
  198. package/dist/3-unit/ds-singlenav.d.ts.map +0 -1
  199. package/dist/utils/cdn-loader.d.ts +0 -19
  200. package/dist/utils/cdn-loader.d.ts.map +0 -1
  201. package/dist/utils/cdn-loader.js +0 -142
  202. package/dist/utils/keys.json +0 -41
  203. package/dist/utils/language.d.ts.map +0 -1
  204. package/dist/utils/pricing.d.ts +0 -8
  205. package/dist/utils/pricing.d.ts.map +0 -1
  206. package/dist/utils/pricing.js +0 -14
  207. package/dist/utils/scroll.d.ts +0 -34
  208. package/dist/utils/scroll.d.ts.map +0 -1
  209. package/dist/utils/scroll.js +0 -140
  210. package/dist/utils/settings.d.ts +0 -9
  211. package/dist/utils/settings.d.ts.map +0 -1
  212. package/dist/utils/settings.js +0 -14
  213. package/dist/utils/theme.d.ts.map +0 -1
  214. package/dist/utils/viewMode.d.ts +0 -14
  215. package/dist/utils/viewMode.d.ts.map +0 -1
  216. package/dist/utils/viewMode.js +0 -46
  217. /package/DS1/{utils → 0-face}/theme.ts +0 -0
  218. /package/DS1/{x Icon → x-icon}/1x.svg +0 -0
  219. /package/DS1/{x Icon → x-icon}/1xdots.svg +0 -0
  220. /package/DS1/{x Icon → x-icon}/1xgrid.svg +0 -0
  221. /package/DS1/{x Icon → x-icon}/1xlines.svg +0 -0
  222. /package/DS1/{x Icon → x-icon}/2x.svg +0 -0
  223. /package/DS1/{x Icon → x-icon}/2xdots.svg +0 -0
  224. /package/DS1/{x Icon → x-icon}/2xgrid.svg +0 -0
  225. /package/DS1/{x Icon → x-icon}/2xlines.svg +0 -0
  226. /package/DS1/{x Icon → x-icon}/big.svg +0 -0
  227. /package/DS1/{x Icon → x-icon}/blank.svg +0 -0
  228. /package/DS1/{x Icon → x-icon}/check.svg +0 -0
  229. /package/DS1/{x Icon → x-icon}/close.svg +0 -0
  230. /package/DS1/{x Icon → x-icon}/collapse.svg +0 -0
  231. /package/DS1/{x Icon → x-icon}/color.svg +0 -0
  232. /package/DS1/{x Icon → x-icon}/column.svg +0 -0
  233. /package/DS1/{x Icon → x-icon}/default.svg +0 -0
  234. /package/DS1/{x Icon → x-icon}/delete.svg +0 -0
  235. /package/DS1/{x Icon → x-icon}/do.svg +0 -0
  236. /package/DS1/{x Icon → x-icon}/down.svg +0 -0
  237. /package/DS1/{x Icon → x-icon}/duplicate.svg +0 -0
  238. /package/DS1/{x Icon → x-icon}/email.svg +0 -0
  239. /package/DS1/{x Icon → x-icon}/expand.svg +0 -0
  240. /package/DS1/{x Icon → x-icon}/gallery.svg +0 -0
  241. /package/DS1/{x Icon → x-icon}/group.svg +0 -0
  242. /package/DS1/{x Icon → x-icon}/head.svg +0 -0
  243. /package/DS1/{x Icon → x-icon}/icon.svg +0 -0
  244. /package/DS1/{x Icon → x-icon}/left.svg +0 -0
  245. /package/DS1/{x Icon → x-icon}/lock.svg +0 -0
  246. /package/DS1/{x Icon → x-icon}/mic.svg +0 -0
  247. /package/DS1/{x Icon → x-icon}/minimize.svg +0 -0
  248. /package/DS1/{x Icon → x-icon}/more.svg +0 -0
  249. /package/DS1/{x Icon → x-icon}/note.svg +0 -0
  250. /package/DS1/{x Icon → x-icon}/open.svg +0 -0
  251. /package/DS1/{x Icon → x-icon}/page.svg +0 -0
  252. /package/DS1/{x Icon → x-icon}/plus.svg +0 -0
  253. /package/DS1/{x Icon → x-icon}/rewind.svg +0 -0
  254. /package/DS1/{x Icon → x-icon}/right.svg +0 -0
  255. /package/DS1/{x Icon/row..svg → x-icon/row.svg} +0 -0
  256. /package/DS1/{x Icon → x-icon}/search.svg +0 -0
  257. /package/DS1/{x Icon → x-icon}/see.svg +0 -0
  258. /package/DS1/{x Icon → x-icon}/star.svg +0 -0
  259. /package/DS1/{x Icon → x-icon}/title.svg +0 -0
  260. /package/DS1/{x Icon → x-icon}/undo.svg +0 -0
  261. /package/DS1/{x Icon → x-icon}/ungroup.svg +0 -0
  262. /package/DS1/{x Icon → x-icon}/unhead.svg +0 -0
  263. /package/DS1/{x Icon → x-icon}/unicon.svg +0 -0
  264. /package/DS1/{x Icon → x-icon}/unlock.svg +0 -0
  265. /package/DS1/{x Icon → x-icon}/unmic.svg +0 -0
  266. /package/DS1/{x Icon → x-icon}/unsee.svg +0 -0
  267. /package/DS1/{x Icon → x-icon}/unstar.svg +0 -0
  268. /package/DS1/{x Icon → x-icon}/untitle.svg +0 -0
  269. /package/DS1/{x Icon → x-icon}/up.svg +0 -0
  270. /package/dist/{utils → 0-face}/theme.d.ts +0 -0
  271. /package/dist/{utils → 0-face}/theme.js +0 -0
@@ -1,47 +1,173 @@
1
- // Import the JSON directly to ensure it's bundled
2
- import translationKeys from "./keys.json";
1
+ // Bundled translations (keys.json may not exist - will use external translations if not available)
2
+ // This is a fallback for when external translations aren't loaded
3
+ let translationKeys = {};
3
4
  // Primary language list – prioritise the 10 requested languages when cycling
4
5
  const LANGUAGE_PRIORITY_ORDER = [
5
6
  "da",
6
- "nb",
7
- "sv",
8
- "pt",
7
+ "de",
8
+ "en",
9
9
  "es",
10
- "zh",
11
- "ko",
10
+ "fr",
11
+ "it",
12
12
  "ja",
13
- "en",
14
- "de",
13
+ "pt",
14
+ "sv",
15
+ "zh",
15
16
  ];
16
17
  const LANGUAGE_PRIORITY_LOOKUP = new Map(LANGUAGE_PRIORITY_ORDER.map((code, index) => [code, index]));
17
18
  // Fallback language names if Intl.DisplayNames is not available
18
19
  const FALLBACK_LANGUAGE_NAMES = {
19
20
  da: "Danish",
20
21
  "da-dk": "Danish",
21
- nb: "Norwegian",
22
- "nb-no": "Norwegian",
23
- sv: "Swedish",
24
- "sv-se": "Swedish",
25
22
  de: "German",
26
23
  "de-de": "German",
27
24
  en: "English",
28
25
  "en-us": "English",
29
- pt: "Portuguese",
30
- "pt-pt": "Portuguese",
31
- "pt-br": "Portuguese (Brazil)",
32
26
  es: "Spanish",
33
27
  "es-es": "Spanish",
34
- "es-mx": "Spanish (Mexico)",
35
- zh: "Chinese",
36
- "zh-hans": "Chinese (Simplified)",
37
- "zh-hant": "Chinese (Traditional)",
28
+ fr: "French",
29
+ "fr-fr": "French",
30
+ it: "Italian",
31
+ "it-it": "Italian",
38
32
  ja: "Japanese",
39
33
  "ja-jp": "Japanese",
40
- ko: "Korean",
41
- "ko-kr": "Korean",
34
+ pt: "Portuguese",
35
+ "pt-pt": "Portuguese",
36
+ sv: "Swedish",
37
+ "sv-se": "Swedish",
38
+ zh: "Chinese",
39
+ "zh-cn": "Chinese",
40
+ "zh-tw": "Chinese",
41
+ "zh-hans": "Chinese",
42
+ "zh-hant": "Chinese",
42
43
  };
43
44
  const DISPLAY_NAME_CACHE = new Map();
44
45
  let displayNameFallbackWarningShown = false;
46
+ // CDN Loader: Automatically detects and loads translation JSON files
47
+ // for CDN users who want to use external translations
48
+ const DEFAULT_TRANSLATION_FILE = "./translations.json";
49
+ let loadAttempted = false;
50
+ function normalizeCandidate(path) {
51
+ if (!path) {
52
+ return null;
53
+ }
54
+ const trimmed = path.trim();
55
+ if (!trimmed) {
56
+ return null;
57
+ }
58
+ if (trimmed.startsWith("./") ||
59
+ trimmed.startsWith("../") ||
60
+ trimmed.startsWith("/") ||
61
+ /^https?:\/\//i.test(trimmed)) {
62
+ return trimmed;
63
+ }
64
+ return `./${trimmed}`;
65
+ }
66
+ function findAttributeCandidate() {
67
+ if (typeof document === "undefined") {
68
+ return null;
69
+ }
70
+ const scriptWithAttribute = document.querySelector("script[data-ds-one-translations]");
71
+ const scriptCandidate = scriptWithAttribute?.getAttribute("data-ds-one-translations");
72
+ if (scriptCandidate) {
73
+ return scriptCandidate;
74
+ }
75
+ const metaCandidate = document
76
+ .querySelector('meta[name="ds-one:translations"]')
77
+ ?.getAttribute("content");
78
+ if (metaCandidate) {
79
+ return metaCandidate;
80
+ }
81
+ const linkCandidate = document
82
+ .querySelector('link[rel="ds-one-translations"]')
83
+ ?.getAttribute("href");
84
+ if (linkCandidate) {
85
+ return linkCandidate;
86
+ }
87
+ return null;
88
+ }
89
+ function resolveTranslationSources() {
90
+ const candidates = [];
91
+ const windowCandidate = typeof window !== "undefined" ? window.DS_ONE_TRANSLATIONS_FILE : null;
92
+ const attributeCandidate = findAttributeCandidate();
93
+ // Only use explicitly configured paths, or the single default
94
+ const windowNormalized = normalizeCandidate(windowCandidate ?? "");
95
+ if (windowNormalized) {
96
+ candidates.push(windowNormalized);
97
+ }
98
+ const attrNormalized = normalizeCandidate(attributeCandidate ?? "");
99
+ if (attrNormalized && !candidates.includes(attrNormalized)) {
100
+ candidates.push(attrNormalized);
101
+ }
102
+ // Only try default if no explicit path was configured
103
+ if (candidates.length === 0) {
104
+ candidates.push(DEFAULT_TRANSLATION_FILE);
105
+ }
106
+ return candidates;
107
+ }
108
+ function validateTranslationMap(candidate) {
109
+ if (!candidate || typeof candidate !== "object") {
110
+ return false;
111
+ }
112
+ return Object.values(candidate).every((entry) => entry && typeof entry === "object");
113
+ }
114
+ async function fetchTranslationFile(source) {
115
+ try {
116
+ const response = await fetch(source);
117
+ if (!response.ok) {
118
+ // 404 is expected if no translations file exists - don't log as error
119
+ return null;
120
+ }
121
+ const translations = await response.json();
122
+ if (!validateTranslationMap(translations)) {
123
+ console.warn(`[DS one] Invalid translation format in ${source}. Expected object with language codes as keys.`);
124
+ return null;
125
+ }
126
+ const languages = Object.keys(translations);
127
+ if (languages.length === 0) {
128
+ console.warn(`[DS one] No languages found in ${source}`);
129
+ return null;
130
+ }
131
+ return translations;
132
+ }
133
+ catch {
134
+ // Silently fail - file likely doesn't exist or isn't valid JSON
135
+ return null;
136
+ }
137
+ }
138
+ /**
139
+ * Attempts to load translations from a JSON file in the same directory
140
+ */
141
+ async function loadExternalTranslations() {
142
+ // Only attempt once
143
+ if (loadAttempted) {
144
+ return false;
145
+ }
146
+ loadAttempted = true;
147
+ if (typeof window === "undefined") {
148
+ return false;
149
+ }
150
+ // Check if translations are already loaded (e.g., by the application)
151
+ if (window.DS_ONE_TRANSLATIONS &&
152
+ Object.keys(window.DS_ONE_TRANSLATIONS).length > 0) {
153
+ console.log(`[DS one] Translations already loaded (${Object.keys(window.DS_ONE_TRANSLATIONS).length} languages), skipping auto-load`);
154
+ return true;
155
+ }
156
+ const sources = resolveTranslationSources();
157
+ for (const source of sources) {
158
+ const translations = await fetchTranslationFile(source);
159
+ if (!translations) {
160
+ continue;
161
+ }
162
+ window.DS_ONE_TRANSLATIONS = translations;
163
+ const languages = Object.keys(translations);
164
+ console.log(`[DS one] External translations loaded from ${source}: ${languages.length} language(s) – ${languages.join(", ")}`);
165
+ window.dispatchEvent(new CustomEvent("translations-ready"));
166
+ return true;
167
+ }
168
+ console.info(`[DS one] No external translations found at ${sources[0] ?? DEFAULT_TRANSLATION_FILE}. Using bundled translations.`);
169
+ return false;
170
+ }
45
171
  // Get translation data - prioritize external, fall back to bundled
46
172
  function getTranslationData() {
47
173
  // Check for externally loaded translations first (CDN usage)
@@ -53,7 +179,6 @@ function getTranslationData() {
53
179
  }
54
180
  // Cached translation data - use getter to always get fresh data
55
181
  let translationData = getTranslationData();
56
- const notionStore = new Map();
57
182
  const defaultLanguage = "en";
58
183
  function extractPrimarySubtag(code) {
59
184
  if (!code) {
@@ -162,33 +287,30 @@ export function getLanguageDisplayName(code, options = {}) {
162
287
  const BROWSER_LANGUAGE_PREFERENCES = {
163
288
  da: "da",
164
289
  "da-dk": "da",
165
- no: "nb",
166
- nb: "nb",
167
- "nb-no": "nb",
168
- nn: "nn",
169
- "nn-no": "nn",
170
- sv: "sv",
171
- "sv-se": "sv",
172
- pt: "pt",
173
- "pt-pt": "pt",
174
- "pt-br": "pt",
290
+ de: "de",
291
+ "de-de": "de",
292
+ en: "en",
293
+ "en-us": "en",
294
+ "en-gb": "en",
175
295
  es: "es",
176
296
  "es-es": "es",
177
297
  "es-mx": "es",
298
+ fr: "fr",
299
+ "fr-fr": "fr",
300
+ it: "it",
301
+ "it-it": "it",
302
+ ja: "ja",
303
+ "ja-jp": "ja",
304
+ pt: "pt",
305
+ "pt-pt": "pt",
306
+ "pt-br": "pt",
307
+ sv: "sv",
308
+ "sv-se": "sv",
178
309
  zh: "zh",
179
310
  "zh-cn": "zh",
180
311
  "zh-hans": "zh",
181
312
  "zh-tw": "zh",
182
313
  "zh-hant": "zh",
183
- ko: "ko",
184
- "ko-kr": "ko",
185
- ja: "ja",
186
- "ja-jp": "ja",
187
- en: "en",
188
- "en-us": "en",
189
- "en-gb": "en",
190
- de: "de",
191
- "de-de": "de",
192
314
  };
193
315
  function resolvePreferredLanguage(languageTag) {
194
316
  if (!languageTag) {
@@ -245,6 +367,19 @@ export const currentLanguage = {
245
367
  }));
246
368
  },
247
369
  };
370
+ // Auto-load translations when this module is imported (for CDN bundle)
371
+ if (typeof window !== "undefined") {
372
+ // Wait a bit to ensure the DOM is ready
373
+ if (document.readyState === "loading") {
374
+ document.addEventListener("DOMContentLoaded", () => {
375
+ loadExternalTranslations();
376
+ });
377
+ }
378
+ else {
379
+ // DOM is already ready
380
+ loadExternalTranslations();
381
+ }
382
+ }
248
383
  // Listen for external translations being loaded
249
384
  if (typeof window !== "undefined") {
250
385
  window.addEventListener("translations-ready", () => {
@@ -252,7 +387,6 @@ if (typeof window !== "undefined") {
252
387
  translationData = getTranslationData();
253
388
  // Dispatch that translations are loaded
254
389
  window.dispatchEvent(new CustomEvent("translations-loaded"));
255
- window.notionDataLoaded = true;
256
390
  // Dispatch language-changed to update all components
257
391
  const currentLang = currentLanguage.value;
258
392
  window.dispatchEvent(new CustomEvent("language-changed", {
@@ -267,7 +401,6 @@ if (typeof window !== "undefined") {
267
401
  setTimeout(() => {
268
402
  // Since we directly imported the data, just dispatch the events
269
403
  window.dispatchEvent(new CustomEvent("translations-loaded"));
270
- window.notionDataLoaded = true;
271
404
  // Also dispatch language-changed with the current language
272
405
  const currentLang = currentLanguage.value;
273
406
  window.dispatchEvent(new CustomEvent("language-changed", {
@@ -287,7 +420,7 @@ export function translate(key) {
287
420
  if (lang !== defaultLanguage && translationData?.[defaultLanguage]?.[key]) {
288
421
  return translationData[defaultLanguage][key];
289
422
  }
290
- console.warn(`[translate] No translation found for key "${key}"`);
423
+ console.warn(`[DS one (Internationalization)] No translation found for key "${key}"`);
291
424
  return key;
292
425
  }
293
426
  export function hasTranslation(key, language = currentLanguage.value) {
@@ -309,37 +442,6 @@ export function hasTranslation(key, language = currentLanguage.value) {
309
442
  export function getText(key) {
310
443
  return translate(key);
311
444
  }
312
- // Get text from translation data (async for compatibility)
313
- export async function getNotionText(key, language = currentLanguage.value) {
314
- if (!key) {
315
- return null;
316
- }
317
- if (!translationData || !translationData[language]) {
318
- return null;
319
- }
320
- const text = translationData[language][key];
321
- if (text) {
322
- return text;
323
- }
324
- // Fallback to English
325
- if (language !== defaultLanguage && translationData[defaultLanguage]?.[key]) {
326
- return translationData[defaultLanguage][key];
327
- }
328
- return null;
329
- }
330
- // Store Notion text (for dynamic updates)
331
- export function setNotionText(key, value, language = currentLanguage.value) {
332
- if (!key)
333
- return;
334
- const bucket = getLanguageBucket(language);
335
- bucket.set(key, value);
336
- }
337
- function getLanguageBucket(language) {
338
- if (!notionStore.has(language)) {
339
- notionStore.set(language, new Map());
340
- }
341
- return notionStore.get(language);
342
- }
343
445
  // Get available languages - dynamically detect from loaded data
344
446
  export function getAvailableLanguages() {
345
447
  // Always get fresh translation data
@@ -0,0 +1,9 @@
1
+ import type { LanguageCode } from "./i18n";
2
+ import type { ThemeType } from "./theme";
3
+ export type Preferences = {
4
+ language?: LanguageCode;
5
+ theme?: ThemeType;
6
+ [key: string]: unknown;
7
+ };
8
+ export declare function savePreferences(preferences: Preferences): void;
9
+ //# sourceMappingURL=preferences.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../DS1/0-face/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAa9D"}
@@ -0,0 +1,14 @@
1
+ export function savePreferences(preferences) {
2
+ if (typeof window === "undefined") {
3
+ return;
4
+ }
5
+ try {
6
+ const raw = window.localStorage?.getItem("ds-one:preferences");
7
+ const existing = raw ? JSON.parse(raw) : {};
8
+ const next = { ...existing, ...preferences };
9
+ window.localStorage?.setItem("ds-one:preferences", JSON.stringify(next));
10
+ }
11
+ catch (error) {
12
+ console.warn("ds-one: unable to persist preferences", error);
13
+ }
14
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Currency label utilities for regional price display
3
+ *
4
+ * Note: This module provides currency symbols/labels based on language and region.
5
+ * Consider moving this functionality into i18n.ts as it's region/locale-related.
6
+ * Actual price values will be stored in a database or managed via Stripe.
7
+ */
8
+ import type { LanguageCode } from "./i18n";
9
+ type PriceLabelOptions = {
10
+ language: LanguageCode;
11
+ country?: string;
12
+ };
13
+ export declare function getPriceLabel(options: PriceLabelOptions): string;
14
+ export {};
15
+ //# sourceMappingURL=pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../DS1/0-face/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA2BhE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Currency label utilities for regional price display
3
+ *
4
+ * Note: This module provides currency symbols/labels based on language and region.
5
+ * Consider moving this functionality into i18n.ts as it's region/locale-related.
6
+ * Actual price values will be stored in a database or managed via Stripe.
7
+ */
8
+ // Simple price label mapping based on language/country
9
+ const PRICE_LABELS = {
10
+ da: "kr.",
11
+ nb: "kr.",
12
+ sv: "kr.",
13
+ de: "€",
14
+ en: "$",
15
+ pt: "€",
16
+ es: "€",
17
+ zh: "¥",
18
+ ja: "¥",
19
+ ko: "₩",
20
+ };
21
+ export function getPriceLabel(options) {
22
+ const { language, country } = options;
23
+ // If country is provided, try to map it to a currency
24
+ if (country) {
25
+ const countryUpper = country.toUpperCase();
26
+ // Add country-specific mappings if needed
27
+ if (countryUpper === "US" || countryUpper === "USA") {
28
+ return "$";
29
+ }
30
+ if (countryUpper === "GB" || countryUpper === "UK") {
31
+ return "£";
32
+ }
33
+ if (countryUpper === "JP" || countryUpper === "JPN") {
34
+ return "¥";
35
+ }
36
+ if (countryUpper === "CN" || countryUpper === "CHN") {
37
+ return "¥";
38
+ }
39
+ if (countryUpper === "KR" || countryUpper === "KOR") {
40
+ return "₩";
41
+ }
42
+ }
43
+ // Fall back to language-based mapping
44
+ const primaryLang = language.toLowerCase().split(/[-_]/)[0];
45
+ return PRICE_LABELS[primaryLang] || "$";
46
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../DS1/0-face/theme.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAiBzC,eAAO,MAAM,YAAY,qDAAuC,CAAC;AAEjE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAwB/C"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=ds-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-banner.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-banner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ // ds-banner.ts
2
+ // Core component
@@ -22,10 +22,6 @@ export declare class Button extends LitElement {
22
22
  type: BooleanConstructor;
23
23
  reflect: boolean;
24
24
  };
25
- notionKey: {
26
- type: StringConstructor;
27
- attribute: string;
28
- };
29
25
  key: {
30
26
  type: StringConstructor;
31
27
  };
@@ -46,7 +42,7 @@ export declare class Button extends LitElement {
46
42
  type: BooleanConstructor;
47
43
  state: boolean;
48
44
  };
49
- _notionText: {
45
+ _text: {
50
46
  type: StringConstructor;
51
47
  state: boolean;
52
48
  };
@@ -56,14 +52,13 @@ export declare class Button extends LitElement {
56
52
  bold: boolean;
57
53
  "no-background": boolean;
58
54
  blank: boolean;
59
- notionKey: string | null;
60
55
  key: string;
61
56
  fallback: string;
62
57
  language: string;
63
58
  defaultText: string;
64
59
  href: string;
65
60
  _loading: boolean;
66
- _notionText: string | null;
61
+ _text: string | null;
67
62
  constructor();
68
63
  static styles: import("lit").CSSResult;
69
64
  connectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ds-button.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-button.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGjE,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkBf;IAGM,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IAGb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;;IAmBnC,MAAM,CAAC,MAAM,0BAkDX;IAEF,iBAAiB;IAQjB,oBAAoB;IAKpB,qBAAqB,aAEnB;IAEF,OAAO,CAAC,YAAY,EAAE,cAAc;IAQpC;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB,MAAM;IAcN,OAAO,CAAC,YAAY;CAwBrB;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"ds-button.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-button.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGjE,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBf;IAGM,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IAGb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;;IAkB7B,MAAM,CAAC,MAAM,0BAkDX;IAEF,iBAAiB;IAQjB,oBAAoB;IAKpB,qBAAqB,aAEnB;IAEF,OAAO,CAAC,YAAY,EAAE,cAAc;IAQpC;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB,MAAM;IAcN,OAAO,CAAC,YAAY;CAwBrB;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
@@ -1,7 +1,7 @@
1
1
  // ds-button.ts
2
2
  // Core button component
3
3
  import { LitElement, html, css } from "lit";
4
- import { getText } from "../utils/language";
4
+ import { getText } from "../0-face/i18n";
5
5
  export class Button extends LitElement {
6
6
  constructor() {
7
7
  super();
@@ -13,14 +13,13 @@ export class Button extends LitElement {
13
13
  this.bold = false;
14
14
  this["no-background"] = false;
15
15
  this.blank = false;
16
- this.notionKey = null;
17
16
  this.key = "";
18
17
  this.fallback = "";
19
18
  this.language = "en-US";
20
19
  this.defaultText = "";
21
20
  this.href = "";
22
21
  this._loading = false;
23
- this._notionText = null;
22
+ this._text = null;
24
23
  }
25
24
  connectedCallback() {
26
25
  super.connectedCallback();
@@ -43,10 +42,10 @@ export class Button extends LitElement {
43
42
  */
44
43
  _updateText() {
45
44
  if (this.key) {
46
- this._notionText = getText(this.key);
45
+ this._text = getText(this.key);
47
46
  }
48
47
  else {
49
- this._notionText = this.defaultText || this.fallback || null;
48
+ this._text = this.defaultText || this.fallback || null;
50
49
  }
51
50
  this.requestUpdate();
52
51
  }
@@ -59,7 +58,7 @@ export class Button extends LitElement {
59
58
  ?no-background=${this["no-background"]}
60
59
  @click=${this._handleClick}
61
60
  >
62
- ${this._notionText ? this._notionText : html `<slot></slot>`}
61
+ ${this._text ? this._text : html `<slot></slot>`}
63
62
  </button>
64
63
  `;
65
64
  }
@@ -97,24 +96,23 @@ Button.properties = {
97
96
  attribute: "no-background",
98
97
  },
99
98
  blank: { type: Boolean, reflect: true },
100
- notionKey: { type: String, attribute: "notion-key" },
101
99
  key: { type: String },
102
100
  fallback: { type: String },
103
101
  language: { type: String },
104
102
  defaultText: { type: String, attribute: "default-text" },
105
103
  href: { type: String },
106
104
  _loading: { type: Boolean, state: true },
107
- _notionText: { type: String, state: true },
105
+ _text: { type: String, state: true },
108
106
  };
109
107
  Button.styles = css `
110
108
  button {
111
- max-height: calc(var(--08) * var(--scaling-factor));
109
+ max-height: calc(var(--08) * var(--sf));
112
110
  border: none;
113
111
  cursor: pointer;
114
- font-size: calc(var(--type-size-default) * var(--scaling-factor));
115
- padding: 0 calc(1px * var(--scaling-factor));
112
+ font-size: calc(var(--type-size-default) * var(--sf));
113
+ padding: 0 calc(1px * var(--sf));
116
114
  color: var(--button-text-color);
117
- font-family: var(--typeface);
115
+ font-family: var(--typeface-regular);
118
116
  }
119
117
 
120
118
  button.title {
@@ -126,13 +124,13 @@ Button.styles = css `
126
124
  background-color: var(--accent-color);
127
125
  color: var(--button-text-color);
128
126
  text-decoration-line: none;
129
- font-family: var(--typeface);
127
+ font-family: var(--typeface-regular);
130
128
  }
131
129
 
132
130
  button.secondary {
133
131
  background-color: var(--button-background-color-secondary);
134
132
  color: var(--button-text-color);
135
- font-family: var(--typeface);
133
+ font-family: var(--typeface-regular);
136
134
  }
137
135
 
138
136
  button[bold] {
@@ -1,6 +1,7 @@
1
1
  import { LitElement } from "lit";
2
2
  import "./ds-button";
3
3
  import "./ds-icon";
4
+ import "./ds-text";
4
5
  export declare class Cycle extends LitElement {
5
6
  static get properties(): {
6
7
  type: {
@@ -47,6 +48,7 @@ export declare class Cycle extends LitElement {
47
48
  disconnectedCallback(): void;
48
49
  handleButtonClick(e: Event): void;
49
50
  getValueDisplay(value: string): string | any;
51
+ getColorKey(colorVar: string): string;
50
52
  getColorName(colorVar: string): string;
51
53
  getNotesStyleIcon(style: string): import("lit-html").TemplateResult<1>;
52
54
  getLabel(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ds-cycle.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAY5C,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AAqCnB,qBAAa,KAAM,SAAQ,UAAU;IAEnC,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;MAUpB;IAED,MAAM,CAAC,MAAM,0BAWX;IAIM,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,aAAa,CAOnB;;IAyBF,iBAAiB;IA6BX,gBAAgB;IAgFtB,sBAAsB;IAatB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IASnE,iBAAiB;IAuDvB,qBAAqB;IAKrB,oBAAoB;IA0BpB,iBAAiB,CAAC,CAAC,EAAE,KAAK;IAuJ1B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG;IA+C5C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAyBtC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAe/B,QAAQ,IAAI,MAAM;IAgElB,MAAM;YAuCQ,mBAAmB;IAwBjC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,yBAAyB;CAGlC;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,KAAK,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"ds-cycle.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAY5C,OAAO,aAAa,CAAC;AACrB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AAqCnB,qBAAa,KAAM,SAAQ,UAAU;IAEnC,MAAM,KAAK,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;MAUpB;IAED,MAAM,CAAC,MAAM,0BAWX;IAIM,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,aAAa,CAOnB;;IAyBF,iBAAiB;IA6BX,gBAAgB;IA6EtB,sBAAsB;IAatB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IASnE,iBAAiB;IAoDvB,qBAAqB;IAKrB,oBAAoB;IA0BpB,iBAAiB,CAAC,CAAC,EAAE,KAAK;IAuJ1B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG;IA+C5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgBrC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAyBtC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAe/B,QAAQ,IAAI,MAAM;IAgElB,MAAM;YA0EQ,mBAAmB;IAwBjC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,wBAAwB;IAIhC,OAAO,CAAC,yBAAyB;CAGlC;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,KAAK,CAAC;KACnB;CACF"}