godown 2.7.0 → 2.7.2

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 (75) hide show
  1. package/README.md +11 -2
  2. package/lib/templates.d.ts +2 -0
  3. package/lib/templates.d.ts.map +1 -1
  4. package/lib/templates.js +4 -0
  5. package/lib/templates.js.map +1 -1
  6. package/naming.d.ts +1 -1
  7. package/naming.js +1 -1
  8. package/naming.js.map +1 -1
  9. package/package.json +2 -1
  10. package/react/index.d.ts +1 -0
  11. package/react/index.d.ts.map +1 -1
  12. package/react/index.js +3 -0
  13. package/react/index.js.map +1 -1
  14. package/supers/anchor.d.ts +6 -1
  15. package/supers/anchor.d.ts.map +1 -1
  16. package/supers/anchor.js +17 -2
  17. package/supers/anchor.js.map +1 -1
  18. package/text.d.ts +2 -0
  19. package/text.d.ts.map +1 -0
  20. package/text.js +2 -0
  21. package/text.js.map +1 -0
  22. package/web-components/button/button.d.ts +0 -4
  23. package/web-components/button/button.d.ts.map +1 -1
  24. package/web-components/button/button.js +14 -37
  25. package/web-components/button/button.js.map +1 -1
  26. package/web-components/card/card.d.ts +1 -1
  27. package/web-components/card/card.js.map +1 -1
  28. package/web-components/carousel/carousel.d.ts +1 -0
  29. package/web-components/carousel/carousel.d.ts.map +1 -1
  30. package/web-components/carousel/carousel.js.map +1 -1
  31. package/web-components/dialog/dialog.d.ts +1 -0
  32. package/web-components/dialog/dialog.d.ts.map +1 -1
  33. package/web-components/dialog/dialog.js.map +1 -1
  34. package/web-components/index.d.ts +1 -0
  35. package/web-components/index.d.ts.map +1 -1
  36. package/web-components/index.js +1 -0
  37. package/web-components/index.js.map +1 -1
  38. package/web-components/layout/divider.d.ts +1 -0
  39. package/web-components/layout/divider.d.ts.map +1 -1
  40. package/web-components/layout/divider.js.map +1 -1
  41. package/web-components/progress/progress.d.ts +1 -0
  42. package/web-components/progress/progress.d.ts.map +1 -1
  43. package/web-components/progress/progress.js.map +1 -1
  44. package/web-components/router/router-a.d.ts +2 -11
  45. package/web-components/router/router-a.d.ts.map +1 -1
  46. package/web-components/router/router-a.js +15 -26
  47. package/web-components/router/router-a.js.map +1 -1
  48. package/web-components/router/router.d.ts +1 -1
  49. package/web-components/router/router.d.ts.map +1 -1
  50. package/web-components/router/router.js.map +1 -1
  51. package/web-components/text/clip.d.ts +1 -0
  52. package/web-components/text/clip.d.ts.map +1 -1
  53. package/web-components/text/clip.js.map +1 -1
  54. package/web-components/text/overbreath.d.ts +2 -1
  55. package/web-components/text/overbreath.d.ts.map +1 -1
  56. package/web-components/text/overbreath.js +1 -1
  57. package/web-components/text/overbreath.js.map +1 -1
  58. package/web-components/text/text.d.ts +30 -0
  59. package/web-components/text/text.d.ts.map +1 -0
  60. package/web-components/text/text.js +104 -0
  61. package/web-components/text/text.js.map +1 -0
  62. package/web-components/text/time.d.ts +17 -11
  63. package/web-components/text/time.d.ts.map +1 -1
  64. package/web-components/text/time.js +35 -19
  65. package/web-components/text/time.js.map +1 -1
  66. package/web-components/text/typewriter.d.ts +2 -1
  67. package/web-components/text/typewriter.d.ts.map +1 -1
  68. package/web-components/text/typewriter.js +1 -1
  69. package/web-components/text/typewriter.js.map +1 -1
  70. package/web-components/tooltip/tooltip.d.ts +2 -1
  71. package/web-components/tooltip/tooltip.d.ts.map +1 -1
  72. package/web-components/tooltip/tooltip.js.map +1 -1
  73. package/web-components/wrapper/wrapper.d.ts +1 -0
  74. package/web-components/wrapper/wrapper.d.ts.map +1 -1
  75. package/web-components/wrapper/wrapper.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"clip.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAY,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAuB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1E;;GAEG;AACH,qBACa,IAAK,SAAQ,aAAa;IACrC;;OAEG;IACS,IAAI,SAAM;IAEtB,MAAM,CAAC,MAAM,iBAaO;IAEpB,SAAS,CAAC,MAAM,IAAI,YAAY,GAAG,MAAM;CAG1C;AAED,eAAe,IAAI,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,IAAI,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"clip.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAY,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAuB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1E;;GAEG;AACH,qBACa,IAAK,SAAQ,aAAa;IACrC;;OAEG;IACS,IAAI,SAAM;IAEtB,MAAM,CAAC,MAAM,iBAaO;IAEpB,SAAS,CAAC,MAAM,IAAI,YAAY,GAAG,MAAM;CAG1C;AAED,eAAe,IAAI,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,IAAI,CAAC;QAClB,QAAQ,EAAE,IAAI,CAAC;KAChB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"clip.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/clip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAE5C;;GAEG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,aAAa;IAAhC;;QACL;;WAEG;QACS,SAAI,GAAG,EAAE,CAAC;IAoBxB,CAAC;IAHW,MAAM;QACd,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;IACjC,CAAC;;AAjBM,WAAM,GAAG;IACd,aAAa,CAAC,MAAM;IACpB,GAAG,CAAA;;UAEG,WAAW,0BAA0B,MAAM;0BAC3B,WAAW;;;;;;;KAOhC;CACgB,AAbN,CAaO;AAfR;IAAX,QAAQ,EAAE;kCAAW;AAJX,IAAI;IADhB,MAAM,CAAC,UAAU,CAAC;GACN,IAAI,CAwBhB;;AAED,eAAe,IAAI,CAAC","sourcesContent":["import { css, type CSSResultGroup, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { createScope, cssvar, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"clip\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * {@linkcode Clip} renders a gradient text.\n */\n@define(defineName)\nexport class Clip extends GodownElement {\n /**\n * The text to be clipped.\n */\n @property() text = \"\";\n\n static styles = [\n GodownElement.styles,\n css`\n :host {\n ${cssvarScope}--clip-background: var(${cssvar}--clip-background);\n background: var(${cssvarScope}--clip-background);\n color: transparent;\n -webkit-text-fill-color: transparent;\n background-clip: text !important;\n -webkit-background-clip: text !important;\n display: inline-flex;\n }\n `,\n ] as CSSResultGroup;\n\n protected render(): HTMLTemplate | string {\n return this.text || htmlSlot();\n }\n}\n\nexport default Clip;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"clip-text\": Clip;\n }\n}\n"]}
