@cloudscape-design/components 3.0.189 → 3.0.191

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 (92) hide show
  1. package/app-layout/drawer.d.ts +1 -4
  2. package/app-layout/drawer.d.ts.map +1 -1
  3. package/app-layout/drawer.js +4 -13
  4. package/app-layout/drawer.js.map +1 -1
  5. package/app-layout/index.d.ts.map +1 -1
  6. package/app-layout/index.js +4 -15
  7. package/app-layout/index.js.map +1 -1
  8. package/app-layout/mobile-toolbar/index.js +3 -3
  9. package/app-layout/mobile-toolbar/index.js.map +1 -1
  10. package/app-layout/navigation-panel.d.ts +1 -3
  11. package/app-layout/navigation-panel.d.ts.map +1 -1
  12. package/app-layout/navigation-panel.js +2 -2
  13. package/app-layout/navigation-panel.js.map +1 -1
  14. package/app-layout/notifications/index.d.ts +0 -4
  15. package/app-layout/notifications/index.d.ts.map +1 -1
  16. package/app-layout/notifications/index.js +1 -2
  17. package/app-layout/notifications/index.js.map +1 -1
  18. package/app-layout/styles.css.js +26 -38
  19. package/app-layout/styles.scoped.css +34 -109
  20. package/app-layout/styles.selectors.js +26 -38
  21. package/app-layout/tools-and-split-panel.d.ts +1 -8
  22. package/app-layout/tools-and-split-panel.d.ts.map +1 -1
  23. package/app-layout/tools-and-split-panel.js +2 -3
  24. package/app-layout/tools-and-split-panel.js.map +1 -1
  25. package/flashbar/collapsible-flashbar.d.ts.map +1 -1
  26. package/flashbar/collapsible-flashbar.js +5 -7
  27. package/flashbar/collapsible-flashbar.js.map +1 -1
  28. package/flashbar/internal/analytics.d.ts.map +1 -1
  29. package/flashbar/internal/analytics.js +5 -3
  30. package/flashbar/internal/analytics.js.map +1 -1
  31. package/flashbar/styles.css.js +43 -43
  32. package/flashbar/styles.scoped.css +146 -139
  33. package/flashbar/styles.selectors.js +43 -43
  34. package/internal/base-component/index.d.ts.map +1 -1
  35. package/internal/base-component/index.js +3 -11
  36. package/internal/base-component/index.js.map +1 -1
  37. package/internal/base-component/init-awsui-versions.d.ts +2 -0
  38. package/internal/base-component/init-awsui-versions.d.ts.map +1 -0
  39. package/internal/base-component/init-awsui-versions.js +15 -0
  40. package/internal/base-component/init-awsui-versions.js.map +1 -0
  41. package/internal/environment.d.ts +1 -0
  42. package/internal/environment.js +2 -1
  43. package/internal/hooks/use-base-component/component-metadata.d.ts +3 -0
  44. package/internal/hooks/use-base-component/component-metadata.d.ts.map +1 -0
  45. package/internal/hooks/use-base-component/component-metadata.js +21 -0
  46. package/internal/hooks/use-base-component/component-metadata.js.map +1 -0
  47. package/internal/hooks/use-base-component/index.d.ts +0 -1
  48. package/internal/hooks/use-base-component/index.d.ts.map +1 -1
  49. package/internal/hooks/use-base-component/index.js +3 -28
  50. package/internal/hooks/use-base-component/index.js.map +1 -1
  51. package/internal/hooks/use-telemetry/index.d.ts.map +1 -1
  52. package/internal/hooks/use-telemetry/index.js +4 -15
  53. package/internal/hooks/use-telemetry/index.js.map +1 -1
  54. package/internal/hooks/use-telemetry/telemetry.d.ts +8 -0
  55. package/internal/hooks/use-telemetry/telemetry.d.ts.map +1 -0
  56. package/internal/hooks/use-telemetry/telemetry.js +20 -0
  57. package/internal/hooks/use-telemetry/telemetry.js.map +1 -0
  58. package/internal/manifest.json +1 -1
  59. package/internal/metrics/index.d.ts +3 -0
  60. package/internal/metrics/index.d.ts.map +1 -0
  61. package/internal/metrics/index.js +5 -0
  62. package/internal/metrics/index.js.map +1 -0
  63. package/internal/metrics/log-clients.d.ts +39 -0
  64. package/internal/metrics/log-clients.d.ts.map +1 -0
  65. package/internal/metrics/log-clients.js +90 -0
  66. package/internal/metrics/log-clients.js.map +1 -0
  67. package/internal/metrics/metrics-formatters.d.ts +7 -0
  68. package/internal/metrics/metrics-formatters.d.ts.map +1 -0
  69. package/internal/metrics/metrics-formatters.js +36 -0
  70. package/internal/metrics/metrics-formatters.js.map +1 -0
  71. package/internal/{metrics.d.ts → metrics/metrics.d.ts} +11 -18
  72. package/internal/metrics/metrics.d.ts.map +1 -0
  73. package/internal/metrics/metrics.js +95 -0
  74. package/internal/metrics/metrics.js.map +1 -0
  75. package/package.json +1 -1
  76. package/property-filter/index.d.ts.map +1 -1
  77. package/property-filter/index.js +1 -1
  78. package/property-filter/index.js.map +1 -1
  79. package/wizard/internal/analytics.d.ts.map +1 -1
  80. package/wizard/internal/analytics.js +5 -3
  81. package/wizard/internal/analytics.js.map +1 -1
  82. package/app-layout/toggle-buttons.d.ts +0 -12
  83. package/app-layout/toggle-buttons.d.ts.map +0 -1
  84. package/app-layout/toggle-buttons.js +0 -13
  85. package/app-layout/toggle-buttons.js.map +0 -1
  86. package/internal/hooks/use-previous-frame/index.d.ts +0 -8
  87. package/internal/hooks/use-previous-frame/index.d.ts.map +0 -1
  88. package/internal/hooks/use-previous-frame/index.js +0 -20
  89. package/internal/hooks/use-previous-frame/index.js.map +0 -1
  90. package/internal/metrics.d.ts.map +0 -1
  91. package/internal/metrics.js +0 -177
  92. package/internal/metrics.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-formatters.js","sourceRoot":"","sources":["../../../../src/internal/metrics/metrics-formatters.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAQtC,2CAA2C;AAC3C,IAAM,SAAS,GAAG,OAAO,CAAC;AAE1B,MAAM,UAAU,eAAe,CAAC,EAAkC;QAAhC,MAAM,YAAA,EAAE,MAAM,YAAA;IAC9C,OAAO,CAAC,aAAM,MAAM,CAAE,EAAE,gBAAS,MAAM,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAA2C,EAAE,KAAa;QAAxD,MAAM,YAAA,EAAE,MAAM,YAAA,EAAE,OAAO,aAAA;IACzD,IAAM,YAAY,GAAG,OAAO,mBAAmB,KAAK,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/F,IAAM,YAAY,GAAG;QACnB,CAAC,EAAE,YAAY;QACf,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,KAAK;QACR,CAAC,EAAE,MAAM;QACT,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,iCAAiC,CAAC,OAAO,CAAC;KAC9C,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAmC,EAAE,KAAa;QAAhD,MAAM,YAAA,EAAE,OAAO,aAAA;IAC/C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAG,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAe;IAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,OAAe;IACvE,OAAO,UAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAG,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAE,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,aAAqB;IAC5C,IAAM,iBAAiB,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7D,OAAO,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { MetricsLogItem } from './log-clients';\n\n// TODO: move to component-toolkit/internal/metrics\n\ndeclare const AWSUI_METRIC_ORIGIN: string | undefined;\n\n// React is the only framework we're using.\nconst framework = 'react';\n\nexport function buildMetricHash({ source, action }: MetricsLogItem): string {\n return [`src${source}`, `action${action}`].join('_');\n}\n\nexport function buildMetricDetail({ source, action, version }: MetricsLogItem, theme: string): string {\n const metricOrigin = typeof AWSUI_METRIC_ORIGIN !== 'undefined' ? AWSUI_METRIC_ORIGIN : 'main';\n const detailObject = {\n o: metricOrigin,\n s: source,\n t: theme,\n a: action,\n f: framework,\n v: formatMajorVersionForMetricDetail(version),\n };\n return JSON.stringify(detailObject);\n}\n\nexport function buildMetricName({ source, version }: MetricsLogItem, theme: string): string {\n return ['awsui', source, `${formatVersionForMetricName(theme, version)}`].join('_');\n}\n\nexport function formatMajorVersionForMetricDetail(version: string) {\n return version.replace(/\\s/g, '');\n}\n\nexport function formatVersionForMetricName(theme: string, version: string) {\n return `${theme.charAt(0)}${getMajorVersion(version).replace('.', '')}`;\n}\n\nfunction getMajorVersion(versionString: string): string {\n const majorVersionMatch = versionString.match(/^(\\d+\\.\\d+)/);\n return majorVersionMatch ? majorVersionMatch[1] : '';\n}\n"]}
