@sentio/ui-dashboard 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +6 -6
- package/dist/index.css.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +3 -3
package/dist/index.css
CHANGED
|
@@ -283,9 +283,6 @@
|
|
|
283
283
|
.inline-flex {
|
|
284
284
|
display: inline-flex;
|
|
285
285
|
}
|
|
286
|
-
.h-0\.5 {
|
|
287
|
-
height: calc(var(--spacing) * 0.5);
|
|
288
|
-
}
|
|
289
286
|
.h-3 {
|
|
290
287
|
height: calc(var(--spacing) * 3);
|
|
291
288
|
}
|
|
@@ -307,6 +304,9 @@
|
|
|
307
304
|
.h-full {
|
|
308
305
|
height: 100%;
|
|
309
306
|
}
|
|
307
|
+
.h-px {
|
|
308
|
+
height: 1px;
|
|
309
|
+
}
|
|
310
310
|
.min-h-6 {
|
|
311
311
|
min-height: calc(var(--spacing) * 6);
|
|
312
312
|
}
|
|
@@ -474,15 +474,15 @@
|
|
|
474
474
|
.border-transparent\! {
|
|
475
475
|
border-color: transparent !important;
|
|
476
476
|
}
|
|
477
|
+
.bg-border-color {
|
|
478
|
+
background-color: rgba(var(--border-color));
|
|
479
|
+
}
|
|
477
480
|
.bg-default-bg {
|
|
478
481
|
background-color: var(--default-bg);
|
|
479
482
|
}
|
|
480
483
|
.bg-gray-50 {
|
|
481
484
|
background-color: rgba(var(--gray-50));
|
|
482
485
|
}
|
|
483
|
-
.bg-gray-300 {
|
|
484
|
-
background-color: rgba(var(--gray-300));
|
|
485
|
-
}
|
|
486
486
|
.bg-primary-500 {
|
|
487
487
|
background-color: rgba(var(--primary-500));
|
|
488
488
|
}
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --spacing: 0.25rem;\n --container-3xl: 48rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --radius-md: 0.375rem;\n --default-font-family: var(--font-sans);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: Menlo, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .absolute {\n position: absolute;\n }\n .relative {\n position: relative;\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .z-10 {\n z-index: 10;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .-ml-px {\n margin-left: -1px;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .h-0\\.5 {\n height: calc(var(--spacing) * 0.5);\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-56 {\n height: calc(var(--spacing) * 56);\n }\n .h-72 {\n height: calc(var(--spacing) * 72);\n }\n .h-full {\n height: 100%;\n }\n .min-h-6 {\n min-height: calc(var(--spacing) * 6);\n }\n .min-h-8 {\n min-height: calc(var(--spacing) * 8);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-44 {\n width: calc(var(--spacing) * 44);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[28rem\\] {\n width: 28rem;\n }\n .w-\\[32rem\\] {\n width: 32rem;\n }\n .w-\\[36rem\\] {\n width: 36rem;\n }\n .w-full {\n width: 100%;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-nowrap {\n flex-wrap: nowrap;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-2 {\n row-gap: calc(var(--spacing) * 2);\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-gray-200 {\n :where(& > :not(:last-child)) {\n border-color: rgba(var(--gray-200));\n }\n }\n .self-center {\n align-self: center;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-none\\! {\n border-radius: 0 !important;\n }\n .rounded-l-md {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n .border-light {\n border-color: rgba(var(--border-light));\n }\n .border-main {\n border-color: rgba(var(--border-main));\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-transparent\\! {\n border-color: transparent !important;\n }\n .bg-default-bg {\n background-color: var(--default-bg);\n }\n .bg-gray-50 {\n background-color: rgba(var(--gray-50));\n }\n .bg-gray-300 {\n background-color: rgba(var(--gray-300));\n }\n .bg-primary-500 {\n background-color: rgba(var(--primary-500));\n }\n .bg-primary-600 {\n background-color: rgba(var(--primary-600));\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-7 {\n padding-right: calc(var(--spacing) * 7);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .align-top {\n vertical-align: top;\n }\n .text-icontent {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n .text-ilabel {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .text-primary-600 {\n color: rgba(var(--primary-600));\n }\n .text-text-foreground {\n color: rgba(var(--text-foreground));\n }\n .text-text-foreground-disabled {\n color: rgba(var(--text-foreground-disabled));\n }\n .text-text-foreground-secondary {\n color: rgba(var(--text-foreground-secondary));\n }\n .text-white {\n color: rgba(var(--white));\n }\n .text-white\\/80 {\n color: rgba(var(--white));\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, rgba(var(--white)) 80%, transparent);\n }\n }\n .capitalize {\n text-transform: capitalize;\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .focus-within\\:border-primary-600\\! {\n &:focus-within {\n border-color: rgba(var(--primary-600)) !important;\n }\n }\n .hover\\:border-primary-600 {\n &:hover {\n @media (hover: hover) {\n border-color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:border-primary-600\\! {\n &:hover {\n @media (hover: hover) {\n border-color: rgba(var(--primary-600)) !important;\n }\n }\n }\n .hover\\:bg-gray-50 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--gray-50));\n }\n }\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--bg-hover));\n }\n }\n }\n .hover\\:bg-primary-600 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:bg-sentio-gray-100 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--sentio-gray-100));\n }\n }\n }\n .hover\\:text-primary-600 {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:text-text-foreground {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--text-foreground));\n }\n }\n }\n .focus\\:border-0 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .focus\\:border-primary-600 {\n &:focus {\n border-color: rgba(var(--primary-600));\n }\n }\n .focus\\:ring-3 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-primary-600\\/30 {\n &:focus {\n --tw-ring-color: rgba(var(--primary-600));\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, rgba(var(--primary-600)) 30%, transparent);\n }\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:ring-inset {\n &:focus {\n --tw-ring-inset: inset;\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:text-ilabel {\n @media (width >= 40rem) {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n }\n .lg\\:max-w-3xl {\n @media (width >= 64rem) {\n max-width: var(--container-3xl);\n }\n }\n .dark\\:bg-primary-600 {\n &:where(.dark, .dark *) {\n background-color: rgba(var(--primary-600));\n }\n }\n .dark\\:hover\\:bg-sentio-gray-400 {\n &:where(.dark, .dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--sentio-gray-400));\n }\n }\n }\n }\n .dark\\:hover\\:text-white {\n &:where(.dark, .dark *) {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--white));\n }\n }\n }\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n border-color: rgba(var(--border-color));\n }\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --spacing: 0.25rem;\n --container-3xl: 48rem;\n --text-xs: 0.75rem;\n --text-xs--line-height: calc(1 / 0.75);\n --text-sm: 0.875rem;\n --text-sm--line-height: calc(1.25 / 0.875);\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --radius-md: 0.375rem;\n --default-font-family: var(--font-sans);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: Menlo, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .absolute {\n position: absolute;\n }\n .relative {\n position: relative;\n }\n .inset-y-0 {\n inset-block: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .z-10 {\n z-index: 10;\n }\n .container {\n width: 100%;\n @media (width >= 40rem) {\n max-width: 40rem;\n }\n @media (width >= 48rem) {\n max-width: 48rem;\n }\n @media (width >= 64rem) {\n max-width: 64rem;\n }\n @media (width >= 80rem) {\n max-width: 80rem;\n }\n @media (width >= 96rem) {\n max-width: 96rem;\n }\n }\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n .mr-1 {\n margin-right: calc(var(--spacing) * 1);\n }\n .-ml-px {\n margin-left: -1px;\n }\n .block {\n display: block;\n }\n .flex {\n display: flex;\n }\n .inline {\n display: inline;\n }\n .inline-block {\n display: inline-block;\n }\n .inline-flex {\n display: inline-flex;\n }\n .h-3 {\n height: calc(var(--spacing) * 3);\n }\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-56 {\n height: calc(var(--spacing) * 56);\n }\n .h-72 {\n height: calc(var(--spacing) * 72);\n }\n .h-full {\n height: 100%;\n }\n .h-px {\n height: 1px;\n }\n .min-h-6 {\n min-height: calc(var(--spacing) * 6);\n }\n .min-h-8 {\n min-height: calc(var(--spacing) * 8);\n }\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n .w-3 {\n width: calc(var(--spacing) * 3);\n }\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n .w-44 {\n width: calc(var(--spacing) * 44);\n }\n .w-72 {\n width: calc(var(--spacing) * 72);\n }\n .w-96 {\n width: calc(var(--spacing) * 96);\n }\n .w-\\[28rem\\] {\n width: 28rem;\n }\n .w-\\[32rem\\] {\n width: 32rem;\n }\n .w-\\[36rem\\] {\n width: 36rem;\n }\n .w-full {\n width: 100%;\n }\n .min-w-\\[200px\\] {\n min-width: 200px;\n }\n .flex-1 {\n flex: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .grow {\n flex-grow: 1;\n }\n .cursor-pointer {\n cursor: pointer;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-nowrap {\n flex-wrap: nowrap;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-stretch {\n justify-content: stretch;\n }\n .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n .space-y-1 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .gap-y-2 {\n row-gap: calc(var(--spacing) * 2);\n }\n .divide-y {\n :where(& > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n }\n .divide-gray-200 {\n :where(& > :not(:last-child)) {\n border-color: rgba(var(--gray-200));\n }\n }\n .self-center {\n align-self: center;\n }\n .truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .overflow-auto {\n overflow: auto;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-md {\n border-radius: var(--radius-md);\n }\n .rounded-none\\! {\n border-radius: 0 !important;\n }\n .rounded-l-md {\n border-top-left-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0px;\n }\n .border-light {\n border-color: rgba(var(--border-light));\n }\n .border-main {\n border-color: rgba(var(--border-main));\n }\n .border-transparent {\n border-color: transparent;\n }\n .border-transparent\\! {\n border-color: transparent !important;\n }\n .bg-border-color {\n background-color: rgba(var(--border-color));\n }\n .bg-default-bg {\n background-color: var(--default-bg);\n }\n .bg-gray-50 {\n background-color: rgba(var(--gray-50));\n }\n .bg-primary-500 {\n background-color: rgba(var(--primary-500));\n }\n .bg-primary-600 {\n background-color: rgba(var(--primary-600));\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n .pr-7 {\n padding-right: calc(var(--spacing) * 7);\n }\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n .align-top {\n vertical-align: top;\n }\n .text-icontent {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n .text-ilabel {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n .text-primary-600 {\n color: rgba(var(--primary-600));\n }\n .text-text-foreground {\n color: rgba(var(--text-foreground));\n }\n .text-text-foreground-disabled {\n color: rgba(var(--text-foreground-disabled));\n }\n .text-text-foreground-secondary {\n color: rgba(var(--text-foreground-secondary));\n }\n .text-white {\n color: rgba(var(--white));\n }\n .text-white\\/80 {\n color: rgba(var(--white));\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, rgba(var(--white)) 80%, transparent);\n }\n }\n .capitalize {\n text-transform: capitalize;\n }\n .shadow-xs {\n --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .ring-1 {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .focus-within\\:border-primary-600\\! {\n &:focus-within {\n border-color: rgba(var(--primary-600)) !important;\n }\n }\n .hover\\:border-primary-600 {\n &:hover {\n @media (hover: hover) {\n border-color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:border-primary-600\\! {\n &:hover {\n @media (hover: hover) {\n border-color: rgba(var(--primary-600)) !important;\n }\n }\n }\n .hover\\:bg-gray-50 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--gray-50));\n }\n }\n }\n .hover\\:bg-hover {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--bg-hover));\n }\n }\n }\n .hover\\:bg-primary-600 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:bg-sentio-gray-100 {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--sentio-gray-100));\n }\n }\n }\n .hover\\:text-primary-600 {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--primary-600));\n }\n }\n }\n .hover\\:text-text-foreground {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--text-foreground));\n }\n }\n }\n .focus\\:border-0 {\n &:focus {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n }\n .focus\\:border-primary-600 {\n &:focus {\n border-color: rgba(var(--primary-600));\n }\n }\n .focus\\:ring-3 {\n &:focus {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n .focus\\:ring-primary-600\\/30 {\n &:focus {\n --tw-ring-color: rgba(var(--primary-600));\n @supports (color: color-mix(in lab, red, red)) {\n --tw-ring-color: color-mix(in oklab, rgba(var(--primary-600)) 30%, transparent);\n }\n }\n }\n .focus\\:outline-hidden {\n &:focus {\n --tw-outline-style: none;\n outline-style: none;\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: 2px;\n }\n }\n }\n .focus\\:ring-inset {\n &:focus {\n --tw-ring-inset: inset;\n }\n }\n .sm\\:px-0 {\n @media (width >= 40rem) {\n padding-inline: calc(var(--spacing) * 0);\n }\n }\n .sm\\:text-ilabel {\n @media (width >= 40rem) {\n font-size: 0.8125rem;\n line-height: var(--tw-leading, 1.125rem);\n }\n }\n .lg\\:max-w-3xl {\n @media (width >= 64rem) {\n max-width: var(--container-3xl);\n }\n }\n .dark\\:bg-primary-600 {\n &:where(.dark, .dark *) {\n background-color: rgba(var(--primary-600));\n }\n }\n .dark\\:hover\\:bg-sentio-gray-400 {\n &:where(.dark, .dark *) {\n &:hover {\n @media (hover: hover) {\n background-color: rgba(var(--sentio-gray-400));\n }\n }\n }\n }\n .dark\\:hover\\:text-white {\n &:where(.dark, .dark *) {\n &:hover {\n @media (hover: hover) {\n color: rgba(var(--white));\n }\n }\n }\n }\n}\n@layer base {\n *,\n ::after,\n ::before,\n ::backdrop,\n ::file-selector-button {\n border-color: rgba(var(--border-color));\n }\n}\n@property --tw-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-divide-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n }\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -728,7 +728,7 @@ function FunctionInput({ value, onChange }) {
|
|
|
728
728
|
}
|
|
729
729
|
),
|
|
730
730
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "inline-flex items-center", children: [
|
|
731
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "h-
|
|
731
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "h-px w-2.5 self-center bg-border-color" }),
|
|
732
732
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react4.Popover, { className: "relative", children: ({ open }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
733
733
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
734
734
|
import_react4.Popover.Button,
|
|
@@ -783,7 +783,7 @@ function Functions({
|
|
|
783
783
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: functions.map((f, fi) => {
|
|
784
784
|
const def = FunctionMap[f.name];
|
|
785
785
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "inline-flex items-center", children: [
|
|
786
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "h-
|
|
786
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "h-px w-2.5 self-center bg-border-color" }),
|
|
787
787
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
788
788
|
"div",
|
|
789
789
|
{
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/timeseries/AggregateInput.tsx","../src/timeseries/labels.ts","../src/timeseries/ArgumentInput.tsx","../src/timeseries/functions.ts","../src/timeseries/FunctionInput.tsx","../src/timeseries/FunctionsPanel.tsx","../src/timeseries/LabelsInput.tsx","../src/timeseries/LabelSearchContext.tsx"],"sourcesContent":["import './styles.css'\n\n// ──────────────────────────────────────────────────────────────────────────\n// Type contracts\n//\n// Minimal, structurally-typed interfaces for the dashboard data model. Public\n// components type their props against these so a consumer can pass its own\n// (richer) data objects directly without this package depending on the\n// consumer's data types. See src/types/*.ts for the per-shape rationale.\n// ──────────────────────────────────────────────────────────────────────────\nexport type {\n // enums\n ChartTypeLike,\n DataSourceTypeLike,\n DashboardVisibilityLike,\n GroupStyleLike,\n NoteFontSizeLike,\n NoteAlignmentLike,\n NoteVerticalAlignmentLike,\n // layout\n LayoutItemLike,\n LayoutsLike,\n ResponsiveLayoutsLike,\n // chart\n YAxisConfigLike,\n ChartConfigLike,\n NoteLike,\n OverlayGraphLike,\n ChartLike,\n // dashboard\n TemplateVariableLike,\n TemplateViewLike,\n DashboardExtraLike,\n GroupLike,\n PanelLike,\n DashboardLike\n} from './types'\n\n// ──────────────────────────────────────────────────────────────────────────\n// Components\n//\n// timeseries: the metrics-query form (aggregate / labels / functions inputs)\n// plus its domain helpers (function definitions, system labels, label-search\n// context). charts / dashboard shells / decoupled dialogs are added later.\n// ──────────────────────────────────────────────────────────────────────────\nexport * from './timeseries'\n","import { useMemo } from 'react'\nimport { capitalize } from 'lodash'\nimport { produce } from 'immer'\nimport { NewMultipleSelect } from '@sentio/ui-core'\nimport type {\n AggregateOpsLike,\n MetricInfoLike,\n QueryLike\n} from '../types/metrics'\nimport { SystemLabels } from './labels'\n\nconst AggregateAggregateOps: AggregateOpsLike[] = [\n 'AVG',\n 'SUM',\n 'MIN',\n 'MAX',\n 'COUNT'\n]\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\ntype Label = { label: string; value: string }\n\nexport function AggregateInput({ metric, value, onChange }: Props) {\n const { labels, selectedLabels } = useMemo(() => {\n const labels: Label[] = []\n for (const sl of SystemLabels) {\n labels.push({ label: sl.name, value: sl.field })\n }\n Object.keys(metric?.labels || {}).forEach((l) => {\n labels.push({ label: l, value: l })\n })\n const selectedLabels: Label[] = []\n for (const l of value?.aggregate?.grouping || []) {\n const label = labels.find((lb) => lb.value === l)\n if (label) {\n selectedLabels.push(label)\n }\n }\n\n return { labels, selectedLabels }\n }, [metric, value])\n\n const onSelectLabel = (labels: Label[]) => {\n onChange(\n produce(value, (draft) => {\n draft.aggregate = draft.aggregate || {}\n draft.aggregate.grouping = labels.map((l) => l.value)\n })\n )\n }\n\n const onSelectFunc = (f: string) => {\n onChange(\n produce(value, (draft) => {\n if (f == 'none') {\n delete draft.aggregate\n } else {\n const aggr = draft.aggregate || {}\n aggr.op = f as AggregateOpsLike\n draft.aggregate = aggr\n }\n })\n )\n }\n\n return (\n <div className=\"min-h-8 flex grow items-center justify-stretch\">\n <select\n value={value.aggregate?.op || ''}\n className=\"sm:text-ilabel border-main text-text-foreground inline-flex h-8 items-center rounded-l-md border border-r-0 bg-gray-50 py-1 pl-4 pr-7 focus:border-0 focus:ring-inset\"\n onChange={(e) => onSelectFunc(e.target.value)}\n aria-label=\"aggregate\"\n >\n <option key=\"\" value={'none'}>\n No aggregate\n </option>\n {AggregateAggregateOps.map((key) => {\n return (\n <option key={key} value={key}>\n {capitalize(key)} by\n </option>\n )\n })}\n </select>\n <NewMultipleSelect<Label>\n disabled={!value.aggregate}\n className=\"border-main flex h-8 grow overflow-hidden rounded-r-md border\"\n options={labels || []}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(l) => l.label}\n unSelectedText=\"(everything)\"\n optionsClassName=\"min-w-[200px]\"\n />\n </div>\n )\n}\n","import { getChainName } from '@sentio/chain'\nimport type { MetricInfoLike } from '../types/metrics'\n\nexport const SystemLabels = [\n {\n field: 'contract_name',\n name: 'contract',\n getValues(metric: MetricInfoLike) {\n return (metric.contractName || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'contract_address',\n name: 'address',\n getValues(metric: MetricInfoLike) {\n return (metric.contractAddress || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'chain',\n name: 'chain',\n getValues(metric: MetricInfoLike) {\n return (metric.chainId || []).map((chainId) => {\n return { value: chainId, display: getChainName(chainId) }\n })\n }\n }\n]\n\nexport function sortMetricByName(a: string, b: string) {\n const aIsSystem = a.startsWith('system.')\n const bIsSystem = b.startsWith('system.')\n\n if (aIsSystem && !bIsSystem) {\n return 1\n }\n if (!aIsSystem && bIsSystem) {\n return -1\n }\n return a.localeCompare(b)\n}\n","import { DurationInput, classNames } from '@sentio/ui-core'\nimport { ArgumentDef, ArgumentType } from './functions'\nimport type { ArgumentLike } from '../types/metrics'\n\ninterface Props {\n argument: ArgumentDef\n value?: ArgumentLike\n onChange?: (value: ArgumentLike) => void\n className?: string\n}\n\nexport function ArgumentInput({ className, argument, value, onChange }: Props) {\n switch (argument.type) {\n case ArgumentType.String:\n return (\n <input\n type=\"text\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.stringValue}\n onChange={(v) =>\n onChange && onChange({ stringValue: v.target.value })\n }\n />\n )\n case ArgumentType.Double:\n return (\n <input\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.doubleValue}\n step=\"any\"\n onChange={(v) =>\n onChange && onChange({ doubleValue: parseFloat(v.target.value) })\n }\n />\n )\n case ArgumentType.Integer:\n return (\n <input\n step=\"1\"\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.intValue}\n onChange={(v) =>\n onChange && onChange({ intValue: parseInt(v.target.value) })\n }\n />\n )\n case ArgumentType.Bool:\n return (\n <input\n type=\"checkbox\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n checked={value?.boolValue}\n onChange={(e) =>\n onChange && onChange({ boolValue: e.target.value == 'true' })\n }\n />\n )\n case ArgumentType.Duration:\n return (\n <DurationInput\n className=\"rounded-none! border-transparent! hover:border-primary-600! focus-within:border-primary-600!\"\n inputClassName={classNames(className)}\n value={value?.durationValue}\n onChange={(e) => onChange && onChange({ durationValue: e })}\n enableDays\n />\n )\n }\n}\n","import type { ArgumentLike } from '../types/metrics'\n\nexport enum ArgumentType {\n String,\n Integer,\n Double,\n Bool,\n Duration\n}\n\nexport interface ArgumentDef {\n name: string\n type: ArgumentType\n}\n\nexport interface FunctionDef {\n name: string\n displayName?: string\n description: string\n arguments: ArgumentDef[]\n defaultArguments?: ArgumentLike[]\n deprecated?: boolean\n}\n\nconst abs: FunctionDef = {\n name: 'abs',\n description: 'Returns the absolute value.',\n arguments: []\n}\n\nconst ceil: FunctionDef = {\n name: 'ceil',\n description:\n 'Returns the smallest integer greater than or equal to a number.',\n arguments: []\n}\n\nconst floor: FunctionDef = {\n name: 'floor',\n description: 'Returns the largest integer less than or equal to a number.',\n arguments: []\n}\nconst round: FunctionDef = {\n name: 'round',\n description: 'Returns the value of a number rounded to the nearest integer.',\n arguments: []\n}\nconst log2: FunctionDef = {\n name: 'log2',\n description: 'Returns the base 2 logarithm.',\n arguments: []\n}\nconst log10: FunctionDef = {\n name: 'log10',\n description: 'Returns the base 10 logarithm.',\n arguments: []\n}\nconst ln: FunctionDef = {\n name: 'ln',\n description: 'Returns the natural logarithm.',\n arguments: []\n}\nconst aggregations = ['avg', 'count', 'last', 'max', 'min', 'sum', 'delta']\n\nconst aggregationDescriptions: { [key: string]: string } = {\n avg: 'Calculates the sum of all values in the specified interval.',\n count: 'Calculates the number of values in the specified interval.',\n last: 'Calculates the last value in the specified interval.',\n max: 'Calculates the maximum of all values in the specified interval.',\n min: 'Calculates the minimum of all values in the specified interval.',\n sum: 'Calculates the sum of all values in the specified interval.',\n delta:\n 'Calculates the difference between the first and last value in the specified interval.'\n}\n\nconst aggregateOverTimeFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `${method}_over_time`,\n description: aggregationDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rollupDescriptions: { [key: string]: string } = {\n avg: 'Roll up the metric by its average value over the specified time period.',\n count:\n 'Roll up the metric by its count value over the specified time period.',\n last: 'Roll up the metric by its last value over the specified time period.',\n max: 'Roll up the metric by its maximum value over the specified time period.',\n min: 'Roll up the metric by its minimum value over the specified time period.',\n sum: 'Roll up the metric by its sum value over the specified time period.',\n delta: 'Roll up the metric by its delta value over the specified time period.'\n}\n\nconst rollupFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `rollup_${method}`,\n description: rollupDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rate: FunctionDef = {\n name: 'rate',\n description:\n 'Calculates the per-second average rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst irate: FunctionDef = {\n name: 'irate',\n description:\n 'Calculates the per-second instant rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst delta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst moving_delta: FunctionDef = {\n name: 'moving_delta',\n description:\n 'Calculates the difference between the first and last value of each time series. (continuously)',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst topk: FunctionDef = {\n name: 'topk',\n description: 'Returns the top k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst bottomk: FunctionDef = {\n name: 'bottomk',\n description: 'Returns the bottom k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst timestamp: FunctionDef = {\n name: 'timestamp',\n description:\n 'Returns the timestamp of each of the samples of the given vector as the number of seconds since January 1, 1970 UTC.',\n arguments: []\n}\nconst day_of_week: FunctionDef = {\n name: 'day_of_week',\n description:\n 'Returns the day of the week for each of the given times. (needs timestamp)',\n arguments: []\n}\nconst day_of_month: FunctionDef = {\n name: 'day_of_month',\n description:\n 'Returns the day of the month for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst day_of_year: FunctionDef = {\n name: 'day_of_year',\n description:\n 'Returns the day of the year for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst month: FunctionDef = {\n name: 'month',\n description:\n 'Returns the month of the given time. Returned values are from 1 to 12, where 1 means January etc. (needs timestamp)',\n arguments: []\n}\n\nconst year: FunctionDef = {\n name: 'year',\n description: 'Returns the year of the given time. (needs timestamp)',\n arguments: []\n}\n\nconst hour: FunctionDef = {\n name: 'hour',\n description:\n 'Returns the hour of the given time. Returned values are from 0 to 23. (needs timestamp)',\n arguments: []\n}\n\nconst minute: FunctionDef = {\n name: 'minute',\n description:\n 'Returns the minute of the given time. Returned values are from 0 to 59. (needs timestamp)',\n arguments: []\n}\n\nconst before: FunctionDef = {\n name: 'before',\n displayName: 'shift earlier',\n description: 'Shifts the vector back in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nconst after: FunctionDef = {\n name: 'after',\n displayName: 'shift later',\n description: 'Shifts the vector forward in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nexport const FunctionsCategories: { [category: string]: FunctionDef[] } = {\n Math: [abs, ceil, floor, round, log2, log10, ln],\n Rollup: rollupFunctions,\n 'Aggregate Over Time': aggregateOverTimeFunctions,\n Rate: [rate, irate, delta, moving_delta],\n Rank: [topk, bottomk],\n Time: [\n timestamp,\n day_of_year,\n day_of_month,\n day_of_week,\n year,\n month,\n hour,\n minute\n ],\n TimeShift: [before, after]\n}\n\nexport const FunctionMap: { [name: string]: FunctionDef } = Object.values(\n FunctionsCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n\nexport function isAggrOrRollupFunction(name: string) {\n const f = FunctionMap[name]\n return f && (f.name.startsWith('rollup_') || f.name.endsWith('_over_time'))\n}\n\nconst eventsDelta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nexport const EventsFunctionCategories: { [category: string]: FunctionDef[] } = {\n Rank: [topk, bottomk],\n Delta: [eventsDelta]\n}\n\nexport const EventsFunctionMap: { [name: string]: FunctionDef } = Object.values(\n EventsFunctionCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n","import { Popover } from '@headlessui/react'\nimport { LuX, LuChevronDown } from 'react-icons/lu'\nimport { useFloating, autoPlacement } from '@floating-ui/react'\nimport { produce } from 'immer'\nimport isEqual from 'lodash/isEqual'\nimport { HelpIcon, PopoverButton, classNames } from '@sentio/ui-core'\nimport { FunctionsPanel } from './FunctionsPanel'\nimport { ArgumentInput } from './ArgumentInput'\nimport { FunctionDef, FunctionMap } from './functions'\nimport type { ArgumentLike, FunctionLike, QueryLike } from '../types/metrics'\n\ninterface Props {\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\nexport function FunctionInput({ value, onChange }: Props) {\n const { x, y, refs, strategy } = useFloating({\n middleware: [autoPlacement()]\n })\n\n const onSelectFunc = (f: FunctionDef) => {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.push({\n name: f.name,\n arguments: f.defaultArguments || []\n })\n })\n )\n }\n\n const remove = (f: FunctionLike) => {\n const idx = (value.functions || []).indexOf(f)\n if (idx >= 0) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.splice(idx, 1)\n })\n )\n }\n }\n\n function changeArgument(fidx: number, aidx: number, v: ArgumentLike) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const f = draft.functions[fidx]\n if (f) {\n f.arguments = f.arguments || []\n f.arguments[aidx] = v\n }\n })\n )\n }\n\n function changeFunction(fidx: number, f: FunctionDef) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const preFunc = draft.functions[fidx]\n let resetArg = true\n if (preFunc.arguments?.length === f.defaultArguments?.length) {\n const firstArg = preFunc.arguments?.[0]\n const firstDefaultArg = f.defaultArguments?.[0]\n if (firstArg && firstDefaultArg) {\n resetArg = isEqual(\n Object.keys(firstArg),\n Object.keys(firstDefaultArg)\n )\n ? false\n : true\n }\n }\n draft.functions[fidx] = {\n name: f.name,\n arguments: resetArg ? f.defaultArguments || [] : preFunc.arguments\n }\n })\n )\n }\n\n return (\n <>\n <Functions\n functions={value.functions || []}\n onRemove={remove}\n onChangeArgument={changeArgument}\n onChangeFunction={changeFunction}\n />\n <div className=\"inline-flex items-center\">\n <div className=\"h-0.5 w-2.5 self-center bg-gray-300\"></div>\n <Popover className=\"relative\">\n {({ open }) => (\n <>\n <Popover.Button\n ref={refs.setReference}\n aria-label=\"Add function\"\n className={classNames(\n 'text-ilabel focus:border-primary-600 focus:ring-primary-600/30 focus:ring-3 relative -ml-px inline-flex h-8 items-center space-x-2 rounded-md',\n 'border-main hover:border-primary-600 border px-4 font-normal',\n open\n ? 'text-primary-600 ring-1'\n : 'text-text-foreground-secondary hover:text-text-foreground'\n )}\n >\n <span className=\"flex text-sm\">f(x)</span>\n <HelpIcon text={'Add functions to query.'} />\n </Popover.Button>\n\n <Popover.Panel\n className=\"shadow-xs border-main z-10 mt-3 h-56 w-96 rounded-md border px-2 sm:px-0 lg:max-w-3xl\"\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n >\n {({ close }) => (\n <FunctionsPanel\n onClick={(f) => {\n onSelectFunc(f)\n close()\n }}\n />\n )}\n </Popover.Panel>\n </>\n )}\n </Popover>\n </div>\n </>\n )\n}\n\nfunction Functions({\n functions,\n onRemove,\n onChangeArgument,\n onChangeFunction\n}: {\n functions: FunctionLike[]\n onRemove: (f: FunctionLike) => void\n onChangeArgument: (fIdx: number, argIdx: number, value: ArgumentLike) => void\n onChangeFunction?: (fIdx: number, f: FunctionDef) => void\n}) {\n if (functions.length == 0) {\n return <></>\n }\n\n return (\n <>\n {functions.map((f, fi) => {\n const def = FunctionMap[f.name!]\n return (\n <div key={f.name} className=\"inline-flex items-center\">\n <div className=\"h-0.5 w-2.5 self-center bg-gray-300\"></div>\n <div\n className={classNames(\n 'text-ilabel focus:outline-hidden text-text-foreground-secondary relative inline-flex items-center pl-2 font-normal',\n 'border-main rounded-md border',\n 'h-8'\n )}\n >\n <PopoverButton\n containerClassName=\"h-full border-r border-light pr-2 inline-flex items-center bg-gray-50\"\n content={({ close }) => (\n <div className=\"z-10 h-56 w-96 px-2 sm:px-0 lg:max-w-3xl\">\n <FunctionsPanel\n onClick={(f) => {\n onChangeFunction?.(fi, f)\n close()\n }}\n defaultFunc={f.name}\n />\n </div>\n )}\n >\n <span className=\"hover:text-primary-600 text-text-foreground inline-flex cursor-pointer flex-nowrap items-center gap-1\">\n {def.displayName || f.name}\n <LuChevronDown className=\"h-4 w-4\" />\n </span>\n </PopoverButton>\n {def.arguments.map((arg, i) => (\n <ArgumentInput\n className=\"sm:text-ilabel block w-full pl-4\"\n key={'arg_' + i}\n argument={arg}\n value={f.arguments && f.arguments[i]}\n onChange={(v) => onChangeArgument(fi, i, v)}\n />\n ))}\n <button\n type={'button'}\n className={\n 'text-text-foreground-disabled hover:text-text-foreground hover:bg-hover h-full rounded-r-md px-2'\n }\n aria-label=\"remove function\"\n onClick={() => onRemove(f)}\n >\n <LuX className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n )\n })}\n </>\n )\n}\n","import { Tab } from '@headlessui/react'\nimport { Fragment, useEffect, useRef, useState } from 'react'\nimport { classNames } from '@sentio/ui-core'\nimport { BiCaretRight } from 'react-icons/bi'\nimport { FunctionDef, FunctionsCategories } from './functions'\n\ninterface Props {\n onClick: (func: FunctionDef) => void\n functionCategories?: typeof FunctionsCategories\n defaultFunc?: string\n}\n\nexport function FunctionsPanel({\n onClick,\n functionCategories = FunctionsCategories,\n defaultFunc\n}: Props) {\n const ulRef = useRef<HTMLUListElement>(null)\n const [selectedIdx, setSelectedIdx] = useState(0)\n useEffect(() => {\n if (!defaultFunc) return\n let targetIndex = 0\n Object.keys(functionCategories).forEach((category, idx) => {\n const func = functionCategories[category].find(\n (f) => f.name === defaultFunc\n )\n if (func) {\n targetIndex = idx\n }\n })\n setSelectedIdx(targetIndex)\n setTimeout(() => {\n const target = ulRef.current?.querySelector(\n `li[data-name=\"${defaultFunc}\"]`\n )\n if (target) {\n target.scrollIntoView({ block: 'center' })\n }\n }, 0)\n }, [defaultFunc])\n return (\n <div className=\"bg-default-bg flex h-full overflow-hidden rounded-md\">\n <Tab.Group vertical selectedIndex={selectedIdx} onChange={setSelectedIdx}>\n <Tab.List\n as=\"ul\"\n className=\"native-scroller border-main flex w-44 shrink-0 flex-col flex-nowrap divide-y divide-gray-200 overflow-auto border-r\"\n >\n {Object.keys(functionCategories).map((category, idx) => (\n <Tab as={Fragment} key={category}>\n {({ selected }) => (\n <li\n onMouseOver={() => setSelectedIdx(idx)}\n className={classNames(\n selected\n ? 'bg-primary-500 hover:bg-primary-600'\n : 'bg-default-bg hover:bg-gray-50',\n selected ? 'text-white' : 'text-foreground',\n 'flex cursor-pointer items-center justify-between p-2 text-sm font-medium'\n )}\n >\n <p\n className={classNames(\n 'text-ilabel flex-1 truncate font-medium'\n )}\n >\n {category}\n </p>\n <BiCaretRight\n className={classNames('h-3 w-3 shrink-0 self-center')}\n />\n </li>\n )}\n </Tab>\n ))}\n </Tab.List>\n <Tab.Panels className=\"flex-1\">\n {Object.keys(functionCategories).map((category) => (\n <Tab.Panel\n as=\"ul\"\n key={category}\n className=\"h-full divide-y overflow-y-auto\"\n ref={ulRef}\n >\n {functionCategories[category]\n .filter((f) => !f.deprecated)\n .map((func) => (\n <li\n key={func.name}\n className={classNames(\n 'group cursor-pointer space-y-1 px-2 py-1.5',\n func.name === defaultFunc\n ? 'bg-primary-600 dark:bg-primary-600 text-white'\n : 'hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 text-text-foreground dark:hover:text-white'\n )}\n onClick={() => onClick(func)}\n data-name={func.name}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-ilabel truncate font-medium\">\n {func.displayName || func.name}\n </p>\n </div>\n <div className=\"flex\">\n <div\n className={classNames(\n 'text-icontent flex items-center',\n func.name === defaultFunc\n ? 'text-white/80'\n : 'text-text-foreground-secondary'\n )}\n >\n <p>{func.description}</p>\n </div>\n </div>\n </li>\n ))}\n </Tab.Panel>\n ))}\n </Tab.Panels>\n </Tab.Group>\n </div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { produce } from 'immer'\nimport { isEqual, sortBy, sortedUniqBy } from 'lodash'\nimport { LuCheck } from 'react-icons/lu'\nimport { VscRegex } from 'react-icons/vsc'\nimport { NewMultipleSelect, classNames } from '@sentio/ui-core'\nimport type { MetricInfoLike, QueryLike } from '../types/metrics'\nimport type { TemplateVariableLike } from '../types/dashboard'\nimport { SystemLabels } from './labels'\nimport { useLabelSearch } from './LabelSearchContext'\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n variables?: { [p: string]: TemplateVariableLike }\n small?: boolean\n useRegex?: boolean\n}\n\ntype LabelSelector = { display: string; key: string; value: string }\n\nexport function LabelsInput({\n value,\n metric,\n variables,\n onChange,\n small,\n useRegex\n}: Props) {\n const [input, setInput] = useState('')\n const onSelectLabel = (labels: LabelSelector[]) => {\n const selector: { [key: string]: string } = {}\n labels.forEach((label) => {\n selector[label.key] = label.value\n })\n onChange(\n produce(value, (draft) => {\n draft.labelSelector = selector\n })\n )\n }\n const { setLabelSearchQuery } = useLabelSearch()\n\n const labelSelectors = useMemo(() => {\n const result: LabelSelector[] = []\n if (metric) {\n Object.entries(variables || {}).forEach(([name, variable]) => {\n const varname = `$${name}`\n const labelSelector = {\n display:\n variable.field == name ? varname : `${variable.field}: ${varname}`,\n key: variable.field!,\n value: `${varname}`\n }\n if (metric.labels && metric.labels[variable.field!]) {\n result.push(labelSelector)\n } else if (\n variable?.field &&\n SystemLabels.map((l) => l.name).includes(variable?.field)\n ) {\n result.push(labelSelector)\n }\n })\n\n for (const sl of SystemLabels) {\n sl.getValues(metric).forEach(({ value, display }) => {\n result.push({\n display: `${sl.name}: ${display}`,\n key: sl.field,\n value: value\n })\n })\n }\n let inputLabel = ''\n let inputValue = ''\n if (input.includes(':')) {\n ;[inputLabel, inputValue] = input.split(':')\n inputLabel = inputLabel.trim()\n inputValue = inputValue.trim()\n } else {\n inputValue = input.trim()\n }\n Object.entries(metric?.labels || {}).forEach(([key, values]) => {\n ;(values.values || []).forEach((value) => {\n result.push({\n display: `${key}:${value}`,\n key,\n value\n })\n })\n if (\n !useRegex ||\n (inputValue && key.includes(inputLabel) === false) ||\n !inputValue\n ) {\n return\n }\n result.push({\n display: `${key}: <contains> ${inputValue}`,\n key,\n value: JSON.stringify({\n operator: 'contains',\n value: inputValue,\n ignoreCase: true\n })\n })\n })\n }\n return sortedUniqBy(\n sortBy(result, (r) => r.display),\n (r) => r.display\n )\n }, [metric, variables, input, useRegex])\n\n const selectedLabels = useMemo(() => {\n const selector = value?.labelSelector || {}\n return Object.entries(selector).map(([key, value]) => {\n return (\n labelSelectors.find((ls) => ls.key == key && ls.value == value) || {\n display: `${key}:${value}`,\n key,\n value\n }\n )\n })\n }, [value?.labelSelector, labelSelectors])\n\n return (\n <NewMultipleSelect<LabelSelector>\n input={input}\n onInputChange={setInput}\n className={classNames(\n 'border-main flex grow overflow-auto rounded-r-md border',\n small ? 'min-h-6' : 'min-h-8'\n )}\n options={labelSelectors}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(o) => {\n const { display, value } = o\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n const valueObj = JSON.parse(value)\n return `${o.key}:<${valueObj?.opertaor ?? 'contains'}> ${valueObj?.value ?? value}`\n }\n return display\n }}\n disabled={!value.query}\n unSelectedText=\"(everywhere)\"\n maxInputSize={30}\n displayIcon={(o: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(o.value)\n return isRegex ? (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n ) : null\n }}\n renderOption={(v: LabelSelector, _active: boolean, selected: boolean) => {\n const text = v.display\n const isRegex = /^\\{.*\\}$/.test(v.value)\n const title = `${text} ${isRegex ? ' (case-sensitive regex matcher)' : ''}`\n return (\n <>\n <span\n title={title}\n className={classNames(\n 'block truncate',\n selected && 'font-medium'\n )}\n >\n {isRegex && (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n )}\n {text}\n </span>\n\n {selected && (\n <span\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center pr-4'\n )}\n >\n <LuCheck className=\"h-4 w-4\" aria-hidden=\"true\" />\n </span>\n )}\n </>\n )\n }}\n filterFn={(option: LabelSelector, input: string) => {\n const { display, value } = option\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n return true\n }\n return display.toLowerCase().includes(input.toLowerCase())\n }}\n validateFn={(option: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(option.value)\n if (isRegex) {\n return true\n }\n return labelSelectors.some((o) => isEqual(o, option))\n }}\n onFilterTextChange={setLabelSearchQuery}\n />\n )\n}\n","import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface LabelSearchContextType {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n}\n\nconst LabelSearchContext = createContext<LabelSearchContextType | undefined>(\n undefined\n)\n\ninterface LabelSearchProviderProps {\n children: ReactNode\n}\n\nexport function LabelSearchProvider({ children }: LabelSearchProviderProps) {\n const [labelSearchQuery, setLabelSearchQuery] = useState('')\n\n return (\n <LabelSearchContext.Provider\n value={{ labelSearchQuery, setLabelSearchQuery }}\n >\n {children}\n </LabelSearchContext.Provider>\n )\n}\n\nexport function useLabelSearchContext(): LabelSearchContextType | undefined {\n return useContext(LabelSearchContext)\n}\n\nexport function useLabelSearch(defaultQuery?: string): {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n} {\n const context = useLabelSearchContext()\n const [localQuery, setLocalQuery] = useState(defaultQuery || '')\n\n if (context) {\n return context\n }\n\n return {\n labelSearchQuery: localQuery,\n setLabelSearchQuery: setLocalQuery\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAwB;AACxB,oBAA2B;AAC3B,mBAAwB;AACxB,qBAAkC;;;ACHlC,mBAA6B;AAGtB,IAAM,eAAe;AAAA,EAC1B;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,QAAwB;AAChC,cAAQ,OAAO,gBAAgB,CAAC,GAAG,IAAI,CAAC,UAAU;AAAA,QAChD,OAAO;AAAA,QACP,SAAS;AAAA,MACX,EAAE;AAAA,IACJ;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,QAAwB;AAChC,cAAQ,OAAO,mBAAmB,CAAC,GAAG,IAAI,CAAC,UAAU;AAAA,QACnD,OAAO;AAAA,QACP,SAAS;AAAA,MACX,EAAE;AAAA,IACJ;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU,QAAwB;AAChC,cAAQ,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY;AAC7C,eAAO,EAAE,OAAO,SAAS,aAAS,2BAAa,OAAO,EAAE;AAAA,MAC1D,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,GAAW,GAAW;AACrD,QAAM,YAAY,EAAE,WAAW,SAAS;AACxC,QAAM,YAAY,EAAE,WAAW,SAAS;AAExC,MAAI,aAAa,CAAC,WAAW;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,CAAC,aAAa,WAAW;AAC3B,WAAO;AAAA,EACT;AACA,SAAO,EAAE,cAAc,CAAC;AAC1B;;;ADgCQ;AAnER,IAAM,wBAA4C;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAUO,SAAS,eAAe,EAAE,QAAQ,OAAO,SAAS,GAAU;AACjE,QAAM,EAAE,QAAQ,eAAe,QAAI,sBAAQ,MAAM;AAC/C,UAAMA,UAAkB,CAAC;AACzB,eAAW,MAAM,cAAc;AAC7B,MAAAA,QAAO,KAAK,EAAE,OAAO,GAAG,MAAM,OAAO,GAAG,MAAM,CAAC;AAAA,IACjD;AACA,WAAO,KAAK,QAAQ,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM;AAC/C,MAAAA,QAAO,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;AAAA,IACpC,CAAC;AACD,UAAMC,kBAA0B,CAAC;AACjC,eAAW,KAAK,OAAO,WAAW,YAAY,CAAC,GAAG;AAChD,YAAM,QAAQD,QAAO,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;AAChD,UAAI,OAAO;AACT,QAAAC,gBAAe,KAAK,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,EAAE,QAAAD,SAAQ,gBAAAC,gBAAe;AAAA,EAClC,GAAG,CAAC,QAAQ,KAAK,CAAC;AAElB,QAAM,gBAAgB,CAACD,YAAoB;AACzC;AAAA,UACE,sBAAQ,OAAO,CAAC,UAAU;AACxB,cAAM,YAAY,MAAM,aAAa,CAAC;AACtC,cAAM,UAAU,WAAWA,QAAO,IAAI,CAAC,MAAM,EAAE,KAAK;AAAA,MACtD,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,eAAe,CAAC,MAAc;AAClC;AAAA,UACE,sBAAQ,OAAO,CAAC,UAAU;AACxB,YAAI,KAAK,QAAQ;AACf,iBAAO,MAAM;AAAA,QACf,OAAO;AACL,gBAAM,OAAO,MAAM,aAAa,CAAC;AACjC,eAAK,KAAK;AACV,gBAAM,YAAY;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SACE,6CAAC,SAAI,WAAU,kDACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,MAAM,WAAW,MAAM;AAAA,QAC9B,WAAU;AAAA,QACV,UAAU,CAAC,MAAM,aAAa,EAAE,OAAO,KAAK;AAAA,QAC5C,cAAW;AAAA,QAEX;AAAA,sDAAC,YAAc,OAAO,QAAQ,4BAAlB,EAEZ;AAAA,UACC,sBAAsB,IAAI,CAAC,QAAQ;AAClC,mBACE,6CAAC,YAAiB,OAAO,KACtB;AAAA,4CAAW,GAAG;AAAA,cAAE;AAAA,iBADN,GAEb;AAAA,UAEJ,CAAC;AAAA;AAAA;AAAA,IACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC,MAAM;AAAA,QACjB,WAAU;AAAA,QACV,SAAS,UAAU,CAAC;AAAA,QACpB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW,CAAC,MAAM,EAAE;AAAA,QACpB,gBAAe;AAAA,QACf,kBAAiB;AAAA;AAAA,IACnB;AAAA,KACF;AAEJ;;;AErGA,IAAAE,kBAA0C;;;ACEnC,IAAK,eAAL,kBAAKC,kBAAL;AACL,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AACA,EAAAA,4BAAA;AALU,SAAAA;AAAA,GAAA;AAsBZ,IAAM,MAAmB;AAAA,EACvB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AAEA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AACA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AACA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AACA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AACA,IAAM,KAAkB;AAAA,EACtB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AACA,IAAM,eAAe,CAAC,OAAO,SAAS,QAAQ,OAAO,OAAO,OAAO,OAAO;AAE1E,IAAM,0BAAqD;AAAA,EACzD,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OACE;AACJ;AAEA,IAAM,6BAA4C,aAAa;AAAA,EAC7D,CAAC,YAAyB;AAAA,IACxB,MAAM,GAAG,MAAM;AAAA,IACf,aAAa,wBAAwB,MAAM;AAAA,IAC3C,WAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAAA,EAC/D;AACF;AAEA,IAAM,qBAAgD;AAAA,EACpD,KAAK;AAAA,EACL,OACE;AAAA,EACF,MAAM;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AACT;AAEA,IAAM,kBAAiC,aAAa;AAAA,EAClD,CAAC,YAAyB;AAAA,IACxB,MAAM,UAAU,MAAM;AAAA,IACtB,aAAa,mBAAmB,MAAM;AAAA,IACtC,WAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAAA,EAC/D;AACF;AAEA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAC/D;AAEA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAC/D;AAEA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAAA,EAC7D,YAAY;AACd;AAEA,IAAM,eAA4B;AAAA,EAChC,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAAA,EAC7D,YAAY;AACd;AAEA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;AACpC;AAEA,IAAM,UAAuB;AAAA,EAC3B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC;AACpC;AAEA,IAAM,YAAyB;AAAA,EAC7B,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AACA,IAAM,cAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AACA,IAAM,eAA4B;AAAA,EAChC,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,cAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW,CAAC;AACd;AAEA,IAAM,OAAoB;AAAA,EACxB,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,SAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW,CAAC;AACd;AAEA,IAAM,SAAsB;AAAA,EAC1B,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAC/D;AAEA,IAAM,QAAqB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAC/D;AAEO,IAAM,sBAA6D;AAAA,EACxE,MAAM,CAAC,KAAK,MAAM,OAAO,OAAO,MAAM,OAAO,EAAE;AAAA,EAC/C,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,MAAM,CAAC,MAAM,OAAO,OAAO,YAAY;AAAA,EACvC,MAAM,CAAC,MAAM,OAAO;AAAA,EACpB,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW,CAAC,QAAQ,KAAK;AAC3B;AAEO,IAAM,cAA+C,OAAO;AAAA,EACjE;AACF,EAAE;AAAA,EACA,CAAC,KAAK,UAAU;AACd,UAAM,QAAQ,CAAC,MAAM;AACnB,UAAI,EAAE,IAAI,IAAI;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;AAEO,SAAS,uBAAuB,MAAc;AACnD,QAAM,IAAI,YAAY,IAAI;AAC1B,SAAO,MAAM,EAAE,KAAK,WAAW,SAAS,KAAK,EAAE,KAAK,SAAS,YAAY;AAC3E;AAEA,IAAM,cAA2B;AAAA,EAC/B,MAAM;AAAA,EACN,aACE;AAAA,EACF,WAAW;AAAA,IACT;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;AAC/D;AAEO,IAAM,2BAAkE;AAAA,EAC7E,MAAM,CAAC,MAAM,OAAO;AAAA,EACpB,OAAO,CAAC,WAAW;AACrB;AAEO,IAAM,oBAAqD,OAAO;AAAA,EACvE;AACF,EAAE;AAAA,EACA,CAAC,KAAK,UAAU;AACd,UAAM,QAAQ,CAAC,MAAM;AACnB,UAAI,EAAE,IAAI,IAAI;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EACA,CAAC;AACH;;;ADhUQ,IAAAC,sBAAA;AAJD,SAAS,cAAc,EAAE,WAAW,UAAU,OAAO,SAAS,GAAU;AAC7E,UAAQ,SAAS,MAAM;AAAA,IACrB;AACE,aACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,eAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO,OAAO;AAAA,UACd,UAAU,CAAC,MACT,YAAY,SAAS,EAAE,aAAa,EAAE,OAAO,MAAM,CAAC;AAAA;AAAA,MAExD;AAAA,IAEJ;AACE,aACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,eAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO,OAAO;AAAA,UACd,MAAK;AAAA,UACL,UAAU,CAAC,MACT,YAAY,SAAS,EAAE,aAAa,WAAW,EAAE,OAAO,KAAK,EAAE,CAAC;AAAA;AAAA,MAEpE;AAAA,IAEJ;AACE,aACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,eAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO,OAAO;AAAA,UACd,UAAU,CAAC,MACT,YAAY,SAAS,EAAE,UAAU,SAAS,EAAE,OAAO,KAAK,EAAE,CAAC;AAAA;AAAA,MAE/D;AAAA,IAEJ;AACE,aACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,eAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UACA,SAAS,OAAO;AAAA,UAChB,UAAU,CAAC,MACT,YAAY,SAAS,EAAE,WAAW,EAAE,OAAO,SAAS,OAAO,CAAC;AAAA;AAAA,MAEhE;AAAA,IAEJ;AACE,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,oBAAgB,4BAAW,SAAS;AAAA,UACpC,OAAO,OAAO;AAAA,UACd,UAAU,CAAC,MAAM,YAAY,SAAS,EAAE,eAAe,EAAE,CAAC;AAAA,UAC1D,YAAU;AAAA;AAAA,MACZ;AAAA,EAEN;AACF;;;AElFA,IAAAC,gBAAwB;AACxB,gBAAmC;AACnC,IAAAA,gBAA2C;AAC3C,IAAAC,gBAAwB;AACxB,qBAAoB;AACpB,IAAAC,kBAAoD;;;ACLpD,IAAAC,gBAAoB;AACpB,IAAAA,gBAAsD;AACtD,IAAAC,kBAA2B;AAC3B,gBAA6B;AA+Cb,IAAAC,sBAAA;AAtCT,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,qBAAqB;AAAA,EACrB;AACF,GAAU;AACR,QAAM,YAAQ,sBAAyB,IAAI;AAC3C,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,CAAC;AAChD,+BAAU,MAAM;AACd,QAAI,CAAC,YAAa;AAClB,QAAI,cAAc;AAClB,WAAO,KAAK,kBAAkB,EAAE,QAAQ,CAAC,UAAU,QAAQ;AACzD,YAAM,OAAO,mBAAmB,QAAQ,EAAE;AAAA,QACxC,CAAC,MAAM,EAAE,SAAS;AAAA,MACpB;AACA,UAAI,MAAM;AACR,sBAAc;AAAA,MAChB;AAAA,IACF,CAAC;AACD,mBAAe,WAAW;AAC1B,eAAW,MAAM;AACf,YAAM,SAAS,MAAM,SAAS;AAAA,QAC5B,iBAAiB,WAAW;AAAA,MAC9B;AACA,UAAI,QAAQ;AACV,eAAO,eAAe,EAAE,OAAO,SAAS,CAAC;AAAA,MAC3C;AAAA,IACF,GAAG,CAAC;AAAA,EACN,GAAG,CAAC,WAAW,CAAC;AAChB,SACE,6CAAC,SAAI,WAAU,wDACb,wDAAC,kBAAI,OAAJ,EAAU,UAAQ,MAAC,eAAe,aAAa,UAAU,gBACxD;AAAA;AAAA,MAAC,kBAAI;AAAA,MAAJ;AAAA,QACC,IAAG;AAAA,QACH,WAAU;AAAA,QAET,iBAAO,KAAK,kBAAkB,EAAE,IAAI,CAAC,UAAU,QAC9C,6CAAC,qBAAI,IAAI,wBACN,WAAC,EAAE,SAAS,MACX;AAAA,UAAC;AAAA;AAAA,YACC,aAAa,MAAM,eAAe,GAAG;AAAA,YACrC,eAAW;AAAA,cACT,WACI,wCACA;AAAA,cACJ,WAAW,eAAe;AAAA,cAC1B;AAAA,YACF;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAW;AAAA,oBACT;AAAA,kBACF;AAAA,kBAEC;AAAA;AAAA,cACH;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAW,4BAAW,8BAA8B;AAAA;AAAA,cACtD;AAAA;AAAA;AAAA,QACF,KAtBoB,QAwBxB,CACD;AAAA;AAAA,IACH;AAAA,IACA,6CAAC,kBAAI,QAAJ,EAAW,WAAU,UACnB,iBAAO,KAAK,kBAAkB,EAAE,IAAI,CAAC,aACpC;AAAA,MAAC,kBAAI;AAAA,MAAJ;AAAA,QACC,IAAG;AAAA,QAEH,WAAU;AAAA,QACV,KAAK;AAAA,QAEJ,6BAAmB,QAAQ,EACzB,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,EAC3B,IAAI,CAAC,SACJ;AAAA,UAAC;AAAA;AAAA,YAEC,eAAW;AAAA,cACT;AAAA,cACA,KAAK,SAAS,cACV,kDACA;AAAA,YACN;AAAA,YACA,SAAS,MAAM,QAAQ,IAAI;AAAA,YAC3B,aAAW,KAAK;AAAA,YAEhB;AAAA,2DAAC,SAAI,WAAU,qCACb,uDAAC,OAAE,WAAU,oCACV,eAAK,eAAe,KAAK,MAC5B,GACF;AAAA,cACA,6CAAC,SAAI,WAAU,QACb;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAW;AAAA,oBACT;AAAA,oBACA,KAAK,SAAS,cACV,kBACA;AAAA,kBACN;AAAA,kBAEA,uDAAC,OAAG,eAAK,aAAY;AAAA;AAAA,cACvB,GACF;AAAA;AAAA;AAAA,UA1BK,KAAK;AAAA,QA2BZ,CACD;AAAA;AAAA,MApCE;AAAA,IAqCP,CACD,GACH;AAAA,KACF,GACF;AAEJ;;;ADpCM,IAAAC,sBAAA;AAtEC,SAAS,cAAc,EAAE,OAAO,SAAS,GAAU;AACxD,QAAM,EAAE,GAAG,GAAG,MAAM,SAAS,QAAI,2BAAY;AAAA,IAC3C,YAAY,KAAC,6BAAc,CAAC;AAAA,EAC9B,CAAC;AAED,QAAM,eAAe,CAAC,MAAmB;AACvC;AAAA,UACE,uBAAQ,OAAO,CAAC,UAAU;AACxB,cAAM,YAAY,MAAM,aAAa,CAAC;AACtC,cAAM,UAAU,KAAK;AAAA,UACnB,MAAM,EAAE;AAAA,UACR,WAAW,EAAE,oBAAoB,CAAC;AAAA,QACpC,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,SAAS,CAAC,MAAoB;AAClC,UAAM,OAAO,MAAM,aAAa,CAAC,GAAG,QAAQ,CAAC;AAC7C,QAAI,OAAO,GAAG;AACZ;AAAA,YACE,uBAAQ,OAAO,CAAC,UAAU;AACxB,gBAAM,YAAY,MAAM,aAAa,CAAC;AACtC,gBAAM,UAAU,OAAO,KAAK,CAAC;AAAA,QAC/B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,WAAS,eAAe,MAAc,MAAc,GAAiB;AACnE;AAAA,UACE,uBAAQ,OAAO,CAAC,UAAU;AACxB,cAAM,YAAY,MAAM,aAAa,CAAC;AACtC,cAAM,IAAI,MAAM,UAAU,IAAI;AAC9B,YAAI,GAAG;AACL,YAAE,YAAY,EAAE,aAAa,CAAC;AAC9B,YAAE,UAAU,IAAI,IAAI;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,eAAe,MAAc,GAAgB;AACpD;AAAA,UACE,uBAAQ,OAAO,CAAC,UAAU;AACxB,cAAM,YAAY,MAAM,aAAa,CAAC;AACtC,cAAM,UAAU,MAAM,UAAU,IAAI;AACpC,YAAI,WAAW;AACf,YAAI,QAAQ,WAAW,WAAW,EAAE,kBAAkB,QAAQ;AAC5D,gBAAM,WAAW,QAAQ,YAAY,CAAC;AACtC,gBAAM,kBAAkB,EAAE,mBAAmB,CAAC;AAC9C,cAAI,YAAY,iBAAiB;AAC/B,2BAAW,eAAAC;AAAA,cACT,OAAO,KAAK,QAAQ;AAAA,cACpB,OAAO,KAAK,eAAe;AAAA,YAC7B,IACI,QACA;AAAA,UACN;AAAA,QACF;AACA,cAAM,UAAU,IAAI,IAAI;AAAA,UACtB,MAAM,EAAE;AAAA,UACR,WAAW,WAAW,EAAE,oBAAoB,CAAC,IAAI,QAAQ;AAAA,QAC3D;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SACE,8EACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,MAAM,aAAa,CAAC;AAAA,QAC/B,UAAU;AAAA,QACV,kBAAkB;AAAA,QAClB,kBAAkB;AAAA;AAAA,IACpB;AAAA,IACA,8CAAC,SAAI,WAAU,4BACb;AAAA,mDAAC,SAAI,WAAU,uCAAsC;AAAA,MACrD,6CAAC,yBAAQ,WAAU,YAChB,WAAC,EAAE,KAAK,MACP,8EACE;AAAA;AAAA,UAAC,sBAAQ;AAAA,UAAR;AAAA,YACC,KAAK,KAAK;AAAA,YACV,cAAW;AAAA,YACX,eAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA,OACI,4BACA;AAAA,YACN;AAAA,YAEA;AAAA,2DAAC,UAAK,WAAU,gBAAe,kBAAI;AAAA,cACnC,6CAAC,4BAAS,MAAM,2BAA2B;AAAA;AAAA;AAAA,QAC7C;AAAA,QAEA;AAAA,UAAC,sBAAQ;AAAA,UAAR;AAAA,YACC,WAAU;AAAA,YACV,KAAK,KAAK;AAAA,YACV,OAAO;AAAA,cACL,UAAU;AAAA,cACV,KAAK,KAAK;AAAA,cACV,MAAM,KAAK;AAAA,YACb;AAAA,YAEC,WAAC,EAAE,MAAM,MACR;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS,CAAC,MAAM;AACd,+BAAa,CAAC;AACd,wBAAM;AAAA,gBACR;AAAA;AAAA,YACF;AAAA;AAAA,QAEJ;AAAA,SACF,GAEJ;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,SAAS,UAAU;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,MAAI,UAAU,UAAU,GAAG;AACzB,WAAO,6EAAE;AAAA,EACX;AAEA,SACE,6EACG,oBAAU,IAAI,CAAC,GAAG,OAAO;AACxB,UAAM,MAAM,YAAY,EAAE,IAAK;AAC/B,WACE,8CAAC,SAAiB,WAAU,4BAC1B;AAAA,mDAAC,SAAI,WAAU,uCAAsC;AAAA,MACrD;AAAA,QAAC;AAAA;AAAA,UACC,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UAEA;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,oBAAmB;AAAA,gBACnB,SAAS,CAAC,EAAE,MAAM,MAChB,6CAAC,SAAI,WAAU,4CACb;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAS,CAACC,OAAM;AACd,yCAAmB,IAAIA,EAAC;AACxB,4BAAM;AAAA,oBACR;AAAA,oBACA,aAAa,EAAE;AAAA;AAAA,gBACjB,GACF;AAAA,gBAGF,wDAAC,UAAK,WAAU,yGACb;AAAA,sBAAI,eAAe,EAAE;AAAA,kBACtB,6CAAC,2BAAc,WAAU,WAAU;AAAA,mBACrC;AAAA;AAAA,YACF;AAAA,YACC,IAAI,UAAU,IAAI,CAAC,KAAK,MACvB;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBAEV,UAAU;AAAA,gBACV,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC;AAAA,gBACnC,UAAU,CAAC,MAAM,iBAAiB,IAAI,GAAG,CAAC;AAAA;AAAA,cAHrC,SAAS;AAAA,YAIhB,CACD;AAAA,YACD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN,WACE;AAAA,gBAEF,cAAW;AAAA,gBACX,SAAS,MAAM,SAAS,CAAC;AAAA,gBAEzB,uDAAC,iBAAI,WAAU,eAAc,eAAY,QAAO;AAAA;AAAA,YAClD;AAAA;AAAA;AAAA,MACF;AAAA,SA/CQ,EAAE,IAgDZ;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AEnNA,IAAAC,gBAAkC;AAClC,IAAAC,gBAAwB;AACxB,IAAAC,iBAA8C;AAC9C,IAAAC,aAAwB;AACxB,iBAAyB;AACzB,IAAAC,kBAA8C;;;ACL9C,IAAAC,gBAAsE;AAmBlE,IAAAC,sBAAA;AAZJ,IAAM,yBAAqB;AAAA,EACzB;AACF;AAMO,SAAS,oBAAoB,EAAE,SAAS,GAA6B;AAC1E,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,wBAAS,EAAE;AAE3D,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,OAAO,EAAE,kBAAkB,oBAAoB;AAAA,MAE9C;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,wBAA4D;AAC1E,aAAO,0BAAW,kBAAkB;AACtC;AAEO,SAAS,eAAe,cAG7B;AACA,QAAM,UAAU,sBAAsB;AACtC,QAAM,CAAC,YAAY,aAAa,QAAI,wBAAS,gBAAgB,EAAE;AAE/D,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,EACvB;AACF;;;AD4GU,IAAAC,sBAAA;AApIH,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAU;AACR,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAS,EAAE;AACrC,QAAM,gBAAgB,CAAC,WAA4B;AACjD,UAAM,WAAsC,CAAC;AAC7C,WAAO,QAAQ,CAAC,UAAU;AACxB,eAAS,MAAM,GAAG,IAAI,MAAM;AAAA,IAC9B,CAAC;AACD;AAAA,UACE,uBAAQ,OAAO,CAAC,UAAU;AACxB,cAAM,gBAAgB;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF;AACA,QAAM,EAAE,oBAAoB,IAAI,eAAe;AAE/C,QAAM,qBAAiB,uBAAQ,MAAM;AACnC,UAAM,SAA0B,CAAC;AACjC,QAAI,QAAQ;AACV,aAAO,QAAQ,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAM;AAC5D,cAAM,UAAU,IAAI,IAAI;AACxB,cAAM,gBAAgB;AAAA,UACpB,SACE,SAAS,SAAS,OAAO,UAAU,GAAG,SAAS,KAAK,KAAK,OAAO;AAAA,UAClE,KAAK,SAAS;AAAA,UACd,OAAO,GAAG,OAAO;AAAA,QACnB;AACA,YAAI,OAAO,UAAU,OAAO,OAAO,SAAS,KAAM,GAAG;AACnD,iBAAO,KAAK,aAAa;AAAA,QAC3B,WACE,UAAU,SACV,aAAa,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,UAAU,KAAK,GACxD;AACA,iBAAO,KAAK,aAAa;AAAA,QAC3B;AAAA,MACF,CAAC;AAED,iBAAW,MAAM,cAAc;AAC7B,WAAG,UAAU,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAAC,QAAO,QAAQ,MAAM;AACnD,iBAAO,KAAK;AAAA,YACV,SAAS,GAAG,GAAG,IAAI,KAAK,OAAO;AAAA,YAC/B,KAAK,GAAG;AAAA,YACR,OAAOA;AAAA,UACT,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AACA,UAAI,aAAa;AACjB,UAAI,aAAa;AACjB,UAAI,MAAM,SAAS,GAAG,GAAG;AACvB;AAAC,SAAC,YAAY,UAAU,IAAI,MAAM,MAAM,GAAG;AAC3C,qBAAa,WAAW,KAAK;AAC7B,qBAAa,WAAW,KAAK;AAAA,MAC/B,OAAO;AACL,qBAAa,MAAM,KAAK;AAAA,MAC1B;AACA,aAAO,QAAQ,QAAQ,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,MAAM,MAAM;AAC9D;AAAC,SAAC,OAAO,UAAU,CAAC,GAAG,QAAQ,CAACA,WAAU;AACxC,iBAAO,KAAK;AAAA,YACV,SAAS,GAAG,GAAG,IAAIA,MAAK;AAAA,YACxB;AAAA,YACA,OAAAA;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AACD,YACE,CAAC,YACA,cAAc,IAAI,SAAS,UAAU,MAAM,SAC5C,CAAC,YACD;AACA;AAAA,QACF;AACA,eAAO,KAAK;AAAA,UACV,SAAS,GAAG,GAAG,gBAAgB,UAAU;AAAA,UACzC;AAAA,UACA,OAAO,KAAK,UAAU;AAAA,YACpB,UAAU;AAAA,YACV,OAAO;AAAA,YACP,YAAY;AAAA,UACd,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AACA,eAAO;AAAA,UACL,uBAAO,QAAQ,CAAC,MAAM,EAAE,OAAO;AAAA,MAC/B,CAAC,MAAM,EAAE;AAAA,IACX;AAAA,EACF,GAAG,CAAC,QAAQ,WAAW,OAAO,QAAQ,CAAC;AAEvC,QAAM,qBAAiB,uBAAQ,MAAM;AACnC,UAAM,WAAW,OAAO,iBAAiB,CAAC;AAC1C,WAAO,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAKA,MAAK,MAAM;AACpD,aACE,eAAe,KAAK,CAAC,OAAO,GAAG,OAAO,OAAO,GAAG,SAASA,MAAK,KAAK;AAAA,QACjE,SAAS,GAAG,GAAG,IAAIA,MAAK;AAAA,QACxB;AAAA,QACA,OAAAA;AAAA,MACF;AAAA,IAEJ,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,eAAe,cAAc,CAAC;AAEzC,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAe;AAAA,MACf,eAAW;AAAA,QACT;AAAA,QACA,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU;AAAA,MACV,WAAW,CAAC,MAAM;AAChB,cAAM,EAAE,SAAS,OAAAA,OAAM,IAAI;AAC3B,cAAM,UAAU,WAAW,KAAKA,MAAK;AACrC,YAAI,SAAS;AACX,gBAAM,WAAW,KAAK,MAAMA,MAAK;AACjC,iBAAO,GAAG,EAAE,GAAG,KAAK,UAAU,YAAY,UAAU,KAAK,UAAU,SAASA,MAAK;AAAA,QACnF;AACA,eAAO;AAAA,MACT;AAAA,MACA,UAAU,CAAC,MAAM;AAAA,MACjB,gBAAe;AAAA,MACf,cAAc;AAAA,MACd,aAAa,CAAC,MAAqB;AACjC,cAAM,UAAU,WAAW,KAAK,EAAE,KAAK;AACvC,eAAO,UACL,6CAAC,uBAAS,WAAU,uCAAsC,IACxD;AAAA,MACN;AAAA,MACA,cAAc,CAAC,GAAkB,SAAkB,aAAsB;AACvE,cAAM,OAAO,EAAE;AACf,cAAM,UAAU,WAAW,KAAK,EAAE,KAAK;AACvC,cAAM,QAAQ,GAAG,IAAI,IAAI,UAAU,oCAAoC,EAAE;AACzE,eACE,8EACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,eAAW;AAAA,gBACT;AAAA,gBACA,YAAY;AAAA,cACd;AAAA,cAEC;AAAA,2BACC,6CAAC,uBAAS,WAAU,uCAAsC;AAAA,gBAE3D;AAAA;AAAA;AAAA,UACH;AAAA,UAEC,YACC;AAAA,YAAC;AAAA;AAAA,cACC,eAAW;AAAA,gBACT;AAAA,cACF;AAAA,cAEA,uDAAC,sBAAQ,WAAU,WAAU,eAAY,QAAO;AAAA;AAAA,UAClD;AAAA,WAEJ;AAAA,MAEJ;AAAA,MACA,UAAU,CAAC,QAAuBC,WAAkB;AAClD,cAAM,EAAE,SAAS,OAAAD,OAAM,IAAI;AAC3B,cAAM,UAAU,WAAW,KAAKA,MAAK;AACrC,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,YAAY,EAAE,SAASC,OAAM,YAAY,CAAC;AAAA,MAC3D;AAAA,MACA,YAAY,CAAC,WAA0B;AACrC,cAAM,UAAU,WAAW,KAAK,OAAO,KAAK;AAC5C,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AACA,eAAO,eAAe,KAAK,CAAC,UAAM,wBAAQ,GAAG,MAAM,CAAC;AAAA,MACtD;AAAA,MACA,oBAAoB;AAAA;AAAA,EACtB;AAEJ;","names":["labels","selectedLabels","import_ui_core","ArgumentType","import_jsx_runtime","import_react","import_immer","import_ui_core","import_react","import_ui_core","import_jsx_runtime","import_jsx_runtime","isEqual","f","import_react","import_immer","import_lodash","import_lu","import_ui_core","import_react","import_jsx_runtime","import_jsx_runtime","value","input"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/timeseries/AggregateInput.tsx","../src/timeseries/labels.ts","../src/timeseries/ArgumentInput.tsx","../src/timeseries/functions.ts","../src/timeseries/FunctionInput.tsx","../src/timeseries/FunctionsPanel.tsx","../src/timeseries/LabelsInput.tsx","../src/timeseries/LabelSearchContext.tsx"],"sourcesContent":["import './styles.css'\n\n// ──────────────────────────────────────────────────────────────────────────\n// Type contracts\n//\n// Minimal, structurally-typed interfaces for the dashboard data model. Public\n// components type their props against these so a consumer can pass its own\n// (richer) data objects directly without this package depending on the\n// consumer's data types. See src/types/*.ts for the per-shape rationale.\n// ──────────────────────────────────────────────────────────────────────────\nexport type {\n // enums\n ChartTypeLike,\n DataSourceTypeLike,\n DashboardVisibilityLike,\n GroupStyleLike,\n NoteFontSizeLike,\n NoteAlignmentLike,\n NoteVerticalAlignmentLike,\n // layout\n LayoutItemLike,\n LayoutsLike,\n ResponsiveLayoutsLike,\n // chart\n YAxisConfigLike,\n ChartConfigLike,\n NoteLike,\n OverlayGraphLike,\n ChartLike,\n // dashboard\n TemplateVariableLike,\n TemplateViewLike,\n DashboardExtraLike,\n GroupLike,\n PanelLike,\n DashboardLike\n} from './types'\n\n// ──────────────────────────────────────────────────────────────────────────\n// Components\n//\n// timeseries: the metrics-query form (aggregate / labels / functions inputs)\n// plus its domain helpers (function definitions, system labels, label-search\n// context). charts / dashboard shells / decoupled dialogs are added later.\n// ──────────────────────────────────────────────────────────────────────────\nexport * from './timeseries'\n","import { useMemo } from 'react'\nimport { capitalize } from 'lodash'\nimport { produce } from 'immer'\nimport { NewMultipleSelect } from '@sentio/ui-core'\nimport type {\n AggregateOpsLike,\n MetricInfoLike,\n QueryLike\n} from '../types/metrics'\nimport { SystemLabels } from './labels'\n\nconst AggregateAggregateOps: AggregateOpsLike[] = [\n 'AVG',\n 'SUM',\n 'MIN',\n 'MAX',\n 'COUNT'\n]\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\ntype Label = { label: string; value: string }\n\nexport function AggregateInput({ metric, value, onChange }: Props) {\n const { labels, selectedLabels } = useMemo(() => {\n const labels: Label[] = []\n for (const sl of SystemLabels) {\n labels.push({ label: sl.name, value: sl.field })\n }\n Object.keys(metric?.labels || {}).forEach((l) => {\n labels.push({ label: l, value: l })\n })\n const selectedLabels: Label[] = []\n for (const l of value?.aggregate?.grouping || []) {\n const label = labels.find((lb) => lb.value === l)\n if (label) {\n selectedLabels.push(label)\n }\n }\n\n return { labels, selectedLabels }\n }, [metric, value])\n\n const onSelectLabel = (labels: Label[]) => {\n onChange(\n produce(value, (draft) => {\n draft.aggregate = draft.aggregate || {}\n draft.aggregate.grouping = labels.map((l) => l.value)\n })\n )\n }\n\n const onSelectFunc = (f: string) => {\n onChange(\n produce(value, (draft) => {\n if (f == 'none') {\n delete draft.aggregate\n } else {\n const aggr = draft.aggregate || {}\n aggr.op = f as AggregateOpsLike\n draft.aggregate = aggr\n }\n })\n )\n }\n\n return (\n <div className=\"min-h-8 flex grow items-center justify-stretch\">\n <select\n value={value.aggregate?.op || ''}\n className=\"sm:text-ilabel border-main text-text-foreground inline-flex h-8 items-center rounded-l-md border border-r-0 bg-gray-50 py-1 pl-4 pr-7 focus:border-0 focus:ring-inset\"\n onChange={(e) => onSelectFunc(e.target.value)}\n aria-label=\"aggregate\"\n >\n <option key=\"\" value={'none'}>\n No aggregate\n </option>\n {AggregateAggregateOps.map((key) => {\n return (\n <option key={key} value={key}>\n {capitalize(key)} by\n </option>\n )\n })}\n </select>\n <NewMultipleSelect<Label>\n disabled={!value.aggregate}\n className=\"border-main flex h-8 grow overflow-hidden rounded-r-md border\"\n options={labels || []}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(l) => l.label}\n unSelectedText=\"(everything)\"\n optionsClassName=\"min-w-[200px]\"\n />\n </div>\n )\n}\n","import { getChainName } from '@sentio/chain'\nimport type { MetricInfoLike } from '../types/metrics'\n\nexport const SystemLabels = [\n {\n field: 'contract_name',\n name: 'contract',\n getValues(metric: MetricInfoLike) {\n return (metric.contractName || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'contract_address',\n name: 'address',\n getValues(metric: MetricInfoLike) {\n return (metric.contractAddress || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'chain',\n name: 'chain',\n getValues(metric: MetricInfoLike) {\n return (metric.chainId || []).map((chainId) => {\n return { value: chainId, display: getChainName(chainId) }\n })\n }\n }\n]\n\nexport function sortMetricByName(a: string, b: string) {\n const aIsSystem = a.startsWith('system.')\n const bIsSystem = b.startsWith('system.')\n\n if (aIsSystem && !bIsSystem) {\n return 1\n }\n if (!aIsSystem && bIsSystem) {\n return -1\n }\n return a.localeCompare(b)\n}\n","import { DurationInput, classNames } from '@sentio/ui-core'\nimport { ArgumentDef, ArgumentType } from './functions'\nimport type { ArgumentLike } from '../types/metrics'\n\ninterface Props {\n argument: ArgumentDef\n value?: ArgumentLike\n onChange?: (value: ArgumentLike) => void\n className?: string\n}\n\nexport function ArgumentInput({ className, argument, value, onChange }: Props) {\n switch (argument.type) {\n case ArgumentType.String:\n return (\n <input\n type=\"text\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.stringValue}\n onChange={(v) =>\n onChange && onChange({ stringValue: v.target.value })\n }\n />\n )\n case ArgumentType.Double:\n return (\n <input\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.doubleValue}\n step=\"any\"\n onChange={(v) =>\n onChange && onChange({ doubleValue: parseFloat(v.target.value) })\n }\n />\n )\n case ArgumentType.Integer:\n return (\n <input\n step=\"1\"\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.intValue}\n onChange={(v) =>\n onChange && onChange({ intValue: parseInt(v.target.value) })\n }\n />\n )\n case ArgumentType.Bool:\n return (\n <input\n type=\"checkbox\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n checked={value?.boolValue}\n onChange={(e) =>\n onChange && onChange({ boolValue: e.target.value == 'true' })\n }\n />\n )\n case ArgumentType.Duration:\n return (\n <DurationInput\n className=\"rounded-none! border-transparent! hover:border-primary-600! focus-within:border-primary-600!\"\n inputClassName={classNames(className)}\n value={value?.durationValue}\n onChange={(e) => onChange && onChange({ durationValue: e })}\n enableDays\n />\n )\n }\n}\n","import type { ArgumentLike } from '../types/metrics'\n\nexport enum ArgumentType {\n String,\n Integer,\n Double,\n Bool,\n Duration\n}\n\nexport interface ArgumentDef {\n name: string\n type: ArgumentType\n}\n\nexport interface FunctionDef {\n name: string\n displayName?: string\n description: string\n arguments: ArgumentDef[]\n defaultArguments?: ArgumentLike[]\n deprecated?: boolean\n}\n\nconst abs: FunctionDef = {\n name: 'abs',\n description: 'Returns the absolute value.',\n arguments: []\n}\n\nconst ceil: FunctionDef = {\n name: 'ceil',\n description:\n 'Returns the smallest integer greater than or equal to a number.',\n arguments: []\n}\n\nconst floor: FunctionDef = {\n name: 'floor',\n description: 'Returns the largest integer less than or equal to a number.',\n arguments: []\n}\nconst round: FunctionDef = {\n name: 'round',\n description: 'Returns the value of a number rounded to the nearest integer.',\n arguments: []\n}\nconst log2: FunctionDef = {\n name: 'log2',\n description: 'Returns the base 2 logarithm.',\n arguments: []\n}\nconst log10: FunctionDef = {\n name: 'log10',\n description: 'Returns the base 10 logarithm.',\n arguments: []\n}\nconst ln: FunctionDef = {\n name: 'ln',\n description: 'Returns the natural logarithm.',\n arguments: []\n}\nconst aggregations = ['avg', 'count', 'last', 'max', 'min', 'sum', 'delta']\n\nconst aggregationDescriptions: { [key: string]: string } = {\n avg: 'Calculates the sum of all values in the specified interval.',\n count: 'Calculates the number of values in the specified interval.',\n last: 'Calculates the last value in the specified interval.',\n max: 'Calculates the maximum of all values in the specified interval.',\n min: 'Calculates the minimum of all values in the specified interval.',\n sum: 'Calculates the sum of all values in the specified interval.',\n delta:\n 'Calculates the difference between the first and last value in the specified interval.'\n}\n\nconst aggregateOverTimeFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `${method}_over_time`,\n description: aggregationDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rollupDescriptions: { [key: string]: string } = {\n avg: 'Roll up the metric by its average value over the specified time period.',\n count:\n 'Roll up the metric by its count value over the specified time period.',\n last: 'Roll up the metric by its last value over the specified time period.',\n max: 'Roll up the metric by its maximum value over the specified time period.',\n min: 'Roll up the metric by its minimum value over the specified time period.',\n sum: 'Roll up the metric by its sum value over the specified time period.',\n delta: 'Roll up the metric by its delta value over the specified time period.'\n}\n\nconst rollupFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `rollup_${method}`,\n description: rollupDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rate: FunctionDef = {\n name: 'rate',\n description:\n 'Calculates the per-second average rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst irate: FunctionDef = {\n name: 'irate',\n description:\n 'Calculates the per-second instant rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst delta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst moving_delta: FunctionDef = {\n name: 'moving_delta',\n description:\n 'Calculates the difference between the first and last value of each time series. (continuously)',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst topk: FunctionDef = {\n name: 'topk',\n description: 'Returns the top k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst bottomk: FunctionDef = {\n name: 'bottomk',\n description: 'Returns the bottom k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst timestamp: FunctionDef = {\n name: 'timestamp',\n description:\n 'Returns the timestamp of each of the samples of the given vector as the number of seconds since January 1, 1970 UTC.',\n arguments: []\n}\nconst day_of_week: FunctionDef = {\n name: 'day_of_week',\n description:\n 'Returns the day of the week for each of the given times. (needs timestamp)',\n arguments: []\n}\nconst day_of_month: FunctionDef = {\n name: 'day_of_month',\n description:\n 'Returns the day of the month for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst day_of_year: FunctionDef = {\n name: 'day_of_year',\n description:\n 'Returns the day of the year for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst month: FunctionDef = {\n name: 'month',\n description:\n 'Returns the month of the given time. Returned values are from 1 to 12, where 1 means January etc. (needs timestamp)',\n arguments: []\n}\n\nconst year: FunctionDef = {\n name: 'year',\n description: 'Returns the year of the given time. (needs timestamp)',\n arguments: []\n}\n\nconst hour: FunctionDef = {\n name: 'hour',\n description:\n 'Returns the hour of the given time. Returned values are from 0 to 23. (needs timestamp)',\n arguments: []\n}\n\nconst minute: FunctionDef = {\n name: 'minute',\n description:\n 'Returns the minute of the given time. Returned values are from 0 to 59. (needs timestamp)',\n arguments: []\n}\n\nconst before: FunctionDef = {\n name: 'before',\n displayName: 'shift earlier',\n description: 'Shifts the vector back in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nconst after: FunctionDef = {\n name: 'after',\n displayName: 'shift later',\n description: 'Shifts the vector forward in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nexport const FunctionsCategories: { [category: string]: FunctionDef[] } = {\n Math: [abs, ceil, floor, round, log2, log10, ln],\n Rollup: rollupFunctions,\n 'Aggregate Over Time': aggregateOverTimeFunctions,\n Rate: [rate, irate, delta, moving_delta],\n Rank: [topk, bottomk],\n Time: [\n timestamp,\n day_of_year,\n day_of_month,\n day_of_week,\n year,\n month,\n hour,\n minute\n ],\n TimeShift: [before, after]\n}\n\nexport const FunctionMap: { [name: string]: FunctionDef } = Object.values(\n FunctionsCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n\nexport function isAggrOrRollupFunction(name: string) {\n const f = FunctionMap[name]\n return f && (f.name.startsWith('rollup_') || f.name.endsWith('_over_time'))\n}\n\nconst eventsDelta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nexport const EventsFunctionCategories: { [category: string]: FunctionDef[] } = {\n Rank: [topk, bottomk],\n Delta: [eventsDelta]\n}\n\nexport const EventsFunctionMap: { [name: string]: FunctionDef } = Object.values(\n EventsFunctionCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n","import { Popover } from '@headlessui/react'\nimport { LuX, LuChevronDown } from 'react-icons/lu'\nimport { useFloating, autoPlacement } from '@floating-ui/react'\nimport { produce } from 'immer'\nimport isEqual from 'lodash/isEqual'\nimport { HelpIcon, PopoverButton, classNames } from '@sentio/ui-core'\nimport { FunctionsPanel } from './FunctionsPanel'\nimport { ArgumentInput } from './ArgumentInput'\nimport { FunctionDef, FunctionMap } from './functions'\nimport type { ArgumentLike, FunctionLike, QueryLike } from '../types/metrics'\n\ninterface Props {\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\nexport function FunctionInput({ value, onChange }: Props) {\n const { x, y, refs, strategy } = useFloating({\n middleware: [autoPlacement()]\n })\n\n const onSelectFunc = (f: FunctionDef) => {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.push({\n name: f.name,\n arguments: f.defaultArguments || []\n })\n })\n )\n }\n\n const remove = (f: FunctionLike) => {\n const idx = (value.functions || []).indexOf(f)\n if (idx >= 0) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.splice(idx, 1)\n })\n )\n }\n }\n\n function changeArgument(fidx: number, aidx: number, v: ArgumentLike) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const f = draft.functions[fidx]\n if (f) {\n f.arguments = f.arguments || []\n f.arguments[aidx] = v\n }\n })\n )\n }\n\n function changeFunction(fidx: number, f: FunctionDef) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const preFunc = draft.functions[fidx]\n let resetArg = true\n if (preFunc.arguments?.length === f.defaultArguments?.length) {\n const firstArg = preFunc.arguments?.[0]\n const firstDefaultArg = f.defaultArguments?.[0]\n if (firstArg && firstDefaultArg) {\n resetArg = isEqual(\n Object.keys(firstArg),\n Object.keys(firstDefaultArg)\n )\n ? false\n : true\n }\n }\n draft.functions[fidx] = {\n name: f.name,\n arguments: resetArg ? f.defaultArguments || [] : preFunc.arguments\n }\n })\n )\n }\n\n return (\n <>\n <Functions\n functions={value.functions || []}\n onRemove={remove}\n onChangeArgument={changeArgument}\n onChangeFunction={changeFunction}\n />\n <div className=\"inline-flex items-center\">\n <div className=\"h-px w-2.5 self-center bg-border-color\"></div>\n <Popover className=\"relative\">\n {({ open }) => (\n <>\n <Popover.Button\n ref={refs.setReference}\n aria-label=\"Add function\"\n className={classNames(\n 'text-ilabel focus:border-primary-600 focus:ring-primary-600/30 focus:ring-3 relative -ml-px inline-flex h-8 items-center space-x-2 rounded-md',\n 'border-main hover:border-primary-600 border px-4 font-normal',\n open\n ? 'text-primary-600 ring-1'\n : 'text-text-foreground-secondary hover:text-text-foreground'\n )}\n >\n <span className=\"flex text-sm\">f(x)</span>\n <HelpIcon text={'Add functions to query.'} />\n </Popover.Button>\n\n <Popover.Panel\n className=\"shadow-xs border-main z-10 mt-3 h-56 w-96 rounded-md border px-2 sm:px-0 lg:max-w-3xl\"\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n >\n {({ close }) => (\n <FunctionsPanel\n onClick={(f) => {\n onSelectFunc(f)\n close()\n }}\n />\n )}\n </Popover.Panel>\n </>\n )}\n </Popover>\n </div>\n </>\n )\n}\n\nfunction Functions({\n functions,\n onRemove,\n onChangeArgument,\n onChangeFunction\n}: {\n functions: FunctionLike[]\n onRemove: (f: FunctionLike) => void\n onChangeArgument: (fIdx: number, argIdx: number, value: ArgumentLike) => void\n onChangeFunction?: (fIdx: number, f: FunctionDef) => void\n}) {\n if (functions.length == 0) {\n return <></>\n }\n\n return (\n <>\n {functions.map((f, fi) => {\n const def = FunctionMap[f.name!]\n return (\n <div key={f.name} className=\"inline-flex items-center\">\n <div className=\"h-px w-2.5 self-center bg-border-color\"></div>\n <div\n className={classNames(\n 'text-ilabel focus:outline-hidden text-text-foreground-secondary relative inline-flex items-center pl-2 font-normal',\n 'border-main rounded-md border',\n 'h-8'\n )}\n >\n <PopoverButton\n containerClassName=\"h-full border-r border-light pr-2 inline-flex items-center bg-gray-50\"\n content={({ close }) => (\n <div className=\"z-10 h-56 w-96 px-2 sm:px-0 lg:max-w-3xl\">\n <FunctionsPanel\n onClick={(f) => {\n onChangeFunction?.(fi, f)\n close()\n }}\n defaultFunc={f.name}\n />\n </div>\n )}\n >\n <span className=\"hover:text-primary-600 text-text-foreground inline-flex cursor-pointer flex-nowrap items-center gap-1\">\n {def.displayName || f.name}\n <LuChevronDown className=\"h-4 w-4\" />\n </span>\n </PopoverButton>\n {def.arguments.map((arg, i) => (\n <ArgumentInput\n className=\"sm:text-ilabel block w-full pl-4\"\n key={'arg_' + i}\n argument={arg}\n value={f.arguments && f.arguments[i]}\n onChange={(v) => onChangeArgument(fi, i, v)}\n />\n ))}\n <button\n type={'button'}\n className={\n 'text-text-foreground-disabled hover:text-text-foreground hover:bg-hover h-full rounded-r-md px-2'\n }\n aria-label=\"remove function\"\n onClick={() => onRemove(f)}\n >\n <LuX className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n )\n })}\n </>\n )\n}\n","import { Tab } from '@headlessui/react'\nimport { Fragment, useEffect, useRef, useState } from 'react'\nimport { classNames } from '@sentio/ui-core'\nimport { BiCaretRight } from 'react-icons/bi'\nimport { FunctionDef, FunctionsCategories } from './functions'\n\ninterface Props {\n onClick: (func: FunctionDef) => void\n functionCategories?: typeof FunctionsCategories\n defaultFunc?: string\n}\n\nexport function FunctionsPanel({\n onClick,\n functionCategories = FunctionsCategories,\n defaultFunc\n}: Props) {\n const ulRef = useRef<HTMLUListElement>(null)\n const [selectedIdx, setSelectedIdx] = useState(0)\n useEffect(() => {\n if (!defaultFunc) return\n let targetIndex = 0\n Object.keys(functionCategories).forEach((category, idx) => {\n const func = functionCategories[category].find(\n (f) => f.name === defaultFunc\n )\n if (func) {\n targetIndex = idx\n }\n })\n setSelectedIdx(targetIndex)\n setTimeout(() => {\n const target = ulRef.current?.querySelector(\n `li[data-name=\"${defaultFunc}\"]`\n )\n if (target) {\n target.scrollIntoView({ block: 'center' })\n }\n }, 0)\n }, [defaultFunc])\n return (\n <div className=\"bg-default-bg flex h-full overflow-hidden rounded-md\">\n <Tab.Group vertical selectedIndex={selectedIdx} onChange={setSelectedIdx}>\n <Tab.List\n as=\"ul\"\n className=\"native-scroller border-main flex w-44 shrink-0 flex-col flex-nowrap divide-y divide-gray-200 overflow-auto border-r\"\n >\n {Object.keys(functionCategories).map((category, idx) => (\n <Tab as={Fragment} key={category}>\n {({ selected }) => (\n <li\n onMouseOver={() => setSelectedIdx(idx)}\n className={classNames(\n selected\n ? 'bg-primary-500 hover:bg-primary-600'\n : 'bg-default-bg hover:bg-gray-50',\n selected ? 'text-white' : 'text-foreground',\n 'flex cursor-pointer items-center justify-between p-2 text-sm font-medium'\n )}\n >\n <p\n className={classNames(\n 'text-ilabel flex-1 truncate font-medium'\n )}\n >\n {category}\n </p>\n <BiCaretRight\n className={classNames('h-3 w-3 shrink-0 self-center')}\n />\n </li>\n )}\n </Tab>\n ))}\n </Tab.List>\n <Tab.Panels className=\"flex-1\">\n {Object.keys(functionCategories).map((category) => (\n <Tab.Panel\n as=\"ul\"\n key={category}\n className=\"h-full divide-y overflow-y-auto\"\n ref={ulRef}\n >\n {functionCategories[category]\n .filter((f) => !f.deprecated)\n .map((func) => (\n <li\n key={func.name}\n className={classNames(\n 'group cursor-pointer space-y-1 px-2 py-1.5',\n func.name === defaultFunc\n ? 'bg-primary-600 dark:bg-primary-600 text-white'\n : 'hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 text-text-foreground dark:hover:text-white'\n )}\n onClick={() => onClick(func)}\n data-name={func.name}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-ilabel truncate font-medium\">\n {func.displayName || func.name}\n </p>\n </div>\n <div className=\"flex\">\n <div\n className={classNames(\n 'text-icontent flex items-center',\n func.name === defaultFunc\n ? 'text-white/80'\n : 'text-text-foreground-secondary'\n )}\n >\n <p>{func.description}</p>\n </div>\n </div>\n </li>\n ))}\n </Tab.Panel>\n ))}\n </Tab.Panels>\n </Tab.Group>\n </div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { produce } from 'immer'\nimport { isEqual, sortBy, sortedUniqBy } from 'lodash'\nimport { LuCheck } from 'react-icons/lu'\nimport { VscRegex } from 'react-icons/vsc'\nimport { NewMultipleSelect, classNames } from '@sentio/ui-core'\nimport type { MetricInfoLike, QueryLike } from '../types/metrics'\nimport type { TemplateVariableLike } from '../types/dashboard'\nimport { SystemLabels } from './labels'\nimport { useLabelSearch } from './LabelSearchContext'\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n variables?: { [p: string]: TemplateVariableLike }\n small?: boolean\n useRegex?: boolean\n}\n\ntype LabelSelector = { display: string; key: string; value: string }\n\nexport function LabelsInput({\n value,\n metric,\n variables,\n onChange,\n small,\n useRegex\n}: Props) {\n const [input, setInput] = useState('')\n const onSelectLabel = (labels: LabelSelector[]) => {\n const selector: { [key: string]: string } = {}\n labels.forEach((label) => {\n selector[label.key] = label.value\n })\n onChange(\n produce(value, (draft) => {\n draft.labelSelector = selector\n })\n )\n }\n const { setLabelSearchQuery } = useLabelSearch()\n\n const labelSelectors = useMemo(() => {\n const result: LabelSelector[] = []\n if (metric) {\n Object.entries(variables || {}).forEach(([name, variable]) => {\n const varname = `$${name}`\n const labelSelector = {\n display:\n variable.field == name ? varname : `${variable.field}: ${varname}`,\n key: variable.field!,\n value: `${varname}`\n }\n if (metric.labels && metric.labels[variable.field!]) {\n result.push(labelSelector)\n } else if (\n variable?.field &&\n SystemLabels.map((l) => l.name).includes(variable?.field)\n ) {\n result.push(labelSelector)\n }\n })\n\n for (const sl of SystemLabels) {\n sl.getValues(metric).forEach(({ value, display }) => {\n result.push({\n display: `${sl.name}: ${display}`,\n key: sl.field,\n value: value\n })\n })\n }\n let inputLabel = ''\n let inputValue = ''\n if (input.includes(':')) {\n ;[inputLabel, inputValue] = input.split(':')\n inputLabel = inputLabel.trim()\n inputValue = inputValue.trim()\n } else {\n inputValue = input.trim()\n }\n Object.entries(metric?.labels || {}).forEach(([key, values]) => {\n ;(values.values || []).forEach((value) => {\n result.push({\n display: `${key}:${value}`,\n key,\n value\n })\n })\n if (\n !useRegex ||\n (inputValue && key.includes(inputLabel) === false) ||\n !inputValue\n ) {\n return\n }\n result.push({\n display: `${key}: <contains> ${inputValue}`,\n key,\n value: JSON.stringify({\n operator: 'contains',\n value: inputValue,\n ignoreCase: true\n })\n })\n })\n }\n return sortedUniqBy(\n sortBy(result, (r) => r.display),\n (r) => r.display\n )\n }, [metric, variables, input, useRegex])\n\n const selectedLabels = useMemo(() => {\n const selector = value?.labelSelector || {}\n return Object.entries(selector).map(([key, value]) => {\n return (\n labelSelectors.find((ls) => ls.key == key && ls.value == value) || {\n display: `${key}:${value}`,\n key,\n value\n }\n )\n })\n }, [value?.labelSelector, labelSelectors])\n\n return (\n <NewMultipleSelect<LabelSelector>\n input={input}\n onInputChange={setInput}\n className={classNames(\n 'border-main flex grow overflow-auto rounded-r-md border',\n small ? 'min-h-6' : 'min-h-8'\n )}\n options={labelSelectors}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(o) => {\n const { display, value } = o\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n const valueObj = JSON.parse(value)\n return `${o.key}:<${valueObj?.opertaor ?? 'contains'}> ${valueObj?.value ?? value}`\n }\n return display\n }}\n disabled={!value.query}\n unSelectedText=\"(everywhere)\"\n maxInputSize={30}\n displayIcon={(o: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(o.value)\n return isRegex ? (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n ) : null\n }}\n renderOption={(v: LabelSelector, _active: boolean, selected: boolean) => {\n const text = v.display\n const isRegex = /^\\{.*\\}$/.test(v.value)\n const title = `${text} ${isRegex ? ' (case-sensitive regex matcher)' : ''}`\n return (\n <>\n <span\n title={title}\n className={classNames(\n 'block truncate',\n selected && 'font-medium'\n )}\n >\n {isRegex && (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n )}\n {text}\n </span>\n\n {selected && (\n <span\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center pr-4'\n )}\n >\n <LuCheck className=\"h-4 w-4\" aria-hidden=\"true\" />\n </span>\n )}\n </>\n )\n }}\n filterFn={(option: LabelSelector, input: string) => {\n const { display, value } = option\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n return true\n }\n return display.toLowerCase().includes(input.toLowerCase())\n }}\n validateFn={(option: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(option.value)\n if (isRegex) {\n return true\n }\n return labelSelectors.some((o) => isEqual(o, option))\n }}\n onFilterTextChange={setLabelSearchQuery}\n />\n )\n}\n","import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface LabelSearchContextType {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n}\n\nconst LabelSearchContext = createContext<LabelSearchContextType | undefined>(\n undefined\n)\n\ninterface LabelSearchProviderProps {\n children: ReactNode\n}\n\nexport function LabelSearchProvider({ children }: LabelSearchProviderProps) {\n const [labelSearchQuery, setLabelSearchQuery] = useState('')\n\n return (\n <LabelSearchContext.Provider\n value={{ labelSearchQuery, setLabelSearchQuery }}\n >\n {children}\n </LabelSearchContext.Provider>\n )\n}\n\nexport function useLabelSearchContext(): LabelSearchContextType | undefined {\n return useContext(LabelSearchContext)\n}\n\nexport function useLabelSearch(defaultQuery?: string): {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n} {\n const context = useLabelSearchContext()\n const [localQuery, setLocalQuery] = useState(defaultQuery || '')\n\n if (context) {\n return context\n }\n\n return {\n labelSearchQuery: localQuery,\n setLabelSearchQuery: setLocalQuery\n }\n}\n"],"mappings":"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","names":["labels","selectedLabels","import_ui_core","ArgumentType","import_jsx_runtime","import_react","import_immer","import_ui_core","import_react","import_ui_core","import_jsx_runtime","import_jsx_runtime","isEqual","f","import_react","import_immer","import_lodash","import_lu","import_ui_core","import_react","import_jsx_runtime","import_jsx_runtime","value","input"]}
|
package/dist/index.mjs
CHANGED
|
@@ -677,7 +677,7 @@ function FunctionInput({ value, onChange }) {
|
|
|
677
677
|
}
|
|
678
678
|
),
|
|
679
679
|
/* @__PURE__ */ jsxs3("div", { className: "inline-flex items-center", children: [
|
|
680
|
-
/* @__PURE__ */ jsx4("div", { className: "h-
|
|
680
|
+
/* @__PURE__ */ jsx4("div", { className: "h-px w-2.5 self-center bg-border-color" }),
|
|
681
681
|
/* @__PURE__ */ jsx4(Popover, { className: "relative", children: ({ open }) => /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
682
682
|
/* @__PURE__ */ jsxs3(
|
|
683
683
|
Popover.Button,
|
|
@@ -732,7 +732,7 @@ function Functions({
|
|
|
732
732
|
return /* @__PURE__ */ jsx4(Fragment2, { children: functions.map((f, fi) => {
|
|
733
733
|
const def = FunctionMap[f.name];
|
|
734
734
|
return /* @__PURE__ */ jsxs3("div", { className: "inline-flex items-center", children: [
|
|
735
|
-
/* @__PURE__ */ jsx4("div", { className: "h-
|
|
735
|
+
/* @__PURE__ */ jsx4("div", { className: "h-px w-2.5 self-center bg-border-color" }),
|
|
736
736
|
/* @__PURE__ */ jsxs3(
|
|
737
737
|
"div",
|
|
738
738
|
{
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/timeseries/AggregateInput.tsx","../src/timeseries/labels.ts","../src/timeseries/ArgumentInput.tsx","../src/timeseries/functions.ts","../src/timeseries/FunctionInput.tsx","../src/timeseries/FunctionsPanel.tsx","../src/timeseries/LabelsInput.tsx","../src/timeseries/LabelSearchContext.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { capitalize } from 'lodash'\nimport { produce } from 'immer'\nimport { NewMultipleSelect } from '@sentio/ui-core'\nimport type {\n AggregateOpsLike,\n MetricInfoLike,\n QueryLike\n} from '../types/metrics'\nimport { SystemLabels } from './labels'\n\nconst AggregateAggregateOps: AggregateOpsLike[] = [\n 'AVG',\n 'SUM',\n 'MIN',\n 'MAX',\n 'COUNT'\n]\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\ntype Label = { label: string; value: string }\n\nexport function AggregateInput({ metric, value, onChange }: Props) {\n const { labels, selectedLabels } = useMemo(() => {\n const labels: Label[] = []\n for (const sl of SystemLabels) {\n labels.push({ label: sl.name, value: sl.field })\n }\n Object.keys(metric?.labels || {}).forEach((l) => {\n labels.push({ label: l, value: l })\n })\n const selectedLabels: Label[] = []\n for (const l of value?.aggregate?.grouping || []) {\n const label = labels.find((lb) => lb.value === l)\n if (label) {\n selectedLabels.push(label)\n }\n }\n\n return { labels, selectedLabels }\n }, [metric, value])\n\n const onSelectLabel = (labels: Label[]) => {\n onChange(\n produce(value, (draft) => {\n draft.aggregate = draft.aggregate || {}\n draft.aggregate.grouping = labels.map((l) => l.value)\n })\n )\n }\n\n const onSelectFunc = (f: string) => {\n onChange(\n produce(value, (draft) => {\n if (f == 'none') {\n delete draft.aggregate\n } else {\n const aggr = draft.aggregate || {}\n aggr.op = f as AggregateOpsLike\n draft.aggregate = aggr\n }\n })\n )\n }\n\n return (\n <div className=\"min-h-8 flex grow items-center justify-stretch\">\n <select\n value={value.aggregate?.op || ''}\n className=\"sm:text-ilabel border-main text-text-foreground inline-flex h-8 items-center rounded-l-md border border-r-0 bg-gray-50 py-1 pl-4 pr-7 focus:border-0 focus:ring-inset\"\n onChange={(e) => onSelectFunc(e.target.value)}\n aria-label=\"aggregate\"\n >\n <option key=\"\" value={'none'}>\n No aggregate\n </option>\n {AggregateAggregateOps.map((key) => {\n return (\n <option key={key} value={key}>\n {capitalize(key)} by\n </option>\n )\n })}\n </select>\n <NewMultipleSelect<Label>\n disabled={!value.aggregate}\n className=\"border-main flex h-8 grow overflow-hidden rounded-r-md border\"\n options={labels || []}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(l) => l.label}\n unSelectedText=\"(everything)\"\n optionsClassName=\"min-w-[200px]\"\n />\n </div>\n )\n}\n","import { getChainName } from '@sentio/chain'\nimport type { MetricInfoLike } from '../types/metrics'\n\nexport const SystemLabels = [\n {\n field: 'contract_name',\n name: 'contract',\n getValues(metric: MetricInfoLike) {\n return (metric.contractName || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'contract_address',\n name: 'address',\n getValues(metric: MetricInfoLike) {\n return (metric.contractAddress || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'chain',\n name: 'chain',\n getValues(metric: MetricInfoLike) {\n return (metric.chainId || []).map((chainId) => {\n return { value: chainId, display: getChainName(chainId) }\n })\n }\n }\n]\n\nexport function sortMetricByName(a: string, b: string) {\n const aIsSystem = a.startsWith('system.')\n const bIsSystem = b.startsWith('system.')\n\n if (aIsSystem && !bIsSystem) {\n return 1\n }\n if (!aIsSystem && bIsSystem) {\n return -1\n }\n return a.localeCompare(b)\n}\n","import { DurationInput, classNames } from '@sentio/ui-core'\nimport { ArgumentDef, ArgumentType } from './functions'\nimport type { ArgumentLike } from '../types/metrics'\n\ninterface Props {\n argument: ArgumentDef\n value?: ArgumentLike\n onChange?: (value: ArgumentLike) => void\n className?: string\n}\n\nexport function ArgumentInput({ className, argument, value, onChange }: Props) {\n switch (argument.type) {\n case ArgumentType.String:\n return (\n <input\n type=\"text\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.stringValue}\n onChange={(v) =>\n onChange && onChange({ stringValue: v.target.value })\n }\n />\n )\n case ArgumentType.Double:\n return (\n <input\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.doubleValue}\n step=\"any\"\n onChange={(v) =>\n onChange && onChange({ doubleValue: parseFloat(v.target.value) })\n }\n />\n )\n case ArgumentType.Integer:\n return (\n <input\n step=\"1\"\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.intValue}\n onChange={(v) =>\n onChange && onChange({ intValue: parseInt(v.target.value) })\n }\n />\n )\n case ArgumentType.Bool:\n return (\n <input\n type=\"checkbox\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n checked={value?.boolValue}\n onChange={(e) =>\n onChange && onChange({ boolValue: e.target.value == 'true' })\n }\n />\n )\n case ArgumentType.Duration:\n return (\n <DurationInput\n className=\"rounded-none! border-transparent! hover:border-primary-600! focus-within:border-primary-600!\"\n inputClassName={classNames(className)}\n value={value?.durationValue}\n onChange={(e) => onChange && onChange({ durationValue: e })}\n enableDays\n />\n )\n }\n}\n","import type { ArgumentLike } from '../types/metrics'\n\nexport enum ArgumentType {\n String,\n Integer,\n Double,\n Bool,\n Duration\n}\n\nexport interface ArgumentDef {\n name: string\n type: ArgumentType\n}\n\nexport interface FunctionDef {\n name: string\n displayName?: string\n description: string\n arguments: ArgumentDef[]\n defaultArguments?: ArgumentLike[]\n deprecated?: boolean\n}\n\nconst abs: FunctionDef = {\n name: 'abs',\n description: 'Returns the absolute value.',\n arguments: []\n}\n\nconst ceil: FunctionDef = {\n name: 'ceil',\n description:\n 'Returns the smallest integer greater than or equal to a number.',\n arguments: []\n}\n\nconst floor: FunctionDef = {\n name: 'floor',\n description: 'Returns the largest integer less than or equal to a number.',\n arguments: []\n}\nconst round: FunctionDef = {\n name: 'round',\n description: 'Returns the value of a number rounded to the nearest integer.',\n arguments: []\n}\nconst log2: FunctionDef = {\n name: 'log2',\n description: 'Returns the base 2 logarithm.',\n arguments: []\n}\nconst log10: FunctionDef = {\n name: 'log10',\n description: 'Returns the base 10 logarithm.',\n arguments: []\n}\nconst ln: FunctionDef = {\n name: 'ln',\n description: 'Returns the natural logarithm.',\n arguments: []\n}\nconst aggregations = ['avg', 'count', 'last', 'max', 'min', 'sum', 'delta']\n\nconst aggregationDescriptions: { [key: string]: string } = {\n avg: 'Calculates the sum of all values in the specified interval.',\n count: 'Calculates the number of values in the specified interval.',\n last: 'Calculates the last value in the specified interval.',\n max: 'Calculates the maximum of all values in the specified interval.',\n min: 'Calculates the minimum of all values in the specified interval.',\n sum: 'Calculates the sum of all values in the specified interval.',\n delta:\n 'Calculates the difference between the first and last value in the specified interval.'\n}\n\nconst aggregateOverTimeFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `${method}_over_time`,\n description: aggregationDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rollupDescriptions: { [key: string]: string } = {\n avg: 'Roll up the metric by its average value over the specified time period.',\n count:\n 'Roll up the metric by its count value over the specified time period.',\n last: 'Roll up the metric by its last value over the specified time period.',\n max: 'Roll up the metric by its maximum value over the specified time period.',\n min: 'Roll up the metric by its minimum value over the specified time period.',\n sum: 'Roll up the metric by its sum value over the specified time period.',\n delta: 'Roll up the metric by its delta value over the specified time period.'\n}\n\nconst rollupFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `rollup_${method}`,\n description: rollupDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rate: FunctionDef = {\n name: 'rate',\n description:\n 'Calculates the per-second average rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst irate: FunctionDef = {\n name: 'irate',\n description:\n 'Calculates the per-second instant rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst delta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst moving_delta: FunctionDef = {\n name: 'moving_delta',\n description:\n 'Calculates the difference between the first and last value of each time series. (continuously)',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst topk: FunctionDef = {\n name: 'topk',\n description: 'Returns the top k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst bottomk: FunctionDef = {\n name: 'bottomk',\n description: 'Returns the bottom k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst timestamp: FunctionDef = {\n name: 'timestamp',\n description:\n 'Returns the timestamp of each of the samples of the given vector as the number of seconds since January 1, 1970 UTC.',\n arguments: []\n}\nconst day_of_week: FunctionDef = {\n name: 'day_of_week',\n description:\n 'Returns the day of the week for each of the given times. (needs timestamp)',\n arguments: []\n}\nconst day_of_month: FunctionDef = {\n name: 'day_of_month',\n description:\n 'Returns the day of the month for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst day_of_year: FunctionDef = {\n name: 'day_of_year',\n description:\n 'Returns the day of the year for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst month: FunctionDef = {\n name: 'month',\n description:\n 'Returns the month of the given time. Returned values are from 1 to 12, where 1 means January etc. (needs timestamp)',\n arguments: []\n}\n\nconst year: FunctionDef = {\n name: 'year',\n description: 'Returns the year of the given time. (needs timestamp)',\n arguments: []\n}\n\nconst hour: FunctionDef = {\n name: 'hour',\n description:\n 'Returns the hour of the given time. Returned values are from 0 to 23. (needs timestamp)',\n arguments: []\n}\n\nconst minute: FunctionDef = {\n name: 'minute',\n description:\n 'Returns the minute of the given time. Returned values are from 0 to 59. (needs timestamp)',\n arguments: []\n}\n\nconst before: FunctionDef = {\n name: 'before',\n displayName: 'shift earlier',\n description: 'Shifts the vector back in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nconst after: FunctionDef = {\n name: 'after',\n displayName: 'shift later',\n description: 'Shifts the vector forward in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nexport const FunctionsCategories: { [category: string]: FunctionDef[] } = {\n Math: [abs, ceil, floor, round, log2, log10, ln],\n Rollup: rollupFunctions,\n 'Aggregate Over Time': aggregateOverTimeFunctions,\n Rate: [rate, irate, delta, moving_delta],\n Rank: [topk, bottomk],\n Time: [\n timestamp,\n day_of_year,\n day_of_month,\n day_of_week,\n year,\n month,\n hour,\n minute\n ],\n TimeShift: [before, after]\n}\n\nexport const FunctionMap: { [name: string]: FunctionDef } = Object.values(\n FunctionsCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n\nexport function isAggrOrRollupFunction(name: string) {\n const f = FunctionMap[name]\n return f && (f.name.startsWith('rollup_') || f.name.endsWith('_over_time'))\n}\n\nconst eventsDelta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nexport const EventsFunctionCategories: { [category: string]: FunctionDef[] } = {\n Rank: [topk, bottomk],\n Delta: [eventsDelta]\n}\n\nexport const EventsFunctionMap: { [name: string]: FunctionDef } = Object.values(\n EventsFunctionCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n","import { Popover } from '@headlessui/react'\nimport { LuX, LuChevronDown } from 'react-icons/lu'\nimport { useFloating, autoPlacement } from '@floating-ui/react'\nimport { produce } from 'immer'\nimport isEqual from 'lodash/isEqual'\nimport { HelpIcon, PopoverButton, classNames } from '@sentio/ui-core'\nimport { FunctionsPanel } from './FunctionsPanel'\nimport { ArgumentInput } from './ArgumentInput'\nimport { FunctionDef, FunctionMap } from './functions'\nimport type { ArgumentLike, FunctionLike, QueryLike } from '../types/metrics'\n\ninterface Props {\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\nexport function FunctionInput({ value, onChange }: Props) {\n const { x, y, refs, strategy } = useFloating({\n middleware: [autoPlacement()]\n })\n\n const onSelectFunc = (f: FunctionDef) => {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.push({\n name: f.name,\n arguments: f.defaultArguments || []\n })\n })\n )\n }\n\n const remove = (f: FunctionLike) => {\n const idx = (value.functions || []).indexOf(f)\n if (idx >= 0) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.splice(idx, 1)\n })\n )\n }\n }\n\n function changeArgument(fidx: number, aidx: number, v: ArgumentLike) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const f = draft.functions[fidx]\n if (f) {\n f.arguments = f.arguments || []\n f.arguments[aidx] = v\n }\n })\n )\n }\n\n function changeFunction(fidx: number, f: FunctionDef) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const preFunc = draft.functions[fidx]\n let resetArg = true\n if (preFunc.arguments?.length === f.defaultArguments?.length) {\n const firstArg = preFunc.arguments?.[0]\n const firstDefaultArg = f.defaultArguments?.[0]\n if (firstArg && firstDefaultArg) {\n resetArg = isEqual(\n Object.keys(firstArg),\n Object.keys(firstDefaultArg)\n )\n ? false\n : true\n }\n }\n draft.functions[fidx] = {\n name: f.name,\n arguments: resetArg ? f.defaultArguments || [] : preFunc.arguments\n }\n })\n )\n }\n\n return (\n <>\n <Functions\n functions={value.functions || []}\n onRemove={remove}\n onChangeArgument={changeArgument}\n onChangeFunction={changeFunction}\n />\n <div className=\"inline-flex items-center\">\n <div className=\"h-0.5 w-2.5 self-center bg-gray-300\"></div>\n <Popover className=\"relative\">\n {({ open }) => (\n <>\n <Popover.Button\n ref={refs.setReference}\n aria-label=\"Add function\"\n className={classNames(\n 'text-ilabel focus:border-primary-600 focus:ring-primary-600/30 focus:ring-3 relative -ml-px inline-flex h-8 items-center space-x-2 rounded-md',\n 'border-main hover:border-primary-600 border px-4 font-normal',\n open\n ? 'text-primary-600 ring-1'\n : 'text-text-foreground-secondary hover:text-text-foreground'\n )}\n >\n <span className=\"flex text-sm\">f(x)</span>\n <HelpIcon text={'Add functions to query.'} />\n </Popover.Button>\n\n <Popover.Panel\n className=\"shadow-xs border-main z-10 mt-3 h-56 w-96 rounded-md border px-2 sm:px-0 lg:max-w-3xl\"\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n >\n {({ close }) => (\n <FunctionsPanel\n onClick={(f) => {\n onSelectFunc(f)\n close()\n }}\n />\n )}\n </Popover.Panel>\n </>\n )}\n </Popover>\n </div>\n </>\n )\n}\n\nfunction Functions({\n functions,\n onRemove,\n onChangeArgument,\n onChangeFunction\n}: {\n functions: FunctionLike[]\n onRemove: (f: FunctionLike) => void\n onChangeArgument: (fIdx: number, argIdx: number, value: ArgumentLike) => void\n onChangeFunction?: (fIdx: number, f: FunctionDef) => void\n}) {\n if (functions.length == 0) {\n return <></>\n }\n\n return (\n <>\n {functions.map((f, fi) => {\n const def = FunctionMap[f.name!]\n return (\n <div key={f.name} className=\"inline-flex items-center\">\n <div className=\"h-0.5 w-2.5 self-center bg-gray-300\"></div>\n <div\n className={classNames(\n 'text-ilabel focus:outline-hidden text-text-foreground-secondary relative inline-flex items-center pl-2 font-normal',\n 'border-main rounded-md border',\n 'h-8'\n )}\n >\n <PopoverButton\n containerClassName=\"h-full border-r border-light pr-2 inline-flex items-center bg-gray-50\"\n content={({ close }) => (\n <div className=\"z-10 h-56 w-96 px-2 sm:px-0 lg:max-w-3xl\">\n <FunctionsPanel\n onClick={(f) => {\n onChangeFunction?.(fi, f)\n close()\n }}\n defaultFunc={f.name}\n />\n </div>\n )}\n >\n <span className=\"hover:text-primary-600 text-text-foreground inline-flex cursor-pointer flex-nowrap items-center gap-1\">\n {def.displayName || f.name}\n <LuChevronDown className=\"h-4 w-4\" />\n </span>\n </PopoverButton>\n {def.arguments.map((arg, i) => (\n <ArgumentInput\n className=\"sm:text-ilabel block w-full pl-4\"\n key={'arg_' + i}\n argument={arg}\n value={f.arguments && f.arguments[i]}\n onChange={(v) => onChangeArgument(fi, i, v)}\n />\n ))}\n <button\n type={'button'}\n className={\n 'text-text-foreground-disabled hover:text-text-foreground hover:bg-hover h-full rounded-r-md px-2'\n }\n aria-label=\"remove function\"\n onClick={() => onRemove(f)}\n >\n <LuX className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n )\n })}\n </>\n )\n}\n","import { Tab } from '@headlessui/react'\nimport { Fragment, useEffect, useRef, useState } from 'react'\nimport { classNames } from '@sentio/ui-core'\nimport { BiCaretRight } from 'react-icons/bi'\nimport { FunctionDef, FunctionsCategories } from './functions'\n\ninterface Props {\n onClick: (func: FunctionDef) => void\n functionCategories?: typeof FunctionsCategories\n defaultFunc?: string\n}\n\nexport function FunctionsPanel({\n onClick,\n functionCategories = FunctionsCategories,\n defaultFunc\n}: Props) {\n const ulRef = useRef<HTMLUListElement>(null)\n const [selectedIdx, setSelectedIdx] = useState(0)\n useEffect(() => {\n if (!defaultFunc) return\n let targetIndex = 0\n Object.keys(functionCategories).forEach((category, idx) => {\n const func = functionCategories[category].find(\n (f) => f.name === defaultFunc\n )\n if (func) {\n targetIndex = idx\n }\n })\n setSelectedIdx(targetIndex)\n setTimeout(() => {\n const target = ulRef.current?.querySelector(\n `li[data-name=\"${defaultFunc}\"]`\n )\n if (target) {\n target.scrollIntoView({ block: 'center' })\n }\n }, 0)\n }, [defaultFunc])\n return (\n <div className=\"bg-default-bg flex h-full overflow-hidden rounded-md\">\n <Tab.Group vertical selectedIndex={selectedIdx} onChange={setSelectedIdx}>\n <Tab.List\n as=\"ul\"\n className=\"native-scroller border-main flex w-44 shrink-0 flex-col flex-nowrap divide-y divide-gray-200 overflow-auto border-r\"\n >\n {Object.keys(functionCategories).map((category, idx) => (\n <Tab as={Fragment} key={category}>\n {({ selected }) => (\n <li\n onMouseOver={() => setSelectedIdx(idx)}\n className={classNames(\n selected\n ? 'bg-primary-500 hover:bg-primary-600'\n : 'bg-default-bg hover:bg-gray-50',\n selected ? 'text-white' : 'text-foreground',\n 'flex cursor-pointer items-center justify-between p-2 text-sm font-medium'\n )}\n >\n <p\n className={classNames(\n 'text-ilabel flex-1 truncate font-medium'\n )}\n >\n {category}\n </p>\n <BiCaretRight\n className={classNames('h-3 w-3 shrink-0 self-center')}\n />\n </li>\n )}\n </Tab>\n ))}\n </Tab.List>\n <Tab.Panels className=\"flex-1\">\n {Object.keys(functionCategories).map((category) => (\n <Tab.Panel\n as=\"ul\"\n key={category}\n className=\"h-full divide-y overflow-y-auto\"\n ref={ulRef}\n >\n {functionCategories[category]\n .filter((f) => !f.deprecated)\n .map((func) => (\n <li\n key={func.name}\n className={classNames(\n 'group cursor-pointer space-y-1 px-2 py-1.5',\n func.name === defaultFunc\n ? 'bg-primary-600 dark:bg-primary-600 text-white'\n : 'hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 text-text-foreground dark:hover:text-white'\n )}\n onClick={() => onClick(func)}\n data-name={func.name}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-ilabel truncate font-medium\">\n {func.displayName || func.name}\n </p>\n </div>\n <div className=\"flex\">\n <div\n className={classNames(\n 'text-icontent flex items-center',\n func.name === defaultFunc\n ? 'text-white/80'\n : 'text-text-foreground-secondary'\n )}\n >\n <p>{func.description}</p>\n </div>\n </div>\n </li>\n ))}\n </Tab.Panel>\n ))}\n </Tab.Panels>\n </Tab.Group>\n </div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { produce } from 'immer'\nimport { isEqual, sortBy, sortedUniqBy } from 'lodash'\nimport { LuCheck } from 'react-icons/lu'\nimport { VscRegex } from 'react-icons/vsc'\nimport { NewMultipleSelect, classNames } from '@sentio/ui-core'\nimport type { MetricInfoLike, QueryLike } from '../types/metrics'\nimport type { TemplateVariableLike } from '../types/dashboard'\nimport { SystemLabels } from './labels'\nimport { useLabelSearch } from './LabelSearchContext'\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n variables?: { [p: string]: TemplateVariableLike }\n small?: boolean\n useRegex?: boolean\n}\n\ntype LabelSelector = { display: string; key: string; value: string }\n\nexport function LabelsInput({\n value,\n metric,\n variables,\n onChange,\n small,\n useRegex\n}: Props) {\n const [input, setInput] = useState('')\n const onSelectLabel = (labels: LabelSelector[]) => {\n const selector: { [key: string]: string } = {}\n labels.forEach((label) => {\n selector[label.key] = label.value\n })\n onChange(\n produce(value, (draft) => {\n draft.labelSelector = selector\n })\n )\n }\n const { setLabelSearchQuery } = useLabelSearch()\n\n const labelSelectors = useMemo(() => {\n const result: LabelSelector[] = []\n if (metric) {\n Object.entries(variables || {}).forEach(([name, variable]) => {\n const varname = `$${name}`\n const labelSelector = {\n display:\n variable.field == name ? varname : `${variable.field}: ${varname}`,\n key: variable.field!,\n value: `${varname}`\n }\n if (metric.labels && metric.labels[variable.field!]) {\n result.push(labelSelector)\n } else if (\n variable?.field &&\n SystemLabels.map((l) => l.name).includes(variable?.field)\n ) {\n result.push(labelSelector)\n }\n })\n\n for (const sl of SystemLabels) {\n sl.getValues(metric).forEach(({ value, display }) => {\n result.push({\n display: `${sl.name}: ${display}`,\n key: sl.field,\n value: value\n })\n })\n }\n let inputLabel = ''\n let inputValue = ''\n if (input.includes(':')) {\n ;[inputLabel, inputValue] = input.split(':')\n inputLabel = inputLabel.trim()\n inputValue = inputValue.trim()\n } else {\n inputValue = input.trim()\n }\n Object.entries(metric?.labels || {}).forEach(([key, values]) => {\n ;(values.values || []).forEach((value) => {\n result.push({\n display: `${key}:${value}`,\n key,\n value\n })\n })\n if (\n !useRegex ||\n (inputValue && key.includes(inputLabel) === false) ||\n !inputValue\n ) {\n return\n }\n result.push({\n display: `${key}: <contains> ${inputValue}`,\n key,\n value: JSON.stringify({\n operator: 'contains',\n value: inputValue,\n ignoreCase: true\n })\n })\n })\n }\n return sortedUniqBy(\n sortBy(result, (r) => r.display),\n (r) => r.display\n )\n }, [metric, variables, input, useRegex])\n\n const selectedLabels = useMemo(() => {\n const selector = value?.labelSelector || {}\n return Object.entries(selector).map(([key, value]) => {\n return (\n labelSelectors.find((ls) => ls.key == key && ls.value == value) || {\n display: `${key}:${value}`,\n key,\n value\n }\n )\n })\n }, [value?.labelSelector, labelSelectors])\n\n return (\n <NewMultipleSelect<LabelSelector>\n input={input}\n onInputChange={setInput}\n className={classNames(\n 'border-main flex grow overflow-auto rounded-r-md border',\n small ? 'min-h-6' : 'min-h-8'\n )}\n options={labelSelectors}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(o) => {\n const { display, value } = o\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n const valueObj = JSON.parse(value)\n return `${o.key}:<${valueObj?.opertaor ?? 'contains'}> ${valueObj?.value ?? value}`\n }\n return display\n }}\n disabled={!value.query}\n unSelectedText=\"(everywhere)\"\n maxInputSize={30}\n displayIcon={(o: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(o.value)\n return isRegex ? (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n ) : null\n }}\n renderOption={(v: LabelSelector, _active: boolean, selected: boolean) => {\n const text = v.display\n const isRegex = /^\\{.*\\}$/.test(v.value)\n const title = `${text} ${isRegex ? ' (case-sensitive regex matcher)' : ''}`\n return (\n <>\n <span\n title={title}\n className={classNames(\n 'block truncate',\n selected && 'font-medium'\n )}\n >\n {isRegex && (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n )}\n {text}\n </span>\n\n {selected && (\n <span\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center pr-4'\n )}\n >\n <LuCheck className=\"h-4 w-4\" aria-hidden=\"true\" />\n </span>\n )}\n </>\n )\n }}\n filterFn={(option: LabelSelector, input: string) => {\n const { display, value } = option\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n return true\n }\n return display.toLowerCase().includes(input.toLowerCase())\n }}\n validateFn={(option: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(option.value)\n if (isRegex) {\n return true\n }\n return labelSelectors.some((o) => isEqual(o, option))\n }}\n onFilterTextChange={setLabelSearchQuery}\n />\n )\n}\n","import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface LabelSearchContextType {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n}\n\nconst LabelSearchContext = createContext<LabelSearchContextType | undefined>(\n undefined\n)\n\ninterface LabelSearchProviderProps {\n children: ReactNode\n}\n\nexport function LabelSearchProvider({ children }: LabelSearchProviderProps) {\n const [labelSearchQuery, setLabelSearchQuery] = useState('')\n\n return (\n <LabelSearchContext.Provider\n value={{ labelSearchQuery, setLabelSearchQuery }}\n >\n {children}\n </LabelSearchContext.Provider>\n )\n}\n\nexport function useLabelSearchContext(): LabelSearchContextType | undefined {\n return useContext(LabelSearchContext)\n}\n\nexport function useLabelSearch(defaultQuery?: string): {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n} {\n const context = useLabelSearchContext()\n const [localQuery, setLocalQuery] = useState(defaultQuery || '')\n\n if (context) {\n return context\n }\n\n return {\n labelSearchQuery: localQuery,\n setLabelSearchQuery: setLocalQuery\n }\n}\n"],"mappings":"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","names":["labels","selectedLabels","ArgumentType","jsx","produce","classNames","classNames","jsx","jsxs","classNames","Fragment","jsx","jsxs","produce","classNames","f","useMemo","useState","produce","isEqual","NewMultipleSelect","classNames","useState","jsx","Fragment","jsx","jsxs","useState","produce","useMemo","value","NewMultipleSelect","classNames","input","isEqual"]}
|
|
1
|
+
{"version":3,"sources":["../src/timeseries/AggregateInput.tsx","../src/timeseries/labels.ts","../src/timeseries/ArgumentInput.tsx","../src/timeseries/functions.ts","../src/timeseries/FunctionInput.tsx","../src/timeseries/FunctionsPanel.tsx","../src/timeseries/LabelsInput.tsx","../src/timeseries/LabelSearchContext.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { capitalize } from 'lodash'\nimport { produce } from 'immer'\nimport { NewMultipleSelect } from '@sentio/ui-core'\nimport type {\n AggregateOpsLike,\n MetricInfoLike,\n QueryLike\n} from '../types/metrics'\nimport { SystemLabels } from './labels'\n\nconst AggregateAggregateOps: AggregateOpsLike[] = [\n 'AVG',\n 'SUM',\n 'MIN',\n 'MAX',\n 'COUNT'\n]\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\ntype Label = { label: string; value: string }\n\nexport function AggregateInput({ metric, value, onChange }: Props) {\n const { labels, selectedLabels } = useMemo(() => {\n const labels: Label[] = []\n for (const sl of SystemLabels) {\n labels.push({ label: sl.name, value: sl.field })\n }\n Object.keys(metric?.labels || {}).forEach((l) => {\n labels.push({ label: l, value: l })\n })\n const selectedLabels: Label[] = []\n for (const l of value?.aggregate?.grouping || []) {\n const label = labels.find((lb) => lb.value === l)\n if (label) {\n selectedLabels.push(label)\n }\n }\n\n return { labels, selectedLabels }\n }, [metric, value])\n\n const onSelectLabel = (labels: Label[]) => {\n onChange(\n produce(value, (draft) => {\n draft.aggregate = draft.aggregate || {}\n draft.aggregate.grouping = labels.map((l) => l.value)\n })\n )\n }\n\n const onSelectFunc = (f: string) => {\n onChange(\n produce(value, (draft) => {\n if (f == 'none') {\n delete draft.aggregate\n } else {\n const aggr = draft.aggregate || {}\n aggr.op = f as AggregateOpsLike\n draft.aggregate = aggr\n }\n })\n )\n }\n\n return (\n <div className=\"min-h-8 flex grow items-center justify-stretch\">\n <select\n value={value.aggregate?.op || ''}\n className=\"sm:text-ilabel border-main text-text-foreground inline-flex h-8 items-center rounded-l-md border border-r-0 bg-gray-50 py-1 pl-4 pr-7 focus:border-0 focus:ring-inset\"\n onChange={(e) => onSelectFunc(e.target.value)}\n aria-label=\"aggregate\"\n >\n <option key=\"\" value={'none'}>\n No aggregate\n </option>\n {AggregateAggregateOps.map((key) => {\n return (\n <option key={key} value={key}>\n {capitalize(key)} by\n </option>\n )\n })}\n </select>\n <NewMultipleSelect<Label>\n disabled={!value.aggregate}\n className=\"border-main flex h-8 grow overflow-hidden rounded-r-md border\"\n options={labels || []}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(l) => l.label}\n unSelectedText=\"(everything)\"\n optionsClassName=\"min-w-[200px]\"\n />\n </div>\n )\n}\n","import { getChainName } from '@sentio/chain'\nimport type { MetricInfoLike } from '../types/metrics'\n\nexport const SystemLabels = [\n {\n field: 'contract_name',\n name: 'contract',\n getValues(metric: MetricInfoLike) {\n return (metric.contractName || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'contract_address',\n name: 'address',\n getValues(metric: MetricInfoLike) {\n return (metric.contractAddress || []).map((name) => ({\n value: name,\n display: name\n }))\n }\n },\n {\n field: 'chain',\n name: 'chain',\n getValues(metric: MetricInfoLike) {\n return (metric.chainId || []).map((chainId) => {\n return { value: chainId, display: getChainName(chainId) }\n })\n }\n }\n]\n\nexport function sortMetricByName(a: string, b: string) {\n const aIsSystem = a.startsWith('system.')\n const bIsSystem = b.startsWith('system.')\n\n if (aIsSystem && !bIsSystem) {\n return 1\n }\n if (!aIsSystem && bIsSystem) {\n return -1\n }\n return a.localeCompare(b)\n}\n","import { DurationInput, classNames } from '@sentio/ui-core'\nimport { ArgumentDef, ArgumentType } from './functions'\nimport type { ArgumentLike } from '../types/metrics'\n\ninterface Props {\n argument: ArgumentDef\n value?: ArgumentLike\n onChange?: (value: ArgumentLike) => void\n className?: string\n}\n\nexport function ArgumentInput({ className, argument, value, onChange }: Props) {\n switch (argument.type) {\n case ArgumentType.String:\n return (\n <input\n type=\"text\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.stringValue}\n onChange={(v) =>\n onChange && onChange({ stringValue: v.target.value })\n }\n />\n )\n case ArgumentType.Double:\n return (\n <input\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.doubleValue}\n step=\"any\"\n onChange={(v) =>\n onChange && onChange({ doubleValue: parseFloat(v.target.value) })\n }\n />\n )\n case ArgumentType.Integer:\n return (\n <input\n step=\"1\"\n type=\"number\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n value={value?.intValue}\n onChange={(v) =>\n onChange && onChange({ intValue: parseInt(v.target.value) })\n }\n />\n )\n case ArgumentType.Bool:\n return (\n <input\n type=\"checkbox\"\n className={classNames(\n className,\n 'hover:border-primary-600 focus:border-primary-600 focus:ring-3 focus:ring-primary-600/30 border border-transparent'\n )}\n checked={value?.boolValue}\n onChange={(e) =>\n onChange && onChange({ boolValue: e.target.value == 'true' })\n }\n />\n )\n case ArgumentType.Duration:\n return (\n <DurationInput\n className=\"rounded-none! border-transparent! hover:border-primary-600! focus-within:border-primary-600!\"\n inputClassName={classNames(className)}\n value={value?.durationValue}\n onChange={(e) => onChange && onChange({ durationValue: e })}\n enableDays\n />\n )\n }\n}\n","import type { ArgumentLike } from '../types/metrics'\n\nexport enum ArgumentType {\n String,\n Integer,\n Double,\n Bool,\n Duration\n}\n\nexport interface ArgumentDef {\n name: string\n type: ArgumentType\n}\n\nexport interface FunctionDef {\n name: string\n displayName?: string\n description: string\n arguments: ArgumentDef[]\n defaultArguments?: ArgumentLike[]\n deprecated?: boolean\n}\n\nconst abs: FunctionDef = {\n name: 'abs',\n description: 'Returns the absolute value.',\n arguments: []\n}\n\nconst ceil: FunctionDef = {\n name: 'ceil',\n description:\n 'Returns the smallest integer greater than or equal to a number.',\n arguments: []\n}\n\nconst floor: FunctionDef = {\n name: 'floor',\n description: 'Returns the largest integer less than or equal to a number.',\n arguments: []\n}\nconst round: FunctionDef = {\n name: 'round',\n description: 'Returns the value of a number rounded to the nearest integer.',\n arguments: []\n}\nconst log2: FunctionDef = {\n name: 'log2',\n description: 'Returns the base 2 logarithm.',\n arguments: []\n}\nconst log10: FunctionDef = {\n name: 'log10',\n description: 'Returns the base 10 logarithm.',\n arguments: []\n}\nconst ln: FunctionDef = {\n name: 'ln',\n description: 'Returns the natural logarithm.',\n arguments: []\n}\nconst aggregations = ['avg', 'count', 'last', 'max', 'min', 'sum', 'delta']\n\nconst aggregationDescriptions: { [key: string]: string } = {\n avg: 'Calculates the sum of all values in the specified interval.',\n count: 'Calculates the number of values in the specified interval.',\n last: 'Calculates the last value in the specified interval.',\n max: 'Calculates the maximum of all values in the specified interval.',\n min: 'Calculates the minimum of all values in the specified interval.',\n sum: 'Calculates the sum of all values in the specified interval.',\n delta:\n 'Calculates the difference between the first and last value in the specified interval.'\n}\n\nconst aggregateOverTimeFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `${method}_over_time`,\n description: aggregationDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rollupDescriptions: { [key: string]: string } = {\n avg: 'Roll up the metric by its average value over the specified time period.',\n count:\n 'Roll up the metric by its count value over the specified time period.',\n last: 'Roll up the metric by its last value over the specified time period.',\n max: 'Roll up the metric by its maximum value over the specified time period.',\n min: 'Roll up the metric by its minimum value over the specified time period.',\n sum: 'Roll up the metric by its sum value over the specified time period.',\n delta: 'Roll up the metric by its delta value over the specified time period.'\n}\n\nconst rollupFunctions: FunctionDef[] = aggregations.map(\n (method): FunctionDef => ({\n name: `rollup_${method}`,\n description: rollupDescriptions[method],\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n })\n)\n\nconst rate: FunctionDef = {\n name: 'rate',\n description:\n 'Calculates the per-second average rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst irate: FunctionDef = {\n name: 'irate',\n description:\n 'Calculates the per-second instant rate of increase of the time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nconst delta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst moving_delta: FunctionDef = {\n name: 'moving_delta',\n description:\n 'Calculates the difference between the first and last value of each time series. (continuously)',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }],\n deprecated: true\n}\n\nconst topk: FunctionDef = {\n name: 'topk',\n description: 'Returns the top k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst bottomk: FunctionDef = {\n name: 'bottomk',\n description: 'Returns the bottom k elements by sample value.',\n arguments: [\n {\n name: 'k',\n type: ArgumentType.Integer\n }\n ],\n defaultArguments: [{ intValue: 1 }]\n}\n\nconst timestamp: FunctionDef = {\n name: 'timestamp',\n description:\n 'Returns the timestamp of each of the samples of the given vector as the number of seconds since January 1, 1970 UTC.',\n arguments: []\n}\nconst day_of_week: FunctionDef = {\n name: 'day_of_week',\n description:\n 'Returns the day of the week for each of the given times. (needs timestamp)',\n arguments: []\n}\nconst day_of_month: FunctionDef = {\n name: 'day_of_month',\n description:\n 'Returns the day of the month for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst day_of_year: FunctionDef = {\n name: 'day_of_year',\n description:\n 'Returns the day of the year for each of the given times. (needs timestamp)',\n arguments: []\n}\n\nconst month: FunctionDef = {\n name: 'month',\n description:\n 'Returns the month of the given time. Returned values are from 1 to 12, where 1 means January etc. (needs timestamp)',\n arguments: []\n}\n\nconst year: FunctionDef = {\n name: 'year',\n description: 'Returns the year of the given time. (needs timestamp)',\n arguments: []\n}\n\nconst hour: FunctionDef = {\n name: 'hour',\n description:\n 'Returns the hour of the given time. Returned values are from 0 to 23. (needs timestamp)',\n arguments: []\n}\n\nconst minute: FunctionDef = {\n name: 'minute',\n description:\n 'Returns the minute of the given time. Returned values are from 0 to 59. (needs timestamp)',\n arguments: []\n}\n\nconst before: FunctionDef = {\n name: 'before',\n displayName: 'shift earlier',\n description: 'Shifts the vector back in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nconst after: FunctionDef = {\n name: 'after',\n displayName: 'shift later',\n description: 'Shifts the vector forward in time by the specified duration.',\n arguments: [\n {\n name: 'duration',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'h' } }]\n}\n\nexport const FunctionsCategories: { [category: string]: FunctionDef[] } = {\n Math: [abs, ceil, floor, round, log2, log10, ln],\n Rollup: rollupFunctions,\n 'Aggregate Over Time': aggregateOverTimeFunctions,\n Rate: [rate, irate, delta, moving_delta],\n Rank: [topk, bottomk],\n Time: [\n timestamp,\n day_of_year,\n day_of_month,\n day_of_week,\n year,\n month,\n hour,\n minute\n ],\n TimeShift: [before, after]\n}\n\nexport const FunctionMap: { [name: string]: FunctionDef } = Object.values(\n FunctionsCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n\nexport function isAggrOrRollupFunction(name: string) {\n const f = FunctionMap[name]\n return f && (f.name.startsWith('rollup_') || f.name.endsWith('_over_time'))\n}\n\nconst eventsDelta: FunctionDef = {\n name: 'delta',\n description:\n 'Calculates the difference between the first and last value of each time series.',\n arguments: [\n {\n name: 'interval',\n type: ArgumentType.Duration\n }\n ],\n defaultArguments: [{ durationValue: { value: 1, unit: 'm' } }]\n}\n\nexport const EventsFunctionCategories: { [category: string]: FunctionDef[] } = {\n Rank: [topk, bottomk],\n Delta: [eventsDelta]\n}\n\nexport const EventsFunctionMap: { [name: string]: FunctionDef } = Object.values(\n EventsFunctionCategories\n).reduce(\n (acc, funcs) => {\n funcs.forEach((f) => {\n acc[f.name] = f\n })\n return acc\n },\n {} as { [name: string]: FunctionDef }\n)\n","import { Popover } from '@headlessui/react'\nimport { LuX, LuChevronDown } from 'react-icons/lu'\nimport { useFloating, autoPlacement } from '@floating-ui/react'\nimport { produce } from 'immer'\nimport isEqual from 'lodash/isEqual'\nimport { HelpIcon, PopoverButton, classNames } from '@sentio/ui-core'\nimport { FunctionsPanel } from './FunctionsPanel'\nimport { ArgumentInput } from './ArgumentInput'\nimport { FunctionDef, FunctionMap } from './functions'\nimport type { ArgumentLike, FunctionLike, QueryLike } from '../types/metrics'\n\ninterface Props {\n value: QueryLike\n onChange: (value: QueryLike) => void\n}\n\nexport function FunctionInput({ value, onChange }: Props) {\n const { x, y, refs, strategy } = useFloating({\n middleware: [autoPlacement()]\n })\n\n const onSelectFunc = (f: FunctionDef) => {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.push({\n name: f.name,\n arguments: f.defaultArguments || []\n })\n })\n )\n }\n\n const remove = (f: FunctionLike) => {\n const idx = (value.functions || []).indexOf(f)\n if (idx >= 0) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n draft.functions.splice(idx, 1)\n })\n )\n }\n }\n\n function changeArgument(fidx: number, aidx: number, v: ArgumentLike) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const f = draft.functions[fidx]\n if (f) {\n f.arguments = f.arguments || []\n f.arguments[aidx] = v\n }\n })\n )\n }\n\n function changeFunction(fidx: number, f: FunctionDef) {\n onChange(\n produce(value, (draft) => {\n draft.functions = draft.functions || []\n const preFunc = draft.functions[fidx]\n let resetArg = true\n if (preFunc.arguments?.length === f.defaultArguments?.length) {\n const firstArg = preFunc.arguments?.[0]\n const firstDefaultArg = f.defaultArguments?.[0]\n if (firstArg && firstDefaultArg) {\n resetArg = isEqual(\n Object.keys(firstArg),\n Object.keys(firstDefaultArg)\n )\n ? false\n : true\n }\n }\n draft.functions[fidx] = {\n name: f.name,\n arguments: resetArg ? f.defaultArguments || [] : preFunc.arguments\n }\n })\n )\n }\n\n return (\n <>\n <Functions\n functions={value.functions || []}\n onRemove={remove}\n onChangeArgument={changeArgument}\n onChangeFunction={changeFunction}\n />\n <div className=\"inline-flex items-center\">\n <div className=\"h-px w-2.5 self-center bg-border-color\"></div>\n <Popover className=\"relative\">\n {({ open }) => (\n <>\n <Popover.Button\n ref={refs.setReference}\n aria-label=\"Add function\"\n className={classNames(\n 'text-ilabel focus:border-primary-600 focus:ring-primary-600/30 focus:ring-3 relative -ml-px inline-flex h-8 items-center space-x-2 rounded-md',\n 'border-main hover:border-primary-600 border px-4 font-normal',\n open\n ? 'text-primary-600 ring-1'\n : 'text-text-foreground-secondary hover:text-text-foreground'\n )}\n >\n <span className=\"flex text-sm\">f(x)</span>\n <HelpIcon text={'Add functions to query.'} />\n </Popover.Button>\n\n <Popover.Panel\n className=\"shadow-xs border-main z-10 mt-3 h-56 w-96 rounded-md border px-2 sm:px-0 lg:max-w-3xl\"\n ref={refs.setFloating}\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0\n }}\n >\n {({ close }) => (\n <FunctionsPanel\n onClick={(f) => {\n onSelectFunc(f)\n close()\n }}\n />\n )}\n </Popover.Panel>\n </>\n )}\n </Popover>\n </div>\n </>\n )\n}\n\nfunction Functions({\n functions,\n onRemove,\n onChangeArgument,\n onChangeFunction\n}: {\n functions: FunctionLike[]\n onRemove: (f: FunctionLike) => void\n onChangeArgument: (fIdx: number, argIdx: number, value: ArgumentLike) => void\n onChangeFunction?: (fIdx: number, f: FunctionDef) => void\n}) {\n if (functions.length == 0) {\n return <></>\n }\n\n return (\n <>\n {functions.map((f, fi) => {\n const def = FunctionMap[f.name!]\n return (\n <div key={f.name} className=\"inline-flex items-center\">\n <div className=\"h-px w-2.5 self-center bg-border-color\"></div>\n <div\n className={classNames(\n 'text-ilabel focus:outline-hidden text-text-foreground-secondary relative inline-flex items-center pl-2 font-normal',\n 'border-main rounded-md border',\n 'h-8'\n )}\n >\n <PopoverButton\n containerClassName=\"h-full border-r border-light pr-2 inline-flex items-center bg-gray-50\"\n content={({ close }) => (\n <div className=\"z-10 h-56 w-96 px-2 sm:px-0 lg:max-w-3xl\">\n <FunctionsPanel\n onClick={(f) => {\n onChangeFunction?.(fi, f)\n close()\n }}\n defaultFunc={f.name}\n />\n </div>\n )}\n >\n <span className=\"hover:text-primary-600 text-text-foreground inline-flex cursor-pointer flex-nowrap items-center gap-1\">\n {def.displayName || f.name}\n <LuChevronDown className=\"h-4 w-4\" />\n </span>\n </PopoverButton>\n {def.arguments.map((arg, i) => (\n <ArgumentInput\n className=\"sm:text-ilabel block w-full pl-4\"\n key={'arg_' + i}\n argument={arg}\n value={f.arguments && f.arguments[i]}\n onChange={(v) => onChangeArgument(fi, i, v)}\n />\n ))}\n <button\n type={'button'}\n className={\n 'text-text-foreground-disabled hover:text-text-foreground hover:bg-hover h-full rounded-r-md px-2'\n }\n aria-label=\"remove function\"\n onClick={() => onRemove(f)}\n >\n <LuX className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n )\n })}\n </>\n )\n}\n","import { Tab } from '@headlessui/react'\nimport { Fragment, useEffect, useRef, useState } from 'react'\nimport { classNames } from '@sentio/ui-core'\nimport { BiCaretRight } from 'react-icons/bi'\nimport { FunctionDef, FunctionsCategories } from './functions'\n\ninterface Props {\n onClick: (func: FunctionDef) => void\n functionCategories?: typeof FunctionsCategories\n defaultFunc?: string\n}\n\nexport function FunctionsPanel({\n onClick,\n functionCategories = FunctionsCategories,\n defaultFunc\n}: Props) {\n const ulRef = useRef<HTMLUListElement>(null)\n const [selectedIdx, setSelectedIdx] = useState(0)\n useEffect(() => {\n if (!defaultFunc) return\n let targetIndex = 0\n Object.keys(functionCategories).forEach((category, idx) => {\n const func = functionCategories[category].find(\n (f) => f.name === defaultFunc\n )\n if (func) {\n targetIndex = idx\n }\n })\n setSelectedIdx(targetIndex)\n setTimeout(() => {\n const target = ulRef.current?.querySelector(\n `li[data-name=\"${defaultFunc}\"]`\n )\n if (target) {\n target.scrollIntoView({ block: 'center' })\n }\n }, 0)\n }, [defaultFunc])\n return (\n <div className=\"bg-default-bg flex h-full overflow-hidden rounded-md\">\n <Tab.Group vertical selectedIndex={selectedIdx} onChange={setSelectedIdx}>\n <Tab.List\n as=\"ul\"\n className=\"native-scroller border-main flex w-44 shrink-0 flex-col flex-nowrap divide-y divide-gray-200 overflow-auto border-r\"\n >\n {Object.keys(functionCategories).map((category, idx) => (\n <Tab as={Fragment} key={category}>\n {({ selected }) => (\n <li\n onMouseOver={() => setSelectedIdx(idx)}\n className={classNames(\n selected\n ? 'bg-primary-500 hover:bg-primary-600'\n : 'bg-default-bg hover:bg-gray-50',\n selected ? 'text-white' : 'text-foreground',\n 'flex cursor-pointer items-center justify-between p-2 text-sm font-medium'\n )}\n >\n <p\n className={classNames(\n 'text-ilabel flex-1 truncate font-medium'\n )}\n >\n {category}\n </p>\n <BiCaretRight\n className={classNames('h-3 w-3 shrink-0 self-center')}\n />\n </li>\n )}\n </Tab>\n ))}\n </Tab.List>\n <Tab.Panels className=\"flex-1\">\n {Object.keys(functionCategories).map((category) => (\n <Tab.Panel\n as=\"ul\"\n key={category}\n className=\"h-full divide-y overflow-y-auto\"\n ref={ulRef}\n >\n {functionCategories[category]\n .filter((f) => !f.deprecated)\n .map((func) => (\n <li\n key={func.name}\n className={classNames(\n 'group cursor-pointer space-y-1 px-2 py-1.5',\n func.name === defaultFunc\n ? 'bg-primary-600 dark:bg-primary-600 text-white'\n : 'hover:bg-sentio-gray-100 dark:hover:bg-sentio-gray-400 text-text-foreground dark:hover:text-white'\n )}\n onClick={() => onClick(func)}\n data-name={func.name}\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-ilabel truncate font-medium\">\n {func.displayName || func.name}\n </p>\n </div>\n <div className=\"flex\">\n <div\n className={classNames(\n 'text-icontent flex items-center',\n func.name === defaultFunc\n ? 'text-white/80'\n : 'text-text-foreground-secondary'\n )}\n >\n <p>{func.description}</p>\n </div>\n </div>\n </li>\n ))}\n </Tab.Panel>\n ))}\n </Tab.Panels>\n </Tab.Group>\n </div>\n )\n}\n","import { useMemo, useState } from 'react'\nimport { produce } from 'immer'\nimport { isEqual, sortBy, sortedUniqBy } from 'lodash'\nimport { LuCheck } from 'react-icons/lu'\nimport { VscRegex } from 'react-icons/vsc'\nimport { NewMultipleSelect, classNames } from '@sentio/ui-core'\nimport type { MetricInfoLike, QueryLike } from '../types/metrics'\nimport type { TemplateVariableLike } from '../types/dashboard'\nimport { SystemLabels } from './labels'\nimport { useLabelSearch } from './LabelSearchContext'\n\ninterface Props {\n metric?: MetricInfoLike\n value: QueryLike\n onChange: (value: QueryLike) => void\n variables?: { [p: string]: TemplateVariableLike }\n small?: boolean\n useRegex?: boolean\n}\n\ntype LabelSelector = { display: string; key: string; value: string }\n\nexport function LabelsInput({\n value,\n metric,\n variables,\n onChange,\n small,\n useRegex\n}: Props) {\n const [input, setInput] = useState('')\n const onSelectLabel = (labels: LabelSelector[]) => {\n const selector: { [key: string]: string } = {}\n labels.forEach((label) => {\n selector[label.key] = label.value\n })\n onChange(\n produce(value, (draft) => {\n draft.labelSelector = selector\n })\n )\n }\n const { setLabelSearchQuery } = useLabelSearch()\n\n const labelSelectors = useMemo(() => {\n const result: LabelSelector[] = []\n if (metric) {\n Object.entries(variables || {}).forEach(([name, variable]) => {\n const varname = `$${name}`\n const labelSelector = {\n display:\n variable.field == name ? varname : `${variable.field}: ${varname}`,\n key: variable.field!,\n value: `${varname}`\n }\n if (metric.labels && metric.labels[variable.field!]) {\n result.push(labelSelector)\n } else if (\n variable?.field &&\n SystemLabels.map((l) => l.name).includes(variable?.field)\n ) {\n result.push(labelSelector)\n }\n })\n\n for (const sl of SystemLabels) {\n sl.getValues(metric).forEach(({ value, display }) => {\n result.push({\n display: `${sl.name}: ${display}`,\n key: sl.field,\n value: value\n })\n })\n }\n let inputLabel = ''\n let inputValue = ''\n if (input.includes(':')) {\n ;[inputLabel, inputValue] = input.split(':')\n inputLabel = inputLabel.trim()\n inputValue = inputValue.trim()\n } else {\n inputValue = input.trim()\n }\n Object.entries(metric?.labels || {}).forEach(([key, values]) => {\n ;(values.values || []).forEach((value) => {\n result.push({\n display: `${key}:${value}`,\n key,\n value\n })\n })\n if (\n !useRegex ||\n (inputValue && key.includes(inputLabel) === false) ||\n !inputValue\n ) {\n return\n }\n result.push({\n display: `${key}: <contains> ${inputValue}`,\n key,\n value: JSON.stringify({\n operator: 'contains',\n value: inputValue,\n ignoreCase: true\n })\n })\n })\n }\n return sortedUniqBy(\n sortBy(result, (r) => r.display),\n (r) => r.display\n )\n }, [metric, variables, input, useRegex])\n\n const selectedLabels = useMemo(() => {\n const selector = value?.labelSelector || {}\n return Object.entries(selector).map(([key, value]) => {\n return (\n labelSelectors.find((ls) => ls.key == key && ls.value == value) || {\n display: `${key}:${value}`,\n key,\n value\n }\n )\n })\n }, [value?.labelSelector, labelSelectors])\n\n return (\n <NewMultipleSelect<LabelSelector>\n input={input}\n onInputChange={setInput}\n className={classNames(\n 'border-main flex grow overflow-auto rounded-r-md border',\n small ? 'min-h-6' : 'min-h-8'\n )}\n options={labelSelectors}\n value={selectedLabels}\n onChange={onSelectLabel}\n displayFn={(o) => {\n const { display, value } = o\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n const valueObj = JSON.parse(value)\n return `${o.key}:<${valueObj?.opertaor ?? 'contains'}> ${valueObj?.value ?? value}`\n }\n return display\n }}\n disabled={!value.query}\n unSelectedText=\"(everywhere)\"\n maxInputSize={30}\n displayIcon={(o: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(o.value)\n return isRegex ? (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n ) : null\n }}\n renderOption={(v: LabelSelector, _active: boolean, selected: boolean) => {\n const text = v.display\n const isRegex = /^\\{.*\\}$/.test(v.value)\n const title = `${text} ${isRegex ? ' (case-sensitive regex matcher)' : ''}`\n return (\n <>\n <span\n title={title}\n className={classNames(\n 'block truncate',\n selected && 'font-medium'\n )}\n >\n {isRegex && (\n <VscRegex className=\"mr-1 inline-block h-3 w-3 align-top\" />\n )}\n {text}\n </span>\n\n {selected && (\n <span\n className={classNames(\n 'absolute inset-y-0 right-0 flex items-center pr-4'\n )}\n >\n <LuCheck className=\"h-4 w-4\" aria-hidden=\"true\" />\n </span>\n )}\n </>\n )\n }}\n filterFn={(option: LabelSelector, input: string) => {\n const { display, value } = option\n const isRegex = /^\\{.*\\}$/.test(value)\n if (isRegex) {\n return true\n }\n return display.toLowerCase().includes(input.toLowerCase())\n }}\n validateFn={(option: LabelSelector) => {\n const isRegex = /^\\{.*\\}$/.test(option.value)\n if (isRegex) {\n return true\n }\n return labelSelectors.some((o) => isEqual(o, option))\n }}\n onFilterTextChange={setLabelSearchQuery}\n />\n )\n}\n","import React, { createContext, useContext, useState, ReactNode } from 'react'\n\ninterface LabelSearchContextType {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n}\n\nconst LabelSearchContext = createContext<LabelSearchContextType | undefined>(\n undefined\n)\n\ninterface LabelSearchProviderProps {\n children: ReactNode\n}\n\nexport function LabelSearchProvider({ children }: LabelSearchProviderProps) {\n const [labelSearchQuery, setLabelSearchQuery] = useState('')\n\n return (\n <LabelSearchContext.Provider\n value={{ labelSearchQuery, setLabelSearchQuery }}\n >\n {children}\n </LabelSearchContext.Provider>\n )\n}\n\nexport function useLabelSearchContext(): LabelSearchContextType | undefined {\n return useContext(LabelSearchContext)\n}\n\nexport function useLabelSearch(defaultQuery?: string): {\n labelSearchQuery: string\n setLabelSearchQuery: (query: string) => void\n} {\n const context = useLabelSearchContext()\n const [localQuery, setLocalQuery] = useState(defaultQuery || '')\n\n if (context) {\n return context\n }\n\n return {\n labelSearchQuery: localQuery,\n setLabelSearchQuery: setLocalQuery\n }\n}\n"],"mappings":"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","names":["labels","selectedLabels","ArgumentType","jsx","produce","classNames","classNames","jsx","jsxs","classNames","Fragment","jsx","jsxs","produce","classNames","f","useMemo","useState","produce","isEqual","NewMultipleSelect","classNames","useState","jsx","Fragment","jsx","jsxs","useState","produce","useMemo","value","NewMultipleSelect","classNames","input","isEqual"]}
|
package/dist/style.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--radius-md:.375rem;--default-font-family:var(--font-sans)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:Menlo,ui-monospace,SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:rgba(var(--border-color))}::file-selector-button{border-color:rgba(var(--border-color))}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.z-10{z-index:10}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-ml-px{margin-left:-1px}.block{display:block}.flex{display:flex}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0\.5{height:calc(var(--spacing) * .5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-56{height:calc(var(--spacing) * 56)}.h-72{height:calc(var(--spacing) * 72)}.h-full{height:100%}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-24{width:calc(var(--spacing) * 24)}.w-44{width:calc(var(--spacing) * 44)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[28rem\]{width:28rem}.w-\[32rem\]{width:32rem}.w-\[36rem\]{width:36rem}.w-full{width:100%}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-1{gap:calc(var(--spacing) * 1)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:rgba(var(--gray-200))}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.rounded-none\!{border-radius:0!important}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-light{border-color:rgba(var(--border-light))}.border-main{border-color:rgba(var(--border-main))}.border-transparent{border-color:#0000}.border-transparent\!{border-color:#0000!important}.bg-default-bg{background-color:var(--default-bg)}.bg-gray-50{background-color:rgba(var(--gray-50))}.bg-gray-300{background-color:rgba(var(--gray-300))}.bg-primary-500{background-color:rgba(var(--primary-500))}.bg-primary-600{background-color:rgba(var(--primary-600))}.p-2{padding:calc(var(--spacing) * 2)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.align-top{vertical-align:top}.text-icontent,.text-ilabel{font-size:.8125rem;line-height:var(--tw-leading,1.125rem)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-primary-600{color:rgba(var(--primary-600))}.text-text-foreground{color:rgba(var(--text-foreground))}.text-text-foreground-disabled{color:rgba(var(--text-foreground-disabled))}.text-text-foreground-secondary{color:rgba(var(--text-foreground-secondary))}.text-white,.text-white\/80{color:rgba(var(--white))}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, rgba(var(--white)) 80%, transparent)}}.capitalize{text-transform:capitalize}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:border-primary-600\!:focus-within{border-color:rgba(var(--primary-600))!important}@media (hover:hover){.hover\:border-primary-600:hover{border-color:rgba(var(--primary-600))}.hover\:border-primary-600\!:hover{border-color:rgba(var(--primary-600))!important}.hover\:bg-gray-50:hover{background-color:rgba(var(--gray-50))}.hover\:bg-hover:hover{background-color:rgba(var(--bg-hover))}.hover\:bg-primary-600:hover{background-color:rgba(var(--primary-600))}.hover\:bg-sentio-gray-100:hover{background-color:rgba(var(--sentio-gray-100))}.hover\:text-primary-600:hover{color:rgba(var(--primary-600))}.hover\:text-text-foreground:hover{color:rgba(var(--text-foreground))}}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-primary-600:focus{border-color:rgba(var(--primary-600))}.focus\:ring-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-primary-600\/30:focus{--tw-ring-color:rgba(var(--primary-600))}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary-600\/30:focus{--tw-ring-color:color-mix(in oklab, rgba(var(--primary-600)) 30%, transparent)}}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:ring-inset:focus{--tw-ring-inset:inset}@media (min-width:40rem){.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:text-ilabel{font-size:.8125rem;line-height:var(--tw-leading,1.125rem)}}@media (min-width:64rem){.lg\:max-w-3xl{max-width:var(--container-3xl)}}.dark\:bg-primary-600:where(.dark,.dark *){background-color:rgba(var(--primary-600))}@media (hover:hover){.dark\:hover\:bg-sentio-gray-400:where(.dark,.dark *):hover{background-color:rgba(var(--sentio-gray-400))}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:rgba(var(--white))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-normal:400;--font-weight-medium:500;--radius-md:.375rem;--default-font-family:var(--font-sans)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:Menlo,ui-monospace,SFMono-Regular,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:rgba(var(--border-color))}::file-selector-button{border-color:rgba(var(--border-color))}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.z-10{z-index:10}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-ml-px{margin-left:-1px}.block{display:block}.flex{display:flex}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-56{height:calc(var(--spacing) * 56)}.h-72{height:calc(var(--spacing) * 72)}.h-full{height:100%}.h-px{height:1px}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-24{width:calc(var(--spacing) * 24)}.w-44{width:calc(var(--spacing) * 44)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[28rem\]{width:28rem}.w-\[32rem\]{width:32rem}.w-\[36rem\]{width:36rem}.w-full{width:100%}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-1{gap:calc(var(--spacing) * 1)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:rgba(var(--gray-200))}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.rounded-none\!{border-radius:0!important}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-light{border-color:rgba(var(--border-light))}.border-main{border-color:rgba(var(--border-main))}.border-transparent{border-color:#0000}.border-transparent\!{border-color:#0000!important}.bg-border-color{background-color:rgba(var(--border-color))}.bg-default-bg{background-color:var(--default-bg)}.bg-gray-50{background-color:rgba(var(--gray-50))}.bg-primary-500{background-color:rgba(var(--primary-500))}.bg-primary-600{background-color:rgba(var(--primary-600))}.p-2{padding:calc(var(--spacing) * 2)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.align-top{vertical-align:top}.text-icontent,.text-ilabel{font-size:.8125rem;line-height:var(--tw-leading,1.125rem)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-primary-600{color:rgba(var(--primary-600))}.text-text-foreground{color:rgba(var(--text-foreground))}.text-text-foreground-disabled{color:rgba(var(--text-foreground-disabled))}.text-text-foreground-secondary{color:rgba(var(--text-foreground-secondary))}.text-white,.text-white\/80{color:rgba(var(--white))}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, rgba(var(--white)) 80%, transparent)}}.capitalize{text-transform:capitalize}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:border-primary-600\!:focus-within{border-color:rgba(var(--primary-600))!important}@media (hover:hover){.hover\:border-primary-600:hover{border-color:rgba(var(--primary-600))}.hover\:border-primary-600\!:hover{border-color:rgba(var(--primary-600))!important}.hover\:bg-gray-50:hover{background-color:rgba(var(--gray-50))}.hover\:bg-hover:hover{background-color:rgba(var(--bg-hover))}.hover\:bg-primary-600:hover{background-color:rgba(var(--primary-600))}.hover\:bg-sentio-gray-100:hover{background-color:rgba(var(--sentio-gray-100))}.hover\:text-primary-600:hover{color:rgba(var(--primary-600))}.hover\:text-text-foreground:hover{color:rgba(var(--text-foreground))}}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-primary-600:focus{border-color:rgba(var(--primary-600))}.focus\:ring-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-primary-600\/30:focus{--tw-ring-color:rgba(var(--primary-600))}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary-600\/30:focus{--tw-ring-color:color-mix(in oklab, rgba(var(--primary-600)) 30%, transparent)}}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\:ring-inset:focus{--tw-ring-inset:inset}@media (min-width:40rem){.sm\:px-0{padding-inline:calc(var(--spacing) * 0)}.sm\:text-ilabel{font-size:.8125rem;line-height:var(--tw-leading,1.125rem)}}@media (min-width:64rem){.lg\:max-w-3xl{max-width:var(--container-3xl)}}.dark\:bg-primary-600:where(.dark,.dark *){background-color:rgba(var(--primary-600))}@media (hover:hover){.dark\:hover\:bg-sentio-gray-400:where(.dark,.dark *):hover{background-color:rgba(var(--sentio-gray-400))}.dark\:hover\:text-white:where(.dark,.dark *):hover{color:rgba(var(--white))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"private": false,
|
|
3
3
|
"name": "@sentio/ui-dashboard",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"description": "Dashboard UI components for the Sentio platform, decoupled from backend services.",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"immer": "^11.1.8",
|
|
27
27
|
"lodash": "^4.17.21",
|
|
28
28
|
"react-icons": "^5.5.0",
|
|
29
|
-
"@sentio/
|
|
30
|
-
"@sentio/
|
|
29
|
+
"@sentio/chain": "^3.4.31",
|
|
30
|
+
"@sentio/ui-core": "^0.3.4"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": ">=18",
|