amotify 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/package.json +1 -1
  2. package/public/amotify.js +1 -0
  3. package/public/amotify.min.css +24 -0
  4. package/dist/src/@jsminAmotifyExtension/_.d.ts +0 -4
  5. package/dist/src/@jsminAmotifyExtension/fetch.d.ts +0 -9
  6. package/dist/src/@jsminAmotifyExtension/formCollect.d.ts +0 -1
  7. package/dist/src/@jsminAmotifyExtension/spreadSheet.d.ts +0 -4
  8. package/dist/src/@jsminAmotifyExtension/variables.d.ts +0 -0
  9. package/dist/src/@types/_.d.ts +0 -6
  10. package/dist/src/@types/amot.d.ts +0 -260
  11. package/dist/src/@types/fn.d.ts +0 -1040
  12. package/dist/src/@types/index.d.ts +0 -62
  13. package/dist/src/@types/jsminAmotifyExtension.d.ts +0 -134
  14. package/dist/src/@types/module.d.ts +0 -2
  15. package/dist/src/@types/state.d.ts +0 -145
  16. package/dist/src/Atoms/@export.d.ts +0 -4
  17. package/dist/src/Atoms/FAIcon/parts.d.ts +0 -2
  18. package/dist/src/Atoms/Logo/parts.d.ts +0 -1
  19. package/dist/src/Atoms/Various/parts.d.ts +0 -9
  20. package/dist/src/Functions/@export.d.ts +0 -12
  21. package/dist/src/Functions/Button/_.d.ts +0 -1
  22. package/dist/src/Functions/Cropper/parts.d.ts +0 -1
  23. package/dist/src/Functions/Effects/Fade.d.ts +0 -1
  24. package/dist/src/Functions/Effects/Ripple.d.ts +0 -1
  25. package/dist/src/Functions/Effects/_.d.ts +0 -3
  26. package/dist/src/Functions/Input/Chips/Selector.d.ts +0 -1
  27. package/dist/src/Functions/Input/Chips/_.d.ts +0 -2
  28. package/dist/src/Functions/Input/DigitCharacters.d.ts +0 -1
  29. package/dist/src/Functions/Input/File/_.d.ts +0 -2
  30. package/dist/src/Functions/Input/Hidden.d.ts +0 -1
  31. package/dist/src/Functions/Input/List/_.d.ts +0 -1
  32. package/dist/src/Functions/Input/Segmented/_.d.ts +0 -1
  33. package/dist/src/Functions/Input/Select/_.d.ts +0 -1
  34. package/dist/src/Functions/Input/Slider/_.d.ts +0 -1
  35. package/dist/src/Functions/Input/Switch/_.d.ts +0 -1
  36. package/dist/src/Functions/Input/Text.d.ts +0 -5
  37. package/dist/src/Functions/Input/TextArea.d.ts +0 -1
  38. package/dist/src/Functions/Input/Time/Picker.d.ts +0 -1
  39. package/dist/src/Functions/Input/Time/_.d.ts +0 -2
  40. package/dist/src/Functions/Input/_.d.ts +0 -5
  41. package/dist/src/Functions/Input/core.d.ts +0 -34
  42. package/dist/src/Functions/Inputs/_.d.ts +0 -3
  43. package/dist/src/Functions/Inputs/text.d.ts +0 -12
  44. package/dist/src/Functions/Layout/PageNotFound.d.ts +0 -1
  45. package/dist/src/Functions/Layout/PageRouter.d.ts +0 -2
  46. package/dist/src/Functions/Layout/PageViewController/parts.d.ts +0 -1
  47. package/dist/src/Functions/Layout/Plate.d.ts +0 -1
  48. package/dist/src/Functions/Layout/RootViewController/parts.d.ts +0 -1
  49. package/dist/src/Functions/Layout/SwipeView/parts.d.ts +0 -2
  50. package/dist/src/Functions/Layout/TabBar.d.ts +0 -1
  51. package/dist/src/Functions/Layout/_.d.ts +0 -2
  52. package/dist/src/Functions/Loader/corner.d.ts +0 -1
  53. package/dist/src/Functions/Loader/mini.d.ts +0 -33
  54. package/dist/src/Functions/Loader/parts.d.ts +0 -3
  55. package/dist/src/Functions/Loader/top.d.ts +0 -1
  56. package/dist/src/Functions/Sheet/parts.d.ts +0 -2
  57. package/dist/src/Functions/SnackBar/parts.d.ts +0 -2
  58. package/dist/src/Functions/Table/Data/parts.d.ts +0 -3
  59. package/dist/src/Functions/Table/Drag/parts.d.ts +0 -1
  60. package/dist/src/Functions/Table/Normal/parts.d.ts +0 -1
  61. package/dist/src/Functions/Table/_.d.ts +0 -9
  62. package/dist/src/Functions/Tooltips/parts.d.ts +0 -2
  63. package/dist/src/Global/@export.d.ts +0 -12
  64. package/dist/src/Global/LaunchReactApplication.d.ts +0 -1
  65. package/dist/src/Global/styleConverter.d.ts +0 -2
  66. package/dist/src/Molecules/@export.d.ts +0 -21
  67. package/dist/src/Molecules/Accordion/parts.d.ts +0 -2
  68. package/dist/src/Molecules/LinkifyText/parts.d.ts +0 -1
  69. package/dist/src/Molecules/List.d.ts +0 -1
  70. package/dist/src/Organisms/@export.d.ts +0 -2
  71. package/dist/src/Organisms/DisplayStyleInput/_.d.ts +0 -1
  72. package/dist/src/Organisms/DisplayStyleInput/darkmode.d.ts +0 -1
  73. package/dist/src/Organisms/DisplayStyleInput/themeColor.d.ts +0 -27
  74. package/dist/src/Templates/@export.d.ts +0 -2
  75. package/dist/src/Templates/PlayGround/parts.d.ts +0 -1
  76. package/dist/src/config.d.ts +0 -16
  77. package/dist/src/launch.d.ts +0 -9
  78. package/dist/src/preload.d.ts +0 -1
  79. package/src/@jsminAmotifyExtension/_.tsx +0 -4
  80. package/src/@jsminAmotifyExtension/fetch.tsx +0 -107
  81. package/src/@jsminAmotifyExtension/formCollect.tsx +0 -89
  82. package/src/@jsminAmotifyExtension/spreadSheet.tsx +0 -159
  83. package/src/@jsminAmotifyExtension/variables.tsx +0 -130
  84. package/src/@styles/@app.scss +0 -4
  85. package/src/@styles/@variables/customProps.scss +0 -109
  86. package/src/@styles/@variables/styleSet.scss +0 -38
  87. package/src/@styles/@variables/themeColor.scss +0 -71
  88. package/src/@styles/@variables/var.scss +0 -171
  89. package/src/@styles/UniStyling.scss +0 -996
  90. package/src/@styles/init.scss +0 -154
  91. package/src/@types/_.tsx +0 -6
  92. package/src/@types/amot.tsx +0 -323
  93. package/src/@types/fn.tsx +0 -1210
  94. package/src/@types/index.tsx +0 -74
  95. package/src/@types/jsminAmotifyExtension.tsx +0 -143
  96. package/src/@types/module.tsx +0 -2
  97. package/src/@types/state.tsx +0 -199
  98. package/src/Atoms/@export.tsx +0 -32
  99. package/src/Atoms/FAIcon/parts.tsx +0 -117
  100. package/src/Atoms/FAIcon/style.module.scss +0 -9
  101. package/src/Atoms/Logo/parts.tsx +0 -335
  102. package/src/Atoms/Logo/style.module.scss +0 -96
  103. package/src/Atoms/Various/parts.tsx +0 -157
  104. package/src/Atoms/Various/style.module.scss +0 -40
  105. package/src/Functions/@export.tsx +0 -29
  106. package/src/Functions/Button/_.tsx +0 -305
  107. package/src/Functions/Button/style.module.scss +0 -183
  108. package/src/Functions/Cropper/parts.tsx +0 -1061
  109. package/src/Functions/Cropper/style.module.scss +0 -62
  110. package/src/Functions/Effects/Fade.tsx +0 -81
  111. package/src/Functions/Effects/Ripple.tsx +0 -141
  112. package/src/Functions/Effects/_.tsx +0 -33
  113. package/src/Functions/Effects/style.module.scss +0 -83
  114. package/src/Functions/Input/Chips/Selector.tsx +0 -451
  115. package/src/Functions/Input/Chips/_.tsx +0 -286
  116. package/src/Functions/Input/Chips/style.module.scss +0 -6
  117. package/src/Functions/Input/DigitCharacters.tsx +0 -241
  118. package/src/Functions/Input/File/_.tsx +0 -596
  119. package/src/Functions/Input/File/style.module.scss +0 -34
  120. package/src/Functions/Input/Hidden.tsx +0 -18
  121. package/src/Functions/Input/List/_.tsx +0 -383
  122. package/src/Functions/Input/List/style.module.scss +0 -84
  123. package/src/Functions/Input/Segmented/_.tsx +0 -238
  124. package/src/Functions/Input/Segmented/style.module.scss +0 -81
  125. package/src/Functions/Input/Select/_.tsx +0 -225
  126. package/src/Functions/Input/Select/style.module.scss +0 -10
  127. package/src/Functions/Input/Slider/_.tsx +0 -519
  128. package/src/Functions/Input/Slider/style.module.scss +0 -67
  129. package/src/Functions/Input/Switch/_.tsx +0 -177
  130. package/src/Functions/Input/Switch/style.module.scss +0 -18
  131. package/src/Functions/Input/Text.tsx +0 -437
  132. package/src/Functions/Input/TextArea.tsx +0 -115
  133. package/src/Functions/Input/Time/Picker.tsx +0 -950
  134. package/src/Functions/Input/Time/_.tsx +0 -736
  135. package/src/Functions/Input/Time/style.module.scss +0 -72
  136. package/src/Functions/Input/_.tsx +0 -793
  137. package/src/Functions/Input/core.tsx +0 -461
  138. package/src/Functions/Input/style.module.scss +0 -43
  139. package/src/Functions/Inputs/_.tsx +0 -5
  140. package/src/Functions/Inputs/style.module.scss +0 -15
  141. package/src/Functions/Inputs/text.tsx +0 -67
  142. package/src/Functions/Inputs/types.d.ts +0 -1
  143. package/src/Functions/Layout/PageNotFound.tsx +0 -81
  144. package/src/Functions/Layout/PageRouter.tsx +0 -107
  145. package/src/Functions/Layout/PageViewController/parts.tsx +0 -32
  146. package/src/Functions/Layout/Plate.tsx +0 -30
  147. package/src/Functions/Layout/RootViewController/parts.tsx +0 -290
  148. package/src/Functions/Layout/RootViewController/style.module.scss +0 -24
  149. package/src/Functions/Layout/SwipeView/parts.tsx +0 -380
  150. package/src/Functions/Layout/SwipeView/style.module.scss +0 -19
  151. package/src/Functions/Layout/TabBar.tsx +0 -64
  152. package/src/Functions/Layout/_.tsx +0 -20
  153. package/src/Functions/Loader/corner.tsx +0 -78
  154. package/src/Functions/Loader/mini.tsx +0 -117
  155. package/src/Functions/Loader/parts.tsx +0 -105
  156. package/src/Functions/Loader/style.module.scss +0 -222
  157. package/src/Functions/Loader/top.tsx +0 -90
  158. package/src/Functions/Sheet/parts.tsx +0 -972
  159. package/src/Functions/Sheet/style.module.scss +0 -235
  160. package/src/Functions/SnackBar/parts.tsx +0 -215
  161. package/src/Functions/SnackBar/style.module.scss +0 -25
  162. package/src/Functions/Table/Data/parts.tsx +0 -955
  163. package/src/Functions/Table/Drag/parts.tsx +0 -448
  164. package/src/Functions/Table/Normal/parts.tsx +0 -123
  165. package/src/Functions/Table/_.tsx +0 -170
  166. package/src/Functions/Table/style.module.scss +0 -92
  167. package/src/Functions/Tooltips/parts.tsx +0 -52
  168. package/src/Global/@export.tsx +0 -138
  169. package/src/Global/LaunchReactApplication.tsx +0 -30
  170. package/src/Global/exe.tsx +0 -0
  171. package/src/Global/styleConverter.tsx +0 -435
  172. package/src/Molecules/@export.tsx +0 -95
  173. package/src/Molecules/Accordion/parts.tsx +0 -146
  174. package/src/Molecules/Accordion/style.module.scss +0 -13
  175. package/src/Molecules/LinkifyText/parts.tsx +0 -54
  176. package/src/Molecules/List.tsx +0 -30
  177. package/src/Organisms/@export.tsx +0 -5
  178. package/src/Organisms/DisplayStyleInput/_.tsx +0 -18
  179. package/src/Organisms/DisplayStyleInput/darkmode.tsx +0 -112
  180. package/src/Organisms/DisplayStyleInput/themeColor.tsx +0 -210
  181. package/src/Templates/@export.tsx +0 -7
  182. package/src/Templates/PlayGround/parts.tsx +0 -115
  183. package/src/Templates/PlayGround/style.module.scss +0 -38
  184. package/src/config.tsx +0 -132
  185. package/src/launch.tsx +0 -100
  186. package/src/preload.tsx +0 -49