@@ -1,15 +1,10 @@
1
- export interface MetricsLogItem {
2
- source: string;
3
- action: string;
4
- version: string;
5
- }
6
- export interface MetricsV2EventItem {
7
- eventType?: string;
8
- eventContext?: string;
9
- eventDetail?: string | Record<string, string | number | boolean>;
10
- eventValue?: string | Record<string, string | number | boolean>;
11
- }
12
- export declare const Metrics: {
1
+ import { MetricsLogItem, MetricsV2EventItem } from './log-clients';
2
+ export declare class Metrics {
3
+ readonly source: string;
4
+ readonly packageVersion: string;
5
+ private clog;
6
+ private panorama;
7
+ constructor(source: string, packageVersion: string);
13
8
  initMetrics(theme: string): void;
14
9
  /**
15
10
  * Calls Console Platform's client logging JS API with provided metric name, value, and detail.
@@ -26,10 +21,8 @@ export declare const Metrics: {
26
21
  sendMetricOnce(metricName: string, value: number, detail?: string): void;
27
22
  logComponentLoaded(): void;
28
23
  logComponentUsed(componentName: string): void;
29
- };
30
- export declare const MetricsTestHelper: {
31
- resetOneTimeMetricsCache: () => void;
32
- formatMajorVersionForMetricDetail: (version: string) => string;
33
- formatVersionForMetricName: (theme: string, version: string) => string;
34
- };
24
+ }
25
+ export declare class MetricsTestHelper {
26
+ resetOneTimeMetricsCache(): void;
27
+ }
35
28
  //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/internal/metrics/metrics.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8B,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAW/F,qBAAa,OAAO;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,IAAI,CAAoB;IAChC,OAAO,CAAC,QAAQ,CAAwB;gBAE5B,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAKlD,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUpE;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpD,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7D,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYjE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAYxE,kBAAkB;IASlB,gBAAgB,CAAC,aAAa,EAAE,MAAM;CAUvC;AAED,qBAAa,iBAAiB;IAC5B,wBAAwB;CAKzB"}
@@ -0,0 +1,95 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // TODO: move to component-toolkit/internal/metrics
4
+ import { CLogClient, PanoramaClient } from './log-clients';
5
+ import { buildMetricDetail, buildMetricHash, buildMetricName } from './metrics-formatters';
6
+ var oneTimeMetrics = {};
7
+ // In case we need to override the theme for VR.
8
+ var theme = '';
9
+ function setTheme(newTheme) {
10
+ theme = newTheme;
11
+ }
12
+ var Metrics = /** @class */ (function () {
13
+ function Metrics(source, packageVersion) {
14
+ this.clog = new CLogClient();
15
+ this.panorama = new PanoramaClient();
16
+ this.source = source;
17
+ this.packageVersion = packageVersion;
18
+ }
19
+ Metrics.prototype.initMetrics = function (theme) {
20
+ setTheme(theme);
21
+ };
22
+ /**
23
+ * Calls Console Platform's client logging JS API with provided metric name, value, and detail.
24
+ * Does nothing if Console Platform client logging JS is not present in page.
25
+ */
26
+ Metrics.prototype.sendMetric = function (metricName, value, detail) {
27
+ if (!theme) {
28
+ // Metrics need to be initialized first (initMetrics)
29
+ console.error('Metrics need to be initialized first.');
30
+ return;
31
+ }
32
+ this.clog.sendMetric(metricName, value, detail);
33
+ };
34
+ /**
35
+ * Calls Console Platform's client v2 logging JS API with provided metric name and detail.
36
+ * Does nothing if Console Platform client logging JS is not present in page.
37
+ */
38
+ Metrics.prototype.sendPanoramaMetric = function (metric) {
39
+ this.panorama.sendMetric(metric);
40
+ };
41
+ Metrics.prototype.sendMetricObject = function (metric, value) {
42
+ this.sendMetric(buildMetricName(metric, theme), value, buildMetricDetail(metric, theme));
43
+ };
44
+ Metrics.prototype.sendMetricObjectOnce = function (metric, value) {
45
+ var metricHash = buildMetricHash(metric);
46
+ if (!oneTimeMetrics[metricHash]) {
47
+ this.sendMetricObject(metric, value);
48
+ oneTimeMetrics[metricHash] = true;
49
+ }
50
+ };
51
+ /*
52
+ * Calls Console Platform's client logging only the first time the provided metricName is used.
53
+ * Subsequent calls with the same metricName are ignored.
54
+ */
55
+ Metrics.prototype.sendMetricOnce = function (metricName, value, detail) {
56
+ if (!oneTimeMetrics[metricName]) {
57
+ this.sendMetric(metricName, value, detail);
58
+ oneTimeMetrics[metricName] = true;
59
+ }
60
+ };
61
+ /*
62
+ * Reports a metric value 1 to Console Platform's client logging service to indicate that the
63
+ * component was loaded. The component load event will only be reported as used to client logging
64
+ * service once per page view.
65
+ */
66
+ Metrics.prototype.logComponentLoaded = function () {
67
+ this.sendMetricObjectOnce({ source: this.source, action: 'loaded', version: this.packageVersion }, 1);
68
+ };
69
+ /*
70
+ * Reports a metric value 1 to Console Platform's client logging service to indicate that the
71
+ * component was used in the page. A component will only be reported as used to client logging
72
+ * service once per page view.
73
+ */
74
+ Metrics.prototype.logComponentUsed = function (componentName) {
75
+ this.sendMetricObjectOnce({
76
+ source: componentName,
77
+ action: 'used',
78
+ version: this.packageVersion
79
+ }, 1);
80
+ };
81
+ return Metrics;
82
+ }());
83
+ export { Metrics };
84
+ var MetricsTestHelper = /** @class */ (function () {
85
+ function MetricsTestHelper() {
86
+ }
87
+ MetricsTestHelper.prototype.resetOneTimeMetricsCache = function () {
88
+ for (var prop in oneTimeMetrics) {
89
+ delete oneTimeMetrics[prop];
90
+ }
91
+ };
92
+ return MetricsTestHelper;
93
+ }());
94
+ export { MetricsTestHelper };
95
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/internal/metrics/metrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// TODO: move to component-toolkit/internal/metrics\n\nimport { CLogClient, PanoramaClient, MetricsLogItem, MetricsV2EventItem } from './log-clients';\nimport { buildMetricDetail, buildMetricHash, buildMetricName } from './metrics-formatters';\n\nconst oneTimeMetrics: Record<string, boolean> = {};\n\n// In case we need to override the theme for VR.\nlet theme = '';\nfunction setTheme(newTheme: string) {\n theme = newTheme;\n}\n\nexport class Metrics {\n readonly source: string;\n readonly packageVersion: string;\n\n private clog = new CLogClient();\n private panorama = new PanoramaClient();\n\n constructor(source: string, packageVersion: string) {\n this.source = source;\n this.packageVersion = packageVersion;\n }\n\n initMetrics(theme: string) {\n setTheme(theme);\n }\n\n /**\n * Calls Console Platform's client logging JS API with provided metric name, value, and detail.\n * Does nothing if Console Platform client logging JS is not present in page.\n */\n sendMetric(metricName: string, value: number, detail?: string): void {\n if (!theme) {\n // Metrics need to be initialized first (initMetrics)\n console.error('Metrics need to be initialized first.');\n return;\n }\n\n this.clog.sendMetric(metricName, value, detail);\n }\n\n /**\n * Calls Console Platform's client v2 logging JS API with provided metric name and detail.\n * Does nothing if Console Platform client logging JS is not present in page.\n */\n sendPanoramaMetric(metric: MetricsV2EventItem): void {\n this.panorama.sendMetric(metric);\n }\n\n sendMetricObject(metric: MetricsLogItem, value: number): void {\n this.sendMetric(buildMetricName(metric, theme), value, buildMetricDetail(metric, theme));\n }\n\n sendMetricObjectOnce(metric: MetricsLogItem, value: number): void {\n const metricHash = buildMetricHash(metric);\n if (!oneTimeMetrics[metricHash]) {\n this.sendMetricObject(metric, value);\n oneTimeMetrics[metricHash] = true;\n }\n }\n\n /*\n * Calls Console Platform's client logging only the first time the provided metricName is used.\n * Subsequent calls with the same metricName are ignored.\n */\n sendMetricOnce(metricName: string, value: number, detail?: string): void {\n if (!oneTimeMetrics[metricName]) {\n this.sendMetric(metricName, value, detail);\n oneTimeMetrics[metricName] = true;\n }\n }\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was loaded. The component load event will only be reported as used to client logging\n * service once per page view.\n */\n logComponentLoaded() {\n this.sendMetricObjectOnce({ source: this.source, action: 'loaded', version: this.packageVersion }, 1);\n }\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was used in the page. A component will only be reported as used to client logging\n * service once per page view.\n */\n logComponentUsed(componentName: string) {\n this.sendMetricObjectOnce(\n {\n source: componentName,\n action: 'used',\n version: this.packageVersion,\n },\n 1\n );\n }\n}\n\nexport class MetricsTestHelper {\n resetOneTimeMetricsCache() {\n for (const prop in oneTimeMetrics) {\n delete oneTimeMetrics[prop];\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -81,7 +81,7 @@
81
81
  "./internal/base-component/index.js",
82
82
  "./internal/base-component/styles.css.js"
83
83
  ],
84
- "version": "3.0.189",
84
+ "version": "3.0.191",
85
85
  "repository": {
86
86
  "type": "git",
87
87
  "url": "https://github.com/cloudscape-design/components.git"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/property-filter/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAW9E,OAAO,EAAE,mBAAmB,EAAiE,MAAM,cAAc,CAAC;AAiBlH,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,QAAA,MAAM,cAAc,qGAqRnB,CAAC;AAGF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/property-filter/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAW9E,OAAO,EAAE,mBAAmB,EAAiE,MAAM,cAAc,CAAC;AAiBlH,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,QAAA,MAAM,cAAc,qGAsRnB,CAAC;AAGF,eAAe,cAAc,CAAC"}
@@ -146,7 +146,7 @@ var PropertyFilter = React.forwardRef(function (_a, ref) {
146
146
  setFilteringText('');
147
147
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus({ preventDropdown: true });
148
148
  (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.close();
149
- } })), hideEnteredTextOption: disableFreeTextFiltering && parsedText.step !== 'property' })),
149
+ } })), hideEnteredTextOption: disableFreeTextFiltering && parsedText.step !== 'property', clearAriaLabel: i18nStrings.clearAriaLabel })),
150
150
  React.createElement("span", { "aria-live": "polite", "aria-atomic": "true", className: clsx(styles.results, showResults && styles['results-visible']) }, showResults ? countText : '')),
