@internetarchive/histogram-date-range 1.3.2 → 1.4.0-alpha-webdev7756.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 (31) hide show
  1. package/demo/index.html +9 -2
  2. package/demo/js/{app-root.ts → lit-histogram-wrapper.ts} +20 -4
  3. package/dist/demo/js/app-root.d.ts +2 -1
  4. package/dist/demo/js/app-root.js +20 -19
  5. package/dist/demo/js/app-root.js.map +1 -1
  6. package/dist/demo/js/list-histogram-wrapper.d.ts +20 -0
  7. package/dist/demo/js/list-histogram-wrapper.js +59 -0
  8. package/dist/demo/js/list-histogram-wrapper.js.map +1 -0
  9. package/dist/demo/js/lit-histogram-wrapper.d.ts +21 -0
  10. package/dist/demo/js/lit-histogram-wrapper.js +73 -0
  11. package/dist/demo/js/lit-histogram-wrapper.js.map +1 -0
  12. package/dist/src/histogram-date-range.d.ts +18 -0
  13. package/dist/src/histogram-date-range.js +282 -242
  14. package/dist/src/histogram-date-range.js.map +1 -1
  15. package/dist/test/histogram-date-range.test.js +202 -178
  16. package/dist/test/histogram-date-range.test.js.map +1 -1
  17. package/docs/demo/index.html +9 -2
  18. package/docs/dist/demo/js/{app-root.js → lit-histogram-wrapper.js} +22 -7
  19. package/docs/dist/src/histogram-date-range.js +34 -11
  20. package/package.json +1 -1
  21. package/src/histogram-date-range.ts +1152 -1110
  22. package/test/histogram-date-range.test.ts +966 -935
  23. package/dist/src/dayjs/fix-first-century-years.d.ts +0 -2
  24. package/dist/src/dayjs/fix-first-century-years.js +0 -25
  25. package/dist/src/dayjs/fix-first-century-years.js.map +0 -1
  26. package/dist/src/dayjs/fix-two-digit-dates.d.ts +0 -2
  27. package/dist/src/dayjs/fix-two-digit-dates.js +0 -25
  28. package/dist/src/dayjs/fix-two-digit-dates.js.map +0 -1
  29. package/dist/src/histogram-date-range copy.d.ts +0 -214
  30. package/dist/src/histogram-date-range copy.js +0 -1018
  31. package/dist/src/histogram-date-range copy.js.map +0 -1
package/demo/index.html CHANGED
@@ -9,7 +9,7 @@
9
9
  <script type="module">
10
10
  import '../dist/src/histogram-date-range.js';
11
11
  let eventCount = 0;
12
- import '../dist/demo/js/app-root.js';
12
+ import '../dist/demo/js/lit-histogram-wrapper.js';
13
13
  // listen to events from the component and display the data received from them
14
14
  document.addEventListener('histogramDateRangeUpdated', e => {
15
15
  document.querySelector('.received-events').innerHTML =
@@ -22,7 +22,14 @@
22
22
  <div class="description">
23
23
  histogram inside a lit element
24
24
  </div>
25
- <app-root></app-root>
25
+ <lit-histogram-wrapper></lit-histogram-wrapper>
26
+
27
+ <div class="description">
28
+ bars scaled linearly (not logarithmic)
29
+ </div>
30
+ <lit-histogram-wrapper
31
+ barScaling="linear"
32
+ ></lit-histogram-wrapper>
26
33
 
27
34
  <div class="description">
28
35
  pre-selected range with 1000ms debounce delay
@@ -1,5 +1,5 @@
1
- import { LitElement, html, TemplateResult } from 'lit';
2
- import { customElement, state } from 'lit/decorators.js';
1
+ import { LitElement, html, css, TemplateResult, nothing } from 'lit';
2
+ import { customElement, property, state } from 'lit/decorators.js';
3
3
  import '../../src/histogram-date-range';
4
4
 
5
5
  interface DataSource {
@@ -10,12 +10,16 @@ interface DataSource {
10
10
  bins: number[];
11
11
  }
12
12
 
13
+ const IDENTITY_FN = (x: number) => x;
14
+
13
15
  /**
14
16
  * This is mainly to test the histogram-date-range within
15
17
  * a lit-element.
16
18
  */
17
- @customElement('app-root')
18
- export class AppRoot extends LitElement {
19
+ @customElement('lit-histogram-wrapper')
20
+ export class LitHistogramWrapper extends LitElement {
21
+ @property({ type: String }) barScaling?: 'linear' | 'logarithmic';
22
+
19
23
  @state() dataSource: DataSource = {
20
24
  minDate: 1955,
21
25
  maxDate: 2000,
@@ -27,6 +31,7 @@ export class AppRoot extends LitElement {
27
31
  };
28
32
 
29
33
  render(): TemplateResult {
34
+ const scalingFn = this.barScaling === 'linear' ? IDENTITY_FN : nothing;
30
35
  return html`
31
36
  <histogram-date-range
32
37
  .minDate=${this.dataSource?.minDate}
@@ -35,6 +40,7 @@ export class AppRoot extends LitElement {
35
40
  .maxSelectedDate=${this.dataSource?.maxSelectedDate}
36
41
  .updateDelay=${1000}
37
42
  .bins=${this.dataSource?.bins}
43
+ .barScalingFunction=${scalingFn}
38
44
  ></histogram-date-range>
39
45
 
40
46
  <button @click=${this.randomize}>Randomize</button>
@@ -56,4 +62,14 @@ export class AppRoot extends LitElement {
56
62
  bins: bins,
57
63
  };
58
64
  }
65
+
66
+ static get styles() {
67
+ return css`
68
+ :host {
69
+ display: flex;
70
+ flex-direction: column;
71
+ align-items: center;
72
+ }
73
+ `;
74
+ }
59
75
  }
@@ -6,12 +6,13 @@ interface DataSource {
6
6
  minSelectedDate: unknown;
7
7
  maxSelectedDate: unknown;
8
8
  bins: number[];
9
+ barScalingFunction?: (input: number) => number;
9
10
  }
10
11
  /**
11
12
  * This is mainly to test the histogram-date-range within
12
13
  * a lit-element.
13
14
  */
14
- export declare class AppRoot extends LitElement {
15
+ export declare class LitHistogramWrapper extends LitElement {
15
16
  dataSource: DataSource;
16
17
  render(): TemplateResult;
17
18
  private randomize;
@@ -1,12 +1,12 @@
1
1
  import { __decorate } from "tslib";
2
- import { LitElement, html } from 'lit';
2
+ import { LitElement, html, nothing } from 'lit';
3
3
  import { customElement, state } from 'lit/decorators.js';
4
4
  import '../../src/histogram-date-range';
5
5
  /**
6
6
  * This is mainly to test the histogram-date-range within
7
7
  * a lit-element.
8
8
  */
9
- let AppRoot = class AppRoot extends LitElement {
9
+ let LitHistogramWrapper = class LitHistogramWrapper extends LitElement {
10
10
  constructor() {
11
11
  super(...arguments);
12
12
  this.dataSource = {
@@ -20,18 +20,19 @@ let AppRoot = class AppRoot extends LitElement {
20
20
  };
21
21
  }
22
22
  render() {
23
- var _a, _b, _c, _d, _e;
24
- return html `
25
- <histogram-date-range
26
- .minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
27
- .maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
28
- .minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
29
- .maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
30
- .updateDelay=${1000}
31
- .bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
32
- ></histogram-date-range>
33
-
34
- <button @click=${this.randomize}>Randomize</button>
23
+ var _a, _b, _c, _d, _e, _f, _g;
24
+ return html `
25
+ <histogram-date-range
26
+ .minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
27
+ .maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
28
+ .minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
29
+ .maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
30
+ .updateDelay=${1000}
31
+ .bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
32
+ .barScalingFunction=${(_g = (_f = this.dataSource) === null || _f === void 0 ? void 0 : _f.barScalingFunction) !== null && _g !== void 0 ? _g : nothing}
33
+ ></histogram-date-range>
34
+
35
+ <button @click=${this.randomize}>Randomize</button>
35
36
  `;
36
37
  }
37
38
  randomize() {
@@ -50,9 +51,9 @@ let AppRoot = class AppRoot extends LitElement {
50
51
  };
51
52
  __decorate([
52
53
  state()
53
- ], AppRoot.prototype, "dataSource", void 0);
54
- AppRoot = __decorate([
55
- customElement('app-root')
56
- ], AppRoot);
57
- export { AppRoot };
54
+ ], LitHistogramWrapper.prototype, "dataSource", void 0);
55
+ LitHistogramWrapper = __decorate([
56
+ customElement('lit-histogram-wrapper')
57
+ ], LitHistogramWrapper);
58
+ export { LitHistogramWrapper };
58
59
  //# sourceMappingURL=app-root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../../demo/js/app-root.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,gCAAgC,CAAC;AAUxC;;;GAGG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,UAAU;IAAhC;;QACI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IAgCJ,CAAC;IA9BC,MAAM;;QACJ,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;;;uBAGd,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF,CAAA;AAxCU;IAAR,KAAK,EAAE;2CAQN;AATS,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAyCnB","sourcesContent":["import { LitElement, html, TemplateResult } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport '../../src/histogram-date-range';\n\ninterface DataSource {\n minDate: unknown;\n maxDate: unknown;\n minSelectedDate: unknown;\n maxSelectedDate: unknown;\n bins: number[];\n}\n\n/**\n * This is mainly to test the histogram-date-range within\n * a lit-element.\n */\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n @state() dataSource: DataSource = {\n minDate: 1955,\n maxDate: 2000,\n minSelectedDate: 1955,\n maxSelectedDate: 2000,\n bins: [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n ],\n };\n\n render(): TemplateResult {\n return html`\n <histogram-date-range\n .minDate=${this.dataSource?.minDate}\n .maxDate=${this.dataSource?.maxDate}\n .minSelectedDate=${this.dataSource?.minSelectedDate}\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\n .updateDelay=${1000}\n .bins=${this.dataSource?.bins}\n ></histogram-date-range>\n\n <button @click=${this.randomize}>Randomize</button>\n `;\n }\n\n private randomize() {\n const minDate = Math.round(Math.random() * 1000);\n const maxDate = minDate + Math.round(Math.random() * 1000);\n // generate random bins\n const bins = Array.from({ length: 20 }, () =>\n Math.floor(Math.random() * minDate)\n );\n this.dataSource = {\n minDate,\n maxDate,\n minSelectedDate: minDate,\n maxSelectedDate: maxDate,\n bins: bins,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../../demo/js/app-root.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,gCAAgC,CAAC;AAWxC;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QACI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IAiCJ,CAAC;IA/BC,MAAM;;QACJ,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;8BACP,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,kBAAkB,mCAAI,OAAO;;;uBAGrD,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF,CAAA;AAzCU;IAAR,KAAK,EAAE;uDAQN;AATS,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CA0C/B","sourcesContent":["import { LitElement, html, TemplateResult, nothing } from 'lit';\r\nimport { customElement, state } from 'lit/decorators.js';\r\nimport '../../src/histogram-date-range';\r\n\r\ninterface DataSource {\r\n minDate: unknown;\r\n maxDate: unknown;\r\n minSelectedDate: unknown;\r\n maxSelectedDate: unknown;\r\n bins: number[];\r\n barScalingFunction?: (input: number) => number;\r\n}\r\n\r\n/**\r\n * This is mainly to test the histogram-date-range within\r\n * a lit-element.\r\n */\r\n@customElement('lit-histogram-wrapper')\r\nexport class LitHistogramWrapper extends LitElement {\r\n @state() dataSource: DataSource = {\r\n minDate: 1955,\r\n maxDate: 2000,\r\n minSelectedDate: 1955,\r\n maxSelectedDate: 2000,\r\n bins: [\r\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\r\n ],\r\n };\r\n\r\n render(): TemplateResult {\r\n return html`\r\n <histogram-date-range\r\n .minDate=${this.dataSource?.minDate}\r\n .maxDate=${this.dataSource?.maxDate}\r\n .minSelectedDate=${this.dataSource?.minSelectedDate}\r\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\r\n .updateDelay=${1000}\r\n .bins=${this.dataSource?.bins}\r\n .barScalingFunction=${this.dataSource?.barScalingFunction ?? nothing}\r\n ></histogram-date-range>\r\n\r\n <button @click=${this.randomize}>Randomize</button>\r\n `;\r\n }\r\n\r\n private randomize() {\r\n const minDate = Math.round(Math.random() * 1000);\r\n const maxDate = minDate + Math.round(Math.random() * 1000);\r\n // generate random bins\r\n const bins = Array.from({ length: 20 }, () =>\r\n Math.floor(Math.random() * minDate)\r\n );\r\n this.dataSource = {\r\n minDate,\r\n maxDate,\r\n minSelectedDate: minDate,\r\n maxSelectedDate: maxDate,\r\n bins: bins,\r\n };\r\n }\r\n}\r\n"]}
@@ -0,0 +1,20 @@
1
+ import { LitElement, TemplateResult } from 'lit';
2
+ import '../../src/histogram-date-range';
3
+ interface DataSource {
4
+ minDate: unknown;
5
+ maxDate: unknown;
6
+ minSelectedDate: unknown;
7
+ maxSelectedDate: unknown;
8
+ bins: number[];
9
+ barScalingFunction?: (input: number) => number;
10
+ }
11
+ /**
12
+ * This is mainly to test the histogram-date-range within
13
+ * a lit-element.
14
+ */
15
+ export declare class LitHistogramWrapper extends LitElement {
16
+ dataSource: DataSource;
17
+ render(): TemplateResult;
18
+ private randomize;
19
+ }
20
+ export {};
@@ -0,0 +1,59 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, nothing } from 'lit';
3
+ import { customElement, state } from 'lit/decorators.js';
4
+ import '../../src/histogram-date-range';
5
+ /**
6
+ * This is mainly to test the histogram-date-range within
7
+ * a lit-element.
8
+ */
9
+ let LitHistogramWrapper = class LitHistogramWrapper extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.dataSource = {
13
+ minDate: 1955,
14
+ maxDate: 2000,
15
+ minSelectedDate: 1955,
16
+ maxSelectedDate: 2000,
17
+ bins: [
18
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
19
+ ],
20
+ };
21
+ }
22
+ render() {
23
+ var _a, _b, _c, _d, _e, _f, _g;
24
+ return html `
25
+ <histogram-date-range
26
+ .minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
27
+ .maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
28
+ .minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
29
+ .maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
30
+ .updateDelay=${1000}
31
+ .bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
32
+ .barScalingFunction=${(_g = (_f = this.dataSource) === null || _f === void 0 ? void 0 : _f.barScalingFunction) !== null && _g !== void 0 ? _g : nothing}
33
+ ></histogram-date-range>
34
+
35
+ <button @click=${this.randomize}>Randomize</button>
36
+ `;
37
+ }
38
+ randomize() {
39
+ const minDate = Math.round(Math.random() * 1000);
40
+ const maxDate = minDate + Math.round(Math.random() * 1000);
41
+ // generate random bins
42
+ const bins = Array.from({ length: 20 }, () => Math.floor(Math.random() * minDate));
43
+ this.dataSource = {
44
+ minDate,
45
+ maxDate,
46
+ minSelectedDate: minDate,
47
+ maxSelectedDate: maxDate,
48
+ bins: bins,
49
+ };
50
+ }
51
+ };
52
+ __decorate([
53
+ state()
54
+ ], LitHistogramWrapper.prototype, "dataSource", void 0);
55
+ LitHistogramWrapper = __decorate([
56
+ customElement('lit-histogram-wrapper')
57
+ ], LitHistogramWrapper);
58
+ export { LitHistogramWrapper };
59
+ //# sourceMappingURL=list-histogram-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-histogram-wrapper.js","sourceRoot":"","sources":["../../../demo/js/list-histogram-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,gCAAgC,CAAC;AAWxC;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QACI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IAiCJ,CAAC;IA/BC,MAAM;;QACJ,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;8BACP,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,kBAAkB,mCAAI,OAAO;;;uBAGrD,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;CACF,CAAA;AAzCU;IAAR,KAAK,EAAE;uDAQN;AATS,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CA0C/B","sourcesContent":["import { LitElement, html, TemplateResult, nothing } from 'lit';\r\nimport { customElement, state } from 'lit/decorators.js';\r\nimport '../../src/histogram-date-range';\r\n\r\ninterface DataSource {\r\n minDate: unknown;\r\n maxDate: unknown;\r\n minSelectedDate: unknown;\r\n maxSelectedDate: unknown;\r\n bins: number[];\r\n barScalingFunction?: (input: number) => number;\r\n}\r\n\r\n/**\r\n * This is mainly to test the histogram-date-range within\r\n * a lit-element.\r\n */\r\n@customElement('lit-histogram-wrapper')\r\nexport class LitHistogramWrapper extends LitElement {\r\n @state() dataSource: DataSource = {\r\n minDate: 1955,\r\n maxDate: 2000,\r\n minSelectedDate: 1955,\r\n maxSelectedDate: 2000,\r\n bins: [\r\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\r\n ],\r\n };\r\n\r\n render(): TemplateResult {\r\n return html`\r\n <histogram-date-range\r\n .minDate=${this.dataSource?.minDate}\r\n .maxDate=${this.dataSource?.maxDate}\r\n .minSelectedDate=${this.dataSource?.minSelectedDate}\r\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\r\n .updateDelay=${1000}\r\n .bins=${this.dataSource?.bins}\r\n .barScalingFunction=${this.dataSource?.barScalingFunction ?? nothing}\r\n ></histogram-date-range>\r\n\r\n <button @click=${this.randomize}>Randomize</button>\r\n `;\r\n }\r\n\r\n private randomize() {\r\n const minDate = Math.round(Math.random() * 1000);\r\n const maxDate = minDate + Math.round(Math.random() * 1000);\r\n // generate random bins\r\n const bins = Array.from({ length: 20 }, () =>\r\n Math.floor(Math.random() * minDate)\r\n );\r\n this.dataSource = {\r\n minDate,\r\n maxDate,\r\n minSelectedDate: minDate,\r\n maxSelectedDate: maxDate,\r\n bins: bins,\r\n };\r\n }\r\n}\r\n"]}
@@ -0,0 +1,21 @@
1
+ import { LitElement, TemplateResult } from 'lit';
2
+ import '../../src/histogram-date-range';
3
+ interface DataSource {
4
+ minDate: unknown;
5
+ maxDate: unknown;
6
+ minSelectedDate: unknown;
7
+ maxSelectedDate: unknown;
8
+ bins: number[];
9
+ }
10
+ /**
11
+ * This is mainly to test the histogram-date-range within
12
+ * a lit-element.
13
+ */
14
+ export declare class LitHistogramWrapper extends LitElement {
15
+ barScaling?: 'linear' | 'logarithmic';
16
+ dataSource: DataSource;
17
+ render(): TemplateResult;
18
+ private randomize;
19
+ static get styles(): import("lit").CSSResult;
20
+ }
21
+ export {};
@@ -0,0 +1,73 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, css, nothing } from 'lit';
3
+ import { customElement, property, state } from 'lit/decorators.js';
4
+ import '../../src/histogram-date-range';
5
+ const IDENTITY_FN = (x) => x;
6
+ /**
7
+ * This is mainly to test the histogram-date-range within
8
+ * a lit-element.
9
+ */
10
+ let LitHistogramWrapper = class LitHistogramWrapper extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.dataSource = {
14
+ minDate: 1955,
15
+ maxDate: 2000,
16
+ minSelectedDate: 1955,
17
+ maxSelectedDate: 2000,
18
+ bins: [
19
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
20
+ ],
21
+ };
22
+ }
23
+ render() {
24
+ var _a, _b, _c, _d, _e;
25
+ const scalingFn = this.barScaling === 'linear' ? IDENTITY_FN : nothing;
26
+ return html `
27
+ <histogram-date-range
28
+ .minDate=${(_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.minDate}
29
+ .maxDate=${(_b = this.dataSource) === null || _b === void 0 ? void 0 : _b.maxDate}
30
+ .minSelectedDate=${(_c = this.dataSource) === null || _c === void 0 ? void 0 : _c.minSelectedDate}
31
+ .maxSelectedDate=${(_d = this.dataSource) === null || _d === void 0 ? void 0 : _d.maxSelectedDate}
32
+ .updateDelay=${1000}
33
+ .bins=${(_e = this.dataSource) === null || _e === void 0 ? void 0 : _e.bins}
34
+ .barScalingFunction=${scalingFn}
35
+ ></histogram-date-range>
36
+
37
+ <button @click=${this.randomize}>Randomize</button>
38
+ `;
39
+ }
40
+ randomize() {
41
+ const minDate = Math.round(Math.random() * 1000);
42
+ const maxDate = minDate + Math.round(Math.random() * 1000);
43
+ // generate random bins
44
+ const bins = Array.from({ length: 20 }, () => Math.floor(Math.random() * minDate));
45
+ this.dataSource = {
46
+ minDate,
47
+ maxDate,
48
+ minSelectedDate: minDate,
49
+ maxSelectedDate: maxDate,
50
+ bins: bins,
51
+ };
52
+ }
53
+ static get styles() {
54
+ return css `
55
+ :host {
56
+ display: flex;
57
+ flex-direction: column;
58
+ align-items: center;
59
+ }
60
+ `;
61
+ }
62
+ };
63
+ __decorate([
64
+ property({ type: String })
65
+ ], LitHistogramWrapper.prototype, "barScaling", void 0);
66
+ __decorate([
67
+ state()
68
+ ], LitHistogramWrapper.prototype, "dataSource", void 0);
69
+ LitHistogramWrapper = __decorate([
70
+ customElement('lit-histogram-wrapper')
71
+ ], LitHistogramWrapper);
72
+ export { LitHistogramWrapper };
73
+ //# sourceMappingURL=lit-histogram-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lit-histogram-wrapper.js","sourceRoot":"","sources":["../../../demo/js/lit-histogram-wrapper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,gCAAgC,CAAC;AAUxC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAErC;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IAA5C;;QAGI,eAAU,GAAe;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE;gBACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;aACtE;SACF,CAAC;IA4CJ,CAAC;IA1CC,MAAM;;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,OAAO,IAAI,CAAA;;mBAEI,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;mBACxB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO;2BAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;2BAChC,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe;uBACpC,IAAI;gBACX,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI;8BACP,SAAS;;;uBAGhB,IAAI,CAAC,SAAS;KAChC,CAAC;IACJ,CAAC;IAEO,SAAS;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3D,uBAAuB;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YAChB,OAAO;YACP,OAAO;YACP,eAAe,EAAE,OAAO;YACxB,eAAe,EAAE,OAAO;YACxB,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;KAMT,CAAC;IACJ,CAAC;CACF,CAAA;AAtD6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAuC;AAEzD;IAAR,KAAK,EAAE;uDAQN;AAXS,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CAuD/B","sourcesContent":["import { LitElement, html, css, TemplateResult, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../src/histogram-date-range';\n\ninterface DataSource {\n minDate: unknown;\n maxDate: unknown;\n minSelectedDate: unknown;\n maxSelectedDate: unknown;\n bins: number[];\n}\n\nconst IDENTITY_FN = (x: number) => x;\n\n/**\n * This is mainly to test the histogram-date-range within\n * a lit-element.\n */\n@customElement('lit-histogram-wrapper')\nexport class LitHistogramWrapper extends LitElement {\n @property({ type: String }) barScaling?: 'linear' | 'logarithmic';\n\n @state() dataSource: DataSource = {\n minDate: 1955,\n maxDate: 2000,\n minSelectedDate: 1955,\n maxSelectedDate: 2000,\n bins: [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n ],\n };\n\n render(): TemplateResult {\n const scalingFn = this.barScaling === 'linear' ? IDENTITY_FN : nothing;\n return html`\n <histogram-date-range\n .minDate=${this.dataSource?.minDate}\n .maxDate=${this.dataSource?.maxDate}\n .minSelectedDate=${this.dataSource?.minSelectedDate}\n .maxSelectedDate=${this.dataSource?.maxSelectedDate}\n .updateDelay=${1000}\n .bins=${this.dataSource?.bins}\n .barScalingFunction=${scalingFn}\n ></histogram-date-range>\n\n <button @click=${this.randomize}>Randomize</button>\n `;\n }\n\n private randomize() {\n const minDate = Math.round(Math.random() * 1000);\n const maxDate = minDate + Math.round(Math.random() * 1000);\n // generate random bins\n const bins = Array.from({ length: 20 }, () =>\n Math.floor(Math.random() * minDate)\n );\n this.dataSource = {\n minDate,\n maxDate,\n minSelectedDate: minDate,\n maxSelectedDate: maxDate,\n bins: bins,\n };\n }\n\n static get styles() {\n return css`\n :host {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n `;\n }\n}\n"]}
@@ -28,6 +28,24 @@ export declare class HistogramDateRange extends LitElement {
28
28
  * - `year`: Same as `month`, but snapping to year boundaries instead of months.
29
29
  */
30
30
  binSnapping: BinSnappingInterval;
31
+ /**
32
+ * What label to use on tooltips to identify the type of data being represented.
33
+ * Defaults to `'item(s)'`.
34
+ */
35
+ tooltipLabel: string;
36
+ /**
37
+ * A function mapping bin values to a new value that determines how tall each bar will
38
+ * be in relation to the others.
39
+ *
40
+ * Default sizing function is the logarithm of the bin value, yielding more prominent
41
+ * bars for smaller values, at the cost of bars not being directly proportional to their
42
+ * values and having relatively smooth variation among values of a similar magnitude.
43
+ * This ensures that when the difference between the min and max values is large, small
44
+ * values are not as liable to completely disappear visually.
45
+ *
46
+ * For linearly-scaled bars, set this to the identity function.
47
+ */
48
+ barScalingFunction: (binValue: number) => number;
31
49
  private _tooltipOffsetX;
32
50
  private _tooltipOffsetY;
33
51
  private _tooltipContent?;