@konomi-app/ui 1.4.0 → 1.5.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.
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './loading-overlay';
2
+ export * from './modal';
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './loading-overlay';
2
+ export * from './modal';
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC"}
@@ -15,6 +15,8 @@ export declare class LoadingOverlay extends Overlay {
15
15
  set html(html: string);
16
16
  set progress(progress: number);
17
17
  render(): void;
18
- private pushLoadingStyle;
18
+ private containerStyle;
19
+ private loaderStyle;
20
+ private progressStyle;
19
21
  }
20
22
  export {};
@@ -1,3 +1,4 @@
1
+ import { css } from '@emotion/css';
1
2
  import { Overlay } from './overlay';
2
3
  export class LoadingOverlay extends Overlay {
3
4
  #label;
@@ -12,20 +13,19 @@ export class LoadingOverlay extends Overlay {
12
13
  this.#html = '';
13
14
  this.#progress = props.progress ?? null;
14
15
  const container = document.createElement('div');
15
- container.classList.add('__container');
16
+ container.classList.add(this.containerStyle);
16
17
  this._root.append(container);
17
18
  const loaderElement = document.createElement('div');
18
- loaderElement.classList.add('__loader');
19
+ loaderElement.classList.add(this.loaderStyle);
19
20
  this._loaderElement = loaderElement;
20
21
  container.append(loaderElement);
21
22
  const progressElement = document.createElement('div');
22
- progressElement.classList.add('__progress');
23
+ progressElement.classList.add(this.progressStyle);
23
24
  this._progressElement = progressElement;
24
25
  container.append(progressElement);
25
26
  const contentElement = document.createElement('div');
26
27
  this._contentElement = contentElement;
27
28
  container.append(contentElement);
28
- this.pushLoadingStyle();
29
29
  this.render();
30
30
  }
31
31
  hide() {
@@ -62,73 +62,67 @@ export class LoadingOverlay extends Overlay {
62
62
  }
63
63
  }
64
64
  }