151
151
  tokens && tokens.length > 0 && (React.createElement("div", { className: styles.tokens },
152
152
  React.createElement(InternalSpaceBetween, { size: "xs", direction: "horizontal", id: controlId },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/property-filter/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef, useState, useMemo, useImperativeHandle } from 'react';\n\nimport InternalSpaceBetween from '../space-between/internal';\nimport { InternalButton } from '../button/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { KeyCode } from '../internal/keycode';\nimport SelectToggle from '../token-group/toggle';\nimport { generateUniqueId } from '../internal/hooks/use-unique-id/index';\nimport { fireNonCancelableEvent } from '../internal/events';\n\nimport { PropertyFilterProps, ParsedText, Ref, FilteringProperty, ComparisonOperator, Token } from './interfaces';\nimport { TokenButton } from './token';\nimport {\n getQueryActions,\n parseText,\n getAutosuggestOptions,\n getAllowedOperators,\n getExtendedOperator,\n} from './controller';\nimport { useLoadItems } from './use-load-items';\nimport styles from './styles.css.js';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport PropertyFilterAutosuggest, { PropertyFilterAutosuggestProps } from './property-filter-autosuggest';\nimport { PropertyEditor } from './property-editor';\nimport { AutosuggestInputRef } from '../internal/components/autosuggest-input';\nimport { matchTokenValue } from './utils';\n\nexport { PropertyFilterProps };\n\nconst PropertyFilter = React.forwardRef(\n (\n {\n disabled,\n i18nStrings,\n countText,\n query,\n hideOperations,\n onChange,\n filteringProperties,\n filteringOptions = [],\n customGroupsText = [],\n disableFreeTextFiltering = false,\n onLoadItems,\n virtualScroll,\n customControl,\n filteringEmpty,\n filteringLoadingText,\n filteringFinishedText,\n filteringErrorText,\n filteringRecoveryText,\n filteringStatusType,\n asyncProperties,\n tokenLimit,\n expandToViewport,\n ...rest\n }: PropertyFilterProps,\n ref: React.Ref<Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('PropertyFilter');\n const inputRef = useRef<AutosuggestInputRef>(null);\n const baseProps = getBaseProps(rest);\n useImperativeHandle(ref, () => ({ focus: () => inputRef.current?.focus() }), []);\n const { tokens, operation } = query;\n const showResults = tokens?.length && !disabled;\n const { addToken, removeToken, setToken, setOperation, removeAllTokens } = getQueryActions(\n query,\n onChange,\n inputRef\n );\n const [filteringText, setFilteringText] = useState<string>('');\n const parsedText = parseText(filteringText, filteringProperties, disableFreeTextFiltering);\n const autosuggestOptions = getAutosuggestOptions(\n parsedText,\n filteringOptions,\n filteringProperties,\n customGroupsText,\n i18nStrings\n );\n\n const createToken = (currentText: string) => {\n const parsedText = parseText(currentText, filteringProperties, disableFreeTextFiltering);\n let newToken: Token;\n switch (parsedText.step) {\n case 'property': {\n newToken = matchTokenValue(\n {\n propertyKey: parsedText.property.key,\n operator: parsedText.operator,\n value: parsedText.value,\n },\n filteringOptions\n );\n break;\n }\n case 'free-text': {\n newToken = {\n operator: parsedText.operator || ':',\n value: parsedText.value,\n };\n break;\n }\n case 'operator': {\n newToken = {\n operator: ':',\n value: currentText,\n };\n break;\n }\n }\n if (disableFreeTextFiltering && !('propertyKey' in newToken)) {\n return;\n }\n addToken(newToken);\n setFilteringText('');\n };\n const ignoreKeyDown = useRef<boolean>(false);\n const handleKeyDown: PropertyFilterAutosuggestProps['onKeyDown'] = event => {\n if (filteringText && !ignoreKeyDown.current && event.detail.keyCode === KeyCode.enter) {\n createToken(filteringText);\n }\n };\n const getLoadMoreDetail = (parsedText: ParsedText, filteringText: string) => {\n const loadMoreDetail: {\n filteringProperty: FilteringProperty | undefined;\n filteringText: string;\n filteringOperator: ComparisonOperator | undefined;\n } = {\n filteringProperty: undefined,\n filteringText,\n filteringOperator: undefined,\n };\n if (parsedText.step === 'property') {\n loadMoreDetail.filteringProperty = parsedText.property;\n loadMoreDetail.filteringText = parsedText.value;\n loadMoreDetail.filteringOperator = parsedText.operator;\n }\n return loadMoreDetail;\n };\n const loadMoreDetail = getLoadMoreDetail(parsedText, filteringText);\n const inputLoadItemsHandlers = useLoadItems(\n onLoadItems,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringProperty,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringOperator\n );\n const asyncProps = {\n empty: filteringEmpty,\n loadingText: filteringLoadingText,\n finishedText: filteringFinishedText,\n errorText: filteringErrorText,\n recoveryText: filteringRecoveryText,\n statusType: filteringStatusType,\n };\n const asyncAutosuggestProps =\n !!filteringText.length || asyncProperties\n ? {\n ...inputLoadItemsHandlers,\n ...asyncProps,\n }\n : {};\n const handleSelected: PropertyFilterAutosuggestProps['onOptionClick'] = event => {\n // The ignoreKeyDown flag makes sure `createToken` routine runs only once. Autosuggest's `onKeyDown` fires,\n // when an item is selected from the list using \"enter\" key.\n ignoreKeyDown.current = true;\n setTimeout(() => {\n ignoreKeyDown.current = false;\n }, 0);\n const { detail: option } = event;\n const value = option.value || '';\n\n if (!('keepOpenOnSelect' in option)) {\n createToken(value);\n return;\n }\n\n // stop dropdown from closing\n event.preventDefault();\n\n const parsedText = parseText(value, filteringProperties, disableFreeTextFiltering);\n const loadMoreDetail = getLoadMoreDetail(parsedText, value);\n\n // Insert operator automatically if only one operator is defined for the given property.\n if (parsedText.step === 'operator') {\n const operators = getAllowedOperators(parsedText.property);\n if (value.trim() === parsedText.property.propertyLabel && operators.length === 1) {\n loadMoreDetail.filteringProperty = parsedText.property;\n loadMoreDetail.filteringOperator = operators[0];\n loadMoreDetail.filteringText = '';\n setFilteringText(parsedText.property.propertyLabel + ' ' + operators[0] + ' ');\n }\n }\n\n fireNonCancelableEvent(onLoadItems, { ...loadMoreDetail, firstPage: true, samePage: false });\n };\n const [tokensExpanded, setTokensExpanded] = useState(false);\n const toggleExpandedTokens = () => setTokensExpanded(!tokensExpanded);\n const hasHiddenOptions = tokenLimit !== undefined && tokens.length > tokenLimit;\n const slicedTokens = hasHiddenOptions && !tokensExpanded ? tokens.slice(0, tokenLimit) : tokens;\n const controlId = useMemo(() => generateUniqueId(), []);\n\n const operatorForm =\n parsedText.step === 'property' &&\n getExtendedOperator(filteringProperties, parsedText.property.key, parsedText.operator)?.form;\n\n return (\n <span {...baseProps} className={clsx(baseProps.className, styles.root)} ref={__internalRootRef}>\n <div className={styles['search-field']}>\n {customControl && <div className={styles['custom-control']}>{customControl}</div>}\n <PropertyFilterAutosuggest\n ref={inputRef}\n virtualScroll={virtualScroll}\n enteredTextLabel={i18nStrings.enteredTextLabel}\n ariaLabel={i18nStrings.filteringAriaLabel}\n placeholder={i18nStrings.filteringPlaceholder}\n value={filteringText}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n {...autosuggestOptions}\n onChange={event => setFilteringText(event.detail.value)}\n empty={filteringEmpty}\n {...asyncAutosuggestProps}\n expandToViewport={expandToViewport}\n onOptionClick={handleSelected}\n customForm={\n operatorForm && (\n <PropertyEditor\n property={parsedText.property}\n operator={parsedText.operator}\n filter={parsedText.value}\n operatorForm={operatorForm}\n i18nStrings={i18nStrings}\n onCancel={() => {\n setFilteringText('');\n inputRef.current?.close();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n onSubmit={token => {\n addToken(token);\n setFilteringText('');\n inputRef.current?.focus({ preventDropdown: true });\n inputRef.current?.close();\n }}\n />\n )\n }\n hideEnteredTextOption={disableFreeTextFiltering && parsedText.step !== 'property'}\n />\n <span\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className={clsx(styles.results, showResults && styles['results-visible'])}\n >\n {showResults ? countText : ''}\n </span>\n </div>\n {tokens && tokens.length > 0 && (\n <div className={styles.tokens}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\" id={controlId}>\n {slicedTokens.map((token, index) => (\n <TokenButton\n token={token}\n first={index === 0}\n operation={operation}\n key={index}\n removeToken={() => removeToken(index)}\n setToken={(newToken: Token) => setToken(index, newToken)}\n setOperation={setOperation}\n filteringOptions={filteringOptions}\n filteringProperties={filteringProperties}\n asyncProps={asyncProps}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n asyncProperties={asyncProperties}\n hideOperations={hideOperations}\n customGroupsText={customGroupsText}\n disableFreeTextFiltering={disableFreeTextFiltering}\n disabled={disabled}\n expandToViewport={expandToViewport}\n />\n ))}\n {hasHiddenOptions && (\n <div className={styles['toggle-collapsed']}>\n <SelectToggle\n controlId={controlId}\n allHidden={tokenLimit === 0}\n expanded={tokensExpanded}\n numberOfHiddenOptions={tokens.length - slicedTokens.length}\n i18nStrings={{\n limitShowFewer: i18nStrings.tokenLimitShowFewer,\n limitShowMore: i18nStrings.tokenLimitShowMore,\n }}\n onClick={toggleExpandedTokens}\n />\n </div>\n )}\n <div className={styles.separator} />\n <InternalButton onClick={removeAllTokens} className={styles['remove-all']} disabled={disabled}>\n {i18nStrings.clearFiltersText}\n </InternalButton>\n </InternalSpaceBetween>\n </div>\n )}\n </span>\n );\n }\n);\n\napplyDisplayName(PropertyFilter, 'PropertyFilter');\nexport default PropertyFilter;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/property-filter/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef, useState, useMemo, useImperativeHandle } from 'react';\n\nimport InternalSpaceBetween from '../space-between/internal';\nimport { InternalButton } from '../button/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { KeyCode } from '../internal/keycode';\nimport SelectToggle from '../token-group/toggle';\nimport { generateUniqueId } from '../internal/hooks/use-unique-id/index';\nimport { fireNonCancelableEvent } from '../internal/events';\n\nimport { PropertyFilterProps, ParsedText, Ref, FilteringProperty, ComparisonOperator, Token } from './interfaces';\nimport { TokenButton } from './token';\nimport {\n getQueryActions,\n parseText,\n getAutosuggestOptions,\n getAllowedOperators,\n getExtendedOperator,\n} from './controller';\nimport { useLoadItems } from './use-load-items';\nimport styles from './styles.css.js';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport PropertyFilterAutosuggest, { PropertyFilterAutosuggestProps } from './property-filter-autosuggest';\nimport { PropertyEditor } from './property-editor';\nimport { AutosuggestInputRef } from '../internal/components/autosuggest-input';\nimport { matchTokenValue } from './utils';\n\nexport { PropertyFilterProps };\n\nconst PropertyFilter = React.forwardRef(\n (\n {\n disabled,\n i18nStrings,\n countText,\n query,\n hideOperations,\n onChange,\n filteringProperties,\n filteringOptions = [],\n customGroupsText = [],\n disableFreeTextFiltering = false,\n onLoadItems,\n virtualScroll,\n customControl,\n filteringEmpty,\n filteringLoadingText,\n filteringFinishedText,\n filteringErrorText,\n filteringRecoveryText,\n filteringStatusType,\n asyncProperties,\n tokenLimit,\n expandToViewport,\n ...rest\n }: PropertyFilterProps,\n ref: React.Ref<Ref>\n ) => {\n const { __internalRootRef } = useBaseComponent('PropertyFilter');\n const inputRef = useRef<AutosuggestInputRef>(null);\n const baseProps = getBaseProps(rest);\n useImperativeHandle(ref, () => ({ focus: () => inputRef.current?.focus() }), []);\n const { tokens, operation } = query;\n const showResults = tokens?.length && !disabled;\n const { addToken, removeToken, setToken, setOperation, removeAllTokens } = getQueryActions(\n query,\n onChange,\n inputRef\n );\n const [filteringText, setFilteringText] = useState<string>('');\n const parsedText = parseText(filteringText, filteringProperties, disableFreeTextFiltering);\n const autosuggestOptions = getAutosuggestOptions(\n parsedText,\n filteringOptions,\n filteringProperties,\n customGroupsText,\n i18nStrings\n );\n\n const createToken = (currentText: string) => {\n const parsedText = parseText(currentText, filteringProperties, disableFreeTextFiltering);\n let newToken: Token;\n switch (parsedText.step) {\n case 'property': {\n newToken = matchTokenValue(\n {\n propertyKey: parsedText.property.key,\n operator: parsedText.operator,\n value: parsedText.value,\n },\n filteringOptions\n );\n break;\n }\n case 'free-text': {\n newToken = {\n operator: parsedText.operator || ':',\n value: parsedText.value,\n };\n break;\n }\n case 'operator': {\n newToken = {\n operator: ':',\n value: currentText,\n };\n break;\n }\n }\n if (disableFreeTextFiltering && !('propertyKey' in newToken)) {\n return;\n }\n addToken(newToken);\n setFilteringText('');\n };\n const ignoreKeyDown = useRef<boolean>(false);\n const handleKeyDown: PropertyFilterAutosuggestProps['onKeyDown'] = event => {\n if (filteringText && !ignoreKeyDown.current && event.detail.keyCode === KeyCode.enter) {\n createToken(filteringText);\n }\n };\n const getLoadMoreDetail = (parsedText: ParsedText, filteringText: string) => {\n const loadMoreDetail: {\n filteringProperty: FilteringProperty | undefined;\n filteringText: string;\n filteringOperator: ComparisonOperator | undefined;\n } = {\n filteringProperty: undefined,\n filteringText,\n filteringOperator: undefined,\n };\n if (parsedText.step === 'property') {\n loadMoreDetail.filteringProperty = parsedText.property;\n loadMoreDetail.filteringText = parsedText.value;\n loadMoreDetail.filteringOperator = parsedText.operator;\n }\n return loadMoreDetail;\n };\n const loadMoreDetail = getLoadMoreDetail(parsedText, filteringText);\n const inputLoadItemsHandlers = useLoadItems(\n onLoadItems,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringProperty,\n loadMoreDetail.filteringText,\n loadMoreDetail.filteringOperator\n );\n const asyncProps = {\n empty: filteringEmpty,\n loadingText: filteringLoadingText,\n finishedText: filteringFinishedText,\n errorText: filteringErrorText,\n recoveryText: filteringRecoveryText,\n statusType: filteringStatusType,\n };\n const asyncAutosuggestProps =\n !!filteringText.length || asyncProperties\n ? {\n ...inputLoadItemsHandlers,\n ...asyncProps,\n }\n : {};\n const handleSelected: PropertyFilterAutosuggestProps['onOptionClick'] = event => {\n // The ignoreKeyDown flag makes sure `createToken` routine runs only once. Autosuggest's `onKeyDown` fires,\n // when an item is selected from the list using \"enter\" key.\n ignoreKeyDown.current = true;\n setTimeout(() => {\n ignoreKeyDown.current = false;\n }, 0);\n const { detail: option } = event;\n const value = option.value || '';\n\n if (!('keepOpenOnSelect' in option)) {\n createToken(value);\n return;\n }\n\n // stop dropdown from closing\n event.preventDefault();\n\n const parsedText = parseText(value, filteringProperties, disableFreeTextFiltering);\n const loadMoreDetail = getLoadMoreDetail(parsedText, value);\n\n // Insert operator automatically if only one operator is defined for the given property.\n if (parsedText.step === 'operator') {\n const operators = getAllowedOperators(parsedText.property);\n if (value.trim() === parsedText.property.propertyLabel && operators.length === 1) {\n loadMoreDetail.filteringProperty = parsedText.property;\n loadMoreDetail.filteringOperator = operators[0];\n loadMoreDetail.filteringText = '';\n setFilteringText(parsedText.property.propertyLabel + ' ' + operators[0] + ' ');\n }\n }\n\n fireNonCancelableEvent(onLoadItems, { ...loadMoreDetail, firstPage: true, samePage: false });\n };\n const [tokensExpanded, setTokensExpanded] = useState(false);\n const toggleExpandedTokens = () => setTokensExpanded(!tokensExpanded);\n const hasHiddenOptions = tokenLimit !== undefined && tokens.length > tokenLimit;\n const slicedTokens = hasHiddenOptions && !tokensExpanded ? tokens.slice(0, tokenLimit) : tokens;\n const controlId = useMemo(() => generateUniqueId(), []);\n\n const operatorForm =\n parsedText.step === 'property' &&\n getExtendedOperator(filteringProperties, parsedText.property.key, parsedText.operator)?.form;\n\n return (\n <span {...baseProps} className={clsx(baseProps.className, styles.root)} ref={__internalRootRef}>\n <div className={styles['search-field']}>\n {customControl && <div className={styles['custom-control']}>{customControl}</div>}\n <PropertyFilterAutosuggest\n ref={inputRef}\n virtualScroll={virtualScroll}\n enteredTextLabel={i18nStrings.enteredTextLabel}\n ariaLabel={i18nStrings.filteringAriaLabel}\n placeholder={i18nStrings.filteringPlaceholder}\n value={filteringText}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n {...autosuggestOptions}\n onChange={event => setFilteringText(event.detail.value)}\n empty={filteringEmpty}\n {...asyncAutosuggestProps}\n expandToViewport={expandToViewport}\n onOptionClick={handleSelected}\n customForm={\n operatorForm && (\n <PropertyEditor\n property={parsedText.property}\n operator={parsedText.operator}\n filter={parsedText.value}\n operatorForm={operatorForm}\n i18nStrings={i18nStrings}\n onCancel={() => {\n setFilteringText('');\n inputRef.current?.close();\n inputRef.current?.focus({ preventDropdown: true });\n }}\n onSubmit={token => {\n addToken(token);\n setFilteringText('');\n inputRef.current?.focus({ preventDropdown: true });\n inputRef.current?.close();\n }}\n />\n )\n }\n hideEnteredTextOption={disableFreeTextFiltering && parsedText.step !== 'property'}\n clearAriaLabel={i18nStrings.clearAriaLabel}\n />\n <span\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className={clsx(styles.results, showResults && styles['results-visible'])}\n >\n {showResults ? countText : ''}\n </span>\n </div>\n {tokens && tokens.length > 0 && (\n <div className={styles.tokens}>\n <InternalSpaceBetween size=\"xs\" direction=\"horizontal\" id={controlId}>\n {slicedTokens.map((token, index) => (\n <TokenButton\n token={token}\n first={index === 0}\n operation={operation}\n key={index}\n removeToken={() => removeToken(index)}\n setToken={(newToken: Token) => setToken(index, newToken)}\n setOperation={setOperation}\n filteringOptions={filteringOptions}\n filteringProperties={filteringProperties}\n asyncProps={asyncProps}\n onLoadItems={onLoadItems}\n i18nStrings={i18nStrings}\n asyncProperties={asyncProperties}\n hideOperations={hideOperations}\n customGroupsText={customGroupsText}\n disableFreeTextFiltering={disableFreeTextFiltering}\n disabled={disabled}\n expandToViewport={expandToViewport}\n />\n ))}\n {hasHiddenOptions && (\n <div className={styles['toggle-collapsed']}>\n <SelectToggle\n controlId={controlId}\n allHidden={tokenLimit === 0}\n expanded={tokensExpanded}\n numberOfHiddenOptions={tokens.length - slicedTokens.length}\n i18nStrings={{\n limitShowFewer: i18nStrings.tokenLimitShowFewer,\n limitShowMore: i18nStrings.tokenLimitShowMore,\n }}\n onClick={toggleExpandedTokens}\n />\n </div>\n )}\n <div className={styles.separator} />\n <InternalButton onClick={removeAllTokens} className={styles['remove-all']} disabled={disabled}>\n {i18nStrings.clearFiltersText}\n </InternalButton>\n </InternalSpaceBetween>\n </div>\n )}\n </span>\n );\n }\n);\n\napplyDisplayName(PropertyFilter, 'PropertyFilter');\nexport default PropertyFilter;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8B5C,eAAO,MAAM,gBAAgB,YAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,eAAgB,MAAM,SAehD,CAAC;AAEF,eAAO,MAAM,aAAa,oBACP,MAAM,sBACH,MAAM,UAClB,YAAY,gBAAgB,SAWrC,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,MAAM,SAW5C,CAAC"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgC5C,eAAO,MAAM,gBAAgB,YAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,eAAgB,MAAM,SAehD,CAAC;AAEF,eAAO,MAAM,aAAa,oBACP,MAAM,sBACH,MAAM,UAClB,YAAY,gBAAgB,SAWrC,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,MAAM,SAW5C,CAAC"}
@@ -1,7 +1,9 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { __assign } from "tslib";
4
+ import { PACKAGE_SOURCE, PACKAGE_VERSION } from '../../internal/environment';
4
5
  import { Metrics } from '../../internal/metrics';
6
+ var metrics = new Metrics(PACKAGE_SOURCE, PACKAGE_VERSION);
5
7
  var prefix = 'csa_wizard';
6
8
  var createEventType = function (eventType) { return "".concat(prefix, "_").concat(eventType); };
7
9
  var createEventContext = function (stepIndex) {
@@ -42,12 +44,12 @@ export var trackStartStep = function (stepIndex) {
42
44
  var time = timeEnd();
43
45
  // Start a new timer of the current step
44
46
  timeStart();
45
- Metrics.sendPanoramaMetric(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('step') }, (time !== undefined && { eventValue: time.toString() })));
47
+ metrics.sendPanoramaMetric(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('step') }, (time !== undefined && { eventValue: time.toString() })));
46
48
  };