1
+ {"version":3,"file":"clip.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/clip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAE5C;;GAEG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,aAAa;IAAhC;;QACL;;WAEG;QACS,SAAI,GAAG,EAAE,CAAC;IAoBxB,CAAC;IAHW,MAAM;QACd,OAAO,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;IACjC,CAAC;;AAjBM,WAAM,GAAG;IACd,aAAa,CAAC,MAAM;IACpB,GAAG,CAAA;;UAEG,WAAW,0BAA0B,MAAM;0BAC3B,WAAW;;;;;;;KAOhC;CACgB,AAbN,CAaO;AAfR;IAAX,QAAQ,EAAE;kCAAW;AAJX,IAAI;IADhB,MAAM,CAAC,UAAU,CAAC;GACN,IAAI,CAwBhB;;AAED,eAAe,IAAI,CAAC","sourcesContent":["import { css, type CSSResultGroup, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { createScope, cssvar, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"clip\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * {@linkcode Clip} renders a gradient text.\n */\n@define(defineName)\nexport class Clip extends GodownElement {\n /**\n * The text to be clipped.\n */\n @property() text = \"\";\n\n static styles = [\n GodownElement.styles,\n css`\n :host {\n ${cssvarScope}--clip-background: var(${cssvar}--clip-background);\n background: var(${cssvarScope}--clip-background);\n color: transparent;\n -webkit-text-fill-color: transparent;\n background-clip: text !important;\n -webkit-background-clip: text !important;\n display: inline-flex;\n }\n `,\n ] as CSSResultGroup;\n\n protected render(): HTMLTemplate | string {\n return this.text || htmlSlot();\n }\n}\n\nexport default Clip;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"clip-text\": Clip;\n \"g-clip\": Clip;\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { type CSSResultGroup } from "../../.deps.js";
2
2
  import { type HTMLTemplate } from "../../lib/templates.js";
3
3
  import { GodownElement } from "../../supers/root.js";
4
4
  /**
5
- * OverbreathText renders three animated pieces of text.
5
+ * {@linkcode Overbreath} renders three animated pieces of text.
6
6
  *
7
7
  * Inspired by Vercel homepage (2022? - 2023).
8
8
  */
@@ -21,6 +21,7 @@ export default Overbreath;
21
21
  declare global {
22
22
  interface HTMLElementTagNameMap {
23
23
  "overbreath-text": Overbreath;
24
+ "g-overbreath": Overbreath;
24
25
  }
25
26
  }
26
27
  //# sourceMappingURL=overbreath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overbreath.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/overbreath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAuB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1E;;;;GAIG;AACH,qBACa,UAAW,SAAQ,aAAa;IAC3C;;OAEG;IACS,EAAE,SAAM;IAER,EAAE,SAAM;IAER,EAAE,SAAM;IAEpB,MAAM,CAAC,MAAM,iBAiLO;IAEpB,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE;IAIlC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;CAMjD;AAED,eAAe,UAAU,CAAC;AAE1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"overbreath.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/overbreath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAuB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1E;;;;GAIG;AACH,qBACa,UAAW,SAAQ,aAAa;IAC3C;;OAEG;IACS,EAAE,SAAM;IAER,EAAE,SAAM;IAER,EAAE,SAAM;IAEpB,MAAM,CAAC,MAAM,iBAiLO;IAEpB,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE;IAIlC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;CAMjD;AAED,eAAe,UAAU,CAAC;AAE1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAC;QAC9B,cAAc,EAAE,UAAU,CAAC;KAC5B;CACF"}
@@ -5,7 +5,7 @@ import { createScope, cssvar, GodownElement } from "../../supers/root.js";
5
5
  const defineName = "overbreath";
6
6
  const cssvarScope = createScope(defineName);
7
7
  /**
8
- * OverbreathText renders three animated pieces of text.
8
+ * {@linkcode Overbreath} renders three animated pieces of text.
9
9
  *
10
10
  * Inspired by Vercel homepage (2022? - 2023).
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"overbreath.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/overbreath.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAuB,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAE5C;;;;GAIG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAa;IAAtC;;QACL;;WAEG;QACS,OAAE,GAAG,EAAE,CAAC;QACpB,SAAS;QACG,OAAE,GAAG,EAAE,CAAC;QACpB,SAAS;QACG,OAAE,GAAG,EAAE,CAAC;IA+LtB,CAAC;IAVW,MAAM;QACd,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAES,UAAU,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAA;yBACU,IAAI;yBACJ,IAAI;YACjB,CAAC;IACX,CAAC;;AA5LM,iBAAM,GAAG;IACd,aAAa,CAAC,MAAM;IACpB,GAAG,CAAA;;UAEG,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;UACtG,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;UACtG,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;;KAE3G;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2CyB,WAAW;;;;;gCAKX,WAAW;;;;;gCAKX,WAAW;;;;;;;;;;;;;;KActC;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+EF;IACD,GAAG,CAAA;;UAEG,WAAW,0BAA0B,MAAM;0BAC3B,WAAW;;;;;;;;;KAShC;CACgB,AAjLN,CAiLO;AAvLR;IAAX,QAAQ,EAAE;sCAAS;AAER;IAAX,QAAQ,EAAE;sCAAS;AAER;IAAX,QAAQ,EAAE;sCAAS;AART,UAAU;IADtB,MAAM,CAAC,UAAU,CAAC;GACN,UAAU,CAuMtB;;AAED,eAAe,UAAU,CAAC","sourcesContent":["import { css, type CSSResultGroup, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { type HTMLTemplate } from \"../../lib/templates.js\";\nimport { createScope, cssvar, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"overbreath\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * OverbreathText renders three animated pieces of text.\n *\n * Inspired by Vercel homepage (2022? - 2023).\n */\n@define(defineName)\nexport class Overbreath extends GodownElement {\n /**\n * One of the texts.\n */\n @property() t1 = \"\";\n // As t1.\n @property() t2 = \"\";\n // As t2.\n @property() t3 = \"\";\n\n static styles = [\n GodownElement.styles,\n css`\n :host {\n ${cssvarScope}--1-1: #ae0ca5;\n ${cssvarScope}--1-2: #ffd802;\n ${cssvarScope}--2-1: #1fe173;\n ${cssvarScope}--2-2: #582bca;\n ${cssvarScope}--3-1: #00b4f0;\n ${cssvarScope}--3-2: #e614e6;\n ${cssvarScope}--deg: 60deg;\n ${cssvarScope}--1: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--1-1), var(${cssvarScope}--1-2));\n ${cssvarScope}--2: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--2-1), var(${cssvarScope}--2-2));\n ${cssvarScope}--3: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--3-1), var(${cssvarScope}--3-2));\n }\n `,\n css`\n :host {\n display: flex;\n margin: auto;\n width: fit-content;\n font-size: clamp(3.5rem, 10vw, 5.5rem);\n align-items: center;\n }\n\n @media (max-width: 1280px) {\n :host {\n flex-direction: column;\n }\n }\n\n *::selection {\n background: none;\n }\n\n .fg,\n .bg {\n padding: 0 0.05em;\n box-sizing: border-box;\n }\n\n .bg {\n position: absolute;\n top: 0;\n }\n\n span {\n display: block;\n }\n\n .rel {\n position: relative;\n font-weight: 800;\n font-size: inherit;\n letter-spacing: -0.05em;\n }\n\n .rel:nth-child(1) .fg {\n animation: lg1 8s infinite;\n background-image: var(${cssvarScope}--1);\n }\n\n .rel:nth-child(2) .fg {\n animation: 8s infinite lg2;\n background-image: var(${cssvarScope}--2);\n }\n\n .rel:nth-child(3) .fg {\n animation: 8s infinite lg3;\n background-image: var(${cssvarScope}--3);\n }\n\n .rel:nth-child(1) .bg {\n animation: text1 8s infinite;\n }\n\n .rel:nth-child(2) .bg {\n animation: text2 8s infinite;\n }\n\n .rel:nth-child(3) .bg {\n animation: text3 8s infinite;\n }\n `,\n css`\n @keyframes lg1 {\n 0%,\n 16.667%,\n to {\n opacity: 1;\n }\n 33.333%,\n 83.333% {\n opacity: 0;\n }\n }\n\n @keyframes lg2 {\n 0%,\n to {\n opacity: 0;\n }\n 33.333%,\n 50% {\n opacity: 1;\n }\n 16.667%,\n 66.667% {\n opacity: 0;\n }\n }\n\n @keyframes lg3 {\n 0%,\n 50%,\n to {\n opacity: 0;\n }\n 66.667%,\n 83.333% {\n opacity: 1;\n }\n }\n\n @keyframes text1 {\n 0%,\n 16.667%,\n to {\n opacity: 0;\n }\n 25%,\n 91.667% {\n opacity: 1;\n }\n }\n\n @keyframes text2 {\n 0%,\n to {\n opacity: 1;\n }\n 33.333%,\n 50% {\n opacity: 0;\n }\n 25%,\n 58.333% {\n opacity: 1;\n }\n }\n\n @keyframes text3 {\n 0%,\n 58.333%,\n 91.667%,\n to {\n opacity: 1;\n }\n 66.667%,\n 83.333% {\n opacity: 0;\n }\n }\n `,\n css`\n span.bg {\n ${cssvarScope}--clip-background: var(${cssvar}--clip-background);\n background: var(${cssvarScope}--clip-background);\n }\n span {\n color: transparent;\n -webkit-text-fill-color: transparent;\n background-clip: text !important;\n -webkit-background-clip: text !important;\n display: inline-flex;\n }\n `,\n ] as CSSResultGroup;\n\n protected render(): HTMLTemplate[] {\n return [this.t1, this.t2, this.t3].map(this.renderText);\n }\n\n protected renderText(text: string): HTMLTemplate {\n return html`<span class=\"rel\">\n <span class=\"bg\">${text}</span>\n <span class=\"fg\">${text}</span>\n </span>`;\n }\n}\n\nexport default Overbreath;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"overbreath-text\": Overbreath;\n }\n}\n"]}
1
+ {"version":3,"file":"overbreath.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/overbreath.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAuB,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAE5C;;;;GAIG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAa;IAAtC;;QACL;;WAEG;QACS,OAAE,GAAG,EAAE,CAAC;QACpB,SAAS;QACG,OAAE,GAAG,EAAE,CAAC;QACpB,SAAS;QACG,OAAE,GAAG,EAAE,CAAC;IA+LtB,CAAC;IAVW,MAAM;QACd,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;IAES,UAAU,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAA;yBACU,IAAI;yBACJ,IAAI;YACjB,CAAC;IACX,CAAC;;AA5LM,iBAAM,GAAG;IACd,aAAa,CAAC,MAAM;IACpB,GAAG,CAAA;;UAEG,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW;UACX,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;UACtG,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;UACtG,WAAW,4BAA4B,WAAW,eAAe,WAAW,eAAe,WAAW;;KAE3G;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2CyB,WAAW;;;;;gCAKX,WAAW;;;;;gCAKX,WAAW;;;;;;;;;;;;;;KActC;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+EF;IACD,GAAG,CAAA;;UAEG,WAAW,0BAA0B,MAAM;0BAC3B,WAAW;;;;;;;;;KAShC;CACgB,AAjLN,CAiLO;AAvLR;IAAX,QAAQ,EAAE;sCAAS;AAER;IAAX,QAAQ,EAAE;sCAAS;AAER;IAAX,QAAQ,EAAE;sCAAS;AART,UAAU;IADtB,MAAM,CAAC,UAAU,CAAC;GACN,UAAU,CAuMtB;;AAED,eAAe,UAAU,CAAC","sourcesContent":["import { css, type CSSResultGroup, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { type HTMLTemplate } from \"../../lib/templates.js\";\nimport { createScope, cssvar, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"overbreath\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * {@linkcode Overbreath} renders three animated pieces of text.\n *\n * Inspired by Vercel homepage (2022? - 2023).\n */\n@define(defineName)\nexport class Overbreath extends GodownElement {\n /**\n * One of the texts.\n */\n @property() t1 = \"\";\n // As t1.\n @property() t2 = \"\";\n // As t2.\n @property() t3 = \"\";\n\n static styles = [\n GodownElement.styles,\n css`\n :host {\n ${cssvarScope}--1-1: #ae0ca5;\n ${cssvarScope}--1-2: #ffd802;\n ${cssvarScope}--2-1: #1fe173;\n ${cssvarScope}--2-2: #582bca;\n ${cssvarScope}--3-1: #00b4f0;\n ${cssvarScope}--3-2: #e614e6;\n ${cssvarScope}--deg: 60deg;\n ${cssvarScope}--1: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--1-1), var(${cssvarScope}--1-2));\n ${cssvarScope}--2: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--2-1), var(${cssvarScope}--2-2));\n ${cssvarScope}--3: linear-gradient(var(${cssvarScope}--deg), var(${cssvarScope}--3-1), var(${cssvarScope}--3-2));\n }\n `,\n css`\n :host {\n display: flex;\n margin: auto;\n width: fit-content;\n font-size: clamp(3.5rem, 10vw, 5.5rem);\n align-items: center;\n }\n\n @media (max-width: 1280px) {\n :host {\n flex-direction: column;\n }\n }\n\n *::selection {\n background: none;\n }\n\n .fg,\n .bg {\n padding: 0 0.05em;\n box-sizing: border-box;\n }\n\n .bg {\n position: absolute;\n top: 0;\n }\n\n span {\n display: block;\n }\n\n .rel {\n position: relative;\n font-weight: 800;\n font-size: inherit;\n letter-spacing: -0.05em;\n }\n\n .rel:nth-child(1) .fg {\n animation: lg1 8s infinite;\n background-image: var(${cssvarScope}--1);\n }\n\n .rel:nth-child(2) .fg {\n animation: 8s infinite lg2;\n background-image: var(${cssvarScope}--2);\n }\n\n .rel:nth-child(3) .fg {\n animation: 8s infinite lg3;\n background-image: var(${cssvarScope}--3);\n }\n\n .rel:nth-child(1) .bg {\n animation: text1 8s infinite;\n }\n\n .rel:nth-child(2) .bg {\n animation: text2 8s infinite;\n }\n\n .rel:nth-child(3) .bg {\n animation: text3 8s infinite;\n }\n `,\n css`\n @keyframes lg1 {\n 0%,\n 16.667%,\n to {\n opacity: 1;\n }\n 33.333%,\n 83.333% {\n opacity: 0;\n }\n }\n\n @keyframes lg2 {\n 0%,\n to {\n opacity: 0;\n }\n 33.333%,\n 50% {\n opacity: 1;\n }\n 16.667%,\n 66.667% {\n opacity: 0;\n }\n }\n\n @keyframes lg3 {\n 0%,\n 50%,\n to {\n opacity: 0;\n }\n 66.667%,\n 83.333% {\n opacity: 1;\n }\n }\n\n @keyframes text1 {\n 0%,\n 16.667%,\n to {\n opacity: 0;\n }\n 25%,\n 91.667% {\n opacity: 1;\n }\n }\n\n @keyframes text2 {\n 0%,\n to {\n opacity: 1;\n }\n 33.333%,\n 50% {\n opacity: 0;\n }\n 25%,\n 58.333% {\n opacity: 1;\n }\n }\n\n @keyframes text3 {\n 0%,\n 58.333%,\n 91.667%,\n to {\n opacity: 1;\n }\n 66.667%,\n 83.333% {\n opacity: 0;\n }\n }\n `,\n css`\n span.bg {\n ${cssvarScope}--clip-background: var(${cssvar}--clip-background);\n background: var(${cssvarScope}--clip-background);\n }\n span {\n color: transparent;\n -webkit-text-fill-color: transparent;\n background-clip: text !important;\n -webkit-background-clip: text !important;\n display: inline-flex;\n }\n `,\n ] as CSSResultGroup;\n\n protected render(): HTMLTemplate[] {\n return [this.t1, this.t2, this.t3].map(this.renderText);\n }\n\n protected renderText(text: string): HTMLTemplate {\n return html`<span class=\"rel\">\n <span class=\"bg\">${text}</span>\n <span class=\"fg\">${text}</span>\n </span>`;\n }\n}\n\nexport default Overbreath;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"overbreath-text\": Overbreath;\n \"g-overbreath\": Overbreath;\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { type CSSResultGroup } from "../../.deps.js";
2
+ import { type HTMLTemplate } from "../../lib/templates.js";
3
+ import { GodownElement } from "../../supers/root.js";
4
+ /**
5
+ * {@linkcode Text } renders nowrap text.
6
+ */
7
+ export declare class Text extends GodownElement {
8
+ /**
9
+ * Underline behavior.
10
+ */
11
+ underline: "none" | "hover" | "active" | "always" | "";
12
+ /**
13
+ * Text format.
14
+ */
15
+ case: "upper" | "lower" | "dash" | "camel" | "raw" | "";
16
+ /**
17
+ * Text.
18
+ */
19
+ text: string;
20
+ static styles: CSSResultGroup;
21
+ protected render(): HTMLTemplate;
22
+ private t;
23
+ }
24
+ export default Text;
25
+ declare global {
26
+ interface HTMLElementTagNameMap {
27
+ "g-text": Text;
28
+ }
29
+ }
30
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAG1E,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAe,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMlE;;GAEG;AACH,qBACa,IAAK,SAAQ,aAAa;IACrC;;OAEG;IACS,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAU;IAC5E;;OAEG;IACS,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,CAAM;IACzE;;OAEG;IACS,IAAI,SAAM;IAEtB,MAAM,CAAC,MAAM,EAAE,cAAc,CAuC3B;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;IAIhC,OAAO,CAAC,CAAC;CAiBV;AAED,eAAe,IAAI,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,IAAI,CAAC;KAChB;CACF"}
@@ -0,0 +1,104 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, property } from "../../.deps.js";
3
+ import { define } from "../../decorators/define.js";
4
+ import { ifValue } from "../../lib/directives.js";
5
+ import { htmlSlot } from "../../lib/templates.js";
6
+ import { camelToDash, dashToCamel } from "../../lib/utils.js";
7
+ import { createScope, GodownElement } from "../../supers/root.js";
8
+ const defineName = "text";
9
+ const cssvarScope = createScope(defineName);
10
+ /**
11
+ * {@linkcode Text } renders nowrap text.
12
+ */
13
+ let Text = class Text extends GodownElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ /**
17
+ * Underline behavior.
18
+ */
19
+ this.underline = "none";
20
+ /**
21
+ * Text format.
22
+ */
23
+ this.case = "";
24
+ /**
25
+ * Text.
26
+ */
27
+ this.text = "";
28
+ }
29
+ render() {
30
+ return html `<span class="${this.underline || "always"}">${ifValue(this.text, this.t(), htmlSlot())}</span>`;
31
+ }
32
+ t() {
33
+ const text = this.text;
34
+ switch (this.case) {
35
+ case "upper":
36
+ return text.toUpperCase();
37
+ case "raw":
38
+ return text;
39
+ case "lower":
40
+ return text.toLowerCase();
41
+ case "camel":
42
+ return dashToCamel(text);
43
+ case "dash":
44
+ return camelToDash(text);
45
+ default:
46
+ return text[0].toUpperCase() + text.slice(1);
47
+ }
48
+ }
49
+ };
50
+ Text.styles = [
51
+ GodownElement.styles,
52
+ css `
53
+ :host {
54
+ ${cssvarScope}--color: currentColor;
55
+ ${cssvarScope}--color-hover: currentColor;
56
+ ${cssvarScope}--color-active: currentColor;
57
+ display: inline-block;
58
+ text-overflow: ellipsis;
59
+ overflow-wrap: break-word;
60
+ }
61
+
62
+ span {
63
+ white-space: nowrap;
64
+ display: block;
65
+ text-overflow: inherit;
66
+ overflow-wrap: inherit;
67
+ overflow: hidden;
68
+ color: var(${cssvarScope}--color, inherit);
69
+ }
70
+
71
+ span:hover {
72
+ color: var(${cssvarScope}--color-hover, inherit);
73
+ }
74
+
75
+ span:active {
76
+ color: var(${cssvarScope}--color-active, inherit);
77
+ }
78
+
79
+ .hover:hover,
80
+ .active:active,
81
+ .always {
82
+ text-decoration: underline;
83
+ }
84
+
85
+ .none {
86
+ text-decoration: none;
87
+ }
88
+ `,
89
+ ];
90
+ __decorate([
91
+ property()
92
+ ], Text.prototype, "underline", void 0);
93
+ __decorate([
94
+ property()
95
+ ], Text.prototype, "case", void 0);
96
+ __decorate([
97
+ property()
98
+ ], Text.prototype, "text", void 0);
99
+ Text = __decorate([
100
+ define(defineName)
101
+ ], Text);
102
+ export { Text };
103
+ export default Text;
104
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/text.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAuB,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAE5C;;GAEG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,aAAa;IAAhC;;QACL;;WAEG;QACS,cAAS,GAAgD,MAAM,CAAC;QAC5E;;WAEG;QACS,SAAI,GAAsD,EAAE,CAAC;QACzE;;WAEG;QACS,SAAI,GAAG,EAAE,CAAC;IAgExB,CAAC;IArBW,MAAM;QACd,OAAO,IAAI,CAAA,gBAAgB,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC;IAC9G,CAAC;IAEO,CAAC;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,OAAO;gBACV,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,MAAM;gBACT,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B;gBACE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AA7DM,WAAM,GAAmB;IAC9B,aAAa,CAAC,MAAM;IACpB,GAAG,CAAA;;UAEG,WAAW;UACX,WAAW;UACX,WAAW;;;;;;;;;;;;qBAYA,WAAW;;;;qBAIX,WAAW;;;;qBAIX,WAAW;;;;;;;;;;;;KAY3B;CACF,AAvCY,CAuCX;AAjDU;IAAX,QAAQ,EAAE;uCAAiE;AAIhE;IAAX,QAAQ,EAAE;kCAA8D;AAI7D;IAAX,QAAQ,EAAE;kCAAW;AAZX,IAAI;IADhB,MAAM,CAAC,UAAU,CAAC;GACN,IAAI,CA4EhB;;AAED,eAAe,IAAI,CAAC","sourcesContent":["import { css, type CSSResultGroup, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { ifValue } from \"../../lib/directives.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { camelToDash, dashToCamel } from \"../../lib/utils.js\";\nimport { createScope, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"text\";\n\nconst cssvarScope = createScope(defineName);\n\n/**\n * {@linkcode Text } renders nowrap text.\n */\n@define(defineName)\nexport class Text extends GodownElement {\n /**\n * Underline behavior.\n */\n @property() underline: \"none\" | \"hover\" | \"active\" | \"always\" | \"\" = \"none\";\n /**\n * Text format.\n */\n @property() case: \"upper\" | \"lower\" | \"dash\" | \"camel\" | \"raw\" | \"\" = \"\";\n /**\n * Text.\n */\n @property() text = \"\";\n\n static styles: CSSResultGroup = [\n GodownElement.styles,\n css`\n :host {\n ${cssvarScope}--color: currentColor;\n ${cssvarScope}--color-hover: currentColor;\n ${cssvarScope}--color-active: currentColor;\n display: inline-block;\n text-overflow: ellipsis;\n overflow-wrap: break-word;\n }\n\n span {\n white-space: nowrap;\n display: block;\n text-overflow: inherit;\n overflow-wrap: inherit;\n overflow: hidden;\n color: var(${cssvarScope}--color, inherit);\n }\n\n span:hover {\n color: var(${cssvarScope}--color-hover, inherit);\n }\n\n span:active {\n color: var(${cssvarScope}--color-active, inherit);\n }\n\n .hover:hover,\n .active:active,\n .always {\n text-decoration: underline;\n }\n\n .none {\n text-decoration: none;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n return html`<span class=\"${this.underline || \"always\"}\">${ifValue(this.text, this.t(), htmlSlot())}</span>`;\n }\n\n private t() {\n const text = this.text;\n switch (this.case) {\n case \"upper\":\n return text.toUpperCase();\n case \"raw\":\n return text;\n case \"lower\":\n return text.toLowerCase();\n case \"camel\":\n return dashToCamel(text);\n case \"dash\":\n return camelToDash(text);\n default:\n return text[0].toUpperCase() + text.slice(1);\n }\n }\n}\n\nexport default Text;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"g-text\": Text;\n }\n}\n"]}
@@ -1,9 +1,13 @@
1
1
  import { type CSSResultGroup } from "../../.deps.js";
2
2
  import { GodownElement } from "../../supers/root.js";
3
3
  /**
4
- * TimeBar renders a formatting time.
4
+ * {@linkcode Time} renders a formatting time.
5
5
  */
6
6
  export declare class Time extends GodownElement {
7
+ /**
8
+ * Cancels the next character formatting.
9
+ */
10
+ escape: string;
7
11
  /**
8
12
  * Format strings.
9
13
  * {@linkcode Time.fmt}
@@ -31,24 +35,26 @@ export declare class Time extends GodownElement {
31
35
  protected firstUpdated(): void;
32
36
  disconnectedCallback(): void;
33
37
  /**
38
+ * Y for year\
39
+ * M for month\
40
+ * D for day\
41
+ * h for hour\
42
+ * m for minute\
43
+ * s for second\
44
+ * S for milli Second\
45
+ * Z for time zone.
46
+ *
34
47
  * @param fm Format string.
35
48
  * @param tm Time.
36
- * @returns F.ormat result\
37
- *
38
- * Y for years\
39
- * M for months\
40
- * D for days\
41
- * h for hours\
42
- * m for minutes\
43
- * s for seconds\
44
- * Z for time zones.
49
+ * @returns Format result
45
50
  */
46
- static fmt(fm: string, tm: Date): string;
51
+ static fmt(fm: string, tm: Date, em: string): string;
47
52
  }
48
53
  export default Time;
49
54
  declare global {
50
55
  interface HTMLElementTagNameMap {
51
56
  "time-bar": Time;
57
+ "g-time": Time;
52
58
  }
53
59
  }
54
60
  //# sourceMappingURL=time.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAY,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;GAEG;AACH,qBACa,IAAK,SAAQ,aAAa;IACrC;;;OAGG;IACS,MAAM,SAA8B;IAChD;;OAEG;IACS,KAAK,SAAM;IACvB;;OAEG;IACyB,IAAI,OAAc;IAC9C;;OAEG;IACyB,OAAO,SAAK;IACxC;;OAEG;IACyB,GAAG,SAAK;IAEpC,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,MAAM,EAAE,cAAc,CAM3B;IAEF,SAAS,CAAC,MAAM,IAAI,MAAM;IAI1B,SAAS,CAAC,YAAY;IAQtB,oBAAoB;IAIpB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,MAAM;CAmCzC;AAED,eAAe,IAAI,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,IAAI,CAAC;KAClB;CACF"}
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,cAAc,EAAY,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;GAEG;AACH,qBACa,IAAK,SAAQ,aAAa;IACrC;;OAEG;IACS,MAAM,SAAO;IACzB;;;OAGG;IACS,MAAM,SAA8B;IAChD;;OAEG;IACS,KAAK,SAAM;IACvB;;OAEG;IACyB,IAAI,OAAc;IAC9C;;OAEG;IACyB,OAAO,SAAK;IACxC;;OAEG;IACyB,GAAG,SAAK;IAEpC,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,MAAM,EAAE,cAAc,CAM3B;IAEF,SAAS,CAAC,MAAM,IAAI,MAAM;IAI1B,SAAS,CAAC,YAAY;IAQtB,oBAAoB;IAIpB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;CA6CrD;AAED,eAAe,IAAI,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,IAAI,CAAC;QACjB,QAAQ,EAAE,IAAI,CAAC;KAChB;CACF"}
@@ -5,11 +5,15 @@ import { define } from "../../decorators/define.js";
5
5
  import { GodownElement } from "../../supers/root.js";
6
6
  const defineName = "time";
7
7
  /**
8
- * TimeBar renders a formatting time.
8
+ * {@linkcode Time} renders a formatting time.
9
9
  */
10
10
  let Time = Time_1 = class Time extends GodownElement {
11
11
  constructor() {
12
12
  super(...arguments);
13
+ /**
14
+ * Cancels the next character formatting.
15
+ */
16
+ this.escape = "%";
13
17
  /**
14
18
  * Format strings.
15
19
  * {@linkcode Time.fmt}
@@ -33,7 +37,7 @@ let Time = Time_1 = class Time extends GodownElement {
33
37
  this.gap = 0;
34
38
  }
35
39
  render() {
36
- return this.value || Time_1.fmt(this.format, this.time);
40
+ return this.value || Time_1.fmt(this.format, this.time, this.escape);
37
41
  }
38
42
  firstUpdated() {
39
43
  if (this.timeout) {
@@ -46,28 +50,35 @@ let Time = Time_1 = class Time extends GodownElement {
46
50
  clearInterval(this.intervalID);
47
51
  }
48
52
  /**
53
+ * Y for year\
54
+ * M for month\
55
+ * D for day\
56
+ * h for hour\
57
+ * m for minute\
58
+ * s for second\
59
+ * S for milli Second\
60
+ * Z for time zone.
61
+ *
49
62
  * @param fm Format string.
50
63
  * @param tm Time.
51
- * @returns F.ormat result\
52
- *
53
- * Y for years\
54
- * M for months\
55
- * D for days\
56
- * h for hours\
57
- * m for minutes\
58
- * s for seconds\
59
- * Z for time zones.
64
+ * @returns Format result
60
65
  */
61
- static fmt(fm, tm) {
62
- if (fm === "") {
66
+ static fmt(fm, tm, em) {
67
+ if (!fm) {
63
68
  return fm;
64
69
  }
70
+ if (isNaN(tm.getTime())) {
71
+ return undefined;
72
+ }
65
73
  const rest = [];
66
- fm = fm.replace(/%([ZYMDhms%])/g, (_, p1) => {
74
+ const replaced = `${em}${em}`;
75
+ fm = fm.replace(new RegExp(`${em}([ZYMDhmsS${em}])`, "g"), (_, p1) => {
67
76
  rest.push(p1);
68
- return "%%";
77
+ return replaced;
69
78
  });
70
- const formatNumber = (date) => date.toString().padStart(2, "0").split("");
79
+ function formatNumber(n, max = 2) {
80
+ return n.toString().padStart(max, "0").split("");
81
+ }
71
82
  const z = tm.getTimezoneOffset() / -60;
72
83
  const switcher = {
73
84
  Z: [z >= 0 ? "+" + z.toString() : z.toString()],
@@ -77,11 +88,13 @@ let Time = Time_1 = class Time extends GodownElement {
77
88
  h: formatNumber(tm.getHours()),
78
89
  m: formatNumber(tm.getMinutes()),
79
90
  s: formatNumber(tm.getSeconds()),
91
+ S: formatNumber(tm.getMilliseconds(), 3),
80
92
  };
81
93
  const result = [];
82
94
  for (const f of fm.split("").reverse()) {
83
- if (switcher[f]) {
84
- result.push(switcher[f]?.pop());
95
+ const s = switcher[f]?.pop();
96
+ if (s) {
97
+ result.push(s);
85
98
  }
86
99
  else {
87
100
  result.push(f);
@@ -90,7 +103,7 @@ let Time = Time_1 = class Time extends GodownElement {
90
103
  return result
91
104
  .reverse()
92
105
  .join("")
93
- .replace(/%%/g, () => {
106
+ .replace(new RegExp(replaced, "g"), () => {
94
107
  return rest.shift();
95
108
  });
96
109
  }
@@ -102,6 +115,9 @@ Time.styles = [
102
115
  }
103
116
  `,
104
117
  ];
118
+ __decorate([
119
+ property()
120
+ ], Time.prototype, "escape", void 0);
105
121
  __decorate([
106
122
  property()
107
123
  ], Time.prototype, "format", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/time.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,GAAG,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B;;GAEG;AAEI,IAAM,IAAI,YAAV,MAAM,IAAK,SAAQ,aAAa;IAAhC;;QACL;;;WAGG;QACS,WAAM,GAAG,0BAA0B,CAAC;QAChD;;WAEG;QACS,UAAK,GAAG,EAAE,CAAC;QACvB;;WAEG;QACyB,SAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9C;;WAEG;QACyB,YAAO,GAAG,CAAC,CAAC;QACxC;;WAEG;QACyB,QAAG,GAAG,CAAC,CAAC;IA4EtC,CAAC;IAhEW,MAAM;QACd,OAAO,IAAI,CAAC,KAAK,IAAI,MAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAES,YAAY;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,oBAAoB;QAClB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,EAAQ;QAC7B,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAA6B;YACzC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/C,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;SACjC,CAAC;QACF,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,MAAM;aACV,OAAO,EAAE;aACT,IAAI,CAAC,EAAE,CAAC;aACR,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC;;AAvEM,WAAM,GAAmB;IAC9B,GAAG,CAAA;;;;KAIF;CACF,AANY,CAMX;AA1BU;IAAX,QAAQ,EAAE;oCAAqC;AAIpC;IAAX,QAAQ,EAAE;mCAAY;AAIK;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kCAAmB;AAIlB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qCAAa;AAIZ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iCAAS;AArBzB,IAAI;IADhB,MAAM,CAAC,UAAU,CAAC;GACN,IAAI,CAiGhB;;AAED,eAAe,IAAI,CAAC","sourcesContent":["import { css, type CSSResultGroup, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"time\";\n\n/**\n * TimeBar renders a formatting time.\n */\n@define(defineName)\nexport class Time extends GodownElement {\n /**\n * Format strings.\n * {@linkcode Time.fmt}\n */\n @property() format = \"YYYY-MM-DD hh:mm:ss UTFZ\";\n /**\n * Display content.\n */\n @property() value = \"\";\n /**\n * Time.\n */\n @property({ type: Object }) time = new Date();\n /**\n * If there is a value, update every gap or timeout.\n */\n @property({ type: Number }) timeout = 0;\n /**\n * The number of milliseconds that change with each update.\n */\n @property({ type: Number }) gap = 0;\n\n intervalID: number;\n\n static styles: CSSResultGroup = [\n css`\n :host {\n text-align: center;\n }\n `,\n ];\n\n protected render(): string {\n return this.value || Time.fmt(this.format, this.time);\n }\n\n protected firstUpdated() {\n if (this.timeout) {\n this.intervalID = setInterval(() => {\n this.time = new Date(this.time.getTime() + (this.gap || this.timeout));\n }, Math.abs(this.timeout));\n }\n }\n\n disconnectedCallback() {\n clearInterval(this.intervalID);\n }\n\n /**\n * @param fm Format string.\n * @param tm Time.\n * @returns F.ormat result\\\n *\n * Y for years\\\n * M for months\\\n * D for days\\\n * h for hours\\\n * m for minutes\\\n * s for seconds\\\n * Z for time zones.\n */\n static fmt(fm: string, tm: Date): string {\n if (fm === \"\") {\n return fm;\n }\n const rest = [];\n fm = fm.replace(/%([ZYMDhms%])/g, (_, p1) => {\n rest.push(p1);\n return \"%%\";\n });\n const formatNumber = (date: number) => date.toString().padStart(2, \"0\").split(\"\");\n const z = tm.getTimezoneOffset() / -60;\n const switcher: Record<string, string[]> = {\n Z: [z >= 0 ? \"+\" + z.toString() : z.toString()],\n Y: tm.getFullYear().toString().split(\"\"),\n M: formatNumber(tm.getMonth() + 1),\n D: formatNumber(tm.getDate()),\n h: formatNumber(tm.getHours()),\n m: formatNumber(tm.getMinutes()),\n s: formatNumber(tm.getSeconds()),\n };\n const result: string[] = [];\n for (const f of fm.split(\"\").reverse()) {\n if (switcher[f]) {\n result.push(switcher[f]?.pop());\n } else {\n result.push(f);\n }\n }\n return result\n .reverse()\n .join(\"\")\n .replace(/%%/g, () => {\n return rest.shift();\n });\n }\n}\n\nexport default Time;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"time-bar\": Time;\n }\n}\n"]}
1
+ {"version":3,"file":"time.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/time.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, type CSSResultGroup, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"time\";\n\n/**\n * {@linkcode Time} renders a formatting time.\n */\n@define(defineName)\nexport class Time extends GodownElement {\n /**\n * Cancels the next character formatting.\n */\n @property() escape = \"%\";\n /**\n * Format strings.\n * {@linkcode Time.fmt}\n */\n @property() format = \"YYYY-MM-DD hh:mm:ss UTFZ\";\n /**\n * Display content.\n */\n @property() value = \"\";\n /**\n * Time.\n */\n @property({ type: Object }) time = new Date();\n /**\n * If there is a value, update every gap or timeout.\n */\n @property({ type: Number }) timeout = 0;\n /**\n * The number of milliseconds that change with each update.\n */\n @property({ type: Number }) gap = 0;\n\n intervalID: number;\n\n static styles: CSSResultGroup = [\n css`\n :host {\n text-align: center;\n }\n `,\n ];\n\n protected render(): string {\n return this.value || Time.fmt(this.format, this.time, this.escape);\n }\n\n protected firstUpdated() {\n if (this.timeout) {\n this.intervalID = setInterval(() => {\n this.time = new Date(this.time.getTime() + (this.gap || this.timeout));\n }, Math.abs(this.timeout));\n }\n }\n\n disconnectedCallback() {\n clearInterval(this.intervalID);\n }\n\n /**\n * Y for year\\\n * M for month\\\n * D for day\\\n * h for hour\\\n * m for minute\\\n * s for second\\\n * S for milli Second\\\n * Z for time zone.\n *\n * @param fm Format string.\n * @param tm Time.\n * @returns Format result\n */\n static fmt(fm: string, tm: Date, em: string): string {\n if (!fm) {\n return fm;\n }\n if (isNaN(tm.getTime())) {\n return undefined;\n }\n const rest = [];\n const replaced = `${em}${em}`;\n fm = fm.replace(new RegExp(`${em}([ZYMDhmsS${em}])`, \"g\"), (_, p1) => {\n rest.push(p1);\n return replaced;\n });\n\n function formatNumber(n: number, max = 2) {\n return n.toString().padStart(max, \"0\").split(\"\");\n }\n\n const z = tm.getTimezoneOffset() / -60;\n const switcher: Record<string, string[]> = {\n Z: [z >= 0 ? \"+\" + z.toString() : z.toString()],\n Y: tm.getFullYear().toString().split(\"\"),\n M: formatNumber(tm.getMonth() + 1),\n D: formatNumber(tm.getDate()),\n h: formatNumber(tm.getHours()),\n m: formatNumber(tm.getMinutes()),\n s: formatNumber(tm.getSeconds()),\n S: formatNumber(tm.getMilliseconds(), 3),\n };\n const result: string[] = [];\n for (const f of fm.split(\"\").reverse()) {\n const s = switcher[f]?.pop();\n if (s) {\n result.push(s);\n } else {\n result.push(f);\n }\n }\n return result\n .reverse()\n .join(\"\")\n .replace(new RegExp(replaced, \"g\"), () => {\n return rest.shift();\n });\n }\n}\n\nexport default Time;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"time-bar\": Time;\n \"g-time\": Time;\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { type PropertyValueMap } from "../../.deps.js";
2
2
  import { type HTMLTemplate } from "../../lib/templates.js";
3
3
  import { GodownElement } from "../../supers/root.js";
4
4
  /**
5
- * TypewriterText renders a typewriter effect to text.
5
+ * {@linkcode Typewriter} renders a typewriter effect to text.
6
6
  */
7
7
  export declare class Typewriter extends GodownElement {
8
8
  /**
@@ -55,6 +55,7 @@ export default Typewriter;
55
55
  declare global {
56
56
  interface HTMLElementTagNameMap {
57
57
  "typewriter-text": Typewriter;
58
+ "g-typewriter": Typewriter;
58
59
  }
59
60
  }
60
61
  //# sourceMappingURL=typewriter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typewriter.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/typewriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,gBAAgB,EAAgB,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAe,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKlE;;GAEG;AACH,qBACa,UAAW,SAAQ,aAAa;IAC3C;;OAEG;IACS,IAAI,SAAM;IACtB;;OAEG;IAC0B,OAAO,UAAS;IAC7C;;OAEG;IAC0B,KAAK,UAAS;IAC3C;;OAEG;IACyB,GAAG,SAAO;IACtC;;OAEG;IACyB,GAAG,SAAM;IACrC;;OAEG;IACyB,KAAK,SAAK;IACtC;;OAEG;IACyB,KAAK,SAAK;IACtC;;OAEG;IACM,OAAO,SAAM;IAEtB,SAAS,EAAE,MAAM,CAAC;IACN,EAAE,EAAE,WAAW,CAAC;IAE5B;;OAEG;IACH,IAAI,GAAG,WAEN;IAED,MAAM,CAAC,MAAM,4BA+BX;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;IAIhC,SAAS,CAAC,YAAY;IAStB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAM3D,KAAK,CAAC,EAAE,SAAa;IAYrB,IAAI;IAIJ,GAAG;CAGJ;AAED,eAAe,UAAU,CAAC;AAE1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"typewriter.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/typewriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,gBAAgB,EAAgB,MAAM,gBAAgB,CAAC;AAE1F,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAe,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKlE;;GAEG;AACH,qBACa,UAAW,SAAQ,aAAa;IAC3C;;OAEG;IACS,IAAI,SAAM;IACtB;;OAEG;IAC0B,OAAO,UAAS;IAC7C;;OAEG;IAC0B,KAAK,UAAS;IAC3C;;OAEG;IACyB,GAAG,SAAO;IACtC;;OAEG;IACyB,GAAG,SAAM;IACrC;;OAEG;IACyB,KAAK,SAAK;IACtC;;OAEG;IACyB,KAAK,SAAK;IACtC;;OAEG;IACM,OAAO,SAAM;IAEtB,SAAS,EAAE,MAAM,CAAC;IACN,EAAE,EAAE,WAAW,CAAC;IAE5B;;OAEG;IACH,IAAI,GAAG,WAEN;IAED,MAAM,CAAC,MAAM,4BA+BX;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;IAIhC,SAAS,CAAC,YAAY;IAStB,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAM3D,KAAK,CAAC,EAAE,SAAa;IAYrB,IAAI;IAIJ,GAAG;CAGJ;AAED,eAAe,UAAU,CAAC;AAE1B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAC;QAC9B,cAAc,EAAE,UAAU,CAAC;KAC5B;CACF"}
@@ -7,7 +7,7 @@ import { createScope, GodownElement } from "../../supers/root.js";
7
7
  const defineName = "typewriter";
8
8
  const cssvarScope = createScope(defineName);
9
9
  /**
10
- * TypewriterText renders a typewriter effect to text.
10
+ * {@linkcode Typewriter} renders a typewriter effect to text.
11
11
  */
12
12
  let Typewriter = class Typewriter extends GodownElement {
13
13
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"typewriter.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/typewriter.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, property, type PropertyValueMap, query, state } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { random } from \"../../lib/utils.js\";\nimport { createScope, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"typewriter\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * TypewriterText renders a typewriter effect to text.\n */\n@define(defineName)\nexport class Typewriter extends GodownElement {\n /**\n * Raw text.\n */\n @property() text = \"\";\n /**\n * Start immediately after {@linkcode Typewriter.firstUpdated}.\n */\n @property({ type: Boolean }) stopped = false;\n /**\n * If true, hide the cursor\n */\n @property({ type: Boolean }) ended = false;\n /**\n * Maximum random time.\n */\n @property({ type: Number }) max = 100;\n /**\n * Minimum random time.\n */\n @property({ type: Number }) min = 50;\n /**\n * Fixed time.\n */\n @property({ type: Number }) delay = 0;\n /**\n * The index at the beginning.\n */\n @property({ type: Number }) index = 0;\n /**\n * Internal text.\n */\n @state() content = \"\";\n\n timeoutID: number;\n @query(\"i\") _i: HTMLElement;\n\n /**\n * {@linkcode Typewriter.text} length.\n */\n get len() {\n return this.text.length;\n }\n\n static styles = [\n css`\n :host {\n ${cssvarScope}--cursor-width: .05em;\n font-family: monospace;\n white-space: nowrap;\n }\n\n i {\n border-right: var(${cssvarScope}--cursor-width) solid;\n margin-left: 0.02em;\n animation: s 1.5s steps(1) infinite;\n }\n\n @keyframes s {\n 0% {\n border-color: currentColor;\n }\n 50% {\n border-color: transparent;\n }\n }\n\n slot {\n display: none;\n }\n\n .hidden {\n visibility: hidden;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n return html`${htmlSlot()}${this.content}<i class=\"${(this.ended && \"hidden\") || \"\"}\"></i>`;\n }\n\n protected firstUpdated() {\n if (!this.text) {\n this.text = this.assignedNodes[0]?.textContent.trim() || \"\";\n }\n if (!this.stopped && this.len) {\n this.write();\n }\n }\n\n protected updated(changedProperties: PropertyValueMap<this>) {\n if (changedProperties.has(\"index\")) {\n this.dispatchEvent(new CustomEvent(this.index === this.len ? \"done\" : \"write\", { detail: this.content }));\n }\n }\n\n write(at = this.index) {\n this.content = this.text.slice(0, at + 1);\n const timeout = this.delay || random(this.max, this.min);\n this.timeoutID = setTimeout(() => {\n const nx = at + 1;\n if (nx <= this.len) {\n this.index = nx;\n this.write();\n }\n }, timeout);\n }\n\n stop() {\n clearTimeout(this.timeoutID);\n }\n\n end() {\n this.ended = true;\n }\n}\n\nexport default Typewriter;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"typewriter-text\": Typewriter;\n }\n}\n"]}
1
+ {"version":3,"file":"typewriter.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/text/typewriter.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, property, type PropertyValueMap, query, state } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { random } from \"../../lib/utils.js\";\nimport { createScope, GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"typewriter\";\nconst cssvarScope = createScope(defineName);\n\n/**\n * {@linkcode Typewriter} renders a typewriter effect to text.\n */\n@define(defineName)\nexport class Typewriter extends GodownElement {\n /**\n * Raw text.\n */\n @property() text = \"\";\n /**\n * Start immediately after {@linkcode Typewriter.firstUpdated}.\n */\n @property({ type: Boolean }) stopped = false;\n /**\n * If true, hide the cursor\n */\n @property({ type: Boolean }) ended = false;\n /**\n * Maximum random time.\n */\n @property({ type: Number }) max = 100;\n /**\n * Minimum random time.\n */\n @property({ type: Number }) min = 50;\n /**\n * Fixed time.\n */\n @property({ type: Number }) delay = 0;\n /**\n * The index at the beginning.\n */\n @property({ type: Number }) index = 0;\n /**\n * Internal text.\n */\n @state() content = \"\";\n\n timeoutID: number;\n @query(\"i\") _i: HTMLElement;\n\n /**\n * {@linkcode Typewriter.text} length.\n */\n get len() {\n return this.text.length;\n }\n\n static styles = [\n css`\n :host {\n ${cssvarScope}--cursor-width: .05em;\n font-family: monospace;\n white-space: nowrap;\n }\n\n i {\n border-right: var(${cssvarScope}--cursor-width) solid;\n margin-left: 0.02em;\n animation: s 1.5s steps(1) infinite;\n }\n\n @keyframes s {\n 0% {\n border-color: currentColor;\n }\n 50% {\n border-color: transparent;\n }\n }\n\n slot {\n display: none;\n }\n\n .hidden {\n visibility: hidden;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n return html`${htmlSlot()}${this.content}<i class=\"${(this.ended && \"hidden\") || \"\"}\"></i>`;\n }\n\n protected firstUpdated() {\n if (!this.text) {\n this.text = this.assignedNodes[0]?.textContent.trim() || \"\";\n }\n if (!this.stopped && this.len) {\n this.write();\n }\n }\n\n protected updated(changedProperties: PropertyValueMap<this>) {\n if (changedProperties.has(\"index\")) {\n this.dispatchEvent(new CustomEvent(this.index === this.len ? \"done\" : \"write\", { detail: this.content }));\n }\n }\n\n write(at = this.index) {\n this.content = this.text.slice(0, at + 1);\n const timeout = this.delay || random(this.max, this.min);\n this.timeoutID = setTimeout(() => {\n const nx = at + 1;\n if (nx <= this.len) {\n this.index = nx;\n this.write();\n }\n }, timeout);\n }\n\n stop() {\n clearTimeout(this.timeoutID);\n }\n\n end() {\n this.ended = true;\n }\n}\n\nexport default Typewriter;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"typewriter-text\": Typewriter;\n \"g-typewriter\": Typewriter;\n }\n}\n"]}
@@ -19,7 +19,8 @@ export default Tooltip;
19
19
  declare global {
20
20
  interface HTMLElementTagNameMap {
21
21
  "open-tooltip": Tooltip;
22
- "g-open-tooltip": Tooltip;
22
+ "tool-tip": Tooltip;
23
+ "g-tooltip": Tooltip;
23
24
  }
24
25
  }
25
26
  //# sourceMappingURL=tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/tooltip/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK3E;;;;GAIG;AACH,qBACa,OAAQ,SAAQ,cAAc;IACzC,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC;IAC3B;;OAEG;IACS,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,EAAE,CAAM;IAEjE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgD3B;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;CAMjC;AAED,eAAe,OAAO,CAAC;AAEvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/tooltip/tooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,cAAc,EAAkB,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK3E;;;;GAIG;AACH,qBACa,OAAQ,SAAQ,cAAc;IACzC,SAAS,EAAE,UAAU,GAAG,EAAE,CAAC;IAC3B;;OAEG;IACS,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,EAAE,CAAM;IAEjE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgD3B;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;CAMjC;AAED,eAAe,OAAO,CAAC;AAEvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,OAAO,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;KACtB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/tooltip/tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAmB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B;;;;GAIG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,cAAc;IAApC;;QAEL;;WAEG;QACS,UAAK,GAA6C,EAAE,CAAC;IA0DnE,CAAC;IANW,MAAM;QACd,OAAO,IAAI,CAAA,gCAAgC,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9D,QAAQ,EAAE;sBACI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC;YACzE,CAAC;IACX,CAAC;;AAvDM,cAAM,GAAmB;IAC9B,cAAc,CAAC,MAAM;IACrB,GAAG,CAAA;;qBAEc,YAAY,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BjC;IACD,GAAG,CAAA;;;;;;;;;;;;;KAaF;CACF,AAhDY,CAgDX;AAlDU;IAAX,QAAQ,EAAE;sCAAsD;AALtD,OAAO;IADnB,MAAM,CAAC,UAAU,CAAC;GACN,OAAO,CA+DnB;;AAED,eAAe,OAAO,CAAC","sourcesContent":["import { css, CSSResultGroup, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { type Direction8, GodownOpenable } from \"../../supers/openable.js\";\nimport { cssvarValues } from \"../../supers/root.js\";\n\nconst defineName = \"tooltip\";\n\n/**\n * {@linkcode Tooltip} provide tooltip for slot elements, summary as the tips content.\n *\n * Content can be opened in 8 directions.\n */\n@define(defineName)\nexport class Tooltip extends GodownOpenable {\n direction: Direction8 | \"\";\n /**\n * Tip content align.\n */\n @property() align: \"center\" | \"flex-star\" | \"flex-end\" | \"\" = \"\";\n\n static styles: CSSResultGroup = [\n GodownOpenable.styles,\n css`\n :host {\n color: var(${cssvarValues.text});\n display: inline-flex;\n transition: 0.3s ease-in-out;\n justify-content: center;\n }\n\n main {\n display: inline-flex;\n align-items: center;\n position: relative;\n transition: inherit;\n }\n\n main,\n aside {\n transition: inherit;\n white-space: nowrap;\n }\n\n aside {\n opacity: 0;\n position: absolute;\n transition-property: opacity;\n }\n\n :host(:hover) aside,\n :host([open]) aside {\n opacity: 1;\n }\n `,\n css`\n aside[class^=\"top\"] {\n bottom: 100%;\n }\n aside[class^=\"bottom\"] {\n top: 100%;\n }\n aside[class$=\"right\"] {\n left: 100%;\n }\n aside[class$=\"left\"] {\n right: 100%;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n return html`<main style=\"justify-content:${this.align || \"inherit\"}\">\n ${htmlSlot()}\n <aside class=\"${this.direction || \"top\"}\">${this.summary || htmlSlot(\"summary\")}</aside>\n </main>`;\n }\n}\n\nexport default Tooltip;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"open-tooltip\": Tooltip;\n \"g-open-tooltip\": Tooltip;\n }\n}\n"]}
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/tooltip/tooltip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAmB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B;;;;GAIG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,cAAc;IAApC;;QAEL;;WAEG;QACS,UAAK,GAA6C,EAAE,CAAC;IA0DnE,CAAC;IANW,MAAM;QACd,OAAO,IAAI,CAAA,gCAAgC,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9D,QAAQ,EAAE;sBACI,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC;YACzE,CAAC;IACX,CAAC;;AAvDM,cAAM,GAAmB;IAC9B,cAAc,CAAC,MAAM;IACrB,GAAG,CAAA;;qBAEc,YAAY,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BjC;IACD,GAAG,CAAA;;;;;;;;;;;;;KAaF;CACF,AAhDY,CAgDX;AAlDU;IAAX,QAAQ,EAAE;sCAAsD;AALtD,OAAO;IADnB,MAAM,CAAC,UAAU,CAAC;GACN,OAAO,CA+DnB;;AAED,eAAe,OAAO,CAAC","sourcesContent":["import { css, CSSResultGroup, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { type Direction8, GodownOpenable } from \"../../supers/openable.js\";\nimport { cssvarValues } from \"../../supers/root.js\";\n\nconst defineName = \"tooltip\";\n\n/**\n * {@linkcode Tooltip} provide tooltip for slot elements, summary as the tips content.\n *\n * Content can be opened in 8 directions.\n */\n@define(defineName)\nexport class Tooltip extends GodownOpenable {\n direction: Direction8 | \"\";\n /**\n * Tip content align.\n */\n @property() align: \"center\" | \"flex-star\" | \"flex-end\" | \"\" = \"\";\n\n static styles: CSSResultGroup = [\n GodownOpenable.styles,\n css`\n :host {\n color: var(${cssvarValues.text});\n display: inline-flex;\n transition: 0.3s ease-in-out;\n justify-content: center;\n }\n\n main {\n display: inline-flex;\n align-items: center;\n position: relative;\n transition: inherit;\n }\n\n main,\n aside {\n transition: inherit;\n white-space: nowrap;\n }\n\n aside {\n opacity: 0;\n position: absolute;\n transition-property: opacity;\n }\n\n :host(:hover) aside,\n :host([open]) aside {\n opacity: 1;\n }\n `,\n css`\n aside[class^=\"top\"] {\n bottom: 100%;\n }\n aside[class^=\"bottom\"] {\n top: 100%;\n }\n aside[class$=\"right\"] {\n left: 100%;\n }\n aside[class$=\"left\"] {\n right: 100%;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n return html`<main style=\"justify-content:${this.align || \"inherit\"}\">\n ${htmlSlot()}\n <aside class=\"${this.direction || \"top\"}\">${this.summary || htmlSlot(\"summary\")}</aside>\n </main>`;\n }\n}\n\nexport default Tooltip;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"open-tooltip\": Tooltip;\n \"tool-tip\": Tooltip;\n \"g-tooltip\": Tooltip;\n }\n}\n"]}
@@ -20,6 +20,7 @@ export default Wrapper;
20
20
  declare global {
21
21
  interface HTMLElementTagNameMap {
22
22
  "wrap-view": Wrapper;
23
+ "with-wrap": Wrapper;
23
24
  "g-wrapper": Wrapper;
24
25
  }
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/wrapper/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;GAEG;AACH,qBACa,OAAQ,SAAQ,aAAa;IACxC;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAM;IACvE;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,KAAK,CAAM;IAEnD,MAAM,CAAC,MAAM,4BAiDX;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;CAUjC;AAED,eAAe,OAAO,CAAC;AAEvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/wrapper/wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD;;GAEG;AACH,qBACa,OAAQ,SAAQ,aAAa;IACxC;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAM;IACvE;;OAEG;IACS,IAAI,EAAE,MAAM,GAAG,MAAM,OAAO,KAAK,CAAM;IAEnD,MAAM,CAAC,MAAM,4BAiDX;IAEF,SAAS,CAAC,MAAM,IAAI,YAAY;CAUjC;AAED,eAAe,OAAO,CAAC;AAEvB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/wrapper/wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,aAAa;IAAnC;;QACL;;WAEG;QACS,SAAI,GAAoD,EAAE,CAAC;QACvE;;WAEG;QACS,SAAI,GAAgC,EAAE,CAAC;IA+DrD,CAAC;IAVW,MAAM;QACd,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAA,aAAa,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC;YACvD,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9B;gBACE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;;AA5DM,cAAM,GAAG;IACd,GAAG,CAAA;;;;;;KAMF;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCF;CACF,AAjDY,CAiDX;AAvDU;IAAX,QAAQ,EAAE;qCAA4D;AAI3D;IAAX,QAAQ,EAAE;qCAAwC;AARxC,OAAO;IADnB,MAAM,CAAC,UAAU,CAAC;GACN,OAAO,CAuEnB;;AAED,eAAe,OAAO,CAAC","sourcesContent":["import { css, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { icons } from \"../../lib/templates.js\";\nimport { GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"wrapper\";\n\n/**\n * WithWrap is used for wrap content.\n */\n@define(defineName)\nexport class Wrapper extends GodownElement {\n /**\n * Behavioral basis.\n */\n @property() with: string | keyof typeof icons | \"expand\" | \"icon\" = \"\";\n /**\n * Rendered content or slot name.\n */\n @property() wrap: string | keyof typeof icons = \"\";\n\n static styles = [\n css`\n :host {\n display: flex;\n width: 1em;\n height: 1em;\n }\n `,\n css`\n i {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n --e: 0.05em;\n }\n\n i::before,\n i::after {\n content: \"\";\n display: block;\n width: 100%;\n height: 0.05em;\n background: currentColor;\n transition: 0.3s;\n }\n\n i::after {\n transform: translate(0, calc(var(--e) / -2)) rotate(-45deg);\n }\n\n i::before {\n transform: translate(0, calc(var(--e) / 2)) rotate(45deg);\n }\n\n .close::after {\n transform: translate(0, var(--e));\n }\n\n .close::before {\n transform: translate(0, calc(var(--e) * -1));\n }\n\n .close {\n --e: 0.15em;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n switch (this.with) {\n case \"expand\":\n return html`<i class=\"${this.wrap || \"close\"}\"></i>`;\n case \"icon\":\n return icons[this.wrap]?.();\n default:\n return htmlSlot(this.with || this.wrap);\n }\n }\n}\n\nexport default Wrapper;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"wrap-view\": Wrapper;\n \"g-wrapper\": Wrapper;\n }\n}\n"]}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"https://github.com/startracex/godown/tree/main/src/","sources":["web-components/wrapper/wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B;;GAEG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,aAAa;IAAnC;;QACL;;WAEG;QACS,SAAI,GAAoD,EAAE,CAAC;QACvE;;WAEG;QACS,SAAI,GAAgC,EAAE,CAAC;IA+DrD,CAAC;IAVW,MAAM;QACd,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAA,aAAa,IAAI,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC;YACvD,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9B;gBACE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;;AA5DM,cAAM,GAAG;IACd,GAAG,CAAA;;;;;;KAMF;IACD,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwCF;CACF,AAjDY,CAiDX;AAvDU;IAAX,QAAQ,EAAE;qCAA4D;AAI3D;IAAX,QAAQ,EAAE;qCAAwC;AARxC,OAAO;IADnB,MAAM,CAAC,UAAU,CAAC;GACN,OAAO,CAuEnB;;AAED,eAAe,OAAO,CAAC","sourcesContent":["import { css, html, property } from \"../../.deps.js\";\nimport { define } from \"../../decorators/define.js\";\nimport { htmlSlot, type HTMLTemplate } from \"../../lib/templates.js\";\nimport { icons } from \"../../lib/templates.js\";\nimport { GodownElement } from \"../../supers/root.js\";\n\nconst defineName = \"wrapper\";\n\n/**\n * WithWrap is used for wrap content.\n */\n@define(defineName)\nexport class Wrapper extends GodownElement {\n /**\n * Behavioral basis.\n */\n @property() with: string | keyof typeof icons | \"expand\" | \"icon\" = \"\";\n /**\n * Rendered content or slot name.\n */\n @property() wrap: string | keyof typeof icons = \"\";\n\n static styles = [\n css`\n :host {\n display: flex;\n width: 1em;\n height: 1em;\n }\n `,\n css`\n i {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n --e: 0.05em;\n }\n\n i::before,\n i::after {\n content: \"\";\n display: block;\n width: 100%;\n height: 0.05em;\n background: currentColor;\n transition: 0.3s;\n }\n\n i::after {\n transform: translate(0, calc(var(--e) / -2)) rotate(-45deg);\n }\n\n i::before {\n transform: translate(0, calc(var(--e) / 2)) rotate(45deg);\n }\n\n .close::after {\n transform: translate(0, var(--e));\n }\n\n .close::before {\n transform: translate(0, calc(var(--e) * -1));\n }\n\n .close {\n --e: 0.15em;\n }\n `,\n ];\n\n protected render(): HTMLTemplate {\n switch (this.with) {\n case \"expand\":\n return html`<i class=\"${this.wrap || \"close\"}\"></i>`;\n case \"icon\":\n return icons[this.wrap]?.();\n default:\n return htmlSlot(this.with || this.wrap);\n }\n }\n}\n\nexport default Wrapper;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"wrap-view\": Wrapper;\n \"with-wrap\": Wrapper;\n \"g-wrapper\": Wrapper;\n }\n}\n"]}