@@ -1,972 +0,0 @@
1
- import {
2
- LaunchReactApplication,
3
- useStore
4
- } from '@global';
5
- import {
6
- Img,
7
- Box,
8
- Flex,
9
- FAIcon
10
- } from '@atoms';
11
- import {
12
- Column,
13
- Row,
14
- Text
15
- } from '@mols';
16
- import {
17
- Buttons,
18
- Input,
19
- Layout
20
- } from '@functions';
21
- const {
22
- useEffect,
23
- useState,
24
- } = React;
25
-
26
- import style from './style.module.scss';
27
-
28
- type Params = amotify.fn.Sheet.Params & {
29
- type: amotify.fn.Sheet.SheetTypes
30
- }
31
-
32
- const Comps = {
33
- contents: {} as {
34
- [ key: string ]: {
35
- open: boolean
36
- holdState: boolean
37
- params: Params
38
- created_at: Time.Method
39
- }
40
- },
41
- Launch: function ( params: Params ) {
42
- params = {
43
- sheetID: $.uuidGen(),
44
- sheetGroups: params.sheetGroups || [],
45
- overwrap: params.type == 'custom' ? true : false,
46
- holdState: false,
47
- ...params,
48
- closeOption: {
49
- pageTransit: true,
50
- escapeKeyDown: true,
51
- aroundClick: false,
52
- ...params.closeOption
53
- },
54
- }
55
-
56
- if ( this.contents[ params.sheetID! ] ) {
57
- /** open Exist Sheet */
58
- let component = useStore.get( params.sheetID! );
59
- if ( component && component.refresh ) component.refresh( params,true );
60
- return;
61
- }
62
- /** create Sheet */
63
- let Content = <Comps.Core { ...params } />
64
-
65
- this.contents[ params.sheetID! ] = {
66
- open: true,
67
- holdState: !!params.holdState,
68
- params: params,
69
- created_at: $.Time()
70
- }
71
-
72
- $( '#SHEET' )
73
- .append( `<div id="Sheet-${ params.sheetID }"></div>` )
74
- .callback( () => {
75
- LaunchReactApplication( {
76
- baseElement: '#Sheet-' + params.sheetID,
77
- reactElement: Content,
78
- } );
79
- } );
80
- },
81
- mainSheetScrolls: 0,
82
- subSheetLength: 0,
83
- Core: ( params: Params ) => {
84
- let [ val_componentID ] = useState( $.uuidGen() );
85
- let [ val_params,set_params ] = useState( params );
86
- let [ val_open,set_open ] = useState( true );
87
-
88
- let {
89
- type,
90
- sheetID,
91
- openAfter,
92
- closeAfter
93
- } = val_params;
94
-
95
- let isNewSheet = !params.overwrap;
96
-
97
- let ContentFC: any = Comps.Types[ {
98
- 'normal.topLeft': 'Normal',
99
- 'normal.topCenter': 'Normal',
100
- 'normal.topRight': 'Normal',
101
- 'normal.middleLeft': 'Normal',
102
- 'normal.middleCenter': 'Normal',
103
- 'normal.middleRight': 'Normal',
104
- 'normal.bottomLeft': 'Normal',
105
- 'normal.bottomCenter': 'Normal',
106
- 'normal.bottomRight': 'Normal',
107
- 'image': 'Normal',
108
-
109
- 'drawer.left': 'Edge',
110
- 'drawer.right': 'Edge',
111
- 'drawer.bottom': 'Bottom',
112
-
113
- 'custom': 'Custom',
114
- }[ type ] as 'Normal' ];
115
-
116
- useEffect( () => {
117
- useStore.set( {
118
- key: sheetID!,
119
- value: {
120
- refresh: ( params: Params,open?: boolean ) => {
121
- set_params( params );
122
- set_open( open ?? false );
123
- },
124
- resize: ( size: string ) => {
125
- if ( type == 'drawer.bottom' ) {
126
- let component = useStore.get( val_componentID );
127
- if ( component && component.resize ) component.resize( size );
128
- } else if (
129
- val_params.type.includes( 'normal' ) ||
130
- val_params.type.includes( 'drawer' )
131
- ) {
132
- set_params( {
133
- ...val_params,
134
- size: size
135
- } as any );
136
- }
137
- },
138
- close: () => {
139
- Comps.contents[ sheetID! ].open = false;
140
-
141
- set_open( false );
142
- },
143
- open: () => {
144
- Comps.contents[ sheetID! ].open = true;
145
-
146
- set_open( true );
147
- }
148
- }
149
- } );
150
- } );
151
- useEffect( () => {
152
- let {
153
- closeOption
154
- } = params;
155
-
156
- $.fnScope( () => {
157
- if ( !closeOption?.elementBlur ) return;
158
- let element = $( closeOption.elementBlur );
159
- if ( !element[ 0 ] ) return;
160
- $( element ).addEvent( {
161
- eventID: 'SheetClosation-' + sheetID!,
162
- eventType: 'mouseout',
163
- callback: () => {
164
- Sheet.close( sheetID! );
165
-
166
- $().removeEvent( 'SheetClosation-' + sheetID! );
167
- }
168
- } );
169
- } );
170
- },[] );
171
- useEffect( () => {
172
- $.fnScope( () => {
173
- // #ROOT
174
- if ( !isNewSheet ) return;
175
-
176
- Comps.subSheetLength = Comps.subSheetLength + ( val_open ? 1 : -1 );
177
- if ( val_open ) {
178
- let html = $( 'html' );
179
-
180
- if ( Comps.subSheetLength == 1 ) {
181
- let scroll = html[ 0 ].scrollTop;
182
- Comps.mainSheetScrolls = scroll;
183
- }
184
- if ( !amotify.config.device.isBreakpoint() ) {
185
- html
186
- .abort()
187
- .addClass( style.FixHeight )
188
- .callback( () => {
189
- $( '#ROOT' )[ 0 ].scrollTop = Comps.mainSheetScrolls;
190
- } )
191
- .addClass( [
192
- style.FloatMainSheet,
193
- style[ 'Type_' + type ]
194
- ] )
195
- [ 0 ].scrollTop = 0;
196
- }
197
- } else {
198
- if ( Comps.subSheetLength != 0 ) return;
199
- if ( amotify.config.device.isBreakpoint() ) return;
200
- let html = $( 'html' );
201
- html
202
- .abort()
203
- .removeClass( style.FloatMainSheet )
204
- .await( 251 )
205
- .removeClass( style.FixHeight )
206
- .callback( ( html ) => {
207
- html[ 0 ].scrollTop = Comps.mainSheetScrolls | 0;
208
- $( '#ROOT' )[ 0 ].scrollTop = 0;
209
- } );
210
- }
211
- } );
212
- $.fnScope( () => {
213
- if ( val_open ) {
214
- $( '#' + val_componentID )
215
- .abort()
216
- .await( 10 )
217
- .removeClass( style.Hide )
218
- .await( 10 )
219
- .addClass( style.Open )
220
- .callback( () => {
221
- if ( openAfter ) openAfter();
222
- } )
223
- } else {
224
- $( '#' + val_componentID )
225
- .abort()
226
- .await( 10 )
227
- .removeClass( style.Open )
228
- .await( 251 )
229
- .addClass( style.Hide )
230
- .callback( () => {
231
- !closeAfter || closeAfter();
232
- params.holdState || $.fnScope( () => {
233
- delete Comps.contents[ sheetID! ];
234
- $( '#Sheet-' + sheetID ).remove();
235
- $().removeEvent( 'SheetClosation-' + sheetID! );
236
- } );
237
- } );
238
- }
239
- } );
240
- },[ val_open ] );
241
-
242
- let [ Tcate,Tpos ] = type.split( '.' );
243
-
244
- return ( <Box
245
- className={ [
246
- style.Wrap,
247
- style[ 'Tcate_' + Tcate ],
248
- style[ 'Tpos_' + Tpos ],
249
- style[ 'isNewSheet_' + isNewSheet ],
250
- ].join( ' ' ) }
251
- width={ 1 }
252
- height={ 0 }
253
- ssAbsoluteCovered
254
- freeCSS={ {
255
- zIndex: Object.keys( Comps.contents ).length + 1
256
- } }
257
- id={ val_componentID }
258
- >
259
- <Column
260
- className={ style.Content }
261
- gap={ 0 }
262
- height={ 'viewHeight' }
263
- overflow={ 'auto' }
264
- transition='middle'
265
- >
266
- { isNewSheet ? <Comps.TapSensor
267
- sheetID={ sheetID! }
268
- delegateAroundClick={ params.closeOption?.aroundClick }
269
- /> : null }
270
- <ContentFC
271
- componentID={ val_componentID }
272
- { ...val_params }
273
- />
274
- </Column>
275
- </Box> );
276
- },
277
- Types: {
278
- Normal: ( params: amotify.fn.Sheet.NormalParams ) => {
279
- let {
280
- sheetID,
281
- content: Content,
282
- className = '',
283
- type,
284
- size = 'R',
285
- freeCSS,
286
- ...styles
287
- } = params;
288
- let [ Tcate,Tpos ] = type.split( '.' );
289
-
290
- let SysStyles: amotifyUniStyleParams = {}
291
- let transformOrigins: string[] = [];
292
-
293
- if ( Tpos.match( /top/ ) ) {
294
- transformOrigins.push( 'top' );
295
-
296
- SysStyles.marginBottom = 'auto';
297
- } else if ( Tpos.match( /middle/ ) ) {
298
- transformOrigins.push( 'center' );
299
-
300
- SysStyles.marginTop = 'auto';
301
- SysStyles.marginBottom = 'auto';
302
- } else if ( Tpos.match( /bottom/ ) ) {
303
- transformOrigins.push( 'bottom' );
304
-
305
- SysStyles.marginTop = 'auto';
306
- }
307
-
308
- if ( Tpos.match( /left/i ) ) {
309
- transformOrigins.push( 'left' );
310
-
311
- SysStyles.marginRight = 'auto';
312
- } else if ( Tpos.match( /center/i ) ) {
313
- transformOrigins.push( 'center' );
314
-
315
- SysStyles.marginLeft = 'auto';
316
- SysStyles.marginRight = 'auto';
317
- } else if ( Tpos.match( /right/i ) ) {
318
- transformOrigins.push( 'right' );
319
-
320
- SysStyles.marginLeft = 'auto';
321
- }
322
-
323
- return ( <Box
324
- className={ [
325
- style.BB,
326
- className
327
- ].join( ' ' ) }
328
-
329
- transition='long'
330
- opacity='trans'
331
- { ...SysStyles }
332
- { ...styles }
333
- freeCSS={ {
334
- width: {
335
- 'S': '26rem',
336
- 'R': '36rem',
337
- 'L': '44rem',
338
- '2L': '60rem',
339
- '3L': '72rem',
340
- 'MAX': '95vw'
341
- }[ size ],
342
- maxWidth: '96vw',
343
- transformOrigin: transformOrigins.join( ' ' ),
344
- ...freeCSS
345
- } }
346
- children={ $.is.function( Content ) ? <Content /> : Content }
347
- /> );
348
- },
349
- Edge: ( params: amotify.fn.Sheet.NormalParams ) => {
350
- let {
351
- sheetID,
352
- type,
353
- content: Content,
354
- className = '',
355
- size = 'R',
356
- freeCSS,
357
- ...styles
358
- } = params;
359
-
360
- return ( <Box
361
- opacity='trans'
362
- transition='long'
363
- position='relative'
364
- backgroundColor={ '1.layer.base' }
365
- flexSizing={ 'none' }
366
- minHeight={ 'viewHeight' }
367
- boxShadow={ 3 }
368
- className={ [
369
- style.BB,
370
- className
371
- ].join( ' ' ) }
372
- { ...type == 'drawer.right' ? {
373
- marginLeft: 'auto'
374
- } : type == 'drawer.left' ? {
375
- marginRight: 'auto'
376
- } : {} }
377
- { ...styles }
378
- freeCSS={ {
379
- width: {
380
- 'S': '20rem',
381
- 'R': '27rem',
382
- 'L': '32rem',
383
- '2L': '40rem',
384
- '3L': '58rem',
385
- 'MAX': '95vw'
386
- }[ size ],
387
- ...freeCSS
388
- } }
389
- children={ $.is.function( Content ) ? <Content /> : Content }
390
- /> );
391
- },
392
- Bottom: ( params: amotify.fn.Sheet.Bottom.Params ) => {
393
- let {
394
- componentID,
395
- sheetID,
396
- content: Content,
397
- size = 'R',
398
- sizeChanged,
399
- baseStyles,
400
- closeOption: {
401
- swipeDown = true,
402
- } = {},
403
- ...styles
404
- } = params;
405
- let screen = $.getScreenSize();
406
-
407
- let sizeArray = [ 0,.2,.6,.95 ];
408
- let SizeSets = {
409
- 'ZERO': 0,
410
- 'S': 1,
411
- 'R': 2,
412
- 'L': 3
413
- }
414
-
415
- let [ val_stableSize,set_stableSize ] = useState( size as any );
416
- let [ val_edit,set_edit ] = useState( {
417
- process: false,
418
- processStart: 0,
419
- originY: 0,
420
- originValue: 0,
421
- viewHeight: 0,
422
- value: sizeArray[ SizeSets[ size ] ]
423
- } );
424
-
425
- useStore.update( {
426
- key: componentID!,
427
- value: {
428
- val_edit,
429
- resize: ( size: amotify.fn.Sheet.Bottom.Sizes ) => {
430
- let Size = sizeArray[ SizeSets[ size ] ];
431
- set_edit( {
432
- ...val_edit,
433
- value: Size
434
- } );
435
- set_stableSize( size );
436
- }
437
- }
438
- } );
439
-
440
- const Effects = {
441
- Start: ( event: any ) => {
442
- $( document )
443
- .addEvent( { eventID: 'BottomSheetMouseMove',eventType: 'mousemove',callback: Effects.Move } )
444
- .addEvent( { eventID: 'BottomSheetTouchMove',eventType: 'touchmove',callback: Effects.Move } )
445
- .addEvent( { eventID: 'BottomSheetMouseUp',eventType: 'mouseup',callback: Effects.End } )
446
- .addEvent( { eventID: 'BottomSheetTouchEnd',eventType: 'touchend',callback: Effects.End } );
447
-
448
- let cursor = $.getCursor( event );
449
- let newEditInfo = {
450
- ...val_edit,
451
- process: true,
452
- processStart: new Date().getTime(),
453
- originY: cursor.y,
454
- originValue: val_edit.value,
455
- viewHeight: $.getScreenSize().height,
456
- }
457
- useStore.update( {
458
- key: componentID!,
459
- value: {
460
- val_edit: newEditInfo
461
- }
462
- } );
463
- set_edit( newEditInfo );
464
- },
465
- Move: ( event: any ) => {
466
- let editInfo = useStore.get( componentID! )?.val_edit as typeof val_edit;
467
- if ( !editInfo.process ) return;
468
-
469
- let margin = $.getCursor( event ).y - editInfo.originY;
470
- let marginRate = margin / editInfo.viewHeight;
471
- let newRate = editInfo.originValue - marginRate;
472
-
473
- if ( newRate > .95 ) {
474
- let margin = newRate - .95;
475
- newRate = .95 + margin * .5;
476
- } else if ( newRate < .2 ) {
477
- let margin = .2 - newRate;
478
- margin -= .1;
479
- newRate = .1 + ( .1 - margin ) * .5;
480
- }
481
-
482
- set_edit( {
483
- ...editInfo,
484
- value: newRate
485
- } );
486
- },
487
- End: ( event: any ) => {
488
- let editInfo = useStore.get( componentID! )?.val_edit as typeof val_edit;
489
- if ( !editInfo.process ) return;
490
- $( document ).removeEvent( [
491
- 'BottomSheetMouseMove',
492
- 'BottomSheetTouchMove',
493
- 'BottomSheetMouseUp',
494
- 'BottomSheetTouchEnd'
495
- ] );
496
-
497
- let sizeIndex = 0;
498
- if ( editInfo.value < .1 ) {
499
- } else if ( editInfo.value < .5 ) {
500
- sizeIndex = 1;
501
- } else if ( editInfo.value > .75 ) {
502
- sizeIndex = 3;
503
- } else {
504
- sizeIndex = 2;
505
- }
506
-
507
- let ms = new Date().getTime() - editInfo.processStart;
508
- if ( ms < 300 ) {
509
- let margin = $.getCursor( event ).y - editInfo.originY;
510
- if ( Math.abs( margin ) >= 20 ) {
511
- let dir = Number( margin < 0 ) * 2 - 1;
512
- sizeIndex += dir;
513
- sizeIndex = Math.min( Math.max( sizeIndex,0 ),sizeArray.length - 1 );
514
- }
515
- }
516
-
517
- if ( sizeIndex == 0 ) {
518
- if ( !swipeDown ) sizeIndex = 1;
519
- }
520
- set_stableSize( [ 'ZERO','S','R','L' ][ sizeIndex ] as any );
521
- set_edit( {
522
- ...editInfo,
523
- value: sizeArray[ sizeIndex ],
524
- process: false
525
- } );
526
- }
527
- }
528
-
529
- const mounted = React.useRef( false );
530
- useEffect( () => {
531
- if ( mounted.current ) {
532
- if ( val_stableSize == 'ZERO' ) {
533
- if ( swipeDown ) Sheet.close( sheetID! );
534
- } else {
535
- setTimeout( () => {
536
- if ( params.sizeChanged ) params.sizeChanged( val_stableSize );
537
- },250 );
538
- }
539
- } else {
540
- mounted.current = true;
541
- }
542
- },[ val_stableSize ] );
543
-
544
- return ( <Box
545
- className={ style.BB }
546
- margin={ [ 0,'auto' ] }
547
- marginTop={ 'auto' }
548
- opacity='trans'
549
- width={ 1 }
550
- transition='long'
551
- freeCSS={ {
552
- maxWidth: 12 * 60,
553
- height: screen.height * val_edit.value,
554
- ...val_edit.process ? {
555
- transition: '0s'
556
- } : {},
557
- } }
558
- >
559
- <Column
560
- gap={ 0 }
561
- flexSizing={ 'none' }
562
- borderTopLeftRadius={ '1.tone.primary' }
563
- borderTopRightRadius={ '1.tone.primary' }
564
- border
565
- borderBottom='unset'
566
- boxShadow={ 3 }
567
- position='relative'
568
- overflow={ 'hidden' }
569
- height={ 1 }
570
- { ...baseStyles }
571
- >
572
- <Flex
573
- verticalAlign='center'
574
- flexChilds='even'
575
- padding={ '1/2' }
576
- backgroundColor='1.layer.base'
577
- position='relative'
578
- freeCSS={ {
579
- userSelect: 'none'
580
- } }
581
- >
582
- <Row.Center>
583
- <Box
584
- padding={ '2/3' }
585
- onMouseDown={ Effects.Start }
586
- onTouchStart={ Effects.Start }
587
- ssPushable
588
- isRounded
589
- freeCSS={ {
590
- cursor: 'grab',
591
- userSelect: 'none'
592
- } }
593
- >
594
- <Box
595
- unitWidth={ 6 }
596
- unitHeight={ '1/2' }
597
- backgroundColor='5.layer.darker'
598
- isRounded
599
- className={ style.DragBar }
600
- />
601
- </Box>
602
- </Row.Center>
603
- <Row.Right>
604
- <Buttons.Button.Sub.R
605
- color='cloud'
606
- ssSphere={ 2 }
607
- onClick={ () => {
608
- Sheet.close( sheetID! );
609
- } }
610
- >
611
- <FAIcon.Times />
612
- </Buttons.Button.Sub.R>
613
- </Row.Right>
614
- </Flex>
615
- <Box
616
- backgroundColor={ '1.layer.base' }
617
- flexSizing={ 0 }
618
- overflow={ 'auto' }
619
- { ...styles }
620
- children={ $.is.function( Content ) ? <Content /> : Content }
621
- />
622
- </Column>
623
- </Box> );
624
- },
625
- Custom: ( params: amotify.fn.Sheet.CustomParams ) => {
626
- let {
627
- sheetID,
628
- parent,
629
- gravityPoint: GPT = 22,
630
- content: Content,
631
- ...others
632
- } = params;
633
-
634
- let [ val_componentID ] = React.useState( $.uuidGen() );
635
- let Parent = $( parent );
636
- let Query = '[data-sheet-id="' + val_componentID + '"]';
637
- let ContentQuery = '[data-sheet-content="' + val_componentID + '"]';
638
-
639
- GPT = GPT!;
640
- let column = GPT % 5 || 5;
641
- let row = Math.ceil( GPT / 5 );
642
-
643
- const getWrapperCSS = () => {
644
- let WrapperCSS: React.CSSProperties = {}
645
- let { top,right,bottom,left,height,width } = Parent.position();
646
-
647
- if ( [ 1,2 ].includes( column ) ) {
648
- WrapperCSS.left = left;
649
- } else if ( column == 3 ) {
650
- WrapperCSS.left = left + width / 2;
651
- } else if ( [ 4,5 ].includes( column ) ) {
652
- WrapperCSS.left = right;
653
- }
654
-
655
- if ( GPT <= 10 ) {
656
- WrapperCSS.top = top;
657
- } else if ( GPT <= 15 ) {
658
- WrapperCSS.top = top + height / 2;
659
- } else if ( GPT <= 25 ) {
660
- WrapperCSS.top = bottom;
661
- }
662
- return WrapperCSS;
663
- }
664
- let [ val_Styles,set_Styles ] = React.useState( getWrapperCSS() );
665
- const AdjustExtrusion = () => {
666
- let ContentRect = $( ContentQuery ).position();
667
- let screen = $.getScreenSize();
668
-
669
- let newStyles = { ...val_Styles }
670
- if ( ContentRect.top < 0 ) {
671
- if ( ContentRect.height < screen.height ) {
672
- newStyles.top = ContentRect.top - ContentRect.top;
673
- }
674
- }
675
- if ( ContentRect.left < 0 ) {
676
- if ( ContentRect.width < screen.width ) {
677
- newStyles.left = ContentRect.left - ContentRect.left;
678
- }
679
- }
680
- if ( ContentRect.right > screen.width ) {
681
- if ( ContentRect.width < screen.width ) {
682
- let shift = ContentRect.right - screen.width;
683
- newStyles.left = ContentRect.left - shift;
684
- }
685
- }
686
- if ( ContentRect.bottom > screen.height ) {
687
- if ( ContentRect.height < screen.height ) {
688
- let shift = ContentRect.bottom - screen.height;
689
- newStyles.top = ContentRect.top - shift;
690
- }
691
- }
692
- return newStyles;
693
- }
694
-
695
- React.useEffect( () => {
696
- $( Query )
697
- .await( 10 )
698
- .addClass( style.Open )
699
- .await( 250 )
700
- .callback( () => {
701
- set_Styles( AdjustExtrusion() );
702
- } );
703
-
704
- useStore.update( {
705
- key: 'customSheet-' + params.sheetID!,
706
- value: {
707
- reposition: () => {
708
- setTimeout( () => {
709
- set_Styles( AdjustExtrusion() );
710
- },200 );
711
- }
712
- }
713
- } );
714
- },[] );
715
-
716
- if ( !Parent[ 0 ] ) return ( null );
717
-
718
- return ( <Box
719
- className={ [
720
- style.BB,
721
- style.CustomSheet
722
- ].join( ' ' ) }
723
- data-sheet-id={ val_componentID }
724
- transition='long'
725
- opacity='trans'
726
- position='absolute'
727
- width={ 0 }
728
- height={ 0 }
729
- flexCenter
730
- freeCSS={ val_Styles }
731
- >
732
- <Flex
733
- className={ [
734
- style.GPT,
735
- style[ 'GPT_' + GPT ],
736
- style[ 'Col_' + column ],
737
- style[ 'Row_' + row ],
738
- ].join( ' ' ) }
739
- position='absolute'
740
- >
741
- <Box
742
- flexSizing={ 'none' }
743
- data-sheet-content={ val_componentID }
744
- { ...others }
745
- children={ $.is.function( Content ) ? <Content /> : Content }
746
- />
747
- </Flex>
748
- </Box> );
749
- },
750
- },
751
- TapSensor: ( params: {
752
- sheetID: string
753
- delegateAroundClick?: boolean
754
- } ) => ( <Buttons.Button.Plain
755
- className={ style.TapSensor }
756
- onClick={ () => {
757
- if ( params.delegateAroundClick ?? false ) Sheet.close( params.sheetID );
758
- } }
759
- freeCSS={ {
760
- cursor: 'default'
761
- } }
762
- >
763
- <Box
764
- className={ style.TapContent }
765
- />
766
- </Buttons.Button.Plain> )
767
- }
768
-
769
- $( document )
770
- .addEvent( {
771
- eventType: 'keyup',
772
- callback: function ( event ) {
773
- let { key,metaKey } = event as any;
774
- if ( key == 'Escape' || key == ',' && metaKey ) {
775
- let OpenSheets = Object.values( Comps.contents ).filter( ( elm ) => elm.open );
776
- if ( !OpenSheets.length ) return;
777
- let latestSheet = OpenSheets.reduce( ( a,b ) => {
778
- return a.created_at.value > b.created_at.value ? a : b;
779
- } );
780
- Sheet.close( latestSheet.params.sheetID! );
781
- }
782
- }
783
- } )
784
- .addEvent( {
785
- eventType: 'click',
786
- callback: function ( event ) {
787
- let customSheets = Object.values( Comps.contents ).filter( ( elm ) => elm.params.type == 'custom' );
788
- if ( !customSheets.length ) return;
789
- let isParent = !!customSheets.find( ( customSheet ) => {
790
- let { params } = customSheet;
791
- let Parent = $( ( params as amotify.fn.Sheet.CustomParams ).parent );
792
- let Target = $( event.target );
793
- return Parent[ 0 ] == Target[ 0 ] || !!Parent.find( Target ).length;
794
- } );
795
- if ( isParent ) return;
796
- if ( event.target?.closest( '.' + style.CustomSheet ) ) return;
797
-
798
- customSheets.forEach( ( customSheets ) => {
799
- if ( !!customSheets.params.closeOption?.aroundClick ) {
800
- Sheet.close( customSheets.params.sheetID! );
801
- }
802
- } );
803
- }
804
- } );
805
-
806
- const Sheet: amotify.fn.Sheet.Methods = {
807
- open: ( params ) => {
808
- params.sheetID = ( params.sheetID || '' ).replace( /\./g,'-' );
809
- if ( params.type == 'image' ) {
810
- let {
811
- type,
812
- sheetID = $.uuidGen(),
813
- src,
814
- ...others
815
- } = params as amotify.fn.Sheet.ImageParams;
816
-
817
- Sheet.open( {
818
- type: 'normal.topCenter',
819
- sheetID: sheetID,
820
- backgroundColor: 'trans',
821
- boxShadow: 'none',
822
- ...others,
823
- closeOption: {
824
- ...params.closeOption,
825
- },
826
- freeCSS: {
827
- maxWidth: '96vw',
828
- transformOrigin: 'top'
829
- },
830
- content: () => {
831
- let [ val_image ] = useState( $.flatArray( src ) );
832
- let [ val_viewIndex,set_viewIndex ] = useState( 0 );
833
-
834
- let Radio: amotify.fn.Input.List.OptionParams[] = [];
835
- let Slides: ReactElement[] = [];
836
- val_image.forEach( ( src,index ) => {
837
- Radio.push( {
838
- value: index,
839
- label: <Img
840
- src={ $.flatArray( src )[ 0 ] }
841
- width={ 'auto' }
842
- height={ 1 }
843
- freeCSS={ {
844
- maxHeight: 12 * 3
845
- } }
846
- />
847
- } );
848
- Slides.push( <Img
849
- width={ 1 }
850
- height={ 'auto' }
851
- src={ $.flatArray( src )[ 0 ] }
852
- /> );
853
- } )
854
- return ( <Column
855
- gap={ 0 }
856
- >
857
- <Row.Separate
858
- gap={ 2 }
859
- padding={ 1 }
860
- backgroundColor='1.layer.base'
861
- borderTopLeftRadius={ '1.tone.primary' }
862
- borderTopRightRadius={ '1.tone.primary' }
863
- >
864
- <Input.Radio
865
- tone='border'
866
- icon={ false }
867
- value={ val_viewIndex }
868
- override='force'
869
- horizontalAlign='center'
870
- onUpdateValidValue={ ( { value } ) => {
871
- set_viewIndex( value[ 0 ] );
872
- } }
873
- cellStyles={ {
874
- borderWidth: 2,
875
- padding: '1/3'
876
- } }
877
- options={ Radio }
878
- />
879
- <Buttons.Button.Sub.R
880
- color='cloud'
881
- ssSphere={ 3 }
882
- fontSize={ '4.thirdTitle' }
883
- onClick={ () => {
884
- Sheet.close( sheetID! );
885
- } }
886
- >
887
- <FAIcon.Times />
888
- </Buttons.Button.Sub.R>
889
- </Row.Separate>
890
- <Layout.SwipeView
891
- slideIndex={ val_viewIndex }
892
- options={ {
893
- loop: val_image.length > 1,
894
- onSlideCallback: ( index ) => {
895
- set_viewIndex( index );
896
- }
897
- } }
898
- slides={ Slides }
899
- wrapper={ ( View ) => ( <Box
900
- borderBottomLeftRadius={ '1.tone.primary' }
901
- borderBottomRightRadius={ '1.tone.primary' }
902
- >
903
- { View }
904
- </Box> ) }
905
- />
906
- </Column> );
907
- },
908
- } );
909
- return;
910
- }
911
- Comps.Launch( params );
912
- },
913
- refresh: ( params,open ) => {
914
- params.sheetID = ( params.sheetID || '' ).replace( /\./g,'-' );
915
-
916
- let component = useStore.get( params.sheetID! );
917
- if ( component && component.refresh ) component.refresh( params,open );
918
- },
919
- resize: ( params ) => {
920
- params.sheetID = ( params.sheetID || '' ).replace( /\./g,'-' );
921
- let component = useStore.get( params.sheetID! );
922
- if ( component && component.resize ) component.resize( params.size );
923
- },
924
- reposition: ( sheetID ) => {
925
- let Comps = useStore.get( 'customSheet-' + sheetID );
926
- if ( Comps && Comps.reposition ) Comps.reposition();
927
- },
928
- close: function ( sheetID,et ) {
929
- let Content;
930
- sheetID = sheetID?.replace( /\./g,'-' );
931
- Content = Comps.contents[ sheetID ];
932
-
933
- if ( !Content ) return;
934
- if ( et == 'escape' && !Content.params.closeOption?.escapeKeyDown ) return;
935
-
936
- {
937
- let { params } = Content;
938
- let { sheetID } = params;
939
-
940
- let component = useStore.get( sheetID! );
941
- if ( component && component.close ) component.close();
942
- }
943
- },
944
- closeGroup: ( sheetGroup ) => {
945
- sheetGroup = ( sheetGroup || '' ).replace( /\./g,'-' );
946
-
947
- for ( let [ key,value ] of Object.entries( Comps.contents ) ) {
948
- if ( value.params.sheetGroups?.includes( sheetGroup ) ) Sheet.close( key );
949
- }
950
- },
951
- closeAll: ( pageTransit ) => {
952
- for ( let [ key,value ] of Object.entries( Comps.contents ) ) {
953
- if ( pageTransit ) {
954
- if ( value.params.closeOption?.pageTransit == false ) continue;
955
- }
956
- Sheet.close( key,'pageTransit' );
957
- }
958
- },
959
- Comps: {
960
- Body: ( params ) => ( <Box
961
- className={ style.BaseBody }
962
- backgroundColor='1.layer.base'
963
- borderRadius={ '1.tone.primary' }
964
- position='relative'
965
- boxShadow={ 3 }
966
- transition='long'
967
- { ...params }
968
- /> ),
969
- }
970
- }
971
-
972
- export { Sheet }