65
- pushLoadingStyle() {
66
- const style = document.createElement('style');
67
- style.textContent = `
68
- #${this._rootId} .__container {
69
- display: flex;
70
- flex-direction: column;
71
- align-items: center;
72
- justify-content: center;
73
- gap: 32px;
74
- padding: 32px 64px;
75
- background-color: #fffc;
76
- backdrop-filter: blur(8px);
77
- border-radius: 8px;
78
- box-shadow: 0 5px 24px -6px #0002;
79
- min-width: 300px;
80
- max-width: 90vw;
81
- min-height: 200px;
82
- position: relative;
83
- overflow: hidden;
84
- transition: all 250ms ease;
85
-
86
- @keyframes spin {
87
- 0% {
88
- transform: rotate(0deg);
89
- border-radius: 1em;
90
- }
91
- 20% {
92
- transform: rotate(0deg);
93
- }
94
- 30%,
95
- 60% {
96
- border-radius: 0.25em;
97
- }
98
- 70% {
99
- transform: rotate(180deg);
100
- }
101
- 100% {
102
- transform: rotate(180deg);
103
- border-radius: 1em;
104
- }
105
- }
106
- }
107
- #${this._rootId} .__loader {
108
- font-size: 48px;
109
- width: 1em;
110
- height: 1em;
111
- position: relative;
112
- border: 2px solid #2563ebaa;
65
+ containerStyle = css `
66
+ display: flex;
67
+ flex-direction: column;
68
+ align-items: center;
69
+ justify-content: center;
70
+ gap: 32px;
71
+ padding: 32px 64px;
72
+ background-color: #fffc;
73
+ border-radius: 8px;
74
+ box-shadow: 0 5px 24px -6px #0002;
75
+ min-width: 300px;
76
+ max-width: 90vw;
77
+ min-height: 200px;
78
+ position: relative;
79
+ overflow: hidden;
80
+ transition: all 250ms ease;
81
+
82
+ @keyframes spin {
83
+ 0% {
84
+ transform: rotate(0deg);
113
85
  border-radius: 1em;
114
- animation-duration: 2s;
115
- animation-timing-function: ease;
116
- animation-delay: 0s;
117
- animation-iteration-count: infinite;
118
- animation-direction: normal;
119
- animation-fill-mode: none;
120
- animation-play-state: running;
121
86
  }
122
- #${this._rootId} .__progress {
123
- position: absolute;
124
- bottom: 0px;
125
- left: 0;
126
- width: 0%;
127
- height: 3px;
128
- background-color: #2563eb;
129
- transition: all 250ms ease;
87
+ 20% {
88
+ transform: rotate(0deg);
89
+ }
90
+ 30%,
91
+ 60% {
92
+ border-radius: 0.25em;
93
+ }
94
+ 70% {
95
+ transform: rotate(180deg);
96
+ }
97
+ 100% {
98
+ transform: rotate(180deg);
99
+ border-radius: 1em;
130
100
  }
131
- `;
132
101
  }
102
+ `;
103
+ loaderStyle = css `
104
+ font-size: 48px;
105
+ width: 1em;
106
+ height: 1em;
107
+ position: relative;
108
+ border: 2px solid #2563ebaa;
109
+ border-radius: 1em;
110
+ animation-duration: 2s;
111
+ animation-timing-function: ease;
112
+ animation-delay: 0s;
113
+ animation-iteration-count: infinite;
114
+ animation-direction: normal;
115
+ animation-fill-mode: none;
116
+ animation-play-state: running;
117
+ `;
118
+ progressStyle = css `
119
+ position: absolute;
120
+ bottom: 0px;
121
+ left: 0;
122
+ width: 0%;
123
+ height: 3px;
124
+ background-color: #2563eb;
125
+ transition: all 250ms ease;
126
+ `;
133
127
  }
134
128
  //# sourceMappingURL=loading-overlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-overlay.js","sourceRoot":"","sources":["../src/loading-overlay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loading-overlay.js","sourceRoot":"","sources":["../src/loading-overlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Overlay } from './overlay';
2
+ type Mode = 'alert' | 'prompt' | 'loading' | 'custom';
3
+ type Label = string | string[];
4
+ type ConstructorProps = Readonly<Partial<{
5
+ initialMode: Mode;
6
+ }>>;
7
+ type LoadingProps = {
8
+ label: Label;
9
+ html: string;
10
+ progress: number | null;
11
+ };
12
+ export declare class Modal extends Overlay {
13
+ #private;
14
+ constructor(props?: ConstructorProps);
15
+ hide(): void;
16
+ set loading(props: Partial<LoadingProps>);
17
+ changeMode(mode: Mode): void;
18
+ render(): void;
19
+ private containerStyle;
20
+ }
21
+ export {};
package/dist/modal.js ADDED
@@ -0,0 +1,139 @@
1
+ import { css } from '@emotion/css';
2
+ import { Overlay } from './overlay';
3
+ export class Modal extends Overlay {
4
+ #mode;
5
+ #containerElement;
6
+ #loadingProps;
7
+ constructor(props = {}) {
8
+ super();
9
+ const { initialMode = 'loading' } = props;
10
+ this.#mode = initialMode;
11
+ this.#loadingProps = {
12
+ label: '',
13
+ html: '',
14
+ progress: null,
15
+ };
16
+ const container = document.createElement('div');
17
+ this.#containerElement = container;
18
+ container.classList.add(this.containerStyle);
19
+ this._root.append(container);
20
+ this.render();
21
+ }
22
+ hide() {
23
+ this.#loadingProps = {
24
+ label: '',
25
+ html: '',
26
+ progress: null,
27
+ };
28
+ super.hide();
29
+ }
30
+ set loading(props) {
31
+ this.#mode = 'loading';
32
+ this.#loadingProps = { ...this.#loadingProps, ...props };
33
+ this.render();
34
+ }
35
+ changeMode(mode) {
36
+ this.#mode = mode;
37
+ this.render();
38
+ }
39
+ render() {
40
+ super.render();
41
+ if (this.#mode === 'loading') {
42
+ const { label, html, progress } = this.#loadingProps;
43
+ this.#containerElement.innerHTML = `
44
+ <div>
45
+ <div class="__l">${html || typeof label === 'string' ? label : label.join('<br />')}</div>
46
+ <div class="__p" style="width: ${progress ?? 0}%"></div>
47
+ </div>
48
+ `;
49
+ }
50
+ else {
51
+ }
52
+ }
53
+ containerStyle = css `
54
+ display: flex;
55
+ flex-direction: column;
56
+ align-items: center;
57
+ justify-content: center;
58
+ gap: 32px;
59
+ padding: 32px 64px;
60
+ background-color: #fffc;
61
+ border-radius: 8px;
62
+ box-shadow: 0 5px 24px -6px #0002;
63
+ min-width: 400px;
64
+ max-width: 90vw;
65
+ min-height: 300px;
66
+ position: relative;
67
+ overflow: hidden;
68
+ transition: all 250ms ease;
69
+
70
+ @keyframes spin {
71
+ 0% {
72
+ transform: rotate(0deg);
73
+ border-radius: 1em;
74
+ }
75
+ 20% {
76
+ transform: rotate(0deg);
77
+ }
78
+ 30%,
79
+ 60% {
80
+ border-radius: 0.25em;
81
+ }
82
+ 70% {
83
+ transform: rotate(180deg);
84
+ }
85
+ 100% {
86
+ transform: rotate(180deg);
87
+ border-radius: 1em;
88
+ }
89
+ }
90
+
91
+ @keyframes show {
92
+ 0% {
93
+ opacity: 0;
94
+ transform: scale(0.9);
95
+ }
96
+ 100% {
97
+ opacity: 1;
98
+ transform: scale(1);
99
+ }
100
+ }
101
+ @keyframes hide {
102
+ 0% {
103
+ opacity: 1;
104
+ transform: scale(1);
105
+ }
106
+ 100% {
107
+ opacity: 0;
108
+ transform: scale(0.9);
109
+ }
110
+ }
111
+
112
+ .__l {
113
+ font-size: 48px;
114
+ width: 1em;
115
+ height: 1em;
116
+ position: relative;
117
+ border: 2px solid #2563ebaa;
118
+ border-radius: 1em;
119
+ animation-duration: 2s;
120
+ animation-timing-function: ease;
121
+ animation-delay: 0s;
122
+ animation-iteration-count: infinite;
123
+ animation-direction: normal;
124
+ animation-fill-mode: none;
125
+ animation-play-state: running;
126
+ }
127
+
128
+ .__p {
129
+ position: absolute;
130
+ bottom: 0px;
131
+ left: 0;
132
+ width: 0%;
133
+ height: 3px;
134
+ background-color: #2563eb;
135
+ transition: all 250ms ease;
136
+ }
137
+ `;
138
+ }
139
+ //# sourceMappingURL=modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,OAAO,KAAM,SAAQ,OAAO;IAChC,KAAK,CAAO;IACZ,iBAAiB,CAAiB;IAClC,aAAa,CAAe;IAE5B,YAAmB,QAA0B,EAAE;QAC7C,KAAK,EAAE,CAAC;QAER,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;QAE1C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG;YACnB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEQ,IAAI;QACX,IAAI,CAAC,aAAa,GAAG;YACnB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAED,IAAW,OAAO,CAAC,KAA4B;QAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,UAAU,CAAC,IAAU;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEQ,MAAM;QACb,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG;;2BAEd,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;2CAChD,QAAQ,IAAI,CAAC;;OAEjD,CAAC;SACH;aAAM;SACN;IACH,CAAC;IAEO,cAAc,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoF3B,CAAC;CACH"}
package/dist/overlay.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export declare class Overlay {
2
2
  protected readonly _root: HTMLDivElement;
3
- protected readonly _rootId: string;
4
3
  protected _shown: boolean;
5
4
  protected _disableBeforeUnload: boolean;
6
5
  constructor();
@@ -9,7 +8,7 @@ export declare class Overlay {
9
8
  protected render(): void;
10
9
  /** JavaScript中にページを離れようとした場合にアラートを表示します */
11
10
  private beforeunload;
12
- private pushStyle;
11
+ private rootClass;
13
12
  /**
14
13
  * @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。
15
14
  */
@@ -19,3 +18,4 @@ export declare class Overlay {
19
18
  */
20
19
  stop(): void;
21
20
  }
21
+ export declare const getLoadingOverlay: () => Overlay;
package/dist/overlay.js CHANGED
@@ -1,6 +1,6 @@
1
+ import { css } from '@emotion/css';
1
2
  export class Overlay {
2
3
  _root;
3
- _rootId;
4
4
  _shown;
5
5
  _disableBeforeUnload;
6
6
  constructor() {
@@ -8,10 +8,7 @@ export class Overlay {
8
8
  this._disableBeforeUnload = false;
9
9
  const root = document.createElement('div');
10
10
  this._root = root;
11
- const rootId = `overlay-${Math.random().toString(36).slice(2)}`;
12
- this._rootId = rootId;
13
- this._root.id = rootId;
14
- this.pushStyle();
11
+ this._root.classList.add(this.rootClass);
15
12
  document.body.append(root);
16
13
  }
17
14
  show() {
@@ -35,35 +32,29 @@ export class Overlay {
35
32
  event.preventDefault();
36
33
  event.returnValue = '';
37
34
  }
38
- pushStyle() {
39
- const style = document.createElement('style');
40
- style.textContent = `
41
- #${this._rootId} {
42
- font-family: 'Yu Gothic Medium', '游ゴシック', YuGothic, 'メイリオ', 'Hiragino Kaku Gothic ProN',
43
- Meiryo, sans-serif;
44
- color: #356;
45
- font-size: 17px;
46
-
47
- overflow: hidden;
48
- background-color: #fff6;
49
- backdrop-filter: blur(10px);
50
- box-sizing: content-box;
51
-
52
- position: fixed;
53
- inset: 0;
54
- width: 100vw;
55
- height: 100vh;
56
-
57
- display: grid;
58
- place-items: center;
59
- transition: all 250ms ease;
60
- z-index: 1000;
61
- opacity: 0;
62
- transition: all 250ms ease;
63
- }
64
- `;
65
- document.head.append(style);
66
- }
35
+ rootClass = css `
36
+ font-family: 'Yu Gothic Medium', '游ゴシック', YuGothic, 'メイリオ', 'Hiragino Kaku Gothic ProN',
37
+ Meiryo, sans-serif;
38
+ color: #356;
39
+ font-size: 17px;
40
+
41
+ overflow: hidden;
42
+ background-color: #fff6;
43
+ backdrop-filter: blur(10px);
44
+ box-sizing: content-box;
45
+
46
+ position: fixed;
47
+ inset: 0;
48
+ width: 100vw;
49
+ height: 100vh;
50
+
51
+ display: grid;
52
+ place-items: center;
53
+ transition: all 250ms ease;
54
+ z-index: 1000;
55
+ opacity: 0;
56
+ transition: all 250ms ease;
57
+ `;
67
58
  /**
68
59
  * @deprecated このメソッドは非推奨です。代わりに`show`メソッドを使用してください。
69
60
  */
@@ -77,4 +68,11 @@ export class Overlay {
77
68
  this.hide();
78
69
  }
79
70
  }
71
+ let cachedLoadingOverlay = null;
72
+ export const getLoadingOverlay = () => {
73
+ if (cachedLoadingOverlay === null) {
74
+ cachedLoadingOverlay = new Overlay();
75
+ }
76
+ return cachedLoadingOverlay;
77
+ };
80
78
  //# sourceMappingURL=overlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IACC,KAAK,CAAiB;IACtB,OAAO,CAAS;IACzB,MAAM,CAAU;IAChB,oBAAoB,CAAU;IAExC;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,CAAC;IAED,2CAA2C;IACnC,YAAY,CAAC,KAAwB;QAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IAEO,SAAS;QACf,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,WAAW,GAAG;SACf,IAAI,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;KAuBhB,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,MAAM,OAAO,OAAO;IACC,KAAK,CAAiB;IAC/B,MAAM,CAAU;IAChB,oBAAoB,CAAU;IAExC;QACE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAES,MAAM;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,CAAC;IAED,2CAA2C;IACnC,YAAY,CAAC,KAAwB;QAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IACzB,CAAC;IAEO,SAAS,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsBtB,CAAC;IAEF;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IACD;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAED,IAAI,oBAAoB,GAAmB,IAAI,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAY,EAAE;IAC7C,IAAI,oBAAoB,KAAK,IAAI,EAAE;QACjC,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;KACtC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konomi-app/ui",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "types": "dist/index.d.ts",
5
5
  "main": "dist/index.js",
6
6
  "author": "adachi",