react-ui89 0.34.5 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,3 +17,4 @@ export declare const SizeSquare: Story;
17
17
  export declare const SizeSquareDoesNotGrowWithFlexGrow: Story;
18
18
  export declare const SizeSquareOverflow: Story;
19
19
  export declare const OverrideRouterPush: StoryObj<Ui89OverrideProviderProps>;
20
+ export declare const ClickArea: Story;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import "./Ui89InputCheckBox.css";
3
+ export interface Ui89InputCheckBoxProps {
4
+ value: boolean;
5
+ onChange?: (value: boolean) => void;
6
+ }
7
+ export declare function Ui89InputCheckBox(props: Ui89InputCheckBoxProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Ui89InputCheckBox } from "./Ui89InputCheckBox";
3
+ declare const meta: Meta<typeof Ui89InputCheckBox>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const InlineWithText: Story;
8
+ export declare const InheritsFont: Story;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import "./Ui89InputCheckText.css";
3
+ export interface Ui89InputCheckTextProps {
4
+ value: any;
5
+ onChange?: (value: boolean) => void;
6
+ }
7
+ export declare function Ui89InputCheckText(props: Ui89InputCheckTextProps): React.JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Ui89InputCheckText } from "./Ui89InputCheckText";
3
+ declare const meta: Meta<typeof Ui89InputCheckText>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const InlineWithText: Story;
8
+ export declare const InheritsFont: Story;
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import "./Ui89VirtualList.css";
3
+ export interface Ui89VirtualListPropsRenderRowProps<T> {
4
+ index: number;
5
+ row: T;
6
+ }
7
+ export interface Ui89VirtualListProps<T> {
8
+ rows: T[];
9
+ rowHeight?: number;
10
+ renderRow: (props: Ui89VirtualListPropsRenderRowProps<T>) => React.ReactNode;
11
+ getRowKey?: (row: T) => string;
12
+ }
13
+ /**
14
+ * Virtualization at row level. Great for long lists.
15
+ *
16
+ * Can be used to implement table components with few columns.
17
+ */
18
+ export declare const Ui89VirtualList: <T>(props: Ui89VirtualListProps<T>) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { Ui89VirtualList } from "./Ui89VirtualList";
3
+ declare const meta: Meta<typeof Ui89VirtualList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Empty: Story;
7
+ export declare const SmallList: Story;
8
+ export declare const BigList: Story;
9
+ export declare const CounterRender: Story;
10
+ export declare const UpdatesRowsWhenChanged: Story;
@@ -25,4 +25,4 @@ export interface Ui89VirtualTableProps<T> {
25
25
  columns?: Ui89VirtualTablePropsColumn<T>[];
26
26
  rowHeight?: number;
27
27
  }