47
49
  export var trackNavigate = function (activeStepIndex, requestedStepIndex, reason) {
48
50
  var eventContext = createEventContext(activeStepIndex);
49
51
  var time = timeEnd();
50
- Metrics.sendPanoramaMetric({
52
+ metrics.sendPanoramaMetric({
51
53
  eventContext: eventContext,
52
54
  eventDetail: createEventDetail(requestedStepIndex),
53
55
  eventType: createEventType('navigate'),
@@ -58,6 +60,6 @@ export var trackSubmit = function (stepIndex) {
58
60
  var eventContext = createEventContext(stepIndex);
59
61
  // End the timer of the wizard
60
62
  var time = timeEnd(prefix);
61
- Metrics.sendPanoramaMetric(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('submit') }, (time !== undefined && { eventValue: time.toString() })));
63
+ metrics.sendPanoramaMetric(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('submit') }, (time !== undefined && { eventValue: time.toString() })));
62
64
  };
63
65
  //# sourceMappingURL=analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Metrics } from '../../internal/metrics';\nimport { WizardProps } from '../interfaces';\n\nconst prefix = 'csa_wizard';\n\nconst createEventType = (eventType: string) => `${prefix}_${eventType}`;\nconst createEventContext = (stepIndex = 0) => `${prefix}_step${stepIndex + 1}`;\nconst createEventDetail = (stepIndex = 0) => `step${stepIndex + 1}`;\n\n// A custom time cache is used to not clear the timer between navigation attempts\n// This allows us the ability to track time to attempt each step as well as the time to complete\n// each step\nconst timeCache: Record<string, number> = {};\nconst timeStart = (key = 'current') => {\n timeCache[key] = Date.now();\n};\n\nconst timeEnd = (key = 'current', clear = false) => {\n const start = timeCache[key];\n // No start time is available when starting the first step\n if (!start) {\n return undefined;\n }\n\n if (clear) {\n delete timeCache[key];\n }\n\n return (Date.now() - start) / 1000; // Convert to seconds\n};\n\nexport const trackStartWizard = () => {\n timeStart(prefix);\n};\n\nexport const trackStartStep = (stepIndex?: number) => {\n const eventContext = createEventContext(stepIndex);\n\n // End the timer of the previous step\n const time = timeEnd();\n\n // Start a new timer of the current step\n timeStart();\n\n Metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('step'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n\nexport const trackNavigate = (\n activeStepIndex: number,\n requestedStepIndex: number,\n reason: WizardProps.NavigationReason\n) => {\n const eventContext = createEventContext(activeStepIndex);\n const time = timeEnd();\n\n Metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(requestedStepIndex),\n eventType: createEventType('navigate'),\n eventValue: { reason, ...(time !== undefined && { time }) },\n });\n};\n\nexport const trackSubmit = (stepIndex: number) => {\n const eventContext = createEventContext(stepIndex);\n // End the timer of the wizard\n const time = timeEnd(prefix);\n\n Metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('submit'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n"]}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from '../../internal/environment';\nimport { Metrics } from '../../internal/metrics';\nimport { WizardProps } from '../interfaces';\n\nconst metrics = new Metrics(PACKAGE_SOURCE, PACKAGE_VERSION);\n\nconst prefix = 'csa_wizard';\n\nconst createEventType = (eventType: string) => `${prefix}_${eventType}`;\nconst createEventContext = (stepIndex = 0) => `${prefix}_step${stepIndex + 1}`;\nconst createEventDetail = (stepIndex = 0) => `step${stepIndex + 1}`;\n\n// A custom time cache is used to not clear the timer between navigation attempts\n// This allows us the ability to track time to attempt each step as well as the time to complete\n// each step\nconst timeCache: Record<string, number> = {};\nconst timeStart = (key = 'current') => {\n timeCache[key] = Date.now();\n};\n\nconst timeEnd = (key = 'current', clear = false) => {\n const start = timeCache[key];\n // No start time is available when starting the first step\n if (!start) {\n return undefined;\n }\n\n if (clear) {\n delete timeCache[key];\n }\n\n return (Date.now() - start) / 1000; // Convert to seconds\n};\n\nexport const trackStartWizard = () => {\n timeStart(prefix);\n};\n\nexport const trackStartStep = (stepIndex?: number) => {\n const eventContext = createEventContext(stepIndex);\n\n // End the timer of the previous step\n const time = timeEnd();\n\n // Start a new timer of the current step\n timeStart();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('step'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n\nexport const trackNavigate = (\n activeStepIndex: number,\n requestedStepIndex: number,\n reason: WizardProps.NavigationReason\n) => {\n const eventContext = createEventContext(activeStepIndex);\n const time = timeEnd();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(requestedStepIndex),\n eventType: createEventType('navigate'),\n eventValue: { reason, ...(time !== undefined && { time }) },\n });\n};\n\nexport const trackSubmit = (stepIndex: number) => {\n const eventContext = createEventContext(stepIndex);\n // End the timer of the wizard\n const time = timeEnd(prefix);\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('submit'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n"]}
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- import { AppLayoutProps } from './interfaces';
3
- interface ToggleButtonsProps {
4
- anyPanelOpen: boolean;
5
- children: React.ReactNode;
6
- ariaLabels: AppLayoutProps.Labels | undefined;
7
- isHidden: boolean;
8
- opaqueBackground: boolean;
9
- }
10
- export declare function ToggleButtons({ children, ariaLabels, anyPanelOpen, isHidden, opaqueBackground }: ToggleButtonsProps): JSX.Element;
11
- export {};
12
- //# sourceMappingURL=toggle-buttons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle-buttons.d.ts","sourceRoot":"","sources":["../../../src/app-layout/toggle-buttons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,UAAU,kBAAkB;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,eAkBnH"}
@@ -1,13 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import React from 'react';
4
- import clsx from 'clsx';
5
- import SpaceBetween from '../space-between/internal';
6
- import styles from './styles.css.js';
7
- export function ToggleButtons(_a) {
8
- var children = _a.children, ariaLabels = _a.ariaLabels, anyPanelOpen = _a.anyPanelOpen, isHidden = _a.isHidden, opaqueBackground = _a.opaqueBackground;
9
- return (React.createElement("div", { className: clsx(styles['button-toggles-container'], anyPanelOpen && styles['button-toggles-container-open'], isHidden && styles['button-toggles-container-is-hidden'], opaqueBackground && styles['opaque-background']) },
10
- React.createElement("aside", { "aria-label": ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.tools, className: clsx(styles['visual-refresh-toggle'], styles["visual-refresh-toggle-type-tools"]) },
11
- React.createElement(SpaceBetween, { size: "xs" }, children))));
12
- }
13
- //# sourceMappingURL=toggle-buttons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle-buttons.js","sourceRoot":"","sources":["../../../src/app-layout/toggle-buttons.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,MAAM,UAAU,aAAa,CAAC,EAAsF;QAApF,QAAQ,cAAA,EAAE,UAAU,gBAAA,EAAE,YAAY,kBAAA,EAAE,QAAQ,cAAA,EAAE,gBAAgB,sBAAA;IAC5F,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,0BAA0B,CAAC,EAClC,YAAY,IAAI,MAAM,CAAC,+BAA+B,CAAC,EACvD,QAAQ,IAAI,MAAM,CAAC,oCAAoC,CAAC,EACxD,gBAAgB,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAChD;QAED,6CACc,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAE5F,oBAAC,YAAY,IAAC,IAAI,EAAC,IAAI,IAAE,QAAQ,CAAgB,CAC3C,CACJ,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport SpaceBetween from '../space-between/internal';\nimport styles from './styles.css.js';\nimport { AppLayoutProps } from './interfaces';\n\ninterface ToggleButtonsProps {\n anyPanelOpen: boolean;\n children: React.ReactNode;\n ariaLabels: AppLayoutProps.Labels | undefined;\n isHidden: boolean;\n opaqueBackground: boolean;\n}\n\nexport function ToggleButtons({ children, ariaLabels, anyPanelOpen, isHidden, opaqueBackground }: ToggleButtonsProps) {\n return (\n <div\n className={clsx(\n styles['button-toggles-container'],\n anyPanelOpen && styles['button-toggles-container-open'],\n isHidden && styles['button-toggles-container-is-hidden'],\n opaqueBackground && styles['opaque-background']\n )}\n >\n <aside\n aria-label={ariaLabels?.tools}\n className={clsx(styles['visual-refresh-toggle'], styles[`visual-refresh-toggle-type-tools`])}\n >\n <SpaceBetween size=\"xs\">{children}</SpaceBetween>\n </aside>\n </div>\n );\n}\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * This hook provides access to the value of any variable
3
- * from the previous render frame.
4
- * Even if multiple effects are flushed in a single render
5
- * loop, this hook still keeps the original value.
6
- */
7
- export declare const usePreviousFrameValue: <T>(value: T) => T | undefined;
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-previous-frame/index.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,gCASjC,CAAC"}
@@ -1,20 +0,0 @@
1
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { useRef, useEffect } from 'react';
4
- /**
5
- * This hook provides access to the value of any variable
6
- * from the previous render frame.
7
- * Even if multiple effects are flushed in a single render
8
- * loop, this hook still keeps the original value.
9
- */
10
- export var usePreviousFrameValue = function (value) {
11
- var ref = useRef();
12
- useEffect(function () {
13
- var handle = requestAnimationFrame(function () {
14
- ref.current = value;
15
- });
16
- return function () { return cancelAnimationFrame(handle); };
17
- });
18
- return ref.current;
19
- };
20
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-previous-frame/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAI,KAAQ;IAC/C,IAAM,GAAG,GAAG,MAAM,EAAK,CAAC;IACxB,SAAS,CAAC;QACR,IAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,cAAM,OAAA,oBAAoB,CAAC,MAAM,CAAC,EAA5B,CAA4B,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useRef, useEffect } from 'react';\n\n/**\n * This hook provides access to the value of any variable\n * from the previous render frame.\n * Even if multiple effects are flushed in a single render\n * loop, this hook still keeps the original value.\n */\nexport const usePreviousFrameValue = <T>(value: T) => {\n const ref = useRef<T>();\n useEffect(() => {\n const handle = requestAnimationFrame(() => {\n ref.current = value;\n });\n return () => cancelAnimationFrame(handle);\n });\n return ref.current;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/internal/metrics.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACjE;AA8FD,eAAO,MAAM,OAAO;uBACC,MAAM;IAIzB;;;OAGG;2BACoB,MAAM,SAAS,MAAM,WAAW,MAAM,GAAG,IAAI;IAqBpE;;;OAGG;+BACwB,kBAAkB,GAAG,IAAI;6BAoB3B,cAAc,SAAS,MAAM,GAAG,IAAI;iCAIhC,cAAc,SAAS,MAAM,GAAG,IAAI;+BAYtC,MAAM,SAAS,MAAM,WAAW,MAAM,GAAG,IAAI;;oCA4BxC,MAAM;CAUvC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;iDA3KsB,MAAM;wCAIf,MAAM,WAAW,MAAM;CA+KjE,CAAC"}
@@ -1,177 +0,0 @@
1
- import { __assign } from "tslib";
2
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
- // SPDX-License-Identifier: Apache-2.0
4
- import { PACKAGE_VERSION } from './environment';
5
- var oneTimeMetrics = {};
6
- // In case we need to override the theme for VR
7
- var theme = '';
8
- function setTheme(newTheme) {
9
- theme = newTheme;
10
- }
11
- // react is the only framework we're using
12
- var framework = 'react';
13
- var buildMetricHash = function (_a) {
14
- var source = _a.source, action = _a.action;
15
- return ["src".concat(source), "action".concat(action)].join('_');
16
- };
17
- var getMajorVersion = function (versionString) {
18
- var majorVersionMatch = versionString.match(/^(\d+\.\d+)/);
19
- return majorVersionMatch ? majorVersionMatch[1] : '';
20
- };
21
- var formatMajorVersionForMetricDetail = function (version) {
22
- return version.replace(/\s/g, '');
23
- };
24
- var formatVersionForMetricName = function (theme, version) {
25
- return "".concat(theme.charAt(0)).concat(getMajorVersion(version).replace('.', ''));
26
- };
27
- var buildMetricDetail = function (_a) {
28
- var source = _a.source, action = _a.action, version = _a.version;
29
- var metricOrigin = typeof AWSUI_METRIC_ORIGIN !== 'undefined' ? AWSUI_METRIC_ORIGIN : 'main';
30
- var detailObject = {
31
- o: metricOrigin,
32
- s: source,
33
- t: theme,
34
- a: action,
35
- f: framework,
36
- v: formatMajorVersionForMetricDetail(version)
37
- };
38
- return JSON.stringify(detailObject);
39
- };
40
- var buildMetricName = function (_a) {
41
- var source = _a.source, version = _a.version;
42
- return ['awsui', source, "".concat(formatVersionForMetricName(theme, version))].join('_');
43
- };
44
- var findPanorama = function (currentWindow) {
45
- try {
46
- if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama) === 'function') {
47
- return currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama;
48
- }
49
- if (!currentWindow || currentWindow.parent === currentWindow) {
50
- // When the window has no more parents, it references itself
51
- return undefined;
52
- }
53
- return findPanorama(currentWindow.parent);
54
- }
55
- catch (ex) {
56
- // Most likely a cross-origin access error
57
- return undefined;
58
- }
59
- };
60
- var findAWSC = function (currentWindow) {
61
- try {
62
- if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.AWSC) === 'object') {
63
- return currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.AWSC;
64
- }
65
- if (!currentWindow || currentWindow.parent === currentWindow) {
66
- // When the window has no more parents, it references itself
67
- return undefined;
68
- }
69
- return findAWSC(currentWindow.parent);
70
- }
71
- catch (ex) {
72
- // Most likely a cross-origin access error
73
- return undefined;
74
- }
75
- };
76
- export var Metrics = {
77
- initMetrics: function (theme) {
78
- setTheme(theme);
79
- },
80
- /**
81
- * Calls Console Platform's client logging JS API with provided metric name, value, and detail.
82
- * Does nothing if Console Platform client logging JS is not present in page.
83
- */
84
- sendMetric: function (metricName, value, detail) {
85
- if (!theme) {
86
- // Metrics need to be initialized first (initMetrics)
87
- console.error('Metrics need to be initalized first.');
88
- return;
89
- }
90
- if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {
91
- console.error("Invalid metric name: ".concat(metricName));
92
- return;
93
- }
94
- if (detail && detail.length > 200) {
95
- console.error("Detail for metric ".concat(metricName, " is too long: ").concat(detail));
96
- return;
97
- }
98
- var AWSC = findAWSC(window);
99
- if (typeof AWSC === 'object' && typeof AWSC.Clog === 'object' && typeof AWSC.Clog.log === 'function') {
100
- AWSC.Clog.log(metricName, value, detail);
101
- }
102
- },
103
- /**
104
- * Calls Console Platform's client v2 logging JS API with provided metric name and detail.
105
- * Does nothing if Console Platform client logging JS is not present in page.
106
- */
107
- sendPanoramaMetric: function (metric) {
108
- if (typeof metric.eventDetail === 'object') {
109
- metric.eventDetail = JSON.stringify(metric.eventDetail);
110
- }
111
- if (metric.eventDetail && metric.eventDetail.length > 200) {
112
- console.error("Detail for metric is too long: ".concat(metric.eventDetail));
113
- return;
114
- }
115
- if (typeof metric.eventValue === 'object') {
116
- metric.eventValue = JSON.stringify(metric.eventValue);
117
- }
118
- var panorama = findPanorama(window);
119
- if (typeof panorama === 'function') {
120
- panorama('trackCustomEvent', __assign(__assign({}, metric), { timestamp: Date.now() }));
121
- }
122
- },
123
- sendMetricObject: function (metric, value) {
124
- this.sendMetric(buildMetricName(metric), value, buildMetricDetail(metric));
125
- },
126
- sendMetricObjectOnce: function (metric, value) {
127
- var metricHash = buildMetricHash(metric);
128
- if (!oneTimeMetrics[metricHash]) {
129
- this.sendMetricObject(metric, value);
130
- oneTimeMetrics[metricHash] = true;
131
- }
132
- },
133
- /*
134
- * Calls Console Platform's client logging only the first time the provided metricName is used.
135
- * Subsequent calls with the same metricName are ignored.
136
- */
137
- sendMetricOnce: function (metricName, value, detail) {
138
- if (!oneTimeMetrics[metricName]) {
139
- this.sendMetric(metricName, value, detail);
140
- oneTimeMetrics[metricName] = true;
141
- }
142
- },
143
- /*
144
- * Reports a metric value 1 to Console Platform's client logging service to indicate that the
145
- * component was loaded. The component load event will only be reported as used to client logging
146
- * service once per page view.
147
- */
148
- logComponentLoaded: function () {
149
- this.sendMetricObjectOnce({
150
- source: 'components',
151
- action: 'loaded',
152
- version: PACKAGE_VERSION
153
- }, 1);
154
- },
155
- /*
156
- * Reports a metric value 1 to Console Platform's client logging service to indicate that the
157
- * component was used in the page. A component will only be reported as used to client logging
158
- * service once per page view.
159
- */
160
- logComponentUsed: function (componentName) {
161
- this.sendMetricObjectOnce({
162
- source: componentName,
163
- action: 'used',
164
- version: PACKAGE_VERSION
165
- }, 1);
166
- }
167
- };
168
- export var MetricsTestHelper = {
169
- resetOneTimeMetricsCache: function () {
170
- for (var prop in oneTimeMetrics) {
171
- delete oneTimeMetrics[prop];
172
- }
173
- },
174
- formatMajorVersionForMetricDetail: formatMajorVersionForMetricDetail,
175
- formatVersionForMetricName: formatVersionForMetricName
176
- };
177
- //# sourceMappingURL=metrics.js.map