@redvars/peacock 3.2.10 → 3.3.0

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 (197) hide show
  1. package/dist/{PeacockComponent-CxJc63xj.js → IndividualComponent-tDnXrOLV.js} +3 -3
  2. package/dist/IndividualComponent-tDnXrOLV.js.map +1 -0
  3. package/dist/{button-DaL4va7Q.js → button-BGFJfbT2.js} +22 -35
  4. package/dist/button-BGFJfbT2.js.map +1 -0
  5. package/dist/button-group.js +8 -8
  6. package/dist/button-group.js.map +1 -1
  7. package/dist/button.js +6 -5
  8. package/dist/button.js.map +1 -1
  9. package/dist/chart-donut.js +307 -0
  10. package/dist/chart-donut.js.map +1 -0
  11. package/dist/chart-doughnut.js +307 -0
  12. package/dist/chart-doughnut.js.map +1 -0
  13. package/dist/chart-pie.js +259 -0
  14. package/dist/chart-pie.js.map +1 -0
  15. package/dist/{class-map-BvQRv7eW.js → class-map-DpeNtqCn.js} +2 -2
  16. package/dist/{class-map-BvQRv7eW.js.map → class-map-DpeNtqCn.js.map} +1 -1
  17. package/dist/clock.js +5 -6
  18. package/dist/clock.js.map +1 -1
  19. package/dist/code-editor.js +37 -24
  20. package/dist/code-editor.js.map +1 -1
  21. package/dist/code-highlighter.js +21 -7
  22. package/dist/code-highlighter.js.map +1 -1
  23. package/dist/custom-elements-jsdocs.json +5377 -3122
  24. package/dist/custom-elements.json +5527 -3940
  25. package/dist/{dispatch-event-utils-vbdiOSeC.js → dispatch-event-utils-B4odODQf.js} +2 -15
  26. package/dist/dispatch-event-utils-B4odODQf.js.map +1 -0
  27. package/dist/index.js +13 -9
  28. package/dist/index.js.map +1 -1
  29. package/dist/number-counter.js +12 -10
  30. package/dist/number-counter.js.map +1 -1
  31. package/dist/{observe-theme-change-NneLARW8.js → observe-theme-change-BISF-Gl5.js} +2 -2
  32. package/dist/{observe-theme-change-NneLARW8.js.map → observe-theme-change-BISF-Gl5.js.map} +1 -1
  33. package/dist/peacock-loader.js +124 -62
  34. package/dist/peacock-loader.js.map +1 -1
  35. package/dist/query-QBcUV-L_.js +15 -0
  36. package/dist/query-QBcUV-L_.js.map +1 -0
  37. package/dist/{image-v3BujlY5.js → slider-Dk9CFWTG.js} +1606 -327
  38. package/dist/slider-Dk9CFWTG.js.map +1 -0
  39. package/dist/src/IndividualComponent.d.ts +1 -0
  40. package/dist/src/accordion/{accordion-item/accordion-item.d.ts → accordion-item.d.ts} +4 -4
  41. package/dist/src/accordion/{accordion/accordion.d.ts → accordion.d.ts} +6 -6
  42. package/dist/src/accordion/{accordion-item/index.d.ts → index.d.ts} +1 -0
  43. package/dist/src/avatar/avatar.d.ts +2 -2
  44. package/dist/src/badge/badge.d.ts +2 -2
  45. package/dist/src/breadcrumb/breadcrumb/breadcrumb.d.ts +7 -8
  46. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +3 -3
  47. package/dist/src/button/button/button.d.ts +2 -2
  48. package/dist/src/button/button-group/button-group.d.ts +5 -5
  49. package/dist/src/button/icon-button/icon-button.d.ts +2 -2
  50. package/dist/src/chart-donut/chart-donut.d.ts +53 -0
  51. package/dist/src/chart-donut/index.d.ts +1 -0
  52. package/dist/src/chart-doughnut/chart-doughnut.d.ts +53 -0
  53. package/dist/src/chart-doughnut/index.d.ts +1 -0
  54. package/dist/src/chart-pie/chart-pie.d.ts +50 -0
  55. package/dist/src/chart-pie/index.d.ts +1 -0
  56. package/dist/src/checkbox/checkbox.d.ts +3 -6
  57. package/dist/src/chip/chip/chip.d.ts +4 -4
  58. package/dist/src/chip/tag/tag.d.ts +3 -3
  59. package/dist/src/clock/clock.d.ts +3 -4
  60. package/dist/src/code-editor/code-editor.d.ts +11 -9
  61. package/dist/src/container/container.d.ts +6 -11
  62. package/dist/src/date-picker/date-picker.d.ts +3 -3
  63. package/dist/src/divider/divider.d.ts +2 -2
  64. package/dist/src/elevation/elevation.d.ts +2 -2
  65. package/dist/src/empty-state/empty-state.d.ts +9 -2
  66. package/dist/src/field/field.d.ts +17 -0
  67. package/dist/src/focus-ring/focus-ring.d.ts +1 -1
  68. package/dist/src/icon/icon.d.ts +2 -2
  69. package/dist/src/image/image.d.ts +4 -12
  70. package/dist/src/index.d.ts +5 -1
  71. package/dist/src/input/input.d.ts +2 -2
  72. package/dist/src/link/link.d.ts +4 -5
  73. package/dist/src/menu/menu/menu.d.ts +16 -0
  74. package/dist/src/menu/menu-item/menu-item.d.ts +12 -0
  75. package/dist/src/menu/menu-list/menu-list.d.ts +15 -0
  76. package/dist/src/number-counter/number-counter.d.ts +9 -7
  77. package/dist/src/number-field/number-field.d.ts +1 -1
  78. package/dist/src/popover/index.d.ts +1 -1
  79. package/dist/src/progress/circular-progress/circular-progress.d.ts +3 -3
  80. package/dist/src/progress/linear-progress/linear-progress.d.ts +3 -3
  81. package/dist/src/ripple/ripple.d.ts +60 -4
  82. package/dist/src/skeleton/skeleton.d.ts +6 -5
  83. package/dist/src/slider/index.d.ts +1 -0
  84. package/dist/src/slider/slider.d.ts +52 -0
  85. package/dist/src/spinner/spinner.d.ts +2 -2
  86. package/dist/src/switch/switch.d.ts +2 -2
  87. package/dist/src/tabs/index.d.ts +4 -0
  88. package/dist/src/tabs/tab-group.d.ts +41 -0
  89. package/dist/src/tabs/tab-panel.d.ts +21 -0
  90. package/dist/src/tabs/tab.d.ts +58 -0
  91. package/dist/src/tabs/tabs.d.ts +27 -0
  92. package/dist/src/textarea/textarea.d.ts +3 -3
  93. package/dist/src/time-picker/time-picker.d.ts +3 -3
  94. package/dist/src/{popover/tooltip → tooltip}/tooltip.d.ts +6 -3
  95. package/dist/{state-B09bP3XH.js → state-8v48Exzh.js} +2 -2
  96. package/dist/{state-B09bP3XH.js.map → state-8v48Exzh.js.map} +1 -1
  97. package/dist/{style-map-B8xgVEc9.js → style-map-CfNHEkQp.js} +2 -2
  98. package/dist/{style-map-B8xgVEc9.js.map → style-map-CfNHEkQp.js.map} +1 -1
  99. package/dist/transform-DRuHEvar.js +3312 -0
  100. package/dist/transform-DRuHEvar.js.map +1 -0
  101. package/dist/tsconfig.tsbuildinfo +1 -1
  102. package/dist/{unsafe-html-B-dV3Jps.js → unsafe-html-CV6Je6HL.js} +2 -2
  103. package/dist/{unsafe-html-B-dV3Jps.js.map → unsafe-html-CV6Je6HL.js.map} +1 -1
  104. package/package.json +3 -1
  105. package/readme.md +2 -2
  106. package/src/{PeacockComponent.ts → IndividualComponent.ts} +1 -1
  107. package/src/accordion/{accordion-item/accordion-item.scss → accordion-item.scss} +1 -1
  108. package/src/accordion/{accordion-item/accordion-item.ts → accordion-item.ts} +5 -5
  109. package/src/accordion/{accordion/accordion.scss → accordion.scss} +2 -1
  110. package/src/accordion/{accordion/accordion.ts → accordion.ts} +6 -6
  111. package/src/accordion/{accordion-item/index.ts → index.ts} +2 -0
  112. package/src/avatar/avatar.ts +2 -2
  113. package/src/badge/badge.ts +2 -2
  114. package/src/breadcrumb/breadcrumb/breadcrumb.ts +7 -8
  115. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +3 -3
  116. package/src/button/BaseButton.ts +1 -1
  117. package/src/button/button/button.scss +9 -23
  118. package/src/button/button/button.ts +8 -8
  119. package/src/button/button-group/button-group.ts +7 -7
  120. package/src/button/icon-button/icon-button.ts +8 -8
  121. package/src/chart-donut/chart-donut.scss +37 -0
  122. package/src/chart-donut/chart-donut.ts +287 -0
  123. package/src/chart-donut/demo/index.html +51 -0
  124. package/src/chart-donut/index.ts +1 -0
  125. package/src/chart-doughnut/chart-donut.scss +37 -0
  126. package/src/chart-doughnut/chart-doughnut.ts +287 -0
  127. package/src/chart-doughnut/demo/index.html +51 -0
  128. package/src/chart-doughnut/index.ts +1 -0
  129. package/src/chart-pie/chart-pie.scss +27 -0
  130. package/src/chart-pie/chart-pie.ts +256 -0
  131. package/src/chart-pie/demo/index.html +51 -0
  132. package/src/chart-pie/index.ts +1 -0
  133. package/src/checkbox/checkbox.ts +3 -6
  134. package/src/chip/chip/chip.ts +6 -6
  135. package/src/chip/tag/tag.ts +6 -6
  136. package/src/clock/clock.ts +5 -6
  137. package/src/code-editor/code-editor.scss +3 -5
  138. package/src/code-editor/code-editor.ts +30 -15
  139. package/src/code-highlighter/code-highlighter.ts +19 -4
  140. package/src/container/container.ts +6 -11
  141. package/src/date-picker/date-picker.ts +7 -7
  142. package/src/divider/divider.ts +2 -2
  143. package/src/elevation/elevation.ts +2 -2
  144. package/src/empty-state/empty-state.ts +10 -3
  145. package/src/field/field.scss +4 -4
  146. package/src/field/field.ts +19 -2
  147. package/src/focus-ring/focus-ring.scss +2 -1
  148. package/src/focus-ring/focus-ring.ts +1 -1
  149. package/src/icon/icon.ts +2 -2
  150. package/src/icon/p-icon.ts +1 -1
  151. package/src/image/image.ts +4 -12
  152. package/src/index.ts +6 -2
  153. package/src/input/input.ts +6 -6
  154. package/src/link/link.ts +4 -5
  155. package/src/menu/menu/menu.ts +16 -0
  156. package/src/menu/menu-item/menu-item-colors.scss +2 -2
  157. package/src/menu/menu-item/menu-item.ts +14 -2
  158. package/src/menu/menu-list/menu-list.ts +16 -1
  159. package/src/number-counter/demo/index.html +1 -1
  160. package/src/number-counter/number-counter.ts +11 -9
  161. package/src/number-field/number-field.ts +7 -7
  162. package/src/peacock-loader.ts +71 -44
  163. package/src/popover/index.ts +1 -1
  164. package/src/progress/circular-progress/circular-progress.scss +1 -1
  165. package/src/progress/circular-progress/circular-progress.ts +3 -3
  166. package/src/progress/linear-progress/linear-progress.ts +3 -3
  167. package/src/ripple/ripple.ts +478 -94
  168. package/src/skeleton/skeleton.ts +6 -5
  169. package/src/slider/index.ts +1 -0
  170. package/src/slider/slider.scss +130 -0
  171. package/src/slider/slider.ts +178 -0
  172. package/src/spinner/spinner.ts +2 -2
  173. package/src/switch/switch.ts +4 -4
  174. package/src/tabs/index.ts +4 -0
  175. package/src/tabs/tab-group.scss +10 -0
  176. package/src/tabs/tab-group.ts +137 -0
  177. package/src/tabs/tab-panel.scss +12 -0
  178. package/src/tabs/tab-panel.ts +28 -0
  179. package/src/tabs/tab.scss +157 -0
  180. package/src/tabs/tab.ts +242 -0
  181. package/src/tabs/tabs.scss +18 -0
  182. package/src/tabs/tabs.ts +64 -0
  183. package/src/textarea/textarea.ts +5 -5
  184. package/src/time-picker/time-picker.ts +7 -7
  185. package/src/{popover/tooltip → tooltip}/tooltip.scss +1 -1
  186. package/src/{popover/tooltip → tooltip}/tooltip.ts +10 -6
  187. package/dist/PeacockComponent-CxJc63xj.js.map +0 -1
  188. package/dist/button-DaL4va7Q.js.map +0 -1
  189. package/dist/dispatch-event-utils-vbdiOSeC.js.map +0 -1
  190. package/dist/image-v3BujlY5.js.map +0 -1
  191. package/dist/src/PeacockComponent.d.ts +0 -1
  192. package/dist/src/accordion/accordion/index.d.ts +0 -1
  193. package/dist/src/avatar/p-avatar.d.ts +0 -3
  194. package/dist/src/badge/p-badge.d.ts +0 -3
  195. package/src/accordion/accordion/index.ts +0 -1
  196. package/src/avatar/p-avatar.ts +0 -5
  197. package/src/badge/p-badge.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-doughnut.js","sources":["../../src/chart-doughnut/chart-doughnut.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport IndividualComponent from 'src/IndividualComponent.js';\nimport * as d3 from 'd3';\nimport styles from './chart-donut.scss';\n\nexport type ChartDoughnutColor = {\n color: string;\n};\n\nexport type ChartDoughnutItem = {\n name: string;\n value: number;\n label?: string;\n color?: string;\n};\n\nconst chartColors: ChartDoughnutColor[] = [];\n['purple', 'blue', 'red', 'green', 'yellow', 'orange'].forEach(colorName => {\n chartColors.push({\n color: `var(--color-${colorName})`,\n });\n});\n\n/** SVGPathElement augmented with the last rendered arc datum for smooth tween interpolation. */\ninterface ArcPathElement extends SVGPathElement {\n _prevDatum?: d3.PieArcDatum<ChartDoughnutItem>;\n}\n\nfunction debounce<T extends (...args: any[]) => void>(fn: T, wait: number): T {\n let timer: ReturnType<typeof setTimeout>;\n return ((...args: any[]) => {\n clearTimeout(timer);\n timer = setTimeout(() => fn(...args), wait);\n }) as T;\n}\n\n/**\n * @label Chart Doughnut\n * @tag wc-chart-doughnut\n * @rawTag chart-doughnut\n * @summary A doughnut chart is a circular chart with a blank center. The area in the center can be used to display information.\n * @tags charts\n *\n * @example\n * ```html\n * <wc-chart-doughnut width=\"400\" label=\"Total\"></wc-chart-doughnut>\n * <script>\n * document.querySelector('wc-chart-doughnut').data = [\n * { name: 'A', value: 30, label: 'Category A' },\n * { name: 'B', value: 50, label: 'Category B' },\n * { name: 'C', value: 20, label: 'Category C' },\n * ];\n * </script>\n * ```\n */\n@IndividualComponent\nexport class ChartDoughnut extends LitElement {\n static styles = [styles];\n\n @query('svg')\n private svgElement?: SVGElement;\n\n /** Width (and height) of the chart in pixels. */\n @property({ type: Number, reflect: true }) width: number = 0;\n\n /** Margin around the chart. */\n @property({ type: Number, reflect: true }) margin: number = 10;\n\n /** Whether to show labels outside the chart. */\n @property({ type: Boolean, reflect: true, attribute: 'show-labels' })\n showLabels: boolean = true;\n\n /** Chart data array. Each item should have name, value, and optional label and color. */\n @property({ type: Array }) data: ChartDoughnutItem[] = [];\n\n /** Label displayed in the center of the doughnut. */\n @property({ type: String }) label?: string;\n\n private _initialized = false;\n\n private _debouncedRenderChart = debounce(() => {\n this._renderChart(true);\n }, 300);\n\n firstUpdated() {\n this._renderChart(false);\n }\n\n updated(changedProperties: PropertyValues) {\n if (!this._initialized) {\n this._initialized = true;\n return;\n }\n const watchedProps = ['width', 'margin', 'showLabels', 'data'];\n const hasChanged = watchedProps.some(prop => changedProperties.has(prop));\n if (hasChanged) {\n this._debouncedRenderChart();\n }\n }\n\n private _getRadius(): number {\n return this.width / 2 - this.margin - 100;\n }\n\n private _getTotal(): number {\n return this.data.reduce((total, d) => total + d.value, 0);\n }\n\n private _getPieData() {\n const pie = d3\n .pie<ChartDoughnutItem>()\n .sort(null)\n .value(d => d.value);\n return pie(this.data);\n }\n\n private _getColorScale() {\n return d3\n .scaleOrdinal<string, ChartDoughnutColor>()\n .domain(this.data.map(d => d.name))\n .range(chartColors);\n }\n\n private _renderChart(animate: boolean) {\n if (!this.svgElement) return;\n\n const DURATION = 500;\n const radius = this._getRadius();\n const pieData = this._getPieData();\n const colorScale = this._getColorScale();\n const total = this._getTotal();\n\n const svg = d3.select(this.svgElement);\n\n const doughnutArc = d3\n .arc<d3.PieArcDatum<ChartDoughnutItem>>()\n .innerRadius(radius * 0.72)\n .outerRadius(radius);\n\n const labelsArc = d3\n .arc<d3.PieArcDatum<ChartDoughnutItem>>()\n .innerRadius(radius + 10)\n .outerRadius(radius + 10);\n\n // Update SVG dimensions and center transform\n svg.attr('width', this.width).attr('height', this.width);\n svg\n .select('.chart-container')\n .attr('transform', `translate(${this.width / 2},${this.width / 2})`);\n\n // Arc paths — keyed by name so D3 matches elements across updates\n const $paths = svg\n .select('.arc-container')\n .selectAll<SVGPathElement, d3.PieArcDatum<ChartDoughnutItem>>('.arc')\n .data(pieData, d => d.data.name)\n .join('path')\n .attr('class', 'arc')\n .style('fill', d => d.data.color || colorScale(d.data.name).color);\n\n if (animate) {\n $paths\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attrTween('d', function (this: SVGPathElement, d) {\n const self = this as ArcPathElement;\n // Interpolate from the last rendered angles to the new ones.\n // New (entering) arcs start collapsed at their startAngle.\n const prev: { startAngle: number; endAngle: number } =\n self._prevDatum ?? {\n startAngle: d.startAngle,\n endAngle: d.startAngle,\n };\n self._prevDatum = d;\n const iStart = d3.interpolateNumber(prev.startAngle, d.startAngle);\n const iEnd = d3.interpolateNumber(prev.endAngle, d.endAngle);\n return (t: number) =>\n doughnutArc({ ...d, startAngle: iStart(t), endAngle: iEnd(t) }) ??\n '';\n });\n } else {\n // Initial render: draw immediately and seed previous-datum for later tweens\n $paths\n .each(function (this: SVGPathElement, d) {\n (this as ArcPathElement)._prevDatum = d;\n })\n .attr('d', d => doughnutArc(d) ?? '');\n }\n\n // Animate the central total counter\n const $title = svg.select('.title');\n if (animate) {\n $title\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .tween('text', function (this: d3.BaseType) {\n const sel = d3.select(this as SVGTextElement);\n const start = parseFloat(sel.text()) || 0;\n const interp = d3.interpolateNumber(start, total);\n return function (t: number) {\n sel.text(Math.round(interp(t)));\n };\n });\n } else {\n $title.text(total);\n }\n\n // Label polylines and text\n const $chartContainer = svg.select('.chart-container');\n\n if (this.showLabels) {\n const pointsFn = (d: d3.PieArcDatum<ChartDoughnutItem>) => {\n const posA = doughnutArc.centroid(d);\n const posB = labelsArc.centroid(d);\n const posC = posB.slice() as [number, number];\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n posC[0] = radius * (midAngle < Math.PI ? 1 : -1);\n return [posA, posB, posC].map(p => p.join(',')).join(' ');\n };\n\n const transformFn = (d: d3.PieArcDatum<ChartDoughnutItem>) => {\n const pos = labelsArc.centroid(d);\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n pos[0] = radius * (midAngle < Math.PI ? 1 : -1);\n return `translate(${pos})`;\n };\n\n const anchorFn = (d: d3.PieArcDatum<ChartDoughnutItem>) => {\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n return midAngle < Math.PI ? 'start' : 'end';\n };\n\n const $polylines = $chartContainer\n .selectAll<SVGPolylineElement, d3.PieArcDatum<ChartDoughnutItem>>(\n '.item-polyline',\n )\n .data(pieData, d => d.data.name)\n .join('polyline')\n .attr('class', 'item-polyline');\n\n const $labels = $chartContainer\n .selectAll<SVGTextElement, d3.PieArcDatum<ChartDoughnutItem>>('.item-label')\n .data(pieData, d => d.data.name)\n .join('text')\n .attr('class', 'item-label')\n .text(d => d.data.label ?? '');\n\n if (animate) {\n $polylines\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attr('points', pointsFn);\n $labels\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attr('transform', transformFn)\n .style('text-anchor', anchorFn);\n } else {\n $polylines.attr('points', pointsFn);\n $labels.attr('transform', transformFn).style('text-anchor', anchorFn);\n }\n } else {\n $chartContainer.selectAll('.item-polyline').remove();\n $chartContainer.selectAll('.item-label').remove();\n }\n }\n\n render() {\n return html`\n <div class=\"chart\">\n <svg>\n <g class=\"chart-container\">\n <g class=\"arc-container\"></g>\n <text class=\"title\" text-anchor=\"middle\"></text>\n <text class=\"label\" text-anchor=\"middle\" y=\"16\">\n ${this.label}\n </text>\n </g>\n </svg>\n </div>\n `;\n }\n}\n"],"names":["LitElement","pie","d3\n .pie","d3\n .scaleOrdinal","d3.select","d3\n .arc","d3.easeCubicInOut","d3.interpolateNumber","html","styles","query","property"],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ import { i, _ as __decorate, n, I as IndividualComponent, a as i$1, b } from './IndividualComponent-tDnXrOLV.js';
2
+ import { e } from './query-QBcUV-L_.js';
3
+ import { p as pie, o as ordinal, s as select, a as arc, c as cubicInOut, i as interpolateNumber } from './transform-DRuHEvar.js';
4
+
5
+ var css_248z = i`* {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ .screen-reader-only {
10
+ display: none !important;
11
+ }
12
+
13
+ :host {
14
+ display: inline-block;
15
+ }
16
+
17
+ .arc {
18
+ cursor: pointer;
19
+ transition: filter 150ms ease;
20
+ }
21
+ .arc:hover {
22
+ filter: brightness(1.2);
23
+ }
24
+
25
+ .item-polyline {
26
+ fill: none;
27
+ stroke-width: 1;
28
+ stroke: var(--color-on-surface);
29
+ }
30
+
31
+ .item-label {
32
+ fill: var(--color-on-surface);
33
+ font-family: var(--typography-label-medium-font-family) !important;
34
+ font-size: var(--typography-label-medium-font-size) !important;
35
+ font-weight: var(--typography-label-medium-font-weight) !important;
36
+ line-height: var(--typography-label-medium-line-height) !important;
37
+ letter-spacing: var(--typography-label-medium-letter-spacing) !important;
38
+ }`;
39
+
40
+ const chartColors = [];
41
+ ['purple', 'blue', 'red', 'green', 'yellow', 'orange'].forEach(colorName => {
42
+ chartColors.push({
43
+ color: `var(--color-${colorName})`,
44
+ });
45
+ });
46
+ function debounce(fn, wait) {
47
+ let timer;
48
+ return ((...args) => {
49
+ clearTimeout(timer);
50
+ timer = setTimeout(() => fn(...args), wait);
51
+ });
52
+ }
53
+ /**
54
+ * @label Chart Pie
55
+ * @tag wc-chart-pie
56
+ * @rawTag chart-pie
57
+ * @summary A pie chart is a circular statistical graphic that visually represents numerical proportions.
58
+ * @tags charts
59
+ *
60
+ * @example
61
+ * ```html
62
+ * <wc-chart-pie width="400"></wc-chart-pie>
63
+ * <script>
64
+ * document.querySelector('wc-chart-pie').data = [
65
+ * { name: 'A', value: 30, label: 'Category A' },
66
+ * { name: 'B', value: 50, label: 'Category B' },
67
+ * { name: 'C', value: 20, label: 'Category C' },
68
+ * ];
69
+ * </script>
70
+ * ```
71
+ */
72
+ let ChartPie = class ChartPie extends i$1 {
73
+ constructor() {
74
+ super(...arguments);
75
+ /** Width (and height) of the chart in pixels. */
76
+ this.width = 0;
77
+ /** Margin around the chart. */
78
+ this.margin = 10;
79
+ /** Whether to show labels outside the chart. */
80
+ this.showLabels = true;
81
+ /** Chart data array. Each item should have name, value, and optional label and color. */
82
+ this.data = [];
83
+ this._initialized = false;
84
+ this._debouncedRenderChart = debounce(() => {
85
+ this._renderChart(true);
86
+ }, 300);
87
+ }
88
+ firstUpdated() {
89
+ this._renderChart(false);
90
+ }
91
+ updated(changedProperties) {
92
+ if (!this._initialized) {
93
+ this._initialized = true;
94
+ return;
95
+ }
96
+ const watchedProps = ['width', 'margin', 'showLabels', 'data'];
97
+ const hasChanged = watchedProps.some(prop => changedProperties.has(prop));
98
+ if (hasChanged) {
99
+ this._debouncedRenderChart();
100
+ }
101
+ }
102
+ _getRadius() {
103
+ // Reserve 100px on each side for labels and padding
104
+ return this.width / 2 - this.margin - 100;
105
+ }
106
+ _getPieData() {
107
+ const pie$1 = pie()
108
+ .sort(null)
109
+ .value(d => d.value);
110
+ return pie$1(this.data);
111
+ }
112
+ _getColorScale() {
113
+ return ordinal()
114
+ .domain(this.data.map(d => d.name))
115
+ .range(chartColors);
116
+ }
117
+ _renderChart(animate) {
118
+ if (!this.svgElement)
119
+ return;
120
+ const DURATION = 500;
121
+ const radius = this._getRadius();
122
+ const pieData = this._getPieData();
123
+ const colorScale = this._getColorScale();
124
+ const svg = select(this.svgElement);
125
+ const pieArc = arc()
126
+ .innerRadius(0)
127
+ .outerRadius(radius);
128
+ const labelsArc = arc()
129
+ .innerRadius(radius + 10)
130
+ .outerRadius(radius + 10);
131
+ // Update SVG dimensions and center transform
132
+ svg.attr('width', this.width).attr('height', this.width);
133
+ svg
134
+ .select('.chart-container')
135
+ .attr('transform', `translate(${this.width / 2},${this.width / 2})`);
136
+ // Arc paths — keyed by name so D3 matches elements across updates
137
+ const $paths = svg
138
+ .select('.arc-container')
139
+ .selectAll('.arc')
140
+ .data(pieData, d => d.data.name)
141
+ .join('path')
142
+ .attr('class', 'arc')
143
+ .style('fill', d => d.data.color || colorScale(d.data.name).color);
144
+ if (animate) {
145
+ $paths
146
+ .transition()
147
+ .duration(DURATION)
148
+ .ease(cubicInOut)
149
+ .attrTween('d', function (d) {
150
+ const self = this;
151
+ // Interpolate from the last rendered angles to the new ones.
152
+ // New (entering) arcs start collapsed at their startAngle.
153
+ const prev = self._prevDatum ?? {
154
+ startAngle: d.startAngle,
155
+ endAngle: d.startAngle,
156
+ };
157
+ self._prevDatum = d;
158
+ const iStart = interpolateNumber(prev.startAngle, d.startAngle);
159
+ const iEnd = interpolateNumber(prev.endAngle, d.endAngle);
160
+ return (t) => pieArc({ ...d, startAngle: iStart(t), endAngle: iEnd(t) }) ?? '';
161
+ });
162
+ }
163
+ else {
164
+ // Initial render: draw immediately and seed previous-datum for later tweens
165
+ $paths
166
+ .each(function (d) {
167
+ this._prevDatum = d;
168
+ })
169
+ .attr('d', d => pieArc(d) ?? '');
170
+ }
171
+ // Label polylines and text
172
+ const $chartContainer = svg.select('.chart-container');
173
+ if (this.showLabels) {
174
+ const pointsFn = (d) => {
175
+ const posA = pieArc.centroid(d);
176
+ const posB = labelsArc.centroid(d);
177
+ const posC = posB.slice();
178
+ const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;
179
+ posC[0] = radius * (midAngle < Math.PI ? 1 : -1);
180
+ return [posA, posB, posC].map(p => p.join(',')).join(' ');
181
+ };
182
+ const transformFn = (d) => {
183
+ const pos = labelsArc.centroid(d);
184
+ const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;
185
+ pos[0] = radius * (midAngle < Math.PI ? 1 : -1);
186
+ return `translate(${pos})`;
187
+ };
188
+ const anchorFn = (d) => {
189
+ const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;
190
+ return midAngle < Math.PI ? 'start' : 'end';
191
+ };
192
+ const $polylines = $chartContainer
193
+ .selectAll('.item-polyline')
194
+ .data(pieData, d => d.data.name)
195
+ .join('polyline')
196
+ .attr('class', 'item-polyline');
197
+ const $labels = $chartContainer
198
+ .selectAll('.item-label')
199
+ .data(pieData, d => d.data.name)
200
+ .join('text')
201
+ .attr('class', 'item-label')
202
+ .text(d => d.data.label ?? '');
203
+ if (animate) {
204
+ $polylines
205
+ .transition()
206
+ .duration(DURATION)
207
+ .ease(cubicInOut)
208
+ .attr('points', pointsFn);
209
+ $labels
210
+ .transition()
211
+ .duration(DURATION)
212
+ .ease(cubicInOut)
213
+ .attr('transform', transformFn)
214
+ .style('text-anchor', anchorFn);
215
+ }
216
+ else {
217
+ $polylines.attr('points', pointsFn);
218
+ $labels.attr('transform', transformFn).style('text-anchor', anchorFn);
219
+ }
220
+ }
221
+ else {
222
+ $chartContainer.selectAll('.item-polyline').remove();
223
+ $chartContainer.selectAll('.item-label').remove();
224
+ }
225
+ }
226
+ render() {
227
+ return b `
228
+ <div class="chart">
229
+ <svg>
230
+ <g class="chart-container">
231
+ <g class="arc-container"></g>
232
+ </g>
233
+ </svg>
234
+ </div>
235
+ `;
236
+ }
237
+ };
238
+ ChartPie.styles = [css_248z];
239
+ __decorate([
240
+ e('svg')
241
+ ], ChartPie.prototype, "svgElement", void 0);
242
+ __decorate([
243
+ n({ type: Number, reflect: true })
244
+ ], ChartPie.prototype, "width", void 0);
245
+ __decorate([
246
+ n({ type: Number, reflect: true })
247
+ ], ChartPie.prototype, "margin", void 0);
248
+ __decorate([
249
+ n({ type: Boolean, reflect: true, attribute: 'show-labels' })
250
+ ], ChartPie.prototype, "showLabels", void 0);
251
+ __decorate([
252
+ n({ type: Array })
253
+ ], ChartPie.prototype, "data", void 0);
254
+ ChartPie = __decorate([
255
+ IndividualComponent
256
+ ], ChartPie);
257
+
258
+ export { ChartPie };
259
+ //# sourceMappingURL=chart-pie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-pie.js","sources":["../../src/chart-pie/chart-pie.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport IndividualComponent from 'src/IndividualComponent.js';\nimport * as d3 from 'd3';\nimport styles from './chart-pie.scss';\n\nexport type ChartPieColor = {\n color: string;\n};\n\nexport type ChartPieItem = {\n name: string;\n value: number;\n label?: string;\n color?: string;\n};\n\nconst chartColors: ChartPieColor[] = [];\n['purple', 'blue', 'red', 'green', 'yellow', 'orange'].forEach(colorName => {\n chartColors.push({\n color: `var(--color-${colorName})`,\n });\n});\n\n/** SVGPathElement augmented with the last rendered arc datum for smooth tween interpolation. */\ninterface ArcPathElement extends SVGPathElement {\n _prevDatum?: d3.PieArcDatum<ChartPieItem>;\n}\n\nfunction debounce<T extends (...args: any[]) => void>(fn: T, wait: number): T {\n let timer: ReturnType<typeof setTimeout>;\n return ((...args: any[]) => {\n clearTimeout(timer);\n timer = setTimeout(() => fn(...args), wait);\n }) as T;\n}\n\n/**\n * @label Chart Pie\n * @tag wc-chart-pie\n * @rawTag chart-pie\n * @summary A pie chart is a circular statistical graphic that visually represents numerical proportions.\n * @tags charts\n *\n * @example\n * ```html\n * <wc-chart-pie width=\"400\"></wc-chart-pie>\n * <script>\n * document.querySelector('wc-chart-pie').data = [\n * { name: 'A', value: 30, label: 'Category A' },\n * { name: 'B', value: 50, label: 'Category B' },\n * { name: 'C', value: 20, label: 'Category C' },\n * ];\n * </script>\n * ```\n */\n@IndividualComponent\nexport class ChartPie extends LitElement {\n static styles = [styles];\n\n @query('svg')\n private svgElement?: SVGElement;\n\n /** Width (and height) of the chart in pixels. */\n @property({ type: Number, reflect: true }) width: number = 0;\n\n /** Margin around the chart. */\n @property({ type: Number, reflect: true }) margin: number = 10;\n\n /** Whether to show labels outside the chart. */\n @property({ type: Boolean, reflect: true, attribute: 'show-labels' })\n showLabels: boolean = true;\n\n /** Chart data array. Each item should have name, value, and optional label and color. */\n @property({ type: Array }) data: ChartPieItem[] = [];\n\n private _initialized = false;\n\n private _debouncedRenderChart = debounce(() => {\n this._renderChart(true);\n }, 300);\n\n firstUpdated() {\n this._renderChart(false);\n }\n\n updated(changedProperties: PropertyValues) {\n if (!this._initialized) {\n this._initialized = true;\n return;\n }\n const watchedProps = ['width', 'margin', 'showLabels', 'data'];\n const hasChanged = watchedProps.some(prop => changedProperties.has(prop));\n if (hasChanged) {\n this._debouncedRenderChart();\n }\n }\n\n private _getRadius(): number {\n // Reserve 100px on each side for labels and padding\n return this.width / 2 - this.margin - 100;\n }\n\n private _getPieData() {\n const pie = d3\n .pie<ChartPieItem>()\n .sort(null)\n .value(d => d.value);\n return pie(this.data);\n }\n\n private _getColorScale() {\n return d3\n .scaleOrdinal<string, ChartPieColor>()\n .domain(this.data.map(d => d.name))\n .range(chartColors);\n }\n\n private _renderChart(animate: boolean) {\n if (!this.svgElement) return;\n\n const DURATION = 500;\n const radius = this._getRadius();\n const pieData = this._getPieData();\n const colorScale = this._getColorScale();\n\n const svg = d3.select(this.svgElement);\n\n const pieArc = d3\n .arc<d3.PieArcDatum<ChartPieItem>>()\n .innerRadius(0)\n .outerRadius(radius);\n\n const labelsArc = d3\n .arc<d3.PieArcDatum<ChartPieItem>>()\n .innerRadius(radius + 10)\n .outerRadius(radius + 10);\n\n // Update SVG dimensions and center transform\n svg.attr('width', this.width).attr('height', this.width);\n svg\n .select('.chart-container')\n .attr('transform', `translate(${this.width / 2},${this.width / 2})`);\n\n // Arc paths — keyed by name so D3 matches elements across updates\n const $paths = svg\n .select('.arc-container')\n .selectAll<SVGPathElement, d3.PieArcDatum<ChartPieItem>>('.arc')\n .data(pieData, d => d.data.name)\n .join('path')\n .attr('class', 'arc')\n .style('fill', d => d.data.color || colorScale(d.data.name).color);\n\n if (animate) {\n $paths\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attrTween('d', function (this: SVGPathElement, d) {\n const self = this as ArcPathElement;\n // Interpolate from the last rendered angles to the new ones.\n // New (entering) arcs start collapsed at their startAngle.\n const prev: { startAngle: number; endAngle: number } =\n self._prevDatum ?? {\n startAngle: d.startAngle,\n endAngle: d.startAngle,\n };\n self._prevDatum = d;\n const iStart = d3.interpolateNumber(prev.startAngle, d.startAngle);\n const iEnd = d3.interpolateNumber(prev.endAngle, d.endAngle);\n return (t: number) =>\n pieArc({ ...d, startAngle: iStart(t), endAngle: iEnd(t) }) ?? '';\n });\n } else {\n // Initial render: draw immediately and seed previous-datum for later tweens\n $paths\n .each(function (this: SVGPathElement, d) {\n (this as ArcPathElement)._prevDatum = d;\n })\n .attr('d', d => pieArc(d) ?? '');\n }\n\n // Label polylines and text\n const $chartContainer = svg.select('.chart-container');\n\n if (this.showLabels) {\n const pointsFn = (d: d3.PieArcDatum<ChartPieItem>) => {\n const posA = pieArc.centroid(d);\n const posB = labelsArc.centroid(d);\n const posC = posB.slice() as [number, number];\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n posC[0] = radius * (midAngle < Math.PI ? 1 : -1);\n return [posA, posB, posC].map(p => p.join(',')).join(' ');\n };\n\n const transformFn = (d: d3.PieArcDatum<ChartPieItem>) => {\n const pos = labelsArc.centroid(d);\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n pos[0] = radius * (midAngle < Math.PI ? 1 : -1);\n return `translate(${pos})`;\n };\n\n const anchorFn = (d: d3.PieArcDatum<ChartPieItem>) => {\n const midAngle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n return midAngle < Math.PI ? 'start' : 'end';\n };\n\n const $polylines = $chartContainer\n .selectAll<SVGPolylineElement, d3.PieArcDatum<ChartPieItem>>(\n '.item-polyline',\n )\n .data(pieData, d => d.data.name)\n .join('polyline')\n .attr('class', 'item-polyline');\n\n const $labels = $chartContainer\n .selectAll<SVGTextElement, d3.PieArcDatum<ChartPieItem>>('.item-label')\n .data(pieData, d => d.data.name)\n .join('text')\n .attr('class', 'item-label')\n .text(d => d.data.label ?? '');\n\n if (animate) {\n $polylines\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attr('points', pointsFn);\n $labels\n .transition()\n .duration(DURATION)\n .ease(d3.easeCubicInOut)\n .attr('transform', transformFn)\n .style('text-anchor', anchorFn);\n } else {\n $polylines.attr('points', pointsFn);\n $labels.attr('transform', transformFn).style('text-anchor', anchorFn);\n }\n } else {\n $chartContainer.selectAll('.item-polyline').remove();\n $chartContainer.selectAll('.item-label').remove();\n }\n }\n\n render() {\n return html`\n <div class=\"chart\">\n <svg>\n <g class=\"chart-container\">\n <g class=\"arc-container\"></g>\n </g>\n </svg>\n </div>\n `;\n }\n}\n"],"names":["LitElement","pie","d3\n .pie","d3\n .scaleOrdinal","d3.select","d3\n .arc","d3.easeCubicInOut","d3.interpolateNumber","html","styles","query","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,WAAW,GAAoB,EAAE;AACvC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;IACzE,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA,CAAG;AACnC,KAAA,CAAC;AACJ,CAAC,CAAC;AAOF,SAAS,QAAQ,CAAqC,EAAK,EAAE,IAAY,EAAA;AACvE,IAAA,IAAI,KAAoC;AACxC,IAAA,QAAQ,CAAC,GAAG,IAAW,KAAI;QACzB,YAAY,CAAC,KAAK,CAAC;AACnB,QAAA,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;AAC7C,IAAA,CAAC;AACH;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQA,GAAU,CAAA;AAAjC,IAAA,WAAA,GAAA;;;QAOsC,IAAA,CAAA,KAAK,GAAW,CAAC;;QAGjB,IAAA,CAAA,MAAM,GAAW,EAAE;;QAI9D,IAAA,CAAA,UAAU,GAAY,IAAI;;QAGC,IAAA,CAAA,IAAI,GAAmB,EAAE;QAE5C,IAAA,CAAA,YAAY,GAAG,KAAK;AAEpB,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzB,CAAC,EAAE,GAAG,CAAC;IA+KT;IA7KE,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;AAEA,IAAA,OAAO,CAAC,iBAAiC,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB;QACF;QACA,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC;AAC9D,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;IAEQ,UAAU,GAAA;;QAEhB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG;IAC3C;IAEQ,WAAW,GAAA;QACjB,MAAMC,KAAG,GAAGC,GACN;aACH,IAAI,CAAC,IAAI;aACT,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACtB,QAAA,OAAOD,KAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB;IAEQ,cAAc,GAAA;AACpB,QAAA,OAAOE,OACQ;AACZ,aAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;aACjC,KAAK,CAAC,WAAW,CAAC;IACvB;AAEQ,IAAA,YAAY,CAAC,OAAgB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QAEtB,MAAM,QAAQ,GAAG,GAAG;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;QAExC,MAAM,GAAG,GAAGC,MAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QAEtC,MAAM,MAAM,GAAGC,GACT;aACH,WAAW,CAAC,CAAC;aACb,WAAW,CAAC,MAAM,CAAC;QAEtB,MAAM,SAAS,GAAGA,GACZ;AACH,aAAA,WAAW,CAAC,MAAM,GAAG,EAAE;AACvB,aAAA,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;;AAG3B,QAAA,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;QACxD;aACG,MAAM,CAAC,kBAAkB;AACzB,aAAA,IAAI,CAAC,WAAW,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;;QAGtE,MAAM,MAAM,GAAG;aACZ,MAAM,CAAC,gBAAgB;aACvB,SAAS,CAA+C,MAAM;AAC9D,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;aAC9B,IAAI,CAAC,MAAM;AACX,aAAA,IAAI,CAAC,OAAO,EAAE,KAAK;aACnB,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAEpE,IAAI,OAAO,EAAE;YACX;AACG,iBAAA,UAAU;iBACV,QAAQ,CAAC,QAAQ;AACjB,iBAAA,IAAI,CAACC,UAAiB;AACtB,iBAAA,SAAS,CAAC,GAAG,EAAE,UAAgC,CAAC,EAAA;gBAC/C,MAAM,IAAI,GAAG,IAAsB;;;AAGnC,gBAAA,MAAM,IAAI,GACR,IAAI,CAAC,UAAU,IAAI;oBACjB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,CAAC,CAAC,UAAU;iBACvB;AACH,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,gBAAA,MAAM,MAAM,GAAGC,iBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC;AAClE,gBAAA,MAAM,IAAI,GAAGA,iBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC5D,gBAAA,OAAO,CAAC,CAAS,KACf,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AACpE,YAAA,CAAC,CAAC;QACN;aAAO;;YAEL;iBACG,IAAI,CAAC,UAAgC,CAAC,EAAA;AACpC,gBAAA,IAAuB,CAAC,UAAU,GAAG,CAAC;AACzC,YAAA,CAAC;AACA,iBAAA,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC;;QAGA,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAEtD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,CAAC,CAA+B,KAAI;gBACnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAsB;AAC7C,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC;gBAC/D,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3D,YAAA,CAAC;AAED,YAAA,MAAM,WAAW,GAAG,CAAC,CAA+B,KAAI;gBACtD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjC,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC;gBAC/D,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC/C,OAAO,CAAA,UAAA,EAAa,GAAG,CAAA,CAAA,CAAG;AAC5B,YAAA,CAAC;AAED,YAAA,MAAM,QAAQ,GAAG,CAAC,CAA+B,KAAI;AACnD,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC;AAC/D,gBAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,OAAO,GAAG,KAAK;AAC7C,YAAA,CAAC;YAED,MAAM,UAAU,GAAG;iBAChB,SAAS,CACR,gBAAgB;AAEjB,iBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;iBAC9B,IAAI,CAAC,UAAU;AACf,iBAAA,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;YAEjC,MAAM,OAAO,GAAG;iBACb,SAAS,CAA+C,aAAa;AACrE,iBAAA,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI;iBAC9B,IAAI,CAAC,MAAM;AACX,iBAAA,IAAI,CAAC,OAAO,EAAE,YAAY;AAC1B,iBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAEhC,IAAI,OAAO,EAAE;gBACX;AACG,qBAAA,UAAU;qBACV,QAAQ,CAAC,QAAQ;AACjB,qBAAA,IAAI,CAACD,UAAiB;AACtB,qBAAA,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC3B;AACG,qBAAA,UAAU;qBACV,QAAQ,CAAC,QAAQ;AACjB,qBAAA,IAAI,CAACA,UAAiB;AACtB,qBAAA,IAAI,CAAC,WAAW,EAAE,WAAW;AAC7B,qBAAA,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC;YACnC;iBAAO;AACL,gBAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnC,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC;YACvE;QACF;aAAO;YACL,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE;YACpD,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE;QACnD;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAOE,CAAI,CAAA;;;;;;;;KAQV;IACH;;AApMO,QAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAGhB,UAAA,CAAA;IADPC,CAAK,CAAC,KAAK;AACoB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAGW,UAAA,CAAA;IAA1CC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAAoB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAGlB,UAAA,CAAA;IAA1CA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAAsB,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAI/D,UAAA,CAAA;AADC,IAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE;AACzC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAGA,UAAA,CAAA;AAA1B,IAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;AAA4B,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAjB1C,QAAQ,GAAA,UAAA,CAAA;IADpB;AACY,CAAA,EAAA,QAAQ,CAsMpB;;;;"}
@@ -1,4 +1,4 @@
1
- import { E } from './PeacockComponent-CxJc63xj.js';
1
+ import { E } from './IndividualComponent-tDnXrOLV.js';
2
2
  import { e as e$1, i, t } from './directive-Cuw6h7YA.js';
3
3
 
4
4
  /**
@@ -8,4 +8,4 @@ import { e as e$1, i, t } from './directive-Cuw6h7YA.js';
8
8
  */const e=e$1(class extends i{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter(s=>t[s]).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter(t=>""!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return E}});
9
9
 
10
10
  export { e };
11
- //# sourceMappingURL=class-map-BvQRv7eW.js.map
11
+ //# sourceMappingURL=class-map-DpeNtqCn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"class-map-BvQRv7eW.js","sources":["../node_modules/lit-html/directives/class-map.js"],"sourcesContent":["import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter(s=>t[s]).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter(t=>\"\"!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n"],"names":["s","t","r"],"mappings":";;;AACA;AACA;AACA;AACA;AACA,GAAQ,MAAC,CAAC,CAACA,GAAC,CAAC,cAAc,CAAC,CAAC,WAAW,CAACC,GAAC,CAAC,CAAC,GAAG,KAAK,CAACA,GAAC,CAAC,CAACA,GAAC,CAAC,IAAI,GAAGC,CAAC,CAAC,SAAS,EAAE,OAAO,GAAGD,GAAC,CAAC,IAAI,EAAEA,GAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,oGAAoG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAOA,CAAC,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"class-map-DpeNtqCn.js","sources":["../node_modules/lit-html/directives/class-map.js"],"sourcesContent":["import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter(s=>t[s]).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter(t=>\"\"!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n"],"names":["s","t","r"],"mappings":";;;AACA;AACA;AACA;AACA;AACA,GAAQ,MAAC,CAAC,CAACA,GAAC,CAAC,cAAc,CAAC,CAAC,WAAW,CAACC,GAAC,CAAC,CAAC,GAAG,KAAK,CAACA,GAAC,CAAC,CAACA,GAAC,CAAC,IAAI,GAAGC,CAAC,CAAC,SAAS,EAAE,OAAO,GAAGD,GAAC,CAAC,IAAI,EAAEA,GAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,oGAAoG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAOA,CAAC,CAAC,CAAC;;;;","x_google_ignoreList":[0]}
package/dist/clock.js CHANGED
@@ -1,4 +1,4 @@
1
- import { i, _ as __decorate, n, P as PeacockComponent, a as i$1, b } from './PeacockComponent-CxJc63xj.js';
1
+ import { i, _ as __decorate, n, I as IndividualComponent, a as i$1, b } from './IndividualComponent-tDnXrOLV.js';
2
2
 
3
3
  class ClockController {
4
4
  constructor(host, timeout = 1000) {
@@ -44,19 +44,18 @@ var css_248z = i`* {
44
44
 
45
45
  /**
46
46
  * @label Clock
47
- * @tag base-clock
47
+ * @tag wc-clock
48
48
  * @rawTag clock
49
- *
50
49
  * @summary Displays the current time in a given timezone.
51
50
  * @overview
52
51
  * - Clocks are used to display the current time in a specified timezone.
53
52
  * - They can be displayed in various formats, including 12-hour and 24-hour time.
53
+ * @tags display
54
54
  *
55
55
  * @example
56
56
  * ```html
57
- * <base-clock></base-clock>
57
+ * <wc-clock></wc-clock>
58
58
  * ```
59
- * @tags display
60
59
  */
61
60
  let Clock = class Clock extends i$1 {
62
61
  constructor() {
@@ -78,7 +77,7 @@ __decorate([
78
77
  n()
79
78
  ], Clock.prototype, "timezone", void 0);
80
79
  Clock = __decorate([
81
- PeacockComponent
80
+ IndividualComponent
82
81
  ], Clock);
83
82
 
84
83
  export { Clock };
package/dist/clock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"clock.js","sources":["../../src/clock/ClockController.ts","../../src/clock/clock.ts"],"sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\n\nexport class ClockController implements ReactiveController {\n host: ReactiveControllerHost;\n\n value = new Date();\n\n timeout: number;\n\n private _timerID?: any;\n\n constructor(host: ReactiveControllerHost, timeout = 1000) {\n this.host = host;\n this.host.addController(this);\n this.timeout = timeout;\n }\n\n hostConnected() {\n // Start a timer when the host is connected\n this._timerID = setInterval(() => {\n this.value = new Date();\n // Update the host with new value\n this.host.requestUpdate();\n }, this.timeout);\n }\n\n hostDisconnected() {\n // Clear the timer when the host is disconnected\n clearInterval(this._timerID);\n this._timerID = undefined;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport PeacockComponent from 'src/PeacockComponent.js';\nimport { ClockController } from './ClockController.js';\n\nimport styles from './clock.scss';\n\n/**\n * @label Clock\n * @tag base-clock\n * @rawTag clock\n *\n * @summary Displays the current time in a given timezone.\n * @overview\n * - Clocks are used to display the current time in a specified timezone.\n * - They can be displayed in various formats, including 12-hour and 24-hour time.\n *\n * @example\n * ```html\n * <base-clock></base-clock>\n * ```\n * @tags display\n */\n@PeacockComponent\nexport class Clock extends LitElement {\n static styles = [styles];\n\n clockController = new ClockController(this, 100);\n\n @property() timezone?: string;\n\n __formatDate(date: Date) {\n return date.toLocaleTimeString('en-US', {\n timeZone: this.timezone,\n });\n }\n\n render() {\n const currentDate = this.__formatDate(this.clockController.value);\n return html`<div class=\"current-time\">${currentDate}</div>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":";;MAEa,eAAe,CAAA;AAS1B,IAAA,WAAA,CAAY,IAA4B,EAAE,OAAO,GAAG,IAAI,EAAA;AANxD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,IAAI,EAAE;AAOhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAEA,aAAa,GAAA;;AAEX,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC3B,QAAA,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;IAClB;IAEA,gBAAgB,GAAA;;AAEd,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;AACD;;;;;;;;;;;;;;;;;;;;;;ACxBD;;;;;;;;;;;;;;;AAeG;AAEI,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQA,GAAU,CAAA;AAA9B,IAAA,WAAA,GAAA;;QAGL,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;IAclD;AAVE,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACjE,QAAA,OAAOC,CAAI,CAAA,CAAA,0BAAA,EAA6B,WAAW,QAAQ;IAC7D;;AAfO,KAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAIZ,UAAA,CAAA;AAAX,IAAAC,CAAQ;AAAqB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AALnB,KAAK,GAAA,UAAA,CAAA;IADjB;AACY,CAAA,EAAA,KAAK,CAiBjB;;;;"}
1
+ {"version":3,"file":"clock.js","sources":["../../src/clock/ClockController.ts","../../src/clock/clock.ts"],"sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\n\nexport class ClockController implements ReactiveController {\n host: ReactiveControllerHost;\n\n value = new Date();\n\n timeout: number;\n\n private _timerID?: any;\n\n constructor(host: ReactiveControllerHost, timeout = 1000) {\n this.host = host;\n this.host.addController(this);\n this.timeout = timeout;\n }\n\n hostConnected() {\n // Start a timer when the host is connected\n this._timerID = setInterval(() => {\n this.value = new Date();\n // Update the host with new value\n this.host.requestUpdate();\n }, this.timeout);\n }\n\n hostDisconnected() {\n // Clear the timer when the host is disconnected\n clearInterval(this._timerID);\n this._timerID = undefined;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport IndividualComponent from 'src/IndividualComponent.js';\nimport { ClockController } from './ClockController.js';\n\nimport styles from './clock.scss';\n\n/**\n * @label Clock\n * @tag wc-clock\n * @rawTag clock\n * @summary Displays the current time in a given timezone.\n * @overview\n * - Clocks are used to display the current time in a specified timezone.\n * - They can be displayed in various formats, including 12-hour and 24-hour time.\n * @tags display\n *\n * @example\n * ```html\n * <wc-clock></wc-clock>\n * ```\n */\n@IndividualComponent\nexport class Clock extends LitElement {\n static styles = [styles];\n\n clockController = new ClockController(this, 100);\n\n @property() timezone?: string;\n\n __formatDate(date: Date) {\n return date.toLocaleTimeString('en-US', {\n timeZone: this.timezone,\n });\n }\n\n render() {\n const currentDate = this.__formatDate(this.clockController.value);\n return html`<div class=\"current-time\">${currentDate}</div>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":";;MAEa,eAAe,CAAA;AAS1B,IAAA,WAAA,CAAY,IAA4B,EAAE,OAAO,GAAG,IAAI,EAAA;AANxD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,IAAI,EAAE;AAOhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;IACxB;IAEA,aAAa,GAAA;;AAEX,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC3B,QAAA,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;IAClB;IAEA,gBAAgB,GAAA;;AAEd,QAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;AACD;;;;;;;;;;;;;;;;;;;;;;ACxBD;;;;;;;;;;;;;;AAcG;AAEI,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQA,GAAU,CAAA;AAA9B,IAAA,WAAA,GAAA;;QAGL,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;IAclD;AAVE,IAAA,YAAY,CAAC,IAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACjE,QAAA,OAAOC,CAAI,CAAA,CAAA,0BAAA,EAA6B,WAAW,QAAQ;IAC7D;;AAfO,KAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAIZ,UAAA,CAAA;AAAX,IAAAC,CAAQ;AAAqB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AALnB,KAAK,GAAA,UAAA,CAAA;IADjB;AACY,CAAA,EAAA,KAAK,CAiBjB;;;;"}
@@ -1,8 +1,9 @@
1
- import { i, _ as __decorate, n, P as PeacockComponent, A, b } from './PeacockComponent-CxJc63xj.js';
2
- import { r } from './state-B09bP3XH.js';
3
- import { e, a as isDarkMode, r as redispatchEvent } from './dispatch-event-utils-vbdiOSeC.js';
4
- import { e as e$1 } from './class-map-BvQRv7eW.js';
5
- import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-NneLARW8.js';
1
+ import { i, _ as __decorate, n, I as IndividualComponent, A, b } from './IndividualComponent-tDnXrOLV.js';
2
+ import { r } from './state-8v48Exzh.js';
3
+ import { e } from './query-QBcUV-L_.js';
4
+ import { e as e$1 } from './class-map-DpeNtqCn.js';
5
+ import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-BISF-Gl5.js';
6
+ import { a as isDarkMode, r as redispatchEvent } from './dispatch-event-utils-B4odODQf.js';
6
7
  import './directive-Cuw6h7YA.js';
7
8
 
8
9
  // src/util.ts
@@ -43650,8 +43651,7 @@ var css_248z = i`@charset "UTF-8";
43650
43651
  :host {
43651
43652
  display: block;
43652
43653
  height: 100%;
43653
- --code-editor-border: 1px solid var(--color-outline);
43654
- --code-editor-border-radius: var(--shape-corner-small);
43654
+ --code-editor-height: 300px;
43655
43655
  }
43656
43656
 
43657
43657
  .code-editor-loader {
@@ -43670,11 +43670,10 @@ var css_248z = i`@charset "UTF-8";
43670
43670
  display: block;
43671
43671
  height: 100%;
43672
43672
  position: relative;
43673
- --field-height: 300px;
43674
- min-height: 5rem;
43673
+ --field-height: var(--code-editor-height);
43675
43674
  }
43676
43675
  .code-editor-component .editor {
43677
- height: var(--field-height);
43676
+ height: var(--code-editor-height);
43678
43677
  }
43679
43678
  .code-editor-component .monaco-editor {
43680
43679
  --vscode-editor-background: transparent;
@@ -43688,6 +43687,18 @@ var css_248z = i`@charset "UTF-8";
43688
43687
  top: var(--spacing-200);
43689
43688
  }`;
43690
43689
 
43690
+ /**
43691
+ * @label Code Editor
43692
+ * @tag wc-code-editor
43693
+ * @rawTag code-editor
43694
+ * @summary A code editor component using Monaco Editor.
43695
+ * @tags input
43696
+ *
43697
+ * @example
43698
+ * ```html
43699
+ * <wc-code-editor language="javascript"></wc-code-editor>
43700
+ * ```
43701
+ */
43691
43702
  // At module level, outside the class
43692
43703
  // @ts-ignore
43693
43704
  // At module level, outside the class
@@ -43709,20 +43720,22 @@ self.MonacoEnvironment = {
43709
43720
  * @tag code-editor
43710
43721
  * @rawTag code-editor
43711
43722
  *
43712
- * @summary Code editor
43723
+ * @summary A Monaco-based code editing component with syntax highlighting and theming.
43713
43724
  * @overview
43714
- * - CodeHighlighter is a component that provides syntax highlighting for code snippets.
43715
- * - It supports various programming languages and can display line numbers for better readability.
43725
+ * - CodeEditor wraps Monaco Editor as a web component.
43726
+ * - Supports JS/JSON/HTML languages, read-only mode, line numbers, minimap, and dark/light theme.
43727
+ * - Emits `change` when content is edited and updates value from property changes.
43716
43728
  *
43717
43729
  * @example
43718
43730
  * ```html
43719
- * <code-highlighter language="javascript" style="height: 9rem"><pre><code>
43720
- * function helloWorld() {
43721
- * console.log('Hello, world!');
43722
- * }</code></pre>
43723
- * </code-highlighter>
43731
+ * <code-editor
43732
+ * language="javascript"
43733
+ * value="function hello() { console.log('Hello'); }"
43734
+ * lineNumbers="on"
43735
+ * minimap="false">
43736
+ * </code-editor>
43724
43737
  * ```
43725
- * @tags display
43738
+ * @tags input, editor
43726
43739
  */
43727
43740
  let CodeEditor = class CodeEditor extends BaseInput {
43728
43741
  constructor() {
@@ -43812,7 +43825,7 @@ let CodeEditor = class CodeEditor extends BaseInput {
43812
43825
  async setBlur() { this.editorMonacoInstance?.trigger('keyboard', 'type', ''); /* Focus hack or use blur if available */ }
43813
43826
  render() {
43814
43827
  return b `
43815
- <base-field
43828
+ <wc-field
43816
43829
  ?required=${this.required}
43817
43830
  ?disabled=${this.disabled}
43818
43831
  ?readonly=${this.readonly}
@@ -43825,15 +43838,15 @@ let CodeEditor = class CodeEditor extends BaseInput {
43825
43838
  })}"
43826
43839
  >
43827
43840
  ${(this.disabled || this.readonly)
43828
- ? b `<base-tag class="read-only-tag" color="red">Read Only</base-tag>`
43841
+ ? b `<wc-tag class="read-only-tag" color="red">Read Only</wc-tag>`
43829
43842
  : A}
43830
43843
  <div class="editor"></div>
43831
43844
  ${!this.editorMonacoInstance ? b `
43832
43845
  <div class="code-editor-loader">
43833
- <base-spinner></base-spinner> Loading...
43846
+ <wc-spinner></wc-spinner> Loading...
43834
43847
  </div>
43835
43848
  ` : A}
43836
- </base-field>
43849
+ </wc-field>
43837
43850
  `;
43838
43851
  }
43839
43852
  };
@@ -43869,7 +43882,7 @@ __decorate([
43869
43882
  e('.editor')
43870
43883
  ], CodeEditor.prototype, "editorElement", void 0);
43871
43884
  CodeEditor = __decorate([
43872
- PeacockComponent
43885
+ IndividualComponent
43873
43886
  ], CodeEditor);
43874
43887
  var CodeEditor_default = CodeEditor;
43875
43888