28
- export declare const Ui89VirtualTable: React.MemoExoticComponent<(<T>(props: Ui89VirtualTableProps<T>) => React.JSX.Element)>;
28
+ export declare const Ui89VirtualTable: <T>(props: Ui89VirtualTableProps<T>) => JSX.Element;
@@ -14,4 +14,4 @@ export interface VirtualListProps<T> {
14
14
  * Virtualization at row level. Great for long lists and tables with few
15
15
  * columns.
16
16
  */
17
- export declare const VirtualList: React.MemoExoticComponent<(<T>(props: VirtualListProps<T>) => React.JSX.Element)>;
17
+ export declare const VirtualList: <T>(props: VirtualListProps<T>) => JSX.Element;
@@ -7,3 +7,4 @@ export declare const Empty: Story;
7
7
  export declare const SmallList: Story;
8
8
  export declare const BigList: Story;
9
9
  export declare const CounterRender: Story;
10
+ export declare const UpdatesRowsWhenChanged: Story;
@@ -3,7 +3,7 @@
3
3
  .ui89-typo-big{font-family:monospace;font-size:var(--ui89-font-size-big);line-height:25px;}.ui89-typo-normal{font-family:monospace;font-size:var(--ui89-font-size-normal);line-height:16px;}.ui89-typo-normal-bold{font-family:monospace;font-size:var(--ui89-font-size-normal);line-height:16px;font-weight:bold;}.ui89-typo-small{font-family:monospace;font-size:var(--ui89-font-size-small);line-height:16px;}.ui89-typo-small-bold{font-family:monospace;font-size:var(--ui89-font-size-small);line-height:16px;font-weight:bold;}.ui89-typo-special{font-family:monospace;font-size:var(--ui89-font-size-small);font-weight:bold;}
4
4
  .ui-89-reset-a{text-decoration:none;}
5
5
  .ui89-chosen-theme-primary{--ui89-chosen-theme-text-color:var(--ui89-theme-primary-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-primary-bg-color);}.ui89-chosen-theme-secondary{--ui89-chosen-theme-text-color:var(--ui89-theme-secondary-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-secondary-bg-color);}.ui89-chosen-theme-info{--ui89-chosen-theme-text-color:var(--ui89-theme-info-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-info-bg-color);}.ui89-chosen-theme-success{--ui89-chosen-theme-text-color:var(--ui89-theme-success-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-success-bg-color);}.ui89-chosen-theme-warning{--ui89-chosen-theme-text-color:var(--ui89-theme-warning-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-warning-bg-color);}.ui89-chosen-theme-danger{--ui89-chosen-theme-text-color:var(--ui89-theme-danger-text-color);--ui89-chosen-theme-bg-color:var(--ui89-theme-danger-bg-color);}
6
- .ui89-button{display:inline-grid;height:fit-content;}.ui89-button--size-standard .ui89-button__button{height:22px;padding:0 calc(var(--ui89-safe-space) * 2);min-width:60px;}.ui89-button--size-square{width:fit-content;}.ui89-button--size-square .ui89-button__button{width:22px;height:22px;flex-basis:22px;overflow:hidden;}.ui89-button__button{display:inline-flex;justify-content:center;align-items:center;border:0;color:var(--ui89-chosen-theme-text-color);background-color:var(--ui89-chosen-theme-bg-color);border-radius:1px;font-weight:bold;user-select:none;text-align:center;box-sizing:border-box;border:1px solid #00000010;transition:transform var(--ui89-animation-speed);position:relative;cursor:var(--ui89-cursor-pointer);}.ui89-button__button:before{position:absolute;inset:0;}.ui89-button__button--block{display:flex;}.ui89-button__button:hover:not(.ui89-button__button--disabled):not(.ui89-button__button--active):before{content:"";background-color:#ffffff40;cursor:var(--ui89-cursor-pointer);}.ui89-button__button:active:not(.ui89-button__button--disabled),.ui89-button__button--active{transform:translate3d(calc(var(--ui89-safe-space) / 2),calc(var(--ui89-safe-space) / 2),0);}.ui89-button__button:active:not(.ui89-button__button--disabled):not(.ui89-button__button--active):before{content:none;background-color:#00000040;cursor:var(--ui89-cursor-pointer);}.ui89-button__button--disabled{opacity:0.5;cursor:var(--ui89-cursor-default);}.ui89-button__button__click{position:absolute;inset:0;margin:-1px;}.ui89-button__button:active:not(.ui89-button__button--disabled)>.ui89-button__button__click,.ui89-button__button--active>.ui89-button__button__click{transform:translate3d(calc(var(--ui89-safe-space) / 2 * -1),calc(var(--ui89-safe-space) / 2 * -1),0);}
6
+ .ui89-button{display:inline-grid;height:fit-content;position:relative;}.ui89-button--size-standard .ui89-button__button{height:22px;padding:0 calc(var(--ui89-safe-space) * 2);min-width:60px;}.ui89-button--size-square{width:fit-content;}.ui89-button--size-square .ui89-button__button{width:22px;height:22px;flex-basis:22px;overflow:hidden;}.ui89-button__button{display:inline-flex;justify-content:center;align-items:center;border:0;color:var(--ui89-chosen-theme-text-color);background-color:var(--ui89-chosen-theme-bg-color);border-radius:1px;font-weight:bold;user-select:none;text-align:center;box-sizing:border-box;border:1px solid #00000010;transition:transform var(--ui89-animation-speed);position:relative;cursor:var(--ui89-cursor-pointer);}.ui89-button__button:before{position:absolute;inset:0;}.ui89-button__button--block{display:flex;}.ui89-button__button:hover:not(.ui89-button__button--disabled):not(.ui89-button__button--active):before{content:"";background-color:#ffffff40;cursor:var(--ui89-cursor-pointer);}.ui89-button__button:active:not(.ui89-button__button--disabled),.ui89-button__button--active{transform:translate3d(calc(var(--ui89-safe-space) / 2),calc(var(--ui89-safe-space) / 2),0);}.ui89-button__button:active:not(.ui89-button__button--disabled):not(.ui89-button__button--active):before{content:none;background-color:#00000040;cursor:var(--ui89-cursor-pointer);}.ui89-button__button--disabled{opacity:0.5;cursor:var(--ui89-cursor-default);}.ui89-button__button__click{position:absolute;inset:0;right:var(--ui89-safe-space);bottom:var(--ui89-safe-space);}
7
7
  .ui89-hover-shadow{display:grid;padding-right:var(--ui89-safe-space);padding-bottom:var(--ui89-safe-space);position:relative;}.ui89-hover-shadow__right{display:block;position:absolute;right:0;bottom:0;height:calc(100% - var(--ui89-safe-space));width:var(--ui89-safe-space);box-sizing:border-box;background:black;z-index:0;}.ui89-hover-shadow__bottom{display:block;position:absolute;right:0;bottom:0;width:calc(100% - var(--ui89-safe-space));height:var(--ui89-safe-space);box-sizing:border-box;background:black;z-index:0;}
8
8
  .ui89-card{background:var(--ui89-scene-card-bg-color);color:var(--ui89-scene-card-text-color);border-radius:var(--ui89-box-border-radius);position:relative;box-shadow:rgb(0 0 0 / 5%) 0px 1px 2px 0px;border-top:calc(var(--ui89-safe-space)) solid #ffffff20;border-left:calc(var(--ui89-safe-space)) solid #ffffff20;border-right:calc(var(--ui89-safe-space)) solid #00000040;border-bottom:calc(var(--ui89-safe-space)) solid #00000040;padding:calc(var(--ui89-safe-space) / 4) calc(var(--ui89-safe-space) / 2);border:1px solid var(--ui89-scene-card-text-color);display:flex;flex-direction:column;}.ui89-card>*{flex:1;}.ui89-card--has-top{margin-top:var(--ui89-safe-space);}.ui89-card__inside{border:1px solid white;padding:calc(var(--ui89-safe-space));}.ui89-card__top-left-center{position:absolute;bottom:100%;left:0;padding-left:var(--ui89-safe-space);transform:translateY(50%);}.ui89-card__top-center{position:absolute;top:0;transform:translateY(-50%);left:var(--ui89-safe-space);right:var(--ui89-safe-space);display:flex;justify-content:center;}.ui89-card__horizontal-connection{margin:0 calc(var(--ui89-safe-space) * -1);background:var(--ui89-scene-card-bg-color);}.ui89-card__horizontal-connection--overflow{margin:0 calc(var(--ui89-safe-space) * -1 - 1px);}
9
9
  @charset "UTF-8";.react-datepicker__navigation-icon::before,.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:"";display:block;height:9px;position:absolute;top:6px;width:9px;}.react-datepicker-wrapper{display:inline-block;padding:0;border:0;}.react-datepicker{font-family:"Helvetica Neue",helvetica,arial,sans-serif;font-size:0.8rem;background-color:#fff;color:#000;border:1px solid #aeaeae;border-radius:0.3rem;display:inline-block;position:relative;line-height:initial;}.react-datepicker--time-only .react-datepicker__time-container{border-left:0;}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:0.3rem;border-bottom-right-radius:0.3rem;}.react-datepicker-popper{z-index:1;line-height:0;}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae;}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0;}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff;}.react-datepicker__header{text-align:center;background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:0.3rem;padding:8px 0;position:relative;}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px;}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0;}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:0.3rem;}.react-datepicker__year-dropdown-container--select,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--scroll{display:inline-block;margin:0 15px;}.react-datepicker__current-month,.react-datepicker-time__header,.react-datepicker-year-header{margin-top:0;color:#000;font-weight:bold;font-size:0.944rem;}h2.react-datepicker__current-month{padding:0;margin:0;}.react-datepicker-time__header{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;}.react-datepicker__navigation{align-items:center;background:none;display:flex;justify-content:center;text-align:center;cursor:pointer;position:absolute;top:2px;padding:0;border:none;z-index:1;height:32px;width:32px;text-indent:-999em;overflow:hidden;}.react-datepicker__navigation--previous{left:2px;}.react-datepicker__navigation--next{right:2px;}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px;}.react-datepicker__navigation--years{position:relative;top:0;display:block;margin-left:auto;margin-right:auto;}.react-datepicker__navigation--years-previous{top:4px;}.react-datepicker__navigation--years-upcoming{top:-4px;}.react-datepicker__navigation:hover *::before{border-color:rgb(165.75,165.75,165.75);}.react-datepicker__navigation-icon{position:relative;top:-1px;font-size:20px;width:0;}.react-datepicker__navigation-icon--next{left:-2px;}.react-datepicker__navigation-icon--next::before{transform:rotate(45deg);left:-7px;}.react-datepicker__navigation-icon--previous{right:-2px;}.react-datepicker__navigation-icon--previous::before{transform:rotate(225deg);right:-7px;}.react-datepicker__month-container{float:left;}.react-datepicker__year{margin:0.4rem;text-align:center;}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px;}.react-datepicker__year .react-datepicker__year-text{display:inline-block;width:4rem;margin:2px;}.react-datepicker__month{margin:0.4rem;text-align:center;}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;width:4rem;margin:2px;}.react-datepicker__input-time-container{clear:both;width:100%;float:left;margin:5px 0 10px 15px;text-align:left;}.react-datepicker__input-time-container .react-datepicker-time__caption{display:inline-block;}.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block;}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px;}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto;}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield;}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{margin-left:5px;display:inline-block;}.react-datepicker__time-container{float:right;border-left:1px solid #aeaeae;width:85px;}.react-datepicker__time-container--with-today-button{display:inline;border:1px solid #aeaeae;border-radius:0.3rem;position:absolute;right:-87px;top:0;}.react-datepicker__time-container .react-datepicker__time{position:relative;background:white;border-bottom-right-radius:0.3rem;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{width:85px;overflow-x:hidden;margin:0 auto;text-align:center;border-bottom-right-radius:0.3rem;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{list-style:none;margin:0;height:calc(195px + 1.7rem / 2);overflow-y:scroll;padding-right:0;padding-left:0;width:100%;box-sizing:content-box;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{cursor:pointer;background-color:#f0f0f0;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:white;font-weight:bold;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc;}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{cursor:default;background-color:transparent;}.react-datepicker__week-number{color:#ccc;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:0.166rem;}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer;}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{border-radius:0.3rem;background-color:#f0f0f0;}.react-datepicker__week-number--selected{border-radius:0.3rem;background-color:#216ba5;color:#fff;}.react-datepicker__week-number--selected:hover{background-color:rgb(28.75,93.2196969697,143.75);}.react-datepicker__day-names{white-space:nowrap;margin-bottom:-8px;}.react-datepicker__week{white-space:nowrap;}.react-datepicker__day-name,.react-datepicker__day,.react-datepicker__time-name{color:#000;display:inline-block;width:1.7rem;line-height:1.7rem;text-align:center;margin:0.166rem;}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer;}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{border-radius:0.3rem;background-color:#f0f0f0;}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:bold;}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{border-radius:0.3rem;background-color:#3dcc4a;color:#fff;}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:rgb(49.8551020408,189.6448979592,62.5632653061);}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:magenta;}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green;}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{position:relative;border-radius:0.3rem;background-color:#ff6803;color:#fff;}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity 0.3s ease-in-out;}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:rgb(207,82.9642857143,0);}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{visibility:visible;opacity:1;}.react-datepicker__day--selected,.react-datepicker__day--in-selecting-range,.react-datepicker__day--in-range,.react-datepicker__month-text--selected,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--selected,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--selected,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--in-range{border-radius:0.3rem;background-color:#216ba5;color:#fff;}.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover{background-color:rgb(28.75,93.2196969697,143.75);}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{border-radius:0.3rem;background-color:rgb(186.25,217.0833333333,241.25);color:rgb(0,0,0);}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:rgb(28.75,93.2196969697,143.75);}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:rgba(33,107,165,0.5);}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000;}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{cursor:default;color:#ccc;}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{position:absolute;bottom:70%;left:50%;transform:translateX(-50%);background-color:#333;color:#fff;padding:4px;border-radius:4px;white-space:nowrap;visibility:hidden;opacity:0;transition:visibility 0s,opacity 0.3s ease-in-out;}.react-datepicker__input-container{position:relative;display:inline-block;width:100%;}.react-datepicker__input-container .react-datepicker__calendar-icon{position:absolute;padding:0.5rem;box-sizing:content-box;}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px;}.react-datepicker__year-read-view,.react-datepicker__month-read-view,.react-datepicker__month-year-read-view{border:1px solid transparent;border-radius:0.3rem;position:relative;}.react-datepicker__year-read-view:hover,.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover{cursor:pointer;}.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow{border-top-color:rgb(178.5,178.5,178.5);}.react-datepicker__year-read-view--down-arrow,.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow{transform:rotate(135deg);right:-16px;top:0;}.react-datepicker__year-dropdown,.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown{background-color:#f0f0f0;position:absolute;width:50%;left:25%;top:30px;z-index:1;text-align:center;border-radius:0.3rem;border:1px solid #aeaeae;}.react-datepicker__year-dropdown:hover,.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover{cursor:pointer;}.react-datepicker__year-dropdown--scrollable,.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable{height:150px;overflow-y:scroll;}.react-datepicker__year-option,.react-datepicker__month-option,.react-datepicker__month-year-option{line-height:20px;width:100%;display:block;margin-left:auto;margin-right:auto;}.react-datepicker__year-option:first-of-type,.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type{border-top-left-radius:0.3rem;border-top-right-radius:0.3rem;}.react-datepicker__year-option:last-of-type,.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom-left-radius:0.3rem;border-bottom-right-radius:0.3rem;}.react-datepicker__year-option:hover,.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover{background-color:#ccc;}.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:rgb(178.5,178.5,178.5);}.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous{border-top-color:rgb(178.5,178.5,178.5);}.react-datepicker__year-option--selected,.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected{position:absolute;left:15px;}.react-datepicker__close-icon{cursor:pointer;background-color:transparent;border:0;outline:0;padding:0 6px 0 0;position:absolute;top:0;right:0;height:100%;display:table-cell;vertical-align:middle;}.react-datepicker__close-icon::after{cursor:pointer;background-color:#216ba5;color:#fff;border-radius:50%;height:16px;width:16px;padding:2px;font-size:12px;line-height:1;text-align:center;display:table-cell;vertical-align:middle;content:"×";}.react-datepicker__close-icon--disabled{cursor:default;}.react-datepicker__close-icon--disabled::after{cursor:default;background-color:#ccc;}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;cursor:pointer;text-align:center;font-weight:bold;padding:5px 0;clear:left;}.react-datepicker__portal{position:fixed;width:100vw;height:100vh;background-color:rgba(0,0,0,0.8);left:0;top:0;justify-content:center;align-items:center;display:flex;z-index:2147483647;}.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:3rem;line-height:3rem;}@media (max-width:400px),(max-height:550px){.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__time-name{width:2rem;line-height:2rem;}}.react-datepicker__portal .react-datepicker__current-month,.react-datepicker__portal .react-datepicker-time__header{font-size:1.44rem;}.react-datepicker__children-container{width:13.8rem;margin:0.4rem;padding-right:0.2rem;padding-left:0.2rem;height:auto;}.react-datepicker__aria-live{position:absolute;clip-path:circle(0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px;white-space:nowrap;}.react-datepicker__calendar-icon{width:1em;height:1em;vertical-align:-0.125em;}
@@ -11,6 +11,8 @@
11
11
  .ui89-input-box{box-sizing:border-box;display:block;width:100%;height:var(--ui89-input-height);line-height:var(--ui89-input-height);padding:0 var(--ui89-safe-space);border:0;border-radius:0;outline:none;background:var(--ui89-input-bg-color);color:var(--ui89-input-text-color);}.ui89-input-box--unselectable{user-select:none;}.ui89-input-box--clickable{cursor:var(--ui89-cursor-pointer);}
12
12
  .ui89-highlight-text{color:var(--ui89-chosen-theme-text-color);background-color:var(--ui89-chosen-theme-bg-color);}.ui89-highlight-text--block{display:block;}
13
13
  .ui-89-hr{--ui89-hr-color:var(--ui89-scene-card-text-color);}.ui-89-hr--straight{border-top:1px solid var(--ui89-hr-color);}.ui-89-hr--dotted{border-top:1px dotted var(--ui89-hr-color);}.ui-89-hr--dashed{border-top:1px dashed var(--ui89-hr-color);}.ui-89-hr--double{border-top:1px solid var(--ui89-hr-color);}.ui-89-hr--double .ui-89-hr__double{margin-top:4px;border-top:1px solid var(--ui89-hr-color);}.ui-89-hr--use-theme{--ui89-hr-color:var(--ui89-chosen-theme-bg-color);}
14
+ .ui89-input-check-box{display:inline-flex;cursor:pointer;user-select:none;}.ui89-input-check-box__x{box-sizing:border-box;display:block;text-align:center;width:var(--ui89-input-height);height:var(--ui89-input-height);font-size:var(--ui89-font-size-normal);font-weight:bold;padding:0 var(--ui89-safe-space);border:0;border-radius:var(--ui89-box-border-radius);outline:none;background:var(--ui89-input-bg-color);color:var(--ui89-input-text-color);line-height:var(--ui89-input-height);user-select:none;}
15
+ .ui89-input-check-text{display:inline-block;cursor:pointer;user-select:none;}
14
16
  .ui89-input-file-upload{display:flex;gap:calc(var(--ui89-safe-space) * 1);align-items:center;}.ui89-input-file-upload__info{min-width:0;}
15
17
  .ui89-text-unbreakable{white-space:nowrap;}.ui89-text-ellipsis{overflow:hidden;text-overflow:ellipsis;}.ui89-text-single-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.ui89-text-single-line--ellipsis-left{direction:rtl;}
16
18
  .ui89-input-select{position:relative;}.ui89-input-select__menu{position:absolute;top:100%;left:0;width:100%;max-height:300px;overflow:auto;display:none;background:var(--ui89-input-bg-color);color:var(--ui89-input-text-color);z-index:1;}.ui89-input-select__menu__content{display:inline-flex;flex-direction:column;min-width:100%;}.ui89-input-select:focus-within .ui89-input-select__menu{display:block;animation:ui89-input-select__appear var(--ui89-animation-speed);}@keyframes ui89-input-select__appear{from{transform:translateY(-5px);}to{transform:translateY(0%);}}.ui89-input-select__menu__item{display:inline-flex;align-items:center;background:var(--ui89-input-bg-color);color:var(--ui89-input-text-color);height:var(--ui89-input-height);padding:0 var(--ui89-safe-space);white-space:nowrap;user-select:none;}.ui89-input-select__menu__item:not(.ui89-input-select__menu__item--disabled){cursor:pointer;}.ui89-input-select__menu__item:not(.ui89-input-select__menu__item--disabled):hover,.ui89-input-select__menu__item.ui89-input-select__menu__item--selected{background:var(--ui89-input-text-color);color:var(--ui89-input-bg-color);}.ui89-input-select__menu__item--disabled{color:var(--ui89-palette-white);}
@@ -30,5 +32,5 @@
30
32
  .ui89-title-box{display:flex;}.ui89-title-box__inside{min-width:0;color:var(--ui89-scene-bg-color);background-color:var(--ui89-scene-text-color);padding:0px var(--ui89-safe-space);}
31
33
  .ui89-title-underline{display:flex;line-height:1;}.ui89-title-underline__inside{min-width:0;border-bottom:1px solid;position:relative;padding-bottom:calc(var(--ui89-safe-space) / 2);}.ui89-title-underline__inside:after{content:"";position:absolute;inset:0;transform:translateY(-2px);border-bottom:1px solid;z-index:0;}
32
34
  .ui89-toaster::before{content:"";position:absolute;inset:0;border:var(--ui89-toaster-border-width) solid var(--ui89-chosen-theme-text-color);margin:var(--ui89-safe-space);}.ui89-toaster::after{content:"";display:block;position:absolute;top:0;left:50%;transform:translateX(-50%);background:var(--ui89-chosen-theme-bg-color);color:var(--ui89-chosen-theme-text-color);padding:0 var(--ui89-safe-space);}.ui89-toaster.Toastify__toast--default{--ui89-toaster-border-width:1px;display:block;min-height:auto;padding:calc(var(--ui89-safe-space) * 2 + var(--ui89-toaster-border-width));border-radius:0;box-shadow:var(--ui89-box-shadow);background:var(--ui89-chosen-theme-bg-color);color:var(--ui89-chosen-theme-text-color);}.ui89-toaster .Toastify__progress-bar--wrp{border-radius:0;}
33
- .ui89-virtual-table{height:100%;box-sizing:border-box;}.ui89-virtual-table__empty{display:flex;align-items:center;justify-content:center;text-align:center;height:100%;}.ui89-virtual-table__row{position:relative;box-sizing:border-box;border-top:1px solid var(--ui89-scene-text-color);}.ui89-virtual-table__row--first{border-top:none;}.ui89-virtual-table__cell{position:absolute;display:flex;flex-direction:column;justify-content:center;padding:0 var(--ui89-safe-space);box-sizing:border-box;overflow:hidden;background:var(--ui89-scene-bg-color);}.ui89-virtual-table__cell--column-first{padding-left:var(--ui89-safe-space);}.ui89-virtual-table__cell--column-last{padding-right:var(--ui89-safe-space);}.ui89-virtual-table__cell--halign-left{align-items:flex-start;}.ui89-virtual-table__cell--halign-right{align-items:flex-end;}.ui89-virtual-table__cell--halign-center{align-items:center;}
34
- .ui89-virtual-list{position:relative;height:100%;overflow:auto;}.ui89-virtual-list__row{position:absolute;width:100%;}
35
+ .ui89-virtual-list{position:relative;height:100%;overflow:auto;}.ui89-virtual-list__row{position:absolute;width:100%;}
36
+ .ui89-virtual-table{height:100%;box-sizing:border-box;}.ui89-virtual-table__empty{display:flex;align-items:center;justify-content:center;text-align:center;height:100%;}.ui89-virtual-table__row{position:relative;box-sizing:border-box;border-top:1px solid var(--ui89-scene-text-color);}.ui89-virtual-table__row--first{border-top:none;}.ui89-virtual-table__cell{position:absolute;display:flex;flex-direction:column;justify-content:center;padding:0 var(--ui89-safe-space);box-sizing:border-box;overflow:hidden;background:var(--ui89-scene-bg-color);}.ui89-virtual-table__cell--column-first{padding-left:var(--ui89-safe-space);}.ui89-virtual-table__cell--column-last{padding-right:var(--ui89-safe-space);}.ui89-virtual-table__cell--halign-left{align-items:flex-start;}.ui89-virtual-table__cell--halign-right{align-items:flex-end;}.ui89-virtual-table__cell--halign-center{align-items:center;}
@@ -16,6 +16,10 @@ export { Ui89HighlightText } from "./components/Ui89HighlightText";
16
16
  export type { Ui89HighlightTextProps } from "./components/Ui89HighlightText";
17
17
  export { Ui89Hr } from "./components/Ui89Hr";
18
18
  export type { Ui89HrProps, Ui89HrPropsLook } from "./components/Ui89Hr";
19
+ export { Ui89InputCheckBox } from "./components/Ui89InputCheckBox";
20
+ export type { Ui89InputCheckBoxProps } from "./components/Ui89InputCheckBox";
21
+ export { Ui89InputCheckText } from "./components/Ui89InputCheckText";
22
+ export type { Ui89InputCheckTextProps } from "./components/Ui89InputCheckText";
19
23
  export { Ui89InputFileUpload } from "./components/Ui89InputFileUpload";
20
24
  export type { Ui89InputFileUploadProps } from "./components/Ui89InputFileUpload";
21
25
  export { Ui89InputSelect } from "./components/Ui89InputSelect";
@@ -60,5 +64,7 @@ export { Ui89TitleUnderline } from "./components/Ui89TitleUnderline";
60
64
  export type { Ui89TitleUnderlineProps } from "./components/Ui89TitleUnderline";
61
65
  export { Ui89Toaster, useUi89Toaster } from "./components/Ui89Toaster";
62
66
  export type { Ui89ToasterOptions } from "./components/Ui89Toaster";
67
+ export { Ui89VirtualList } from "./components/Ui89VirtualList";
68
+ export type { Ui89VirtualListPropsRenderRowProps, Ui89VirtualListProps, } from "./components/Ui89VirtualList";
63
69
  export { Ui89VirtualTable } from "./components/Ui89VirtualTable";
64
70
  export type { Ui89VirtualTablePropsColumnRenderHeaderParams, Ui89VirtualTablePropsColumnRenderBodyParams, Ui89VirtualTablePropsColumn, Ui89VirtualTableProps, } from "./components/Ui89VirtualTable";
package/dist/esm/index.js CHANGED
@@ -127,16 +127,16 @@ function Ui89Button({ theme = Ui89Theme.primary, size = Ui89ButtonPropsSize.stan
127
127
  ].join(" ");
128
128
  if (href) {
129
129
  return (React__default.createElement("span", { className: containerClass },
130
+ React__default.createElement("span", { className: "ui89-button__button__click" }),
130
131
  React__default.createElement(HoverShadow, null,
131
132
  React__default.createElement("a", { className: `ui-89-reset-a ${buttonClass}`, role: "button", href: href, onClick: onAnchorClick },
132
- React__default.createElement("span", { className: "ui89-button__button__click" }),
133
133
  React__default.createElement("span", null, children)))));
134
134
  }
135
135
  else {
136
136
  return (React__default.createElement("span", { className: containerClass },
137
+ React__default.createElement("span", { className: "ui89-button__button__click" }),
137
138
  React__default.createElement(HoverShadow, null,
138
139
  React__default.createElement("button", { className: buttonClass, type: "button", onClick: onButtonClick, disabled: localDisabled },
139
- React__default.createElement("span", { className: "ui89-button__button__click" }),
140
140
  React__default.createElement("span", null, children)))));
141
141
  }
142
142
  }
@@ -227,6 +227,25 @@ function Ui89Hr({ look = "straight", theme }) {
227
227
  React__default.createElement("div", { className: "ui-89-hr__double" })));
228
228
  }
229
229
 
230
+ function Ui89InputCheckBox(props) {
231
+ function toggle() {
232
+ if (props.onChange) {
233
+ props.onChange(!props.value);
234
+ }
235
+ }
236
+ return (React__default.createElement("span", { className: "ui89-input-check-box", onClick: toggle },
237
+ React__default.createElement("span", { className: "ui89-input-check-box__x" }, props.value ? React__default.createElement(React__default.Fragment, null, "X") : React__default.createElement(React__default.Fragment, null, "\u00A0"))));
238
+ }
239
+
240
+ function Ui89InputCheckText(props) {
241
+ function toggle() {
242
+ if (props.onChange) {
243
+ props.onChange(!props.value);
244
+ }
245
+ }
246
+ return (React__default.createElement("span", { className: "ui89-input-check-text", onClick: toggle }, props.value ? "[X]" : "[ ]"));
247
+ }
248
+
230
249
  function Ui89InputFileUpload({ value, onChange, }) {
231
250
  const inputRef = useRef(null);
232
251
  function implOnChange(e) {
@@ -797,10 +816,11 @@ const useScrollYPosition = (ref) => {
797
816
  };
798
817
 
799
818
  /**
800
- * Virtualization at row level. Great for long lists and tables with few
801
- * columns.
819
+ * Virtualization at row level. Great for long lists.
820
+ *
821
+ * Can be used to implement table components with few columns.
802
822
  */
803
- const VirtualList = React__default.memo((props) => {
823
+ const Ui89VirtualList = React__default.memo((props) => {
804
824
  const scrollContainer = useRef(null);
805
825
  const scrollAreaContainer = useRef(null);
806
826
  const { size } = useResizeObserver(scrollContainer);
@@ -819,20 +839,24 @@ const VirtualList = React__default.memo((props) => {
819
839
  for (let index = firstIndex; index < firstIndex + length; index++) {
820
840
  let row = props.rows[index];
821
841
  let key = props.getRowKey ? props.getRowKey(row) : String(index);
822
- if (visibleRows.has(key)) {
823
- newVisibleRows.set(key, visibleRows.get(key));
824
- }
825
- else {
826
- newVisibleRows.set(key, {
827
- index,
828
- key,
829
- render: props.renderRow({ index, row }),
830
- style: {
831
- transform: `translateY(${index * rowHeight}px)`,
832
- height: `${rowHeight}px`,
833
- },
834
- });
842
+ let existingRow = visibleRows.get(key);
843
+ if (existingRow !== undefined) {
844
+ if (existingRow.row === row) {
845
+ // Data has technically not changed so we can reuse.
846
+ newVisibleRows.set(key, existingRow);
847
+ continue;
848
+ }
835
849
  }
850
+ newVisibleRows.set(key, {
851
+ index,
852
+ row,
853
+ key,
854
+ render: props.renderRow({ index, row }),
855
+ style: {
856
+ transform: `translateY(${index * rowHeight}px)`,
857
+ height: `${rowHeight}px`,
858
+ },
859
+ });
836
860
  }
837
861
  setVisibleRows(newVisibleRows);
838
862
  }, [props.rows, scrollY, size.height]);
@@ -923,9 +947,9 @@ const Ui89VirtualTable = React__default.memo((props) => {
923
947
  })));
924
948
  })));
925
949
  }, [columns, rowHeight]);
926
- return (React__default.createElement("div", { className: "ui89-virtual-table" }, rows.length > 1 ? (React__default.createElement(VirtualList, { rows: rows, rowHeight: rowHeight, renderRow: renderRow })) : (React__default.createElement("div", { className: "ui89-virtual-table__empty" },
950
+ return (React__default.createElement("div", { className: "ui89-virtual-table" }, rows.length > 1 ? (React__default.createElement(Ui89VirtualList, { rows: rows, rowHeight: rowHeight, renderRow: renderRow })) : (React__default.createElement("div", { className: "ui89-virtual-table__empty" },
927
951
  React__default.createElement(Ui89TagBox, { theme: "warning" }, "Empty")))));
928
952
  });
929
953
 
930
- export { Ui89Breadcrumbs, Ui89Button, Ui89Card, Ui89CardHorizontalConnection, Ui89DateTimePicker, Ui89DigitalClock, Ui89HighlightText, Ui89Hr, Ui89InputFileUpload, Ui89InputNumber, Ui89InputPassword, Ui89InputSelect, Ui89InputText, Ui89InputTextNumber, Ui89LinkUnderline, Ui89Look, Ui89MenuBar, Ui89ModalDialog, Ui89NameValuePair, Ui89OverrideProvider, Ui89Scene, Ui89Shortcut, Ui89SpacePadding, Ui89SpaceVertical, Ui89TabbedCard, Ui89Tabs, Ui89TagBox, Ui89Theme, Ui89ThemeBackground, Ui89TitleBox, Ui89TitleUnderline, Ui89Toaster, Ui89VirtualTable, useUi89Toaster };
954
+ export { Ui89Breadcrumbs, Ui89Button, Ui89Card, Ui89CardHorizontalConnection, Ui89DateTimePicker, Ui89DigitalClock, Ui89HighlightText, Ui89Hr, Ui89InputCheckBox, Ui89InputCheckText, Ui89InputFileUpload, Ui89InputNumber, Ui89InputPassword, Ui89InputSelect, Ui89InputText, Ui89InputTextNumber, Ui89LinkUnderline, Ui89Look, Ui89MenuBar, Ui89ModalDialog, Ui89NameValuePair, Ui89OverrideProvider, Ui89Scene, Ui89Shortcut, Ui89SpacePadding, Ui89SpaceVertical, Ui89TabbedCard, Ui89Tabs, Ui89TagBox, Ui89Theme, Ui89ThemeBackground, Ui89TitleBox, Ui89TitleUnderline, Ui89Toaster, Ui89VirtualList, Ui89VirtualTable, useUi89Toaster };
931
955
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/theme.ts","../../src/Ui89Override.tsx","../../src/components/Ui89Breadcrumbs.tsx","../../src/components/private/HoverShadow.tsx","../../src/components/Ui89Button.tsx","../../src/components/Ui89Card.tsx","../../src/components/Ui89CardHorizontalConnection.tsx","../../src/components/Ui89DateTimePicker.tsx","../../src/components/private/TimeAnimation.tsx","../../src/date-utils.ts","../../src/components/Ui89DigitalClock.tsx","../../src/components/Ui89HighlightText.tsx","../../src/components/Ui89Hr.tsx","../../src/components/Ui89InputFileUpload.tsx","../../src/components/Ui89InputSelect.tsx","../../src/timeout.ts","../../src/useDelayedOnChange.ts","../../src/components/Ui89InputText.tsx","../../src/text-utils.ts","../../src/components/Ui89InputTextNumber.tsx","../../src/components/Ui89InputNumber.tsx","../../src/components/Ui89InputPassword.tsx","../../src/components/Ui89LinkUnderline.tsx","../../src/components/Ui89MenuBar.tsx","../../src/components/Ui89Scene.tsx","../../src/components/private/GridExpandTrick.tsx","../../src/components/private/ScrollContainer.tsx","../../src/components/Ui89ModalDialog.tsx","../../src/components/Ui89NameValuePair.tsx","../../src/images/shortcut.svg","../../src/components/Ui89SpaceVertical.tsx","../../src/components/Ui89Shortcut.tsx","../../src/components/Ui89SpacePadding.tsx","../../src/components/Ui89Tabs.tsx","../../src/components/Ui89TabbedCard.tsx","../../src/components/Ui89TagBox.tsx","../../src/components/Ui89ThemeBackground.tsx","../../src/components/Ui89TitleBox.tsx","../../src/components/Ui89TitleUnderline.tsx","../../src/components/Ui89Toaster.tsx","../../src/useResizeObserver.ts","../../src/useScrollYPosition.ts","../../src/components/private/VirtualList.tsx","../../src/components/Ui89VirtualTable.tsx"],"sourcesContent":["export enum Ui89Theme {\n primary = \"primary\",\n secondary = \"secondary\",\n info = \"info\",\n success = \"success\",\n warning = \"warning\",\n danger = \"danger\",\n}\n\nexport enum Ui89Look {\n main = \"main\",\n side = \"side\",\n}\n","import React, { createContext, useContext, ReactNode } from \"react\"\n\ntype RouterPush = (url: string) => void | Promise<void>\n\ninterface Ui89OverrideContextType {\n routerPush?: RouterPush\n}\n\nexport interface Ui89OverrideProviderProps {\n children?: ReactNode\n routerPush?: RouterPush\n}\n\nconst Ui89OverrideContext = createContext<Ui89OverrideContextType>({})\n\nexport const Ui89OverrideProvider: React.FC<Ui89OverrideProviderProps> = ({\n routerPush,\n children,\n}) => {\n return (\n <Ui89OverrideContext.Provider value={{ routerPush }}>\n {children}\n </Ui89OverrideContext.Provider>\n )\n}\n\nexport const useUi89Overrides = (): Ui89OverrideContextType => {\n const context = useContext(Ui89OverrideContext)\n\n if (context === undefined) {\n throw new Error(\n \"useUi89Overrides must be used within a Ui89OverrideProvider\",\n )\n }\n\n return context\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89Breadcrumbs.css\"\nimport \"../style/typo.css\"\nimport \"../style/reset.css\"\nimport \"../style/chosen-theme.css\"\n\nimport { Ui89Theme } from \"../theme\"\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport type Ui89BreadcrumbsPropsOnSelect = (e: {\n item: Ui89BreadcrumbsPropsItem\n}) => void | Promise<void>\n\nexport interface Ui89BreadcrumbsPropsItem {\n label: React.ReactNode\n url?: string\n}\n\nexport interface Ui89BreadcrumbsProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n items: Ui89BreadcrumbsPropsItem[]\n onSelect?: Ui89BreadcrumbsPropsOnSelect\n}\n\nexport function Ui89BreadcrumbsItem({\n index,\n item,\n onSelect,\n}: {\n index: number\n item: Ui89BreadcrumbsPropsItem\n onSelect?: Ui89BreadcrumbsPropsOnSelect\n}) {\n const style = { \"--ui89-index\": index } as React.CSSProperties\n const tagname = item.url !== undefined ? \"a\" : \"div\"\n const overrides = useUi89Overrides()\n\n const onClick: React.MouseEventHandler<HTMLAnchorElement> = (e) => {\n if (item.url !== undefined) {\n if (item.url.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(item.url)\n }\n }\n }\n }\n\n return (\n <a\n className={`ui-89-reset-a ui89-breadcrumbs__item`}\n href={item.url}\n style={style}\n onClick={onClick}\n >\n <div className=\"ui89-breadcrumbs__item__background\"></div>\n {item.label}\n </a>\n )\n}\n\nexport function Ui89Breadcrumbs({\n theme = Ui89Theme.primary,\n items,\n onSelect,\n}: Ui89BreadcrumbsProps) {\n return (\n <div\n className={`ui89-breadcrumbs ui89-typo-special ui89-chosen-theme-${theme}`}\n >\n {[...items.entries()].reverse().map(([index, item]) => (\n <Ui89BreadcrumbsItem\n key={index}\n index={index}\n item={item}\n onSelect={onSelect}\n />\n ))}\n </div>\n )\n}\n","import React from \"react\"\nimport \"./HoverShadow.css\"\n\nexport default function HoverShadow({\n children,\n}: {\n children: React.ReactNode\n}) {\n return (\n <span className=\"ui89-hover-shadow\">\n <span className=\"ui89-hover-shadow__bottom\"></span>\n <span className=\"ui89-hover-shadow__right\"></span>\n {children}\n </span>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89Button.css\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\nimport \"../style/reset.css\"\n\nimport HoverShadow from \"./private/HoverShadow\"\n\nimport { Ui89Theme } from \"../theme\"\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport enum Ui89ButtonPropsSize {\n standard = \"standard\",\n square = \"square\",\n}\n\nexport interface Ui89ButtonProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n size?: Ui89ButtonPropsSize | keyof typeof Ui89ButtonPropsSize\n block?: boolean\n onClick?: () => void | Promise<void>\n href?: string\n children: React.ReactNode\n autoDisableOnClick?: boolean\n disabled?: boolean\n activated?: boolean\n}\n\nexport function Ui89Button({\n theme = Ui89Theme.primary,\n size = Ui89ButtonPropsSize.standard,\n block,\n onClick,\n href,\n children,\n autoDisableOnClick = true,\n disabled,\n activated,\n}: Ui89ButtonProps) {\n const overrides = useUi89Overrides()\n const [clicking, setClicking] = useState(false)\n\n let localDisabled = disabled || (autoDisableOnClick && clicking)\n\n async function onAnchorClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n if (clicking) {\n // No double clicking allowed.\n return\n }\n\n try {\n setClicking(true)\n\n if (href !== undefined) {\n if (href.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(href)\n }\n }\n }\n } finally {\n setClicking(false)\n }\n }\n\n async function onButtonClick(e: React.MouseEvent<HTMLButtonElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n if (clicking) {\n // No double clicking allowed.\n return\n }\n\n try {\n setClicking(true)\n\n if (onClick === undefined) {\n // No handler.\n return\n }\n\n await onClick()\n } finally {\n setClicking(false)\n }\n }\n\n let containerClass = [\"ui89-button\", `ui89-button--size-${size}`].join(\" \")\n\n let buttonClass = [\n \"ui89-button__button\",\n \"ui89-typo-special\",\n `ui89-chosen-theme-${theme}`,\n activated ? \"ui89-button__button--active\" : undefined,\n block ? \"ui89-button__button--block\" : undefined,\n disabled ? \"ui89-button__button--disabled\" : undefined,\n clicking ? \"ui89-button__button--active\" : undefined,\n ].join(\" \")\n\n if (href) {\n return (\n <span className={containerClass}>\n <HoverShadow>\n <a\n className={`ui-89-reset-a ${buttonClass}`}\n role=\"button\"\n href={href}\n onClick={onAnchorClick}\n >\n <span className=\"ui89-button__button__click\"></span>\n <span>{children}</span>\n </a>\n </HoverShadow>\n </span>\n )\n } else {\n return (\n <span className={containerClass}>\n <HoverShadow>\n <button\n className={buttonClass}\n type=\"button\"\n onClick={onButtonClick}\n disabled={localDisabled}\n >\n <span className=\"ui89-button__button__click\"></span>\n <span>{children}</span>\n </button>\n </HoverShadow>\n </span>\n )\n }\n}\n","import React from \"react\"\nimport \"./Ui89Card.css\"\n\nexport interface Ui89CardProps {\n topLeftCenter?: React.ReactNode\n topCenter?: React.ReactNode\n children: React.ReactNode\n}\n\nexport function Ui89Card({\n topLeftCenter,\n topCenter,\n children,\n}: Ui89CardProps) {\n const hasTopContent = topLeftCenter || topCenter\n\n return (\n <div className={`ui89-card ${hasTopContent ? \"ui89-card--has-top\" : \"\"}`}>\n <div className=\"ui89-card__inside\">\n {topLeftCenter && (\n <div className=\"ui89-card__top-left-center\">{topLeftCenter}</div>\n )}\n {topCenter && <div className=\"ui89-card__top-center\">{topCenter}</div>}\n\n {hasTopContent && <div className=\"space-vertical-1\"></div>}\n\n {children}\n\n {hasTopContent && <div className=\"space-vertical-1\"></div>}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport \"./Ui89Card.css\"\n\nexport interface Ui89CardHorizontalConnectionProps {\n children: React.ReactNode\n overflow?: boolean\n}\n\nexport function Ui89CardHorizontalConnection({\n children,\n overflow,\n}: Ui89CardHorizontalConnectionProps) {\n return (\n <div\n className={`ui89-card__horizontal-connection ${overflow ? \"ui89-card__horizontal-connection--overflow\" : \"\"}`}\n >\n {children}\n </div>\n )\n}\n","import React from \"react\"\nimport DatePicker from \"react-datepicker\"\n\nimport \"../../node_modules/react-datepicker/dist/react-datepicker.css\"\nimport \"./Ui89DateTimePicker.css\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89DateTimePickerProps {\n value?: Date | null\n onChange?: (value: Date | null) => void\n}\n\nexport function Ui89DateTimePicker(props: Ui89DateTimePickerProps) {\n function datepickerOnChange(value: Date | null) {\n if (props.onChange) {\n props.onChange(value)\n }\n }\n\n return (\n <span className=\"ui89-date-time-picker\">\n <DatePicker\n className={[\"ui89-input-box\", \"ui89-typo-normal\"].join(\" \")}\n calendarClassName=\"ui89-typo-normal\"\n showTimeSelect\n dateFormat=\"MM/dd/yyyy HH:mm:ss\"\n timeFormat=\"HH:mm\"\n selected={props.value}\n onChange={datepickerOnChange}\n popperPlacement=\"bottom-start\"\n />\n </span>\n )\n}\n","import React, { useState, useEffect } from \"react\"\n\nexport interface TimeAnimationPropsChildrenProps {\n now: Date\n}\n\nexport interface TimeAnimationProps {\n children: (props: TimeAnimationPropsChildrenProps) => React.ReactNode\n}\n\nexport const TimeAnimation: React.FC<TimeAnimationProps> = ({ children }) => {\n const [currentTime, setCurrentTime] = useState(new Date())\n\n useEffect(() => {\n const tick = () => {\n const now = new Date()\n setCurrentTime(now)\n\n // Calculate time until the next exact second\n const msUntilNextSecond = 1000 - now.getMilliseconds()\n setTimeout(tick, msUntilNextSecond)\n }\n\n // Start the first tick\n const msUntilNextSecond = 1000 - currentTime.getMilliseconds()\n const timeoutId = setTimeout(tick, msUntilNextSecond)\n\n return () => clearTimeout(timeoutId)\n }, [])\n\n return <>{children({ now: currentTime })}</>\n}\n","export interface DateComponents {\n hours: number\n minutes: number\n seconds: number\n milliseconds: number\n day: number\n month: number\n year: number\n}\n\nfunction dateComponents(date: Date): DateComponents {\n return {\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n day: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n }\n}\n\nexport function dateFormat(date: Date, format: string) {\n const placeholders: Record<string, string> = {\n YYYY: date.getFullYear().toString(),\n MM: (date.getMonth() + 1).toString().padStart(2, \"0\"),\n DD: date.getDate().toString().padStart(2, \"0\"),\n HH: date.getHours().toString().padStart(2, \"0\"),\n mm: date.getMinutes().toString().padStart(2, \"0\"),\n ss: date.getSeconds().toString().padStart(2, \"0\"),\n hh: (date.getHours() % 12 || 12).toString().padStart(2, \"0\"),\n A: date.getHours() >= 12 ? \"PM\" : \"AM\",\n }\n\n // Replace placeholders in the format string\n let formattedDate = format\n for (const [key, value] of Object.entries(placeholders)) {\n formattedDate = formattedDate.replace(key, value)\n }\n\n return formattedDate\n}\n","import React, { useRef } from \"react\"\nimport \"../style/typo.css\"\nimport {\n TimeAnimation,\n TimeAnimationPropsChildrenProps,\n} from \"./private/TimeAnimation\"\nimport { dateFormat } from \"../date-utils\"\n\nexport interface Ui89DigitalClockProps {\n format?: string // Custom format string\n}\n\nexport function Ui89DigitalClock({\n format = \"HH:mm:ss\",\n}: Ui89DigitalClockProps) {\n function render({ now }: TimeAnimationPropsChildrenProps) {\n return dateFormat(now, format)\n }\n\n return (\n <span className=\"ui89-typo-special\">\n <TimeAnimation>{render}</TimeAnimation>\n </span>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/chosen-theme.css\"\n\nimport \"./Ui89HighlightText.css\"\n\nexport interface Ui89HighlightTextProps {\n theme: Ui89Theme | keyof typeof Ui89Theme\n block?: boolean\n children: React.ReactNode\n}\n\nexport function Ui89HighlightText({\n theme,\n block,\n children,\n}: Ui89HighlightTextProps) {\n return (\n <span\n className={`ui89-highlight-text ui89-chosen-theme-${theme} ${block ? \"ui89-highlight-text--block\" : null}`}\n >\n {children}\n </span>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89Hr.css\"\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/chosen-theme.css\"\n\nexport enum Ui89HrPropsLook {\n straight = \"straight\",\n dotted = \"dotted\",\n dashed = \"dashed\",\n double = \"double\",\n}\n\nexport interface Ui89HrProps {\n look?: Ui89HrPropsLook | keyof typeof Ui89HrPropsLook\n theme?: Ui89Theme | keyof typeof Ui89Theme\n}\n\nexport function Ui89Hr({ look = \"straight\", theme }: Ui89HrProps) {\n return (\n <div\n className={`ui-89-hr ${`ui-89-hr--${look}`} ${theme !== undefined ? \"ui-89-hr--use-theme\" : \"\"} ${theme !== undefined ? `ui89-chosen-theme-${theme}` : \"\"}`}\n >\n <div className=\"ui-89-hr__double\"></div>\n </div>\n )\n}\n","import React, { useRef } from \"react\"\n\nimport \"./Ui89InputFileUpload.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\nimport { Ui89Button } from \"./Ui89Button\"\n\nexport interface Ui89InputFileUploadProps {\n value?: any\n onChange?: (value: File | null) => void\n}\n\nexport function Ui89InputFileUpload({\n value,\n onChange,\n}: Ui89InputFileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n\n function implOnChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (!onChange) {\n return\n }\n\n if (e.target.files === null) {\n onChange(null)\n return\n }\n\n if (e.target.files.length === 0) {\n onChange(null)\n return\n }\n\n onChange(e.target.files[0])\n }\n\n function onClick() {\n if (inputRef.current === null) {\n return\n }\n\n inputRef.current.click()\n }\n\n return (\n <div>\n <input\n ref={inputRef}\n className=\"ui89-typo-special\"\n type=\"file\"\n onChange={implOnChange}\n hidden\n />\n\n {value ? (\n <div className=\"ui89-input-file-upload\">\n <Ui89Button onClick={onClick}>Change</Ui89Button>\n <span\n className={`ui89-input-file-upload__info ui89-text-single-line ui89-text-single-line--ellipsis-left`}\n title={value.name}\n >\n {value.name}\n </span>\n </div>\n ) : (\n <Ui89Button onClick={onClick}>Upload</Ui89Button>\n )}\n </div>\n )\n}\n","import React, { useMemo, useState } from \"react\"\n\nimport \"./Ui89InputSelect.css\"\nimport \"../style/input-box.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89InputSelectProps<T> {\n /**\n * Available options.\n */\n options?: T[]\n\n /**\n * The selected option.\n */\n value?: T\n\n /**\n * Called whenever an option is selected.\n */\n onChange?: (option: T) => void\n\n /**\n * Retrieves the value that uniquely identifies the option. This is what is\n * used to determine which option is currently selected.\n */\n getOptionKey?: (option: T) => any\n\n /**\n * Customize how an option should be rendered.\n */\n renderOption?: (option: T) => any\n}\n\n/**\n * This is a very performant and customizable dropdown selector that\n * allows you to choose from a list of options.\n */\nexport function Ui89InputSelect<T>(props: Ui89InputSelectProps<T>) {\n const getOptionKey = useMemo(() => {\n return props.getOptionKey ?? ((option: any) => option)\n }, [props.getOptionKey])\n\n const options = useMemo(() => {\n if (props.options === undefined) {\n return []\n }\n\n return props.options\n }, [props.options])\n\n const optionsMap = useMemo(() => {\n return new Map(options.map((option) => [getOptionKey(option), option]))\n }, [options])\n\n function isOptionSelected(option: T) {\n if (props.value === undefined) {\n // Definitely not selected.\n return false\n }\n\n return getOptionKey(option) === getOptionKey(props.value)\n }\n\n function selectOption(option: T) {\n if (props.onChange !== undefined) {\n props.onChange(option)\n }\n\n if (document.activeElement !== null) {\n // @ts-expect-error\n document.activeElement.blur()\n }\n }\n\n function optionTitle(option: T) {\n return String(option)\n }\n\n return (\n <div className=\"ui89-input-select\">\n <div\n className={[\n \"ui89-input-box\",\n \"ui89-input-box--unselectable\",\n \"ui89-input-box--clickable\",\n \"ui89-text-single-line\",\n ].join(\" \")}\n tabIndex={0}\n title={props.value !== undefined ? optionTitle(props.value) : undefined}\n >\n {props.value !== undefined ? (\n <>\n {props.renderOption !== undefined\n ? props.renderOption(props.value)\n : props.value}\n </>\n ) : (\n <>Select...</>\n )}\n </div>\n\n <div className=\"ui89-input-select__menu\" tabIndex={0}>\n <div className=\"ui89-input-select__menu__content\">\n {options.length > 0 ? (\n options.map((o) => {\n const isSelected = isOptionSelected(o)\n\n return (\n <div\n className={[\n \"ui89-input-select__menu__item\",\n isSelected\n ? \"ui89-input-select__menu__item--selected\"\n : null,\n ].join(\" \")}\n title={optionTitle(o)}\n key={getOptionKey(o)}\n onClick={() => selectOption(o)}\n >\n {props.renderOption !== undefined ? props.renderOption(o) : o}\n </div>\n )\n })\n ) : (\n <div\n className={[\n \"ui89-input-select__menu__item\",\n \"ui89-input-select__menu__item--disabled\",\n ].join(\" \")}\n >\n &lt;empty&gt;\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import Timeout from \"smart-timeout\"\n\nlet uniqueId = 0\n\nexport function throttledTimeout() {\n const id = String(uniqueId++)\n let callback: () => void\n\n return {\n call(delay: number, f: () => void) {\n callback = f\n\n if (Timeout.pending(id)) {\n Timeout.restart(id)\n } else {\n Timeout.set(id, () => callback(), delay)\n }\n },\n\n /**\n * If there is a call that has been scheduled, remove it from the queue.\n */\n abort() {\n Timeout.clear(id, true)\n },\n }\n}\n\nexport function spacedTimeout() {\n const id = String(uniqueId++)\n let callback: () => void\n\n return {\n call(delay: number, f: () => void) {\n callback = f\n\n if (!Timeout.pending(id)) {\n Timeout.set(id, () => callback(), delay)\n }\n },\n }\n}\n","import { useEffect, useRef, useState } from \"react\"\nimport { throttledTimeout } from \"./timeout\"\n\ninterface UseDelayedOnChangeState {\n value: any\n setValue: (newVal: any) => void\n onChange: (newVal: any) => void\n onFocus: () => void\n onBlur: () => void\n}\n\nexport function useDelayedOnChange(props: {\n defaultValue?: any\n value: any\n onChange?: (value: any) => void\n filter?: (value: any) => any\n}): UseDelayedOnChangeState {\n const onChangeRef = useRef(props.onChange)\n\n useEffect(() => {\n onChangeRef.current = props.onChange\n }, [props.onChange])\n\n const [intermediateValue, setIntermediateValue] = useState<any>(\n props.defaultValue || props.value,\n )\n\n useEffect(() => {\n stateRef.current.setValue(props.value)\n }, [props.value])\n\n function callOnChange() {\n let newVal = stateRef.current.value\n\n if (props.filter !== undefined) {\n newVal = props.filter(newVal)\n }\n\n onChangeRef.current?.call(null, newVal)\n return newVal\n }\n\n class StateUnknown implements UseDelayedOnChangeState {\n state = \"unknown\"\n\n value: any\n\n throttledTimeout: any\n\n constructor() {\n this.throttledTimeout = throttledTimeout()\n }\n\n setValue(newVal: any) {\n setIntermediateValue(newVal)\n }\n\n onChange(newVal: any) {\n setIntermediateValue(newVal)\n stateRef.current.throttledTimeout.call(300, callOnChange)\n }\n\n onFocus() {\n let newState = new StateFocus()\n newState.value = stateRef.current.value\n setState(newState)\n }\n\n onBlur() {}\n }\n\n class StateFocus implements UseDelayedOnChangeState {\n state = \"focus\"\n\n value: any\n\n throttledTimeout: any\n\n constructor() {\n this.throttledTimeout = throttledTimeout()\n }\n\n setValue(newVal: any) {\n // Ignore.\n }\n\n onChange(newVal: any) {\n setIntermediateValue(newVal)\n stateRef.current.throttledTimeout.call(300, callOnChange)\n }\n\n onFocus() {}\n\n onBlur() {\n let newVal = callOnChange()\n setIntermediateValue(newVal)\n let newState = new StateUnknown()\n newState.value = newVal\n setState(newState)\n }\n }\n\n const [state, setState] = useState<UseDelayedOnChangeState>(() => {\n let newState = new StateUnknown()\n newState.value = intermediateValue\n return newState\n })\n\n const stateRef = useRef(state)\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n stateRef.current.value = intermediateValue\n\n return state\n}\n","import React, { useMemo } from \"react\"\nimport { useState, useEffect, useRef } from \"react\"\nimport { throttledTimeout } from \"../timeout\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\nimport { useDelayedOnChange } from \"../useDelayedOnChange\"\n\nconst THROTTLE_DELAY = 200\n\nexport interface Ui89InputTextProps {\n value?: any\n placeholder?: string\n autoTrim?: boolean\n onChange?: (value: any) => void\n onTyping?: (value: boolean) => void\n onFocus?: () => void\n onBlur?: () => void\n}\n\nfunction convertAnyToText(value: any) {\n return value ?? \"\"\n}\n\nexport function Ui89InputText({\n value,\n placeholder,\n autoTrim = true,\n onChange,\n onTyping,\n onFocus,\n onBlur,\n}: Ui89InputTextProps) {\n const delayedState = useDelayedOnChange({\n defaultValue: \"\",\n value,\n onChange,\n filter(value: any) {\n if (autoTrim) {\n if (typeof value === \"string\") {\n value = value.replace(/\\s+/g, \" \").trim()\n }\n }\n\n return value\n },\n })\n\n return (\n <div>\n <input\n className={`ui89-input-box ui89-typo-special`}\n type=\"text\"\n value={delayedState.value}\n onChange={(e) => delayedState.onChange(e.target.value)}\n onBlur={delayedState.onBlur}\n onFocus={delayedState.onFocus}\n placeholder={placeholder}\n />\n </div>\n )\n}\n","export function stringRemoveAllWhitespace(str: string): string {\n return str.replace(/\\s+/g, \"\")\n}\n","import React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { Ui89InputText } from \"./Ui89InputText\"\nimport { stringRemoveAllWhitespace } from \"../text-utils\"\n\nexport interface Ui89InputTextNumberProps {\n emptyValue?: any\n value?: any\n min?: number\n max?: number\n onChange?: (value: any) => void\n precision?: number\n}\n\nexport function isTextNumber(text: string): boolean {\n return /\\b\\d+(\\.\\d+)?\\b/.test(text)\n}\n\nfunction displayText(value: any, emptyValue: any) {\n if (value === undefined) {\n // No idea how to display this.\n return \"\"\n } else if (value === emptyValue) {\n // Display emptiness.\n return \"\"\n } else if (isNaN(value)) {\n // No idea what to display.\n return \"\"\n }\n\n return value.toString()\n}\n\nexport function Ui89InputTextNumber({\n /**\n * The value that is emitted when the input is emptied.\n */\n emptyValue = null,\n value,\n min,\n max,\n onChange,\n precision,\n}: Ui89InputTextNumberProps) {\n const [isTyping, setIsTyping] = useState(false)\n const [intermediateValue, setIntermediateValue] = useState(\n displayText(value, emptyValue),\n )\n\n function implOnChange(value: string) {\n if (onChange === undefined) {\n return\n }\n\n if (value === \"\") {\n // Use empty value.\n onChange(emptyValue)\n return\n }\n\n value = stringRemoveAllWhitespace(value)\n\n if (!isTextNumber(value)) {\n // We end here.\n return\n }\n\n const numberValue = Number(value)\n\n if (min !== undefined) {\n if (numberValue <= min) {\n value = String(min)\n }\n }\n\n if (max !== undefined) {\n if (numberValue >= max) {\n value = String(max)\n }\n }\n\n onChange(value)\n }\n\n useEffect(() => {\n if (!isTyping) {\n setIntermediateValue(displayText(value, emptyValue))\n }\n }, [isTyping, value])\n\n return (\n <Ui89InputText\n value={intermediateValue}\n onChange={implOnChange}\n onTyping={setIsTyping}\n />\n )\n}\n","import React from \"react\"\nimport { useMemo } from \"react\"\n\nimport { Ui89InputTextNumber } from \"./Ui89InputTextNumber\"\n\nexport interface Ui89InputNumberProps {\n emptyValue?: any\n value?: any\n min?: number\n max?: number\n onChange?: (value: any) => void\n precision?: number\n}\n\nexport function Ui89InputNumber(props: Ui89InputNumberProps) {\n const wrappedValue = useMemo(() => {\n if (props.value !== undefined && props.value !== null) {\n return Number(props.value)\n } else {\n return undefined\n }\n }, [props.value])\n\n function wrappedOnChange(value: any) {\n if (props.onChange === undefined) {\n return\n }\n\n if (value === props.emptyValue) {\n // Pass along.\n props.onChange(value)\n } else {\n if (value !== undefined && value !== null) {\n props.onChange(Number(value))\n } else {\n props.onChange(null)\n }\n }\n }\n\n return (\n <Ui89InputTextNumber\n emptyValue={props.emptyValue}\n value={wrappedValue}\n onChange={wrappedOnChange}\n min={props.min}\n max={props.max}\n precision={props.precision}\n />\n )\n}\n","import React from \"react\"\nimport { useState } from \"react\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89InputPasswordProps {\n value?: any\n placeholder?: string\n onChange?: (value: any) => void\n}\n\nexport function Ui89InputPassword({\n value,\n placeholder,\n onChange,\n}: Ui89InputPasswordProps) {\n const [intermediateValue, setIntermediateValue] = useState(value ?? \"\")\n\n const implOnChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n const newValue = e.target.value\n\n setIntermediateValue(newValue)\n\n if (onChange) {\n onChange(newValue)\n }\n }\n\n return (\n <div>\n <input\n type=\"password\"\n className={`ui89-input-box ui89-typo-special`}\n role=\"textbox\"\n value={intermediateValue}\n onChange={implOnChange}\n placeholder={placeholder}\n />\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"../style/reset.css\"\nimport \"./Ui89LinkUnderline.css\"\n\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport interface Ui89LinkUnderlineProps {\n onClick?: () => void | Promise<void>\n href?: string\n children: React.ReactNode\n autoDisableOnClick?: boolean\n disabled?: boolean\n}\n\nexport function Ui89LinkUnderline(props: Ui89LinkUnderlineProps) {\n const overrides = useUi89Overrides()\n const [clicking, setClicking] = useState(false)\n\n let localDisabled =\n props.disabled || ((props.autoDisableOnClick ?? true) && clicking)\n\n async function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n try {\n setClicking(true)\n\n if (props.onClick !== undefined) {\n // A function takes over control.\n e.preventDefault()\n await props.onClick()\n } else if (props.href !== undefined) {\n if (props.href.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(props.href)\n }\n }\n } else {\n // Do nothing.\n e.preventDefault()\n }\n } finally {\n setClicking(false)\n }\n }\n\n let containerClass = [\"ui89-link-underline\"].join(\" \")\n\n return (\n <a\n className={`ui-89-reset-a ${containerClass}`}\n role=\"link\"\n href={props.href}\n onClick={onClick}\n >\n {props.children}\n </a>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89MenuBar.css\"\nimport \"../style/typo.css\"\nimport \"../style/scrollbar.css\"\n\nexport interface Ui89MenuBarPropsItem {\n label: React.ReactNode\n onClick?: () => void\n children?: Ui89MenuBarPropsItem[]\n}\n\nexport interface Ui89MenuBarProps {\n items: Ui89MenuBarPropsItem[]\n}\n\nexport function Ui89MenuBar({ items }: Ui89MenuBarProps) {\n return (\n <div className={`ui89-menu-bar ui89-typo-special ui89-scrollbar`}>\n {items.map((item, index) => {\n function onNativeClick() {\n if (item.onClick !== undefined) {\n item.onClick()\n }\n }\n\n return (\n <div\n key={index}\n className=\"ui89-menu-bar__item\"\n onClick={onNativeClick}\n >\n {item.label}\n </div>\n )\n })}\n </div>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Look } from \"../theme\"\n\nimport \"./Ui89Scene.css\"\nimport \"../style/look.css\"\nimport \"../style/typo.css\"\nimport \"../style/scrollbar.css\"\n\nexport interface Ui89SceneProps {\n look?: Ui89Look | string\n children: React.ReactNode\n}\n\nexport function Ui89Scene({ look = Ui89Look.main, children }: Ui89SceneProps) {\n return (\n <div\n className={`ui89-scene ui-89-look-${look} ui89-typo-normal ui89-scrollbar`}\n >\n {children}\n </div>\n )\n}\n","import React from \"react\"\nimport \"./GridExpandTrick.css\"\n\nexport default function GridExpandTrick({\n children,\n}: {\n children: React.ReactNode\n}) {\n return <span className=\"ui89-grid-expand-trick\">{children}</span>\n}\n","import React from \"react\"\nimport \"./ScrollContainer.css\"\n\nexport default function ScrollContainer({\n children,\n}: {\n children: React.ReactNode\n}) {\n return <span className=\"ui89-scroll-container\">{children}</span>\n}\n","import React, { useMemo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { Ui89Card } from \"./Ui89Card\"\nimport HoverShadow from \"./private/HoverShadow\"\nimport { Ui89Scene } from \"./Ui89Scene\"\nimport GridExpandTrick from \"./private/GridExpandTrick\"\nimport ScrollContainer from \"./private/ScrollContainer\"\n\nimport \"./Ui89ModalDialog.css\"\n\nexport interface Ui89ModalDialogProps {\n open: boolean\n size?: string\n children?: React.ReactNode\n topCenter?: React.ReactNode\n onRequestClose?: () => void\n}\n\nconst portalRoot: HTMLElement | null =\n typeof document !== \"undefined\" ? document.body : null\n\nexport function Ui89ModalDialog({\n open,\n size = \"medium\",\n children,\n topCenter,\n onRequestClose,\n}: Ui89ModalDialogProps) {\n const dialogClass = useMemo(() => {\n return [\"ui89-modal-dialog\", open ? \"ui89-modal-dialog--open\" : \"\"].join(\n \" \",\n )\n }, [size, open])\n\n const dialogBoxClass = useMemo(() => {\n return [\n \"ui89-modal-dialog__box\",\n `ui89-modal-dialog__box--size-${size}`,\n ].join(\" \")\n }, [size, open])\n\n function onClickBackdrop() {\n if (onRequestClose !== undefined) {\n onRequestClose()\n }\n }\n\n const vdom = (\n <div className={dialogClass} role=\"dialog\" style={{ zIndex: 1 }}>\n <div\n className=\"ui89-modal-dialog__backdrop\"\n role=\"presentation\"\n onClick={onClickBackdrop}\n ></div>\n\n <div className={dialogBoxClass}>\n <div className=\"ui89-modal-dialog__spacer\"></div>\n\n <HoverShadow>\n <GridExpandTrick>\n <Ui89Scene>\n <Ui89Card topCenter={topCenter}>\n <ScrollContainer>{children}</ScrollContainer>\n </Ui89Card>\n </Ui89Scene>\n </GridExpandTrick>\n </HoverShadow>\n </div>\n </div>\n )\n\n return portalRoot !== null ? createPortal(vdom, portalRoot) : vdom\n}\n","import React from \"react\"\n\nimport \"./Ui89NameValuePair.css\"\n\nexport interface Ui89NameValuePairProps {\n name: React.ReactNode\n value: React.ReactNode\n leftMaxWidth?: number\n}\n\nexport function Ui89NameValuePair({\n name,\n value,\n leftMaxWidth,\n}: Ui89NameValuePairProps) {\n return (\n <div className=\"ui-89-name-value-pair\">\n <div\n className=\"ui-89-name-value-pair__name-wrapper\"\n style={{ maxWidth: `${leftMaxWidth}px` }}\n >\n <div className=\"ui-89-name-value-pair__name\">{name}</div>\n <div className=\"ui-89-name-value-pair__dots\"></div>\n </div>\n <div className=\"ui-89-name-value-pair__value\">{value}</div>\n </div>\n )\n}\n","import * as React from \"react\";\nconst SvgShortcut = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 100, height: 100, viewBox: \"0 0 100 100\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 0, y: 0, width: 100, height: 100, fill: \"white\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 80, y1: 80, x2: 20, y2: 20, stroke: \"black\", strokeWidth: 15 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 20, y1: 20, x2: 50, y2: 20, stroke: \"black\", strokeWidth: 15, strokeLinecap: \"round\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 20, y1: 20, x2: 20, y2: 50, stroke: \"black\", strokeWidth: 15, strokeLinecap: \"round\" }));\nexport default SvgShortcut;\n","import React from \"react\"\n\nexport interface Ui89SpaceVerticalProps {\n gap?: number\n}\n\nexport function Ui89SpaceVertical({ gap = 1 }: Ui89SpaceVerticalProps) {\n const style = {\n paddingTop: `calc(var(--ui89-safe-space) * ${gap})`,\n }\n\n return <div style={style}></div>\n}\n","import React from \"react\"\n\nimport ShortcutSvg from \"../images/shortcut.svg\"\n\nimport \"./Ui89Shortcut.css\"\nimport \"../style/typo.css\"\n\nimport { Ui89SpaceVertical } from \"./Ui89SpaceVertical\"\n\nexport interface Ui89ShortcutProps {\n imageUrl: string\n label: React.ReactNode\n onClick?: () => void\n}\n\nexport function Ui89Shortcut({\n imageUrl,\n label,\n onClick = () => {},\n}: Ui89ShortcutProps) {\n function onNativeClick() {\n onClick()\n }\n\n return (\n <div className=\"ui89-shortcut\" onClick={onNativeClick}>\n <div className=\"ui89-shortcut__image-container\">\n <img className=\"ui89-shortcut__image\" src={imageUrl} />\n\n <div className=\"ui89-shortcut__shortcut-icon-container\">\n <ShortcutSvg\n className=\"ui89-shortcut__shortcut-icon\"\n width={16}\n height={16}\n />\n </div>\n </div>\n\n <Ui89SpaceVertical gap={1} />\n\n <div\n className={`ui89-shortcut__label ui89-typo-small-bold`}\n onClick={onNativeClick}\n >\n {label}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport interface Ui89SpacePaddingProps {\n gap?: number\n gapVertical?: number\n gapHorizontal?: number\n gapTop?: number\n gapRight?: number\n gapBottom?: number\n gapLeft?: number\n children?: React.ReactNode\n}\n\nexport function Ui89SpacePadding(props: Ui89SpacePaddingProps) {\n const gap = props.gap ?? 1\n\n const style = {\n paddingTop: `calc(var(--ui89-safe-space) * ${props.gapTop ?? props.gapVertical ?? gap})`,\n paddingRight: `calc(var(--ui89-safe-space) * ${props.gapRight ?? props.gapHorizontal ?? gap})`,\n paddingBottom: `calc(var(--ui89-safe-space) * ${props.gapBottom ?? props.gapVertical ?? gap})`,\n paddingLeft: `calc(var(--ui89-safe-space) * ${props.gapLeft ?? props.gapHorizontal ?? gap})`,\n }\n\n return <div style={style}>{props.children}</div>\n}\n","import React from \"react\"\n\nimport \"./Ui89Tabs.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89TabsPropsOption {\n value: string | number\n label: React.ReactNode\n}\n\nexport interface Ui89TabsProps {\n selected?: any\n onChange?: (value: string | number) => void\n options?: Ui89TabsPropsOption[]\n\n /**\n * Stretch options such that they evenly take up the entire width.\n */\n stretch?: boolean\n}\n\nexport function Ui89Tabs({\n selected,\n onChange = () => {},\n options = [],\n stretch,\n}: Ui89TabsProps) {\n function handleOnChange(value: string | number) {\n onChange(value)\n }\n\n return (\n <div\n className={[\"ui89-tabs\", stretch ? \"ui89-tabs--stretch\" : \"\"].join(\" \")}\n >\n {options.map((option) => (\n <div\n className={[\n \"ui89-tabs__item\",\n \"ui89-typo-small-bold\",\n selected === option.value ? \"ui89-tabs__item--selected\" : \"\",\n ].join(\" \")}\n key={option.value}\n onClick={() => handleOnChange(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )\n}\n","import { Ui89Card } from \"./Ui89Card\"\nimport { Ui89Tabs } from \"./Ui89Tabs\"\nimport React, { useCallback, useMemo } from \"react\"\n\nexport interface Ui89TabbedCardProps {\n selected?: any\n onChange?: (value: string | number) => void\n options?: Ui89TabbedCardPropsOption[]\n}\n\nexport interface Ui89TabbedCardPropsOption {\n value: string | number\n label: React.ReactNode\n render: () => React.JSX.Element\n}\n\nexport function Ui89TabbedCard({\n selected,\n onChange,\n options = [],\n}: Ui89TabbedCardProps) {\n const selectedItem = useMemo<Ui89TabbedCardPropsOption | null>(() => {\n return options.find((item) => item.value === selected) ?? null\n }, [selected, options])\n\n const render = useMemo(() => {\n return selectedItem !== null ? selectedItem.render : () => <></>\n }, [selectedItem])\n\n const renderKey = useMemo(() => {\n return selectedItem !== null ? selectedItem.value : undefined\n }, [selectedItem])\n\n return (\n <Ui89Card\n topCenter={\n <Ui89Tabs selected={selected} options={options} onChange={onChange} />\n }\n >\n <React.Fragment key={renderKey}>{render()}</React.Fragment>\n </Ui89Card>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\n\nimport \"./Ui89TagBox.css\"\n\nexport interface Ui89TagBoxProps {\n theme: Ui89Theme | keyof typeof Ui89Theme\n children: React.ReactNode\n}\n\nexport function Ui89TagBox({ theme, children }: Ui89TagBoxProps) {\n return (\n <div\n className={`ui89-tag-box ui89-typo-special ui89-chosen-theme-${theme}`}\n >\n {children}\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89ThemeBackground.css\"\nimport \"../style/chosen-theme.css\"\n\nimport { Ui89Theme } from \"../theme\"\n\nexport interface Ui89ThemeBackgroundProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n children: React.ReactNode\n}\n\nexport function Ui89ThemeBackground({\n theme = Ui89Theme.primary,\n children,\n}: Ui89ThemeBackgroundProps) {\n return (\n <div className={`ui89-theme-background ui89-chosen-theme-${theme}`}>\n {children}\n </div>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89TitleBox.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89TitleBoxProps {\n children: React.ReactNode\n}\n\nexport function Ui89TitleBox({ children }: Ui89TitleBoxProps) {\n return (\n <div className={`ui89-title-box ui89-typo-special`}>\n <div className={`ui89-title-box__inside ui89-text-single-line`}>\n {children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89TitleUnderline.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89TitleUnderlineProps {\n children: React.ReactNode\n}\n\nexport function Ui89TitleUnderline({ children }: Ui89TitleUnderlineProps) {\n return (\n <div className={`ui89-title-underline ui89-typo-special`}>\n <div className={`ui89-title-underline__inside ui89-text-single-line`}>\n {children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport { ToastContainer, toast } from \"react-toastify\"\n\nimport \"./Ui89Toaster.css\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\nimport { Ui89Theme } from \"../theme\"\n\nexport interface Ui89ToasterOptions {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n autoClose?: boolean\n duration?: number\n}\n\nexport function useUi89Toaster() {\n return {\n toast(\n content: React.ReactNode,\n options: Ui89ToasterOptions = { theme: Ui89Theme.primary },\n ) {\n const classNames = [\"ui89-toaster\", \"ui89-typo-normal\"]\n\n if (options.theme !== undefined) {\n classNames.push(`ui89-chosen-theme-${options.theme}`)\n }\n\n let autoClose: boolean | number = 5000\n\n if (options.duration !== undefined) {\n autoClose = options.duration\n }\n\n if (options.autoClose !== undefined) {\n if (!options.autoClose) {\n autoClose = false\n }\n }\n\n return toast(() => content, {\n className: classNames.join(\" \"),\n type: \"default\",\n autoClose,\n closeButton: false,\n hideProgressBar: true,\n closeOnClick: true,\n })\n },\n }\n}\n\nexport function Ui89Toaster() {\n return <ToastContainer />\n}\n","import { useState, useEffect, useRef } from \"react\"\n\ntype Size = { width: number; height: number }\n\ninterface UseResizeObserverResult {\n size: Size\n}\n\nexport const useResizeObserver = <T extends HTMLElement>(\n ref: React.RefObject<T>,\n): UseResizeObserverResult => {\n const [size, setSize] = useState<Size>({ width: 0, height: 0 })\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n for (let entry of entries) {\n setSize({\n width:\n entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width,\n height:\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height,\n })\n }\n })\n\n if (ref.current) {\n observer.observe(ref.current)\n }\n\n return () => {\n observer.disconnect()\n }\n }, [ref.current])\n\n return {\n size,\n }\n}\n","import { useState, useEffect, useRef, RefObject } from \"react\"\n\nexport const useScrollYPosition = (ref: RefObject<HTMLElement>): number => {\n const [scrollY, setScrollY] = useState(0)\n const ticking = useRef(false)\n const observer = useRef<MutationObserver | null>(null)\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const handleScroll = () => {\n if (!ticking.current) {\n requestAnimationFrame(() => {\n setScrollY(element.scrollTop)\n ticking.current = false\n })\n ticking.current = true\n }\n }\n\n element.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n observer.current = new MutationObserver(() => {\n if (ref.current !== element) {\n element.removeEventListener(\"scroll\", handleScroll)\n ref.current?.addEventListener(\"scroll\", handleScroll, { passive: true })\n }\n })\n\n observer.current.observe(document.body, { childList: true, subtree: true })\n\n return () => {\n element.removeEventListener(\"scroll\", handleScroll)\n observer.current?.disconnect()\n }\n }, [ref])\n\n return scrollY\n}\n","import React, { useState, useEffect, useRef, useMemo } from \"react\"\n\nimport \"./VirtualList.css\"\nimport { useResizeObserver } from \"../../useResizeObserver\"\nimport { useScrollYPosition } from \"../../useScrollYPosition\"\n\nexport interface VirtualListPropsRenderRowProps<T> {\n index: number\n row: T\n}\n\nexport interface VirtualListProps<T> {\n rows: T[]\n rowHeight?: number\n renderRow: (props: VirtualListPropsRenderRowProps<T>) => React.ReactNode\n getRowKey?: (row: T) => string\n}\n\ninterface VisibleRow {\n index: number\n key: string\n render: React.ReactNode\n style: React.CSSProperties\n}\n\n/**\n * Virtualization at row level. Great for long lists and tables with few\n * columns.\n */\nexport const VirtualList = React.memo(<T,>(props: VirtualListProps<T>) => {\n const scrollContainer = useRef<HTMLDivElement>(null)\n const scrollAreaContainer = useRef<HTMLDivElement>(null)\n\n const { size } = useResizeObserver(scrollContainer)\n const scrollY = useScrollYPosition(scrollContainer)\n\n const rowHeight = props.rowHeight ?? 50\n\n const totalHeight = rowHeight * props.rows.length\n\n const [visibleRows, setVisibleRows] = useState<Map<string, VisibleRow>>(\n new Map(),\n )\n\n useEffect(() => {\n if (size.height === 0) {\n setVisibleRows(new Map())\n return\n }\n\n const firstIndex = Math.max(0, Math.floor(scrollY / rowHeight) - 1)\n const length = Math.min(\n props.rows.length - firstIndex,\n Math.ceil(size.height / rowHeight) + 2,\n )\n\n const newVisibleRows = new Map<string, VisibleRow>()\n\n for (let index = firstIndex; index < firstIndex + length; index++) {\n let row = props.rows[index]\n let key = props.getRowKey ? props.getRowKey(row) : String(index)\n\n if (visibleRows.has(key)) {\n newVisibleRows.set(key, visibleRows.get(key)!)\n } else {\n newVisibleRows.set(key, {\n index,\n key,\n render: props.renderRow({ index, row }),\n style: {\n transform: `translateY(${index * rowHeight}px)`,\n height: `${rowHeight}px`,\n },\n })\n }\n }\n\n setVisibleRows(newVisibleRows)\n }, [props.rows, scrollY, size.height])\n\n const orderedVisibleRows = useMemo(() => {\n return Array.from(visibleRows.values()).sort((a, b) => a.index - b.index)\n }, [visibleRows])\n\n return (\n <div ref={scrollContainer} className=\"ui89-virtual-list\">\n <div\n ref={scrollAreaContainer}\n className=\"ui89-virtual-list__scroll-area\"\n style={{ height: `${totalHeight}px` }}\n >\n {orderedVisibleRows.map((visibleRow) => (\n <div\n key={visibleRow.key}\n className=\"ui89-virtual-list__row\"\n style={visibleRow.style}\n >\n {visibleRow.render}\n </div>\n ))}\n </div>\n </div>\n )\n})\n","import React, { forwardRef, useCallback, useMemo } from \"react\"\nimport \"./Ui89VirtualTable.css\"\nimport \"../style/typo.css\"\nimport { Ui89TagBox } from \"./Ui89TagBox\"\nimport {\n VirtualList,\n VirtualListPropsRenderRowProps,\n} from \"./private/VirtualList\"\n\nexport enum Ui89VirtualTablePropsColumnAlign {\n left = \"left\",\n right = \"right\",\n center = \"center\",\n}\n\nexport interface Ui89VirtualTablePropsColumnRenderHeaderParams<T> {\n index: number\n column: Ui89VirtualTablePropsColumn<T>\n}\n\nexport interface Ui89VirtualTablePropsColumnRenderBodyParams<T> {\n index: number\n row: T\n}\n\nexport interface Ui89VirtualTablePropsColumn<T> {\n width?: number\n halign?: keyof typeof Ui89VirtualTablePropsColumnAlign\n renderHeader?: (\n props: Ui89VirtualTablePropsColumnRenderHeaderParams<T>,\n ) => React.ReactNode\n renderBody: (\n props: Ui89VirtualTablePropsColumnRenderBodyParams<T>,\n ) => React.ReactNode\n}\n\nexport interface Ui89VirtualTableProps<T> {\n rows?: T[]\n columns?: Ui89VirtualTablePropsColumn<T>[]\n rowHeight?: number\n}\n\nexport const Ui89VirtualTable = React.memo(\n <T,>(props: Ui89VirtualTableProps<T>) => {\n const rows = useMemo<(T | undefined)[]>(() => {\n let rows: any[] = props.rows !== undefined ? props.rows.slice() : []\n\n rows.unshift(undefined)\n\n return rows\n }, [props.rows])\n\n const columns = useMemo(() => {\n return props.columns !== undefined ? props.columns : []\n }, [props.columns])\n\n const rowHeight = props.rowHeight ?? 20\n\n function getColumnWidth(index: number): number {\n return columns[index].width ?? 100\n }\n\n function getColumnHorizontalOffset(columnIndex: number) {\n let offset = 0\n\n for (let i = 0; i < columnIndex; i++) {\n offset += getColumnWidth(i)\n }\n\n return offset\n }\n\n function isLastColumn(columnIndex: number): boolean {\n return columnIndex === columns.length - 1\n }\n\n function getRowClass(rowIndex: number): string {\n const classes = [\"ui89-virtual-table__row\"]\n\n if (rowIndex === 0) {\n classes.push(\"ui89-virtual-table__row--first\")\n classes.push(\"ui89-typo-normal-bold\")\n }\n\n if (rowIndex === rows.length) {\n classes.push(\"ui89-virtual-table__row--last\")\n }\n\n return classes.join(\" \")\n }\n\n function getColumnClass(columnIndex: number): string {\n const halign = columns[columnIndex].halign ?? \"left\"\n\n const classes = [\n \"ui89-virtual-table__cell\",\n `ui89-virtual-table__cell--halign-${halign}`,\n ]\n\n if (columnIndex === 0) {\n classes.push(\"ui89-virtual-table__cell--column-first\")\n }\n\n if (isLastColumn(columnIndex)) {\n classes.push(\"ui89-virtual-table__cell--column-last\")\n }\n\n return classes.join(\" \")\n }\n\n /**\n * The width of an entire row.\n */\n function rowWidth() {\n return getColumnHorizontalOffset(columns.length)\n }\n\n const renderRow = useCallback(\n ({ index, row }: VirtualListPropsRenderRowProps<T>) => {\n return (\n <div\n className={getRowClass(index)}\n style={{ minWidth: rowWidth() + \"px\", height: \"100%\" }}\n >\n {columns.map((column, columnIndex) => {\n return (\n <div\n key={columnIndex}\n className={getColumnClass(columnIndex)}\n style={{\n top: 0,\n height: \"100%\",\n width: getColumnWidth(columnIndex) + \"px\",\n left: getColumnHorizontalOffset(columnIndex) + \"px\",\n }}\n >\n {index === 0\n ? columns[columnIndex].renderHeader\n ? columns[columnIndex].renderHeader({\n index: columnIndex,\n column: column,\n })\n : \"\"\n : columns[columnIndex].renderBody({\n index: index,\n row: row,\n })}\n </div>\n )\n })}\n </div>\n )\n },\n [columns, rowHeight],\n )\n\n return (\n <div className=\"ui89-virtual-table\">\n {rows.length > 1 ? (\n <VirtualList\n rows={rows as T[]}\n rowHeight={rowHeight}\n renderRow={renderRow}\n />\n ) : (\n <div className=\"ui89-virtual-table__empty\">\n <Ui89TagBox theme=\"warning\">Empty</Ui89TagBox>\n </div>\n )}\n </div>\n )\n },\n)\n"],"names":["React","ShortcutSvg"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/theme.ts","../../src/Ui89Override.tsx","../../src/components/Ui89Breadcrumbs.tsx","../../src/components/private/HoverShadow.tsx","../../src/components/Ui89Button.tsx","../../src/components/Ui89Card.tsx","../../src/components/Ui89CardHorizontalConnection.tsx","../../src/components/Ui89DateTimePicker.tsx","../../src/components/private/TimeAnimation.tsx","../../src/date-utils.ts","../../src/components/Ui89DigitalClock.tsx","../../src/components/Ui89HighlightText.tsx","../../src/components/Ui89Hr.tsx","../../src/components/Ui89InputCheckBox.tsx","../../src/components/Ui89InputCheckText.tsx","../../src/components/Ui89InputFileUpload.tsx","../../src/components/Ui89InputSelect.tsx","../../src/timeout.ts","../../src/useDelayedOnChange.ts","../../src/components/Ui89InputText.tsx","../../src/text-utils.ts","../../src/components/Ui89InputTextNumber.tsx","../../src/components/Ui89InputNumber.tsx","../../src/components/Ui89InputPassword.tsx","../../src/components/Ui89LinkUnderline.tsx","../../src/components/Ui89MenuBar.tsx","../../src/components/Ui89Scene.tsx","../../src/components/private/GridExpandTrick.tsx","../../src/components/private/ScrollContainer.tsx","../../src/components/Ui89ModalDialog.tsx","../../src/components/Ui89NameValuePair.tsx","../../src/images/shortcut.svg","../../src/components/Ui89SpaceVertical.tsx","../../src/components/Ui89Shortcut.tsx","../../src/components/Ui89SpacePadding.tsx","../../src/components/Ui89Tabs.tsx","../../src/components/Ui89TabbedCard.tsx","../../src/components/Ui89TagBox.tsx","../../src/components/Ui89ThemeBackground.tsx","../../src/components/Ui89TitleBox.tsx","../../src/components/Ui89TitleUnderline.tsx","../../src/components/Ui89Toaster.tsx","../../src/useResizeObserver.ts","../../src/useScrollYPosition.ts","../../src/components/Ui89VirtualList.tsx","../../src/components/Ui89VirtualTable.tsx"],"sourcesContent":["export enum Ui89Theme {\n primary = \"primary\",\n secondary = \"secondary\",\n info = \"info\",\n success = \"success\",\n warning = \"warning\",\n danger = \"danger\",\n}\n\nexport enum Ui89Look {\n main = \"main\",\n side = \"side\",\n}\n","import React, { createContext, useContext, ReactNode } from \"react\"\n\ntype RouterPush = (url: string) => void | Promise<void>\n\ninterface Ui89OverrideContextType {\n routerPush?: RouterPush\n}\n\nexport interface Ui89OverrideProviderProps {\n children?: ReactNode\n routerPush?: RouterPush\n}\n\nconst Ui89OverrideContext = createContext<Ui89OverrideContextType>({})\n\nexport const Ui89OverrideProvider: React.FC<Ui89OverrideProviderProps> = ({\n routerPush,\n children,\n}) => {\n return (\n <Ui89OverrideContext.Provider value={{ routerPush }}>\n {children}\n </Ui89OverrideContext.Provider>\n )\n}\n\nexport const useUi89Overrides = (): Ui89OverrideContextType => {\n const context = useContext(Ui89OverrideContext)\n\n if (context === undefined) {\n throw new Error(\n \"useUi89Overrides must be used within a Ui89OverrideProvider\",\n )\n }\n\n return context\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89Breadcrumbs.css\"\nimport \"../style/typo.css\"\nimport \"../style/reset.css\"\nimport \"../style/chosen-theme.css\"\n\nimport { Ui89Theme } from \"../theme\"\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport type Ui89BreadcrumbsPropsOnSelect = (e: {\n item: Ui89BreadcrumbsPropsItem\n}) => void | Promise<void>\n\nexport interface Ui89BreadcrumbsPropsItem {\n label: React.ReactNode\n url?: string\n}\n\nexport interface Ui89BreadcrumbsProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n items: Ui89BreadcrumbsPropsItem[]\n onSelect?: Ui89BreadcrumbsPropsOnSelect\n}\n\nexport function Ui89BreadcrumbsItem({\n index,\n item,\n onSelect,\n}: {\n index: number\n item: Ui89BreadcrumbsPropsItem\n onSelect?: Ui89BreadcrumbsPropsOnSelect\n}) {\n const style = { \"--ui89-index\": index } as React.CSSProperties\n const tagname = item.url !== undefined ? \"a\" : \"div\"\n const overrides = useUi89Overrides()\n\n const onClick: React.MouseEventHandler<HTMLAnchorElement> = (e) => {\n if (item.url !== undefined) {\n if (item.url.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(item.url)\n }\n }\n }\n }\n\n return (\n <a\n className={`ui-89-reset-a ui89-breadcrumbs__item`}\n href={item.url}\n style={style}\n onClick={onClick}\n >\n <div className=\"ui89-breadcrumbs__item__background\"></div>\n {item.label}\n </a>\n )\n}\n\nexport function Ui89Breadcrumbs({\n theme = Ui89Theme.primary,\n items,\n onSelect,\n}: Ui89BreadcrumbsProps) {\n return (\n <div\n className={`ui89-breadcrumbs ui89-typo-special ui89-chosen-theme-${theme}`}\n >\n {[...items.entries()].reverse().map(([index, item]) => (\n <Ui89BreadcrumbsItem\n key={index}\n index={index}\n item={item}\n onSelect={onSelect}\n />\n ))}\n </div>\n )\n}\n","import React from \"react\"\nimport \"./HoverShadow.css\"\n\nexport default function HoverShadow({\n children,\n}: {\n children: React.ReactNode\n}) {\n return (\n <span className=\"ui89-hover-shadow\">\n <span className=\"ui89-hover-shadow__bottom\"></span>\n <span className=\"ui89-hover-shadow__right\"></span>\n {children}\n </span>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89Button.css\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\nimport \"../style/reset.css\"\n\nimport HoverShadow from \"./private/HoverShadow\"\n\nimport { Ui89Theme } from \"../theme\"\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport enum Ui89ButtonPropsSize {\n standard = \"standard\",\n square = \"square\",\n}\n\nexport interface Ui89ButtonProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n size?: Ui89ButtonPropsSize | keyof typeof Ui89ButtonPropsSize\n block?: boolean\n onClick?: () => void | Promise<void>\n href?: string\n children: React.ReactNode\n autoDisableOnClick?: boolean\n disabled?: boolean\n activated?: boolean\n}\n\nexport function Ui89Button({\n theme = Ui89Theme.primary,\n size = Ui89ButtonPropsSize.standard,\n block,\n onClick,\n href,\n children,\n autoDisableOnClick = true,\n disabled,\n activated,\n}: Ui89ButtonProps) {\n const overrides = useUi89Overrides()\n const [clicking, setClicking] = useState(false)\n\n let localDisabled = disabled || (autoDisableOnClick && clicking)\n\n async function onAnchorClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n if (clicking) {\n // No double clicking allowed.\n return\n }\n\n try {\n setClicking(true)\n\n if (href !== undefined) {\n if (href.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(href)\n }\n }\n }\n } finally {\n setClicking(false)\n }\n }\n\n async function onButtonClick(e: React.MouseEvent<HTMLButtonElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n if (clicking) {\n // No double clicking allowed.\n return\n }\n\n try {\n setClicking(true)\n\n if (onClick === undefined) {\n // No handler.\n return\n }\n\n await onClick()\n } finally {\n setClicking(false)\n }\n }\n\n let containerClass = [\"ui89-button\", `ui89-button--size-${size}`].join(\" \")\n\n let buttonClass = [\n \"ui89-button__button\",\n \"ui89-typo-special\",\n `ui89-chosen-theme-${theme}`,\n activated ? \"ui89-button__button--active\" : undefined,\n block ? \"ui89-button__button--block\" : undefined,\n disabled ? \"ui89-button__button--disabled\" : undefined,\n clicking ? \"ui89-button__button--active\" : undefined,\n ].join(\" \")\n\n if (href) {\n return (\n <span className={containerClass}>\n <span className=\"ui89-button__button__click\"></span>\n <HoverShadow>\n <a\n className={`ui-89-reset-a ${buttonClass}`}\n role=\"button\"\n href={href}\n onClick={onAnchorClick}\n >\n <span>{children}</span>\n </a>\n </HoverShadow>\n </span>\n )\n } else {\n return (\n <span className={containerClass}>\n <span className=\"ui89-button__button__click\"></span>\n <HoverShadow>\n <button\n className={buttonClass}\n type=\"button\"\n onClick={onButtonClick}\n disabled={localDisabled}\n >\n <span>{children}</span>\n </button>\n </HoverShadow>\n </span>\n )\n }\n}\n","import React from \"react\"\nimport \"./Ui89Card.css\"\n\nexport interface Ui89CardProps {\n topLeftCenter?: React.ReactNode\n topCenter?: React.ReactNode\n children: React.ReactNode\n}\n\nexport function Ui89Card({\n topLeftCenter,\n topCenter,\n children,\n}: Ui89CardProps) {\n const hasTopContent = topLeftCenter || topCenter\n\n return (\n <div className={`ui89-card ${hasTopContent ? \"ui89-card--has-top\" : \"\"}`}>\n <div className=\"ui89-card__inside\">\n {topLeftCenter && (\n <div className=\"ui89-card__top-left-center\">{topLeftCenter}</div>\n )}\n {topCenter && <div className=\"ui89-card__top-center\">{topCenter}</div>}\n\n {hasTopContent && <div className=\"space-vertical-1\"></div>}\n\n {children}\n\n {hasTopContent && <div className=\"space-vertical-1\"></div>}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport \"./Ui89Card.css\"\n\nexport interface Ui89CardHorizontalConnectionProps {\n children: React.ReactNode\n overflow?: boolean\n}\n\nexport function Ui89CardHorizontalConnection({\n children,\n overflow,\n}: Ui89CardHorizontalConnectionProps) {\n return (\n <div\n className={`ui89-card__horizontal-connection ${overflow ? \"ui89-card__horizontal-connection--overflow\" : \"\"}`}\n >\n {children}\n </div>\n )\n}\n","import React from \"react\"\nimport DatePicker from \"react-datepicker\"\n\nimport \"../../node_modules/react-datepicker/dist/react-datepicker.css\"\nimport \"./Ui89DateTimePicker.css\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89DateTimePickerProps {\n value?: Date | null\n onChange?: (value: Date | null) => void\n}\n\nexport function Ui89DateTimePicker(props: Ui89DateTimePickerProps) {\n function datepickerOnChange(value: Date | null) {\n if (props.onChange) {\n props.onChange(value)\n }\n }\n\n return (\n <span className=\"ui89-date-time-picker\">\n <DatePicker\n className={[\"ui89-input-box\", \"ui89-typo-normal\"].join(\" \")}\n calendarClassName=\"ui89-typo-normal\"\n showTimeSelect\n dateFormat=\"MM/dd/yyyy HH:mm:ss\"\n timeFormat=\"HH:mm\"\n selected={props.value}\n onChange={datepickerOnChange}\n popperPlacement=\"bottom-start\"\n />\n </span>\n )\n}\n","import React, { useState, useEffect } from \"react\"\n\nexport interface TimeAnimationPropsChildrenProps {\n now: Date\n}\n\nexport interface TimeAnimationProps {\n children: (props: TimeAnimationPropsChildrenProps) => React.ReactNode\n}\n\nexport const TimeAnimation: React.FC<TimeAnimationProps> = ({ children }) => {\n const [currentTime, setCurrentTime] = useState(new Date())\n\n useEffect(() => {\n const tick = () => {\n const now = new Date()\n setCurrentTime(now)\n\n // Calculate time until the next exact second\n const msUntilNextSecond = 1000 - now.getMilliseconds()\n setTimeout(tick, msUntilNextSecond)\n }\n\n // Start the first tick\n const msUntilNextSecond = 1000 - currentTime.getMilliseconds()\n const timeoutId = setTimeout(tick, msUntilNextSecond)\n\n return () => clearTimeout(timeoutId)\n }, [])\n\n return <>{children({ now: currentTime })}</>\n}\n","export interface DateComponents {\n hours: number\n minutes: number\n seconds: number\n milliseconds: number\n day: number\n month: number\n year: number\n}\n\nfunction dateComponents(date: Date): DateComponents {\n return {\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n day: date.getDate(),\n month: date.getMonth() + 1,\n year: date.getFullYear(),\n }\n}\n\nexport function dateFormat(date: Date, format: string) {\n const placeholders: Record<string, string> = {\n YYYY: date.getFullYear().toString(),\n MM: (date.getMonth() + 1).toString().padStart(2, \"0\"),\n DD: date.getDate().toString().padStart(2, \"0\"),\n HH: date.getHours().toString().padStart(2, \"0\"),\n mm: date.getMinutes().toString().padStart(2, \"0\"),\n ss: date.getSeconds().toString().padStart(2, \"0\"),\n hh: (date.getHours() % 12 || 12).toString().padStart(2, \"0\"),\n A: date.getHours() >= 12 ? \"PM\" : \"AM\",\n }\n\n // Replace placeholders in the format string\n let formattedDate = format\n for (const [key, value] of Object.entries(placeholders)) {\n formattedDate = formattedDate.replace(key, value)\n }\n\n return formattedDate\n}\n","import React, { useRef } from \"react\"\nimport \"../style/typo.css\"\nimport {\n TimeAnimation,\n TimeAnimationPropsChildrenProps,\n} from \"./private/TimeAnimation\"\nimport { dateFormat } from \"../date-utils\"\n\nexport interface Ui89DigitalClockProps {\n format?: string // Custom format string\n}\n\nexport function Ui89DigitalClock({\n format = \"HH:mm:ss\",\n}: Ui89DigitalClockProps) {\n function render({ now }: TimeAnimationPropsChildrenProps) {\n return dateFormat(now, format)\n }\n\n return (\n <span className=\"ui89-typo-special\">\n <TimeAnimation>{render}</TimeAnimation>\n </span>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/chosen-theme.css\"\n\nimport \"./Ui89HighlightText.css\"\n\nexport interface Ui89HighlightTextProps {\n theme: Ui89Theme | keyof typeof Ui89Theme\n block?: boolean\n children: React.ReactNode\n}\n\nexport function Ui89HighlightText({\n theme,\n block,\n children,\n}: Ui89HighlightTextProps) {\n return (\n <span\n className={`ui89-highlight-text ui89-chosen-theme-${theme} ${block ? \"ui89-highlight-text--block\" : null}`}\n >\n {children}\n </span>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89Hr.css\"\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/chosen-theme.css\"\n\nexport enum Ui89HrPropsLook {\n straight = \"straight\",\n dotted = \"dotted\",\n dashed = \"dashed\",\n double = \"double\",\n}\n\nexport interface Ui89HrProps {\n look?: Ui89HrPropsLook | keyof typeof Ui89HrPropsLook\n theme?: Ui89Theme | keyof typeof Ui89Theme\n}\n\nexport function Ui89Hr({ look = \"straight\", theme }: Ui89HrProps) {\n return (\n <div\n className={`ui-89-hr ${`ui-89-hr--${look}`} ${theme !== undefined ? \"ui-89-hr--use-theme\" : \"\"} ${theme !== undefined ? `ui89-chosen-theme-${theme}` : \"\"}`}\n >\n <div className=\"ui-89-hr__double\"></div>\n </div>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89InputCheckBox.css\"\n\nexport interface Ui89InputCheckBoxProps {\n value: boolean\n onChange?: (value: boolean) => void\n}\n\nexport function Ui89InputCheckBox(props: Ui89InputCheckBoxProps) {\n function toggle() {\n if (props.onChange) {\n props.onChange(!props.value)\n }\n }\n\n return (\n <span className=\"ui89-input-check-box\" onClick={toggle}>\n <span className=\"ui89-input-check-box__x\">\n {props.value ? <>X</> : <>&nbsp;</>}\n </span>\n </span>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89InputCheckText.css\"\n\nexport interface Ui89InputCheckTextProps {\n value: any\n onChange?: (value: boolean) => void\n}\n\nexport function Ui89InputCheckText(props: Ui89InputCheckTextProps) {\n function toggle() {\n if (props.onChange) {\n props.onChange(!props.value)\n }\n }\n\n return (\n <span className=\"ui89-input-check-text\" onClick={toggle}>\n {props.value ? \"[X]\" : \"[ ]\"}\n </span>\n )\n}\n","import React, { useRef } from \"react\"\n\nimport \"./Ui89InputFileUpload.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\nimport { Ui89Button } from \"./Ui89Button\"\n\nexport interface Ui89InputFileUploadProps {\n value?: any\n onChange?: (value: File | null) => void\n}\n\nexport function Ui89InputFileUpload({\n value,\n onChange,\n}: Ui89InputFileUploadProps) {\n const inputRef = useRef<HTMLInputElement>(null)\n\n function implOnChange(e: React.ChangeEvent<HTMLInputElement>) {\n if (!onChange) {\n return\n }\n\n if (e.target.files === null) {\n onChange(null)\n return\n }\n\n if (e.target.files.length === 0) {\n onChange(null)\n return\n }\n\n onChange(e.target.files[0])\n }\n\n function onClick() {\n if (inputRef.current === null) {\n return\n }\n\n inputRef.current.click()\n }\n\n return (\n <div>\n <input\n ref={inputRef}\n className=\"ui89-typo-special\"\n type=\"file\"\n onChange={implOnChange}\n hidden\n />\n\n {value ? (\n <div className=\"ui89-input-file-upload\">\n <Ui89Button onClick={onClick}>Change</Ui89Button>\n <span\n className={`ui89-input-file-upload__info ui89-text-single-line ui89-text-single-line--ellipsis-left`}\n title={value.name}\n >\n {value.name}\n </span>\n </div>\n ) : (\n <Ui89Button onClick={onClick}>Upload</Ui89Button>\n )}\n </div>\n )\n}\n","import React, { useMemo, useState } from \"react\"\n\nimport \"./Ui89InputSelect.css\"\nimport \"../style/input-box.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89InputSelectProps<T> {\n /**\n * Available options.\n */\n options?: T[]\n\n /**\n * The selected option.\n */\n value?: T\n\n /**\n * Called whenever an option is selected.\n */\n onChange?: (option: T) => void\n\n /**\n * Retrieves the value that uniquely identifies the option. This is what is\n * used to determine which option is currently selected.\n */\n getOptionKey?: (option: T) => any\n\n /**\n * Customize how an option should be rendered.\n */\n renderOption?: (option: T) => any\n}\n\n/**\n * This is a very performant and customizable dropdown selector that\n * allows you to choose from a list of options.\n */\nexport function Ui89InputSelect<T>(props: Ui89InputSelectProps<T>) {\n const getOptionKey = useMemo(() => {\n return props.getOptionKey ?? ((option: any) => option)\n }, [props.getOptionKey])\n\n const options = useMemo(() => {\n if (props.options === undefined) {\n return []\n }\n\n return props.options\n }, [props.options])\n\n const optionsMap = useMemo(() => {\n return new Map(options.map((option) => [getOptionKey(option), option]))\n }, [options])\n\n function isOptionSelected(option: T) {\n if (props.value === undefined) {\n // Definitely not selected.\n return false\n }\n\n return getOptionKey(option) === getOptionKey(props.value)\n }\n\n function selectOption(option: T) {\n if (props.onChange !== undefined) {\n props.onChange(option)\n }\n\n if (document.activeElement !== null) {\n // @ts-expect-error\n document.activeElement.blur()\n }\n }\n\n function optionTitle(option: T) {\n return String(option)\n }\n\n return (\n <div className=\"ui89-input-select\">\n <div\n className={[\n \"ui89-input-box\",\n \"ui89-input-box--unselectable\",\n \"ui89-input-box--clickable\",\n \"ui89-text-single-line\",\n ].join(\" \")}\n tabIndex={0}\n title={props.value !== undefined ? optionTitle(props.value) : undefined}\n >\n {props.value !== undefined ? (\n <>\n {props.renderOption !== undefined\n ? props.renderOption(props.value)\n : props.value}\n </>\n ) : (\n <>Select...</>\n )}\n </div>\n\n <div className=\"ui89-input-select__menu\" tabIndex={0}>\n <div className=\"ui89-input-select__menu__content\">\n {options.length > 0 ? (\n options.map((o) => {\n const isSelected = isOptionSelected(o)\n\n return (\n <div\n className={[\n \"ui89-input-select__menu__item\",\n isSelected\n ? \"ui89-input-select__menu__item--selected\"\n : null,\n ].join(\" \")}\n title={optionTitle(o)}\n key={getOptionKey(o)}\n onClick={() => selectOption(o)}\n >\n {props.renderOption !== undefined ? props.renderOption(o) : o}\n </div>\n )\n })\n ) : (\n <div\n className={[\n \"ui89-input-select__menu__item\",\n \"ui89-input-select__menu__item--disabled\",\n ].join(\" \")}\n >\n &lt;empty&gt;\n </div>\n )}\n </div>\n </div>\n </div>\n )\n}\n","import Timeout from \"smart-timeout\"\n\nlet uniqueId = 0\n\nexport function throttledTimeout() {\n const id = String(uniqueId++)\n let callback: () => void\n\n return {\n call(delay: number, f: () => void) {\n callback = f\n\n if (Timeout.pending(id)) {\n Timeout.restart(id)\n } else {\n Timeout.set(id, () => callback(), delay)\n }\n },\n\n /**\n * If there is a call that has been scheduled, remove it from the queue.\n */\n abort() {\n Timeout.clear(id, true)\n },\n }\n}\n\nexport function spacedTimeout() {\n const id = String(uniqueId++)\n let callback: () => void\n\n return {\n call(delay: number, f: () => void) {\n callback = f\n\n if (!Timeout.pending(id)) {\n Timeout.set(id, () => callback(), delay)\n }\n },\n }\n}\n","import { useEffect, useRef, useState } from \"react\"\nimport { throttledTimeout } from \"./timeout\"\n\ninterface UseDelayedOnChangeState {\n value: any\n setValue: (newVal: any) => void\n onChange: (newVal: any) => void\n onFocus: () => void\n onBlur: () => void\n}\n\nexport function useDelayedOnChange(props: {\n defaultValue?: any\n value: any\n onChange?: (value: any) => void\n filter?: (value: any) => any\n}): UseDelayedOnChangeState {\n const onChangeRef = useRef(props.onChange)\n\n useEffect(() => {\n onChangeRef.current = props.onChange\n }, [props.onChange])\n\n const [intermediateValue, setIntermediateValue] = useState<any>(\n props.defaultValue || props.value,\n )\n\n useEffect(() => {\n stateRef.current.setValue(props.value)\n }, [props.value])\n\n function callOnChange() {\n let newVal = stateRef.current.value\n\n if (props.filter !== undefined) {\n newVal = props.filter(newVal)\n }\n\n onChangeRef.current?.call(null, newVal)\n return newVal\n }\n\n class StateUnknown implements UseDelayedOnChangeState {\n state = \"unknown\"\n\n value: any\n\n throttledTimeout: any\n\n constructor() {\n this.throttledTimeout = throttledTimeout()\n }\n\n setValue(newVal: any) {\n setIntermediateValue(newVal)\n }\n\n onChange(newVal: any) {\n setIntermediateValue(newVal)\n stateRef.current.throttledTimeout.call(300, callOnChange)\n }\n\n onFocus() {\n let newState = new StateFocus()\n newState.value = stateRef.current.value\n setState(newState)\n }\n\n onBlur() {}\n }\n\n class StateFocus implements UseDelayedOnChangeState {\n state = \"focus\"\n\n value: any\n\n throttledTimeout: any\n\n constructor() {\n this.throttledTimeout = throttledTimeout()\n }\n\n setValue(newVal: any) {\n // Ignore.\n }\n\n onChange(newVal: any) {\n setIntermediateValue(newVal)\n stateRef.current.throttledTimeout.call(300, callOnChange)\n }\n\n onFocus() {}\n\n onBlur() {\n let newVal = callOnChange()\n setIntermediateValue(newVal)\n let newState = new StateUnknown()\n newState.value = newVal\n setState(newState)\n }\n }\n\n const [state, setState] = useState<UseDelayedOnChangeState>(() => {\n let newState = new StateUnknown()\n newState.value = intermediateValue\n return newState\n })\n\n const stateRef = useRef(state)\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n stateRef.current.value = intermediateValue\n\n return state\n}\n","import React, { useMemo } from \"react\"\nimport { useState, useEffect, useRef } from \"react\"\nimport { throttledTimeout } from \"../timeout\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\nimport { useDelayedOnChange } from \"../useDelayedOnChange\"\n\nconst THROTTLE_DELAY = 200\n\nexport interface Ui89InputTextProps {\n value?: any\n placeholder?: string\n autoTrim?: boolean\n onChange?: (value: any) => void\n onTyping?: (value: boolean) => void\n onFocus?: () => void\n onBlur?: () => void\n}\n\nfunction convertAnyToText(value: any) {\n return value ?? \"\"\n}\n\nexport function Ui89InputText({\n value,\n placeholder,\n autoTrim = true,\n onChange,\n onTyping,\n onFocus,\n onBlur,\n}: Ui89InputTextProps) {\n const delayedState = useDelayedOnChange({\n defaultValue: \"\",\n value,\n onChange,\n filter(value: any) {\n if (autoTrim) {\n if (typeof value === \"string\") {\n value = value.replace(/\\s+/g, \" \").trim()\n }\n }\n\n return value\n },\n })\n\n return (\n <div>\n <input\n className={`ui89-input-box ui89-typo-special`}\n type=\"text\"\n value={delayedState.value}\n onChange={(e) => delayedState.onChange(e.target.value)}\n onBlur={delayedState.onBlur}\n onFocus={delayedState.onFocus}\n placeholder={placeholder}\n />\n </div>\n )\n}\n","export function stringRemoveAllWhitespace(str: string): string {\n return str.replace(/\\s+/g, \"\")\n}\n","import React from \"react\"\nimport { useState, useEffect } from \"react\"\nimport { Ui89InputText } from \"./Ui89InputText\"\nimport { stringRemoveAllWhitespace } from \"../text-utils\"\n\nexport interface Ui89InputTextNumberProps {\n emptyValue?: any\n value?: any\n min?: number\n max?: number\n onChange?: (value: any) => void\n precision?: number\n}\n\nexport function isTextNumber(text: string): boolean {\n return /\\b\\d+(\\.\\d+)?\\b/.test(text)\n}\n\nfunction displayText(value: any, emptyValue: any) {\n if (value === undefined) {\n // No idea how to display this.\n return \"\"\n } else if (value === emptyValue) {\n // Display emptiness.\n return \"\"\n } else if (isNaN(value)) {\n // No idea what to display.\n return \"\"\n }\n\n return value.toString()\n}\n\nexport function Ui89InputTextNumber({\n /**\n * The value that is emitted when the input is emptied.\n */\n emptyValue = null,\n value,\n min,\n max,\n onChange,\n precision,\n}: Ui89InputTextNumberProps) {\n const [isTyping, setIsTyping] = useState(false)\n const [intermediateValue, setIntermediateValue] = useState(\n displayText(value, emptyValue),\n )\n\n function implOnChange(value: string) {\n if (onChange === undefined) {\n return\n }\n\n if (value === \"\") {\n // Use empty value.\n onChange(emptyValue)\n return\n }\n\n value = stringRemoveAllWhitespace(value)\n\n if (!isTextNumber(value)) {\n // We end here.\n return\n }\n\n const numberValue = Number(value)\n\n if (min !== undefined) {\n if (numberValue <= min) {\n value = String(min)\n }\n }\n\n if (max !== undefined) {\n if (numberValue >= max) {\n value = String(max)\n }\n }\n\n onChange(value)\n }\n\n useEffect(() => {\n if (!isTyping) {\n setIntermediateValue(displayText(value, emptyValue))\n }\n }, [isTyping, value])\n\n return (\n <Ui89InputText\n value={intermediateValue}\n onChange={implOnChange}\n onTyping={setIsTyping}\n />\n )\n}\n","import React from \"react\"\nimport { useMemo } from \"react\"\n\nimport { Ui89InputTextNumber } from \"./Ui89InputTextNumber\"\n\nexport interface Ui89InputNumberProps {\n emptyValue?: any\n value?: any\n min?: number\n max?: number\n onChange?: (value: any) => void\n precision?: number\n}\n\nexport function Ui89InputNumber(props: Ui89InputNumberProps) {\n const wrappedValue = useMemo(() => {\n if (props.value !== undefined && props.value !== null) {\n return Number(props.value)\n } else {\n return undefined\n }\n }, [props.value])\n\n function wrappedOnChange(value: any) {\n if (props.onChange === undefined) {\n return\n }\n\n if (value === props.emptyValue) {\n // Pass along.\n props.onChange(value)\n } else {\n if (value !== undefined && value !== null) {\n props.onChange(Number(value))\n } else {\n props.onChange(null)\n }\n }\n }\n\n return (\n <Ui89InputTextNumber\n emptyValue={props.emptyValue}\n value={wrappedValue}\n onChange={wrappedOnChange}\n min={props.min}\n max={props.max}\n precision={props.precision}\n />\n )\n}\n","import React from \"react\"\nimport { useState } from \"react\"\n\nimport \"../style/input-box.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89InputPasswordProps {\n value?: any\n placeholder?: string\n onChange?: (value: any) => void\n}\n\nexport function Ui89InputPassword({\n value,\n placeholder,\n onChange,\n}: Ui89InputPasswordProps) {\n const [intermediateValue, setIntermediateValue] = useState(value ?? \"\")\n\n const implOnChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n const newValue = e.target.value\n\n setIntermediateValue(newValue)\n\n if (onChange) {\n onChange(newValue)\n }\n }\n\n return (\n <div>\n <input\n type=\"password\"\n className={`ui89-input-box ui89-typo-special`}\n role=\"textbox\"\n value={intermediateValue}\n onChange={implOnChange}\n placeholder={placeholder}\n />\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"../style/reset.css\"\nimport \"./Ui89LinkUnderline.css\"\n\nimport { useUi89Overrides } from \"../Ui89Override\"\n\nexport interface Ui89LinkUnderlineProps {\n onClick?: () => void | Promise<void>\n href?: string\n children: React.ReactNode\n autoDisableOnClick?: boolean\n disabled?: boolean\n}\n\nexport function Ui89LinkUnderline(props: Ui89LinkUnderlineProps) {\n const overrides = useUi89Overrides()\n const [clicking, setClicking] = useState(false)\n\n let localDisabled =\n props.disabled || ((props.autoDisableOnClick ?? true) && clicking)\n\n async function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (localDisabled) {\n // The anchor tag does not support the disabled attribute so we do this.\n return\n }\n\n try {\n setClicking(true)\n\n if (props.onClick !== undefined) {\n // A function takes over control.\n e.preventDefault()\n await props.onClick()\n } else if (props.href !== undefined) {\n if (props.href.startsWith(\"/\")) {\n if (overrides.routerPush !== undefined) {\n e.preventDefault()\n overrides.routerPush(props.href)\n }\n }\n } else {\n // Do nothing.\n e.preventDefault()\n }\n } finally {\n setClicking(false)\n }\n }\n\n let containerClass = [\"ui89-link-underline\"].join(\" \")\n\n return (\n <a\n className={`ui-89-reset-a ${containerClass}`}\n role=\"link\"\n href={props.href}\n onClick={onClick}\n >\n {props.children}\n </a>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89MenuBar.css\"\nimport \"../style/typo.css\"\nimport \"../style/scrollbar.css\"\n\nexport interface Ui89MenuBarPropsItem {\n label: React.ReactNode\n onClick?: () => void\n children?: Ui89MenuBarPropsItem[]\n}\n\nexport interface Ui89MenuBarProps {\n items: Ui89MenuBarPropsItem[]\n}\n\nexport function Ui89MenuBar({ items }: Ui89MenuBarProps) {\n return (\n <div className={`ui89-menu-bar ui89-typo-special ui89-scrollbar`}>\n {items.map((item, index) => {\n function onNativeClick() {\n if (item.onClick !== undefined) {\n item.onClick()\n }\n }\n\n return (\n <div\n key={index}\n className=\"ui89-menu-bar__item\"\n onClick={onNativeClick}\n >\n {item.label}\n </div>\n )\n })}\n </div>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Look } from \"../theme\"\n\nimport \"./Ui89Scene.css\"\nimport \"../style/look.css\"\nimport \"../style/typo.css\"\nimport \"../style/scrollbar.css\"\n\nexport interface Ui89SceneProps {\n look?: Ui89Look | string\n children: React.ReactNode\n}\n\nexport function Ui89Scene({ look = Ui89Look.main, children }: Ui89SceneProps) {\n return (\n <div\n className={`ui89-scene ui-89-look-${look} ui89-typo-normal ui89-scrollbar`}\n >\n {children}\n </div>\n )\n}\n","import React from \"react\"\nimport \"./GridExpandTrick.css\"\n\nexport default function GridExpandTrick({\n children,\n}: {\n children: React.ReactNode\n}) {\n return <span className=\"ui89-grid-expand-trick\">{children}</span>\n}\n","import React from \"react\"\nimport \"./ScrollContainer.css\"\n\nexport default function ScrollContainer({\n children,\n}: {\n children: React.ReactNode\n}) {\n return <span className=\"ui89-scroll-container\">{children}</span>\n}\n","import React, { useMemo } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { Ui89Card } from \"./Ui89Card\"\nimport HoverShadow from \"./private/HoverShadow\"\nimport { Ui89Scene } from \"./Ui89Scene\"\nimport GridExpandTrick from \"./private/GridExpandTrick\"\nimport ScrollContainer from \"./private/ScrollContainer\"\n\nimport \"./Ui89ModalDialog.css\"\n\nexport interface Ui89ModalDialogProps {\n open: boolean\n size?: string\n children?: React.ReactNode\n topCenter?: React.ReactNode\n onRequestClose?: () => void\n}\n\nconst portalRoot: HTMLElement | null =\n typeof document !== \"undefined\" ? document.body : null\n\nexport function Ui89ModalDialog({\n open,\n size = \"medium\",\n children,\n topCenter,\n onRequestClose,\n}: Ui89ModalDialogProps) {\n const dialogClass = useMemo(() => {\n return [\"ui89-modal-dialog\", open ? \"ui89-modal-dialog--open\" : \"\"].join(\n \" \",\n )\n }, [size, open])\n\n const dialogBoxClass = useMemo(() => {\n return [\n \"ui89-modal-dialog__box\",\n `ui89-modal-dialog__box--size-${size}`,\n ].join(\" \")\n }, [size, open])\n\n function onClickBackdrop() {\n if (onRequestClose !== undefined) {\n onRequestClose()\n }\n }\n\n const vdom = (\n <div className={dialogClass} role=\"dialog\" style={{ zIndex: 1 }}>\n <div\n className=\"ui89-modal-dialog__backdrop\"\n role=\"presentation\"\n onClick={onClickBackdrop}\n ></div>\n\n <div className={dialogBoxClass}>\n <div className=\"ui89-modal-dialog__spacer\"></div>\n\n <HoverShadow>\n <GridExpandTrick>\n <Ui89Scene>\n <Ui89Card topCenter={topCenter}>\n <ScrollContainer>{children}</ScrollContainer>\n </Ui89Card>\n </Ui89Scene>\n </GridExpandTrick>\n </HoverShadow>\n </div>\n </div>\n )\n\n return portalRoot !== null ? createPortal(vdom, portalRoot) : vdom\n}\n","import React from \"react\"\n\nimport \"./Ui89NameValuePair.css\"\n\nexport interface Ui89NameValuePairProps {\n name: React.ReactNode\n value: React.ReactNode\n leftMaxWidth?: number\n}\n\nexport function Ui89NameValuePair({\n name,\n value,\n leftMaxWidth,\n}: Ui89NameValuePairProps) {\n return (\n <div className=\"ui-89-name-value-pair\">\n <div\n className=\"ui-89-name-value-pair__name-wrapper\"\n style={{ maxWidth: `${leftMaxWidth}px` }}\n >\n <div className=\"ui-89-name-value-pair__name\">{name}</div>\n <div className=\"ui-89-name-value-pair__dots\"></div>\n </div>\n <div className=\"ui-89-name-value-pair__value\">{value}</div>\n </div>\n )\n}\n","import * as React from \"react\";\nconst SvgShortcut = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: 100, height: 100, viewBox: \"0 0 100 100\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 0, y: 0, width: 100, height: 100, fill: \"white\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 80, y1: 80, x2: 20, y2: 20, stroke: \"black\", strokeWidth: 15 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 20, y1: 20, x2: 50, y2: 20, stroke: \"black\", strokeWidth: 15, strokeLinecap: \"round\" }), /* @__PURE__ */ React.createElement(\"line\", { x1: 20, y1: 20, x2: 20, y2: 50, stroke: \"black\", strokeWidth: 15, strokeLinecap: \"round\" }));\nexport default SvgShortcut;\n","import React from \"react\"\n\nexport interface Ui89SpaceVerticalProps {\n gap?: number\n}\n\nexport function Ui89SpaceVertical({ gap = 1 }: Ui89SpaceVerticalProps) {\n const style = {\n paddingTop: `calc(var(--ui89-safe-space) * ${gap})`,\n }\n\n return <div style={style}></div>\n}\n","import React from \"react\"\n\nimport ShortcutSvg from \"../images/shortcut.svg\"\n\nimport \"./Ui89Shortcut.css\"\nimport \"../style/typo.css\"\n\nimport { Ui89SpaceVertical } from \"./Ui89SpaceVertical\"\n\nexport interface Ui89ShortcutProps {\n imageUrl: string\n label: React.ReactNode\n onClick?: () => void\n}\n\nexport function Ui89Shortcut({\n imageUrl,\n label,\n onClick = () => {},\n}: Ui89ShortcutProps) {\n function onNativeClick() {\n onClick()\n }\n\n return (\n <div className=\"ui89-shortcut\" onClick={onNativeClick}>\n <div className=\"ui89-shortcut__image-container\">\n <img className=\"ui89-shortcut__image\" src={imageUrl} />\n\n <div className=\"ui89-shortcut__shortcut-icon-container\">\n <ShortcutSvg\n className=\"ui89-shortcut__shortcut-icon\"\n width={16}\n height={16}\n />\n </div>\n </div>\n\n <Ui89SpaceVertical gap={1} />\n\n <div\n className={`ui89-shortcut__label ui89-typo-small-bold`}\n onClick={onNativeClick}\n >\n {label}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport interface Ui89SpacePaddingProps {\n gap?: number\n gapVertical?: number\n gapHorizontal?: number\n gapTop?: number\n gapRight?: number\n gapBottom?: number\n gapLeft?: number\n children?: React.ReactNode\n}\n\nexport function Ui89SpacePadding(props: Ui89SpacePaddingProps) {\n const gap = props.gap ?? 1\n\n const style = {\n paddingTop: `calc(var(--ui89-safe-space) * ${props.gapTop ?? props.gapVertical ?? gap})`,\n paddingRight: `calc(var(--ui89-safe-space) * ${props.gapRight ?? props.gapHorizontal ?? gap})`,\n paddingBottom: `calc(var(--ui89-safe-space) * ${props.gapBottom ?? props.gapVertical ?? gap})`,\n paddingLeft: `calc(var(--ui89-safe-space) * ${props.gapLeft ?? props.gapHorizontal ?? gap})`,\n }\n\n return <div style={style}>{props.children}</div>\n}\n","import React from \"react\"\n\nimport \"./Ui89Tabs.css\"\nimport \"../style/typo.css\"\n\nexport interface Ui89TabsPropsOption {\n value: string | number\n label: React.ReactNode\n}\n\nexport interface Ui89TabsProps {\n selected?: any\n onChange?: (value: string | number) => void\n options?: Ui89TabsPropsOption[]\n\n /**\n * Stretch options such that they evenly take up the entire width.\n */\n stretch?: boolean\n}\n\nexport function Ui89Tabs({\n selected,\n onChange = () => {},\n options = [],\n stretch,\n}: Ui89TabsProps) {\n function handleOnChange(value: string | number) {\n onChange(value)\n }\n\n return (\n <div\n className={[\"ui89-tabs\", stretch ? \"ui89-tabs--stretch\" : \"\"].join(\" \")}\n >\n {options.map((option) => (\n <div\n className={[\n \"ui89-tabs__item\",\n \"ui89-typo-small-bold\",\n selected === option.value ? \"ui89-tabs__item--selected\" : \"\",\n ].join(\" \")}\n key={option.value}\n onClick={() => handleOnChange(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )\n}\n","import { Ui89Card } from \"./Ui89Card\"\nimport { Ui89Tabs } from \"./Ui89Tabs\"\nimport React, { useCallback, useMemo } from \"react\"\n\nexport interface Ui89TabbedCardProps {\n selected?: any\n onChange?: (value: string | number) => void\n options?: Ui89TabbedCardPropsOption[]\n}\n\nexport interface Ui89TabbedCardPropsOption {\n value: string | number\n label: React.ReactNode\n render: () => React.JSX.Element\n}\n\nexport function Ui89TabbedCard({\n selected,\n onChange,\n options = [],\n}: Ui89TabbedCardProps) {\n const selectedItem = useMemo<Ui89TabbedCardPropsOption | null>(() => {\n return options.find((item) => item.value === selected) ?? null\n }, [selected, options])\n\n const render = useMemo(() => {\n return selectedItem !== null ? selectedItem.render : () => <></>\n }, [selectedItem])\n\n const renderKey = useMemo(() => {\n return selectedItem !== null ? selectedItem.value : undefined\n }, [selectedItem])\n\n return (\n <Ui89Card\n topCenter={\n <Ui89Tabs selected={selected} options={options} onChange={onChange} />\n }\n >\n <React.Fragment key={renderKey}>{render()}</React.Fragment>\n </Ui89Card>\n )\n}\n","import React from \"react\"\n\nimport { Ui89Theme } from \"../theme\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\n\nimport \"./Ui89TagBox.css\"\n\nexport interface Ui89TagBoxProps {\n theme: Ui89Theme | keyof typeof Ui89Theme\n children: React.ReactNode\n}\n\nexport function Ui89TagBox({ theme, children }: Ui89TagBoxProps) {\n return (\n <div\n className={`ui89-tag-box ui89-typo-special ui89-chosen-theme-${theme}`}\n >\n {children}\n </div>\n )\n}\n","import React, { useState } from \"react\"\n\nimport \"./Ui89ThemeBackground.css\"\nimport \"../style/chosen-theme.css\"\n\nimport { Ui89Theme } from \"../theme\"\n\nexport interface Ui89ThemeBackgroundProps {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n children: React.ReactNode\n}\n\nexport function Ui89ThemeBackground({\n theme = Ui89Theme.primary,\n children,\n}: Ui89ThemeBackgroundProps) {\n return (\n <div className={`ui89-theme-background ui89-chosen-theme-${theme}`}>\n {children}\n </div>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89TitleBox.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89TitleBoxProps {\n children: React.ReactNode\n}\n\nexport function Ui89TitleBox({ children }: Ui89TitleBoxProps) {\n return (\n <div className={`ui89-title-box ui89-typo-special`}>\n <div className={`ui89-title-box__inside ui89-text-single-line`}>\n {children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nimport \"./Ui89TitleUnderline.css\"\nimport \"../style/typo.css\"\nimport \"../style/text.css\"\n\nexport interface Ui89TitleUnderlineProps {\n children: React.ReactNode\n}\n\nexport function Ui89TitleUnderline({ children }: Ui89TitleUnderlineProps) {\n return (\n <div className={`ui89-title-underline ui89-typo-special`}>\n <div className={`ui89-title-underline__inside ui89-text-single-line`}>\n {children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport { ToastContainer, toast } from \"react-toastify\"\n\nimport \"./Ui89Toaster.css\"\nimport \"../style/typo.css\"\nimport \"../style/chosen-theme.css\"\nimport { Ui89Theme } from \"../theme\"\n\nexport interface Ui89ToasterOptions {\n theme?: Ui89Theme | keyof typeof Ui89Theme\n autoClose?: boolean\n duration?: number\n}\n\nexport function useUi89Toaster() {\n return {\n toast(\n content: React.ReactNode,\n options: Ui89ToasterOptions = { theme: Ui89Theme.primary },\n ) {\n const classNames = [\"ui89-toaster\", \"ui89-typo-normal\"]\n\n if (options.theme !== undefined) {\n classNames.push(`ui89-chosen-theme-${options.theme}`)\n }\n\n let autoClose: boolean | number = 5000\n\n if (options.duration !== undefined) {\n autoClose = options.duration\n }\n\n if (options.autoClose !== undefined) {\n if (!options.autoClose) {\n autoClose = false\n }\n }\n\n return toast(() => content, {\n className: classNames.join(\" \"),\n type: \"default\",\n autoClose,\n closeButton: false,\n hideProgressBar: true,\n closeOnClick: true,\n })\n },\n }\n}\n\nexport function Ui89Toaster() {\n return <ToastContainer />\n}\n","import { useState, useEffect, useRef } from \"react\"\n\ntype Size = { width: number; height: number }\n\ninterface UseResizeObserverResult {\n size: Size\n}\n\nexport const useResizeObserver = <T extends HTMLElement>(\n ref: React.RefObject<T>,\n): UseResizeObserverResult => {\n const [size, setSize] = useState<Size>({ width: 0, height: 0 })\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n for (let entry of entries) {\n setSize({\n width:\n entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width,\n height:\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height,\n })\n }\n })\n\n if (ref.current) {\n observer.observe(ref.current)\n }\n\n return () => {\n observer.disconnect()\n }\n }, [ref.current])\n\n return {\n size,\n }\n}\n","import { useState, useEffect, useRef, RefObject } from \"react\"\n\nexport const useScrollYPosition = (ref: RefObject<HTMLElement>): number => {\n const [scrollY, setScrollY] = useState(0)\n const ticking = useRef(false)\n const observer = useRef<MutationObserver | null>(null)\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const handleScroll = () => {\n if (!ticking.current) {\n requestAnimationFrame(() => {\n setScrollY(element.scrollTop)\n ticking.current = false\n })\n ticking.current = true\n }\n }\n\n element.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n observer.current = new MutationObserver(() => {\n if (ref.current !== element) {\n element.removeEventListener(\"scroll\", handleScroll)\n ref.current?.addEventListener(\"scroll\", handleScroll, { passive: true })\n }\n })\n\n observer.current.observe(document.body, { childList: true, subtree: true })\n\n return () => {\n element.removeEventListener(\"scroll\", handleScroll)\n observer.current?.disconnect()\n }\n }, [ref])\n\n return scrollY\n}\n","import React, { useState, useEffect, useRef, useMemo } from \"react\"\n\nimport \"./Ui89VirtualList.css\"\nimport { useResizeObserver } from \"../useResizeObserver\"\nimport { useScrollYPosition } from \"../useScrollYPosition\"\n\nexport interface Ui89VirtualListPropsRenderRowProps<T> {\n index: number\n row: T\n}\n\nexport interface Ui89VirtualListProps<T> {\n rows: T[]\n rowHeight?: number\n renderRow: (props: Ui89VirtualListPropsRenderRowProps<T>) => React.ReactNode\n getRowKey?: (row: T) => string\n}\n\ninterface VisibleRow<T> {\n index: number\n row: T\n key: string\n render: React.ReactNode\n style: React.CSSProperties\n}\n\n/**\n * Virtualization at row level. Great for long lists.\n *\n * Can be used to implement table components with few columns.\n */\nexport const Ui89VirtualList = React.memo(\n <T,>(props: Ui89VirtualListProps<T>) => {\n const scrollContainer = useRef<HTMLDivElement>(null)\n const scrollAreaContainer = useRef<HTMLDivElement>(null)\n\n const { size } = useResizeObserver(scrollContainer)\n const scrollY = useScrollYPosition(scrollContainer)\n\n const rowHeight = props.rowHeight ?? 50\n\n const totalHeight = rowHeight * props.rows.length\n\n const [visibleRows, setVisibleRows] = useState<Map<string, VisibleRow<T>>>(\n new Map(),\n )\n\n useEffect(() => {\n if (size.height === 0) {\n setVisibleRows(new Map())\n return\n }\n\n const firstIndex = Math.max(0, Math.floor(scrollY / rowHeight) - 1)\n const length = Math.min(\n props.rows.length - firstIndex,\n Math.ceil(size.height / rowHeight) + 2,\n )\n\n const newVisibleRows = new Map<string, VisibleRow<T>>()\n\n for (let index = firstIndex; index < firstIndex + length; index++) {\n let row = props.rows[index]\n let key = props.getRowKey ? props.getRowKey(row) : String(index)\n\n let existingRow = visibleRows.get(key)\n\n if (existingRow !== undefined) {\n if (existingRow.row === row) {\n // Data has technically not changed so we can reuse.\n newVisibleRows.set(key, existingRow)\n continue\n }\n }\n\n newVisibleRows.set(key, {\n index,\n row,\n key,\n render: props.renderRow({ index, row }),\n style: {\n transform: `translateY(${index * rowHeight}px)`,\n height: `${rowHeight}px`,\n },\n })\n }\n\n setVisibleRows(newVisibleRows)\n }, [props.rows, scrollY, size.height])\n\n const orderedVisibleRows = useMemo(() => {\n return Array.from(visibleRows.values()).sort((a, b) => a.index - b.index)\n }, [visibleRows])\n\n return (\n <div ref={scrollContainer} className=\"ui89-virtual-list\">\n <div\n ref={scrollAreaContainer}\n className=\"ui89-virtual-list__scroll-area\"\n style={{ height: `${totalHeight}px` }}\n >\n {orderedVisibleRows.map((visibleRow) => (\n <div\n key={visibleRow.key}\n className=\"ui89-virtual-list__row\"\n style={visibleRow.style}\n >\n {visibleRow.render}\n </div>\n ))}\n </div>\n </div>\n )\n },\n) as <T>(props: Ui89VirtualListProps<T>) => JSX.Element\n","import React, { forwardRef, useCallback, useMemo } from \"react\"\nimport \"./Ui89VirtualTable.css\"\nimport \"../style/typo.css\"\nimport { Ui89TagBox } from \"./Ui89TagBox\"\nimport {\n Ui89VirtualList,\n Ui89VirtualListPropsRenderRowProps,\n} from \"./Ui89VirtualList\"\n\nexport enum Ui89VirtualTablePropsColumnAlign {\n left = \"left\",\n right = \"right\",\n center = \"center\",\n}\n\nexport interface Ui89VirtualTablePropsColumnRenderHeaderParams<T> {\n index: number\n column: Ui89VirtualTablePropsColumn<T>\n}\n\nexport interface Ui89VirtualTablePropsColumnRenderBodyParams<T> {\n index: number\n row: T\n}\n\nexport interface Ui89VirtualTablePropsColumn<T> {\n width?: number\n halign?: keyof typeof Ui89VirtualTablePropsColumnAlign\n renderHeader?: (\n props: Ui89VirtualTablePropsColumnRenderHeaderParams<T>,\n ) => React.ReactNode\n renderBody: (\n props: Ui89VirtualTablePropsColumnRenderBodyParams<T>,\n ) => React.ReactNode\n}\n\nexport interface Ui89VirtualTableProps<T> {\n rows?: T[]\n columns?: Ui89VirtualTablePropsColumn<T>[]\n rowHeight?: number\n}\n\nexport const Ui89VirtualTable = React.memo(\n <T,>(props: Ui89VirtualTableProps<T>) => {\n const rows = useMemo<(T | undefined)[]>(() => {\n let rows: any[] = props.rows !== undefined ? props.rows.slice() : []\n\n rows.unshift(undefined)\n\n return rows\n }, [props.rows])\n\n const columns = useMemo(() => {\n return props.columns !== undefined ? props.columns : []\n }, [props.columns])\n\n const rowHeight = props.rowHeight ?? 20\n\n function getColumnWidth(index: number): number {\n return columns[index].width ?? 100\n }\n\n function getColumnHorizontalOffset(columnIndex: number) {\n let offset = 0\n\n for (let i = 0; i < columnIndex; i++) {\n offset += getColumnWidth(i)\n }\n\n return offset\n }\n\n function isLastColumn(columnIndex: number): boolean {\n return columnIndex === columns.length - 1\n }\n\n function getRowClass(rowIndex: number): string {\n const classes = [\"ui89-virtual-table__row\"]\n\n if (rowIndex === 0) {\n classes.push(\"ui89-virtual-table__row--first\")\n classes.push(\"ui89-typo-normal-bold\")\n }\n\n if (rowIndex === rows.length) {\n classes.push(\"ui89-virtual-table__row--last\")\n }\n\n return classes.join(\" \")\n }\n\n function getColumnClass(columnIndex: number): string {\n const halign = columns[columnIndex].halign ?? \"left\"\n\n const classes = [\n \"ui89-virtual-table__cell\",\n `ui89-virtual-table__cell--halign-${halign}`,\n ]\n\n if (columnIndex === 0) {\n classes.push(\"ui89-virtual-table__cell--column-first\")\n }\n\n if (isLastColumn(columnIndex)) {\n classes.push(\"ui89-virtual-table__cell--column-last\")\n }\n\n return classes.join(\" \")\n }\n\n /**\n * The width of an entire row.\n */\n function rowWidth() {\n return getColumnHorizontalOffset(columns.length)\n }\n\n const renderRow = useCallback(\n ({ index, row }: Ui89VirtualListPropsRenderRowProps<T>) => {\n return (\n <div\n className={getRowClass(index)}\n style={{ minWidth: rowWidth() + \"px\", height: \"100%\" }}\n >\n {columns.map((column, columnIndex) => {\n return (\n <div\n key={columnIndex}\n className={getColumnClass(columnIndex)}\n style={{\n top: 0,\n height: \"100%\",\n width: getColumnWidth(columnIndex) + \"px\",\n left: getColumnHorizontalOffset(columnIndex) + \"px\",\n }}\n >\n {index === 0\n ? columns[columnIndex].renderHeader\n ? columns[columnIndex].renderHeader({\n index: columnIndex,\n column: column,\n })\n : \"\"\n : columns[columnIndex].renderBody({\n index: index,\n row: row,\n })}\n </div>\n )\n })}\n </div>\n )\n },\n [columns, rowHeight],\n )\n\n return (\n <div className=\"ui89-virtual-table\">\n {rows.length > 1 ? (\n <Ui89VirtualList\n rows={rows as T[]}\n rowHeight={rowHeight}\n renderRow={renderRow}\n />\n ) : (\n <div className=\"ui89-virtual-table__empty\">\n <Ui89TagBox theme=\"warning\">Empty</Ui89TagBox>\n </div>\n )}\n </div>\n )\n },\n) as <T>(props: Ui89VirtualTableProps<T>) => JSX.Element\n"],"names":["React","ShortcutSvg"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-ui89",
3
3
  "description": "A collection of React components that mimic a common style of user interfaces from the late 80s and early 90s.",
4
- "version": "0.34.5",
4
+ "version": "0.35.0",
5
5
  "author": "Daniel Araujo",
6
6
  "module": "dist/esm/index.js",
7
7
  "files": [