@panneau/core 4.1.1 → 5.0.0-alpha.1

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 (75) hide show
  1. package/README.md +83 -0
  2. package/dist/definition/abilities.d.ts +21 -0
  3. package/dist/definition/abilities.d.ts.map +1 -0
  4. package/dist/definition/abilities.js +47 -0
  5. package/dist/definition/abilities.js.map +1 -0
  6. package/dist/definition/form.d.ts +31 -0
  7. package/dist/definition/form.d.ts.map +1 -0
  8. package/dist/definition/form.js +54 -0
  9. package/dist/definition/form.js.map +1 -0
  10. package/dist/definition/list.d.ts +44 -0
  11. package/dist/definition/list.d.ts.map +1 -0
  12. package/dist/definition/list.js +70 -0
  13. package/dist/definition/list.js.map +1 -0
  14. package/dist/definition/resource.d.ts +21 -0
  15. package/dist/definition/resource.d.ts.map +1 -0
  16. package/dist/definition/resource.js +24 -0
  17. package/dist/definition/resource.js.map +1 -0
  18. package/dist/form/form.d.ts +148 -0
  19. package/dist/form/form.d.ts.map +1 -0
  20. package/dist/form/form.js +239 -0
  21. package/dist/form/form.js.map +1 -0
  22. package/dist/form/messages.d.ts +7 -0
  23. package/dist/form/messages.d.ts.map +1 -0
  24. package/dist/form/messages.js +25 -0
  25. package/dist/form/messages.js.map +1 -0
  26. package/dist/form/problem.d.ts +16 -0
  27. package/dist/form/problem.d.ts.map +1 -0
  28. package/dist/form/problem.js +34 -0
  29. package/dist/form/problem.js.map +1 -0
  30. package/dist/form/selectors.d.ts +16 -0
  31. package/dist/form/selectors.d.ts.map +1 -0
  32. package/dist/form/selectors.js +27 -0
  33. package/dist/form/selectors.js.map +1 -0
  34. package/dist/form/store.d.ts +19 -0
  35. package/dist/form/store.d.ts.map +1 -0
  36. package/dist/form/store.js +29 -0
  37. package/dist/form/store.js.map +1 -0
  38. package/dist/index.d.ts +17 -692
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +17 -536
  41. package/dist/list/list.d.ts +68 -0
  42. package/dist/list/list.d.ts.map +1 -0
  43. package/dist/list/list.js +191 -0
  44. package/dist/list/list.js.map +1 -0
  45. package/dist/list/router.d.ts +26 -0
  46. package/dist/list/router.d.ts.map +1 -0
  47. package/dist/list/router.js +54 -0
  48. package/dist/list/router.js.map +1 -0
  49. package/dist/plugins.d.ts +73 -0
  50. package/dist/plugins.d.ts.map +1 -0
  51. package/dist/plugins.js +54 -0
  52. package/dist/plugins.js.map +1 -0
  53. package/dist/react/provider.d.ts +38 -0
  54. package/dist/react/provider.d.ts.map +1 -0
  55. package/dist/react/provider.js +63 -0
  56. package/dist/react/provider.js.map +1 -0
  57. package/dist/react/useForm.d.ts +26 -0
  58. package/dist/react/useForm.d.ts.map +1 -0
  59. package/dist/react/useForm.js +115 -0
  60. package/dist/react/useForm.js.map +1 -0
  61. package/dist/react/useList.d.ts +11 -0
  62. package/dist/react/useList.d.ts.map +1 -0
  63. package/dist/react/useList.js +47 -0
  64. package/dist/react/useList.js.map +1 -0
  65. package/dist/values.d.ts +12 -0
  66. package/dist/values.d.ts.map +1 -0
  67. package/dist/values.js +44 -0
  68. package/dist/values.js.map +1 -0
  69. package/package.json +19 -81
  70. package/dist/contexts.d.ts +0 -667
  71. package/dist/contexts.js +0 -1772
  72. package/dist/hooks.d.ts +0 -512
  73. package/dist/hooks.js +0 -2146
  74. package/dist/utils.d.ts +0 -457
  75. package/dist/utils.js +0 -557
package/dist/hooks.d.ts DELETED
@@ -1,512 +0,0 @@
1
- import { Dayjs } from 'dayjs';
2
- import { ReactNode, ComponentProps, ElementType, SyntheticEvent, RefObject } from 'react';
3
- import { MessageDescriptor, FormattedMessage } from 'react-intl';
4
-
5
- interface UseAnimationFrameOptions {
6
- disabled?: boolean;
7
- }
8
- declare function useAnimationFrame(onFrame: (progress: number) => void, { disabled }?: UseAnimationFrameOptions): void;
9
-
10
- interface UseFormattedDateOptions {
11
- format?: Intl.DateTimeFormatOptions | null;
12
- showToday?: boolean;
13
- }
14
- interface UseFormattedTimeOptions {
15
- format?: Intl.DateTimeFormatOptions | null;
16
- showNow?: boolean;
17
- timeGap?: number;
18
- }
19
- declare function useFormattedDate({ format, showToday, }?: UseFormattedDateOptions): (date: string | Date | Dayjs) => string;
20
- declare function useFormattedTime({ format, showNow, timeGap, }?: UseFormattedTimeOptions): (date: string | Date | Dayjs) => string;
21
-
22
- declare const useDocumentEvent: (event: string, callback: (...args: unknown[]) => void, enabled?: boolean) => void;
23
-
24
- /**
25
- * Core UI Types
26
- */
27
-
28
- /**
29
- * Internationalization message definition
30
- */
31
- type Message = MessageDescriptor;
32
- /**
33
- * Values that can be interpolated in an internationalization message
34
- * (the `values` prop of FormattedMessage)
35
- */
36
- type MessageValues = NonNullable<ComponentProps<typeof FormattedMessage>['values']>;
37
- type MessageValue = MessageValues[string];
38
- /**
39
- * Label can be either a message object or any React node
40
- */
41
- type Label = Message | ReactNode;
42
- /**
43
- * Form control size
44
- */
45
- type ControlSize = 'lg' | 'sm' | null;
46
- interface RouteDefinition {
47
- path?: string;
48
- route?: string;
49
- component: string | ElementType;
50
- [key: string]: unknown;
51
- }
52
- interface PageDefinition {
53
- component: string | ElementType;
54
- }
55
-
56
- /**
57
- * Form Types
58
- * TypeScript interfaces for form-related components
59
- */
60
-
61
- /**
62
- * Field definition
63
- */
64
- interface Field$1 {
65
- name?: string;
66
- type?: string;
67
- label?: Label;
68
- component?: string;
69
- size?: ControlSize;
70
- [key: string]: unknown;
71
- }
72
- /**
73
- * Form definition
74
- */
75
- interface Form {
76
- title?: ReactNode;
77
- fields?: Field$1[];
78
- method?: string | null;
79
- action?: string | null;
80
- submitButtonLabel?: Label | null;
81
- [key: string]: unknown;
82
- }
83
-
84
- /**
85
- * Resource Types
86
- * TypeScript interfaces for resources, items, users, media, and other entities
87
- */
88
-
89
- /**
90
- * Table column definition
91
- */
92
- type TableColumn = string | Column;
93
- interface Column extends Record<string, unknown> {
94
- id?: string | null;
95
- name?: string | null;
96
- label?: unknown;
97
- path?: string;
98
- valueKey?: string;
99
- component?: string | ElementType | null;
100
- field?: Field$1 | string | null;
101
- actions?: ActionDefinition[] | null;
102
- }
103
- interface Action {
104
- id?: string;
105
- component?: string;
106
- label?: string | null;
107
- icon?: string | null;
108
- href?: string | null;
109
- external?: boolean;
110
- theme?: string;
111
- target?: string;
112
- onClick?: (() => void) | null;
113
- endpoint?: string | null;
114
- withoutConfirmation?: boolean;
115
- [key: string]: unknown;
116
- }
117
- type ActionDefinition = string | Action;
118
- interface ResourceIntlValues {
119
- a_singular?: string;
120
- a_plural?: string;
121
- [key: string]: MessageValue;
122
- }
123
- /**
124
- * Internationalization configuration
125
- */
126
- interface ResourceIntl {
127
- messages?: Record<string, string>;
128
- values?: ResourceIntlValues;
129
- }
130
- /**
131
- * Resource definition
132
- */
133
- interface ResourceIndex {
134
- filters?: Filter[];
135
- columns?: TableColumn[];
136
- actions?: ActionDefinition[];
137
- fields?: Field$1[];
138
- [key: string]: unknown;
139
- }
140
- /**
141
- * Overrides of the built-in resource pages, ex: `{ show: { component: 'my-page' } }`.
142
- * Used on a resource (`resource.pages`) and on the panneau definition (`definition.pages`),
143
- * the resource taking precedence.
144
- */
145
- interface ResourcePages {
146
- index?: PageDefinition;
147
- show?: PageDefinition;
148
- create?: PageDefinition;
149
- edit?: PageDefinition;
150
- delete?: PageDefinition;
151
- duplicate?: PageDefinition;
152
- /** @deprecated Legacy resource keys, use `index`, `show`, `create`, etc. */
153
- resourceIndexPage?: PageDefinition;
154
- resourceShowPage?: PageDefinition;
155
- resourceCreatePage?: PageDefinition;
156
- resourceEditPage?: PageDefinition;
157
- resourceDeletePage?: PageDefinition;
158
- resourceDuplicatePage?: PageDefinition;
159
- /** @deprecated Legacy panneau keys, use `index`, `show`, `create`, etc. */
160
- indexPage?: PageDefinition;
161
- showPage?: PageDefinition;
162
- createPage?: PageDefinition;
163
- editPage?: PageDefinition;
164
- deletePage?: PageDefinition;
165
- duplicatePage?: PageDefinition;
166
- [key: string]: PageDefinition | undefined;
167
- }
168
- /**
169
- * Form definition of a resource (the id is optional, the form is identified by its key)
170
- */
171
- interface ResourceForm extends Form {
172
- id?: string;
173
- component?: string | ElementType;
174
- }
175
- interface ResourceForms {
176
- default?: ResourceForm | null;
177
- create?: ResourceForm | null;
178
- edit?: ResourceForm | null;
179
- delete?: ResourceForm | null;
180
- duplicate?: ResourceForm | null;
181
- modal?: ResourceForm | null;
182
- [key: string]: ResourceForm | null | undefined;
183
- }
184
- /**
185
- * Resource type (sub-type of a resource, ex: page types)
186
- */
187
- interface ResourceType$1 {
188
- id?: string;
189
- name?: string;
190
- fields?: Field$1[];
191
- settings?: {
192
- canCreate?: boolean;
193
- [key: string]: unknown;
194
- };
195
- }
196
- interface Resource {
197
- id: string;
198
- name: string;
199
- intl?: ResourceIntl;
200
- fields?: Field$1[];
201
- index?: ResourceIndex;
202
- forms?: ResourceForms;
203
- settings?: Record<string, unknown>;
204
- extraRoutes?: RouteDefinition[];
205
- pages?: ResourcePages;
206
- types?: ResourceType$1[];
207
- }
208
- /**
209
- * Filter definition
210
- */
211
- interface Filter {
212
- id?: string;
213
- component?: string;
214
- [key: string]: unknown;
215
- }
216
-
217
- type FieldInput = string | Field$1;
218
- interface FieldErrors {
219
- [key: string]: string[] | FieldErrors;
220
- }
221
- interface FieldValue {
222
- [key: string]: unknown;
223
- }
224
- interface ProcessedField extends Field$1 {
225
- name: string | null;
226
- component: string | null;
227
- value: unknown;
228
- errors: string[] | null;
229
- onChange: (fieldValue: unknown) => void;
230
- fields?: ProcessedField[] | null;
231
- }
232
- interface RequestState {
233
- success: boolean;
234
- loading: boolean;
235
- error: boolean;
236
- }
237
- interface UseFormOptions<T extends FieldValue = FieldValue> {
238
- fields?: FieldInput[];
239
- action?: string | null;
240
- postForm?: ((action: string, data: Record<string, unknown>) => Promise<unknown>) | null;
241
- initialErrors?: FieldErrors | null;
242
- errors?: FieldErrors | null;
243
- setErrors?: ((errors: FieldErrors | null) => void) | null;
244
- initialGeneralError?: string | null;
245
- generalError?: string | null;
246
- setGeneralError?: ((error: string | null) => void) | null;
247
- initialValue?: T | null;
248
- value?: T | null;
249
- setValue?: ((value: T) => void) | null;
250
- withoutDefault?: boolean;
251
- withoutPropagation?: boolean;
252
- onComplete?: ((response: unknown) => void) | null;
253
- onError?: ((error: Error) => void) | null;
254
- locales?: string[];
255
- }
256
- interface UseFormReturn<T extends FieldValue = FieldValue> extends RequestState {
257
- value: T | null;
258
- setValue: (value: T) => void;
259
- csrfToken: string | null;
260
- submit: (submitValue?: T | null) => void;
261
- onSubmit: (e: SyntheticEvent) => void;
262
- status: 'loading' | 'success' | 'error' | null;
263
- response: unknown;
264
- fields: ProcessedField[];
265
- errors: FieldErrors | null;
266
- generalError: string | null;
267
- }
268
- declare function useForm<T extends FieldValue = FieldValue>(opts?: UseFormOptions<T>): UseFormReturn<T>;
269
-
270
- interface UseIsVisibleOptions {
271
- rootMargin?: string;
272
- threshold?: number;
273
- persist?: boolean;
274
- }
275
- interface UseIsVisibleResult {
276
- ref: RefObject<Element>;
277
- visible: boolean;
278
- }
279
- declare function useIsVisible({ rootMargin, threshold, persist, }?: UseIsVisibleOptions): UseIsVisibleResult;
280
-
281
- declare const KEYCODES: {
282
- ARROW_LEFT: number;
283
- ARROW_UP: number;
284
- ARROW_RIGHT: number;
285
- ARROW_DOWN: number;
286
- ESCAPE: number;
287
- SPACE: number;
288
- };
289
- interface UseKeyboardKeysOptions {
290
- eventName?: string;
291
- }
292
- declare function useKeyboardKeys(keys?: Record<number, (e: KeyboardEvent) => void>, { eventName }?: UseKeyboardKeysOptions): void;
293
-
294
- interface FontConfig {
295
- type?: 'google' | 'custom' | 'system';
296
- name: string;
297
- }
298
- declare function useLoadedFonts(fonts: (string | FontConfig)[]): {
299
- loaded: boolean;
300
- };
301
-
302
- interface UseMediaApiOptions {
303
- url?: string | null;
304
- initialMuted?: boolean;
305
- onTimeUpdate?: ((time: number) => void) | null;
306
- onProgressStep?: ((step: number) => void) | null;
307
- onDurationChanged?: ((duration: number) => void) | null;
308
- onVolumeChanged?: ((muted: boolean, volume: number) => void) | null;
309
- onPlay?: ((opts: {
310
- initial: boolean;
311
- }) => void) | null;
312
- onPause?: ((opts: {
313
- midway: boolean;
314
- }) => void) | null;
315
- onEnded?: (() => void) | null;
316
- onSeeked?: ((time: number) => void) | null;
317
- onLoadStart?: (() => void) | null;
318
- onCanPlayThough?: (() => void) | null;
319
- }
320
- interface UseMediaApiReturn {
321
- ref: RefObject<HTMLMediaElement>;
322
- play: () => void;
323
- pause: () => void;
324
- togglePlay: () => void;
325
- stop: () => void;
326
- seek: (time: number) => void;
327
- mute: () => void;
328
- unMute: () => void;
329
- toggleMute: () => void;
330
- muted: boolean;
331
- currentTime: number | null;
332
- duration: number | null;
333
- playing: boolean;
334
- paused: boolean;
335
- ready: boolean;
336
- }
337
- declare function useMediaApi({ url, initialMuted, onTimeUpdate, onProgressStep, onDurationChanged, onVolumeChanged, onPlay, onPause, onEnded, onSeeked, onLoadStart, onCanPlayThough, }?: UseMediaApiOptions): UseMediaApiReturn;
338
-
339
- interface Manager {
340
- getDefinition: (type: string) => Record<string, unknown> | null;
341
- }
342
- interface MediasParserOptions {
343
- fieldsManager: Manager;
344
- screensManager?: Manager | null;
345
- }
346
- interface Media$1 {
347
- id?: string | null;
348
- [key: string]: unknown;
349
- }
350
- interface Field {
351
- id?: string | null;
352
- name?: string | null;
353
- type?: string | null;
354
- media?: boolean;
355
- fields?: Field[];
356
- itemsField?: Field | null;
357
- settings?: Field[];
358
- [key: string]: unknown;
359
- }
360
- interface Screen$1 {
361
- type: string;
362
- [key: string]: unknown;
363
- }
364
- interface Story$1 {
365
- theme?: Story$1 | null;
366
- components?: Screen$1[];
367
- medias?: Record<string, Media$1> | null;
368
- [key: string]: unknown;
369
- }
370
- declare class MediasParser {
371
- fieldsManager: Manager;
372
- screensManager: Manager | null;
373
- constructor({ fieldsManager, screensManager }: MediasParserOptions);
374
- toPath(story: Story$1 | null): Story$1 | null;
375
- fromPath(story: Story$1 | null, defaultMedias?: Record<string, Media$1> | null): Story$1 | null;
376
- getMediaFieldsPattern(fields: Field[], namePrefix?: string | null): RegExp[];
377
- static fieldIsMedia({ media }: Field): boolean;
378
- static fieldIsFontFamily({ id }: Field): boolean;
379
- static replacePathsWithMedias(data: unknown, medias: Record<string, Media$1>, patterns: RegExp[], keyPrefix?: string | null): unknown;
380
- static getMediaPath({ id }: Media$1): string | null;
381
- static replaceMediasWithPaths(data: unknown, patterns: RegExp[], medias?: Record<string, Media$1> | null, keyPrefix?: string | null): {
382
- data: unknown;
383
- medias: Record<string, Media$1> | null;
384
- };
385
- }
386
-
387
- type Story = Parameters<MediasParser['toPath']>[0];
388
- interface UseMediasParserReturn {
389
- toPath: (story: Story) => Story;
390
- fromPath: (story: Story) => Story;
391
- parser: MediasParser;
392
- }
393
- declare function useMediasParser(): UseMediasParserReturn;
394
-
395
- type ObserverConstructor<T> = (new (callback: (entries: T[]) => void, options?: Record<string, unknown>) => {
396
- observe: (element: Element) => void;
397
- unobserve?: (element: Element) => void;
398
- disconnect: () => void;
399
- }) | null;
400
- interface ObserverWrapper<T> {
401
- subscribe: (element: Element, callback: (entry: T) => void) => void;
402
- unsubscribe: (element: Element, callback?: ((entry: T) => void) | null) => void;
403
- observer: InstanceType<NonNullable<ObserverConstructor<T>>>;
404
- }
405
- interface ObserverOptions {
406
- root?: Element | null;
407
- rootMargin?: string | null;
408
- threshold?: number | number[] | null;
409
- disabled?: boolean;
410
- }
411
- declare function getObserver<T>(Observer: ObserverConstructor<T>, options?: ObserverOptions): ObserverWrapper<T>;
412
- interface UseObserverReturn<T> {
413
- ref: RefObject<Element>;
414
- entry: T;
415
- }
416
- declare function useObserver<T>(Observer: ObserverConstructor<T>, opts?: ObserverOptions, initialEntry?: T): UseObserverReturn<T>;
417
- interface IntersectionObserverEntry {
418
- target: Element | null;
419
- time: number | null;
420
- isVisible?: boolean;
421
- isIntersecting: boolean;
422
- intersectionRatio: number;
423
- intersectionRect: DOMRectReadOnly | null;
424
- boundingClientRect: DOMRectReadOnly | null;
425
- rootBounds: DOMRectReadOnly | null;
426
- }
427
- interface UseIntersectionObserverOptions {
428
- root?: Element | null;
429
- rootMargin?: string;
430
- threshold?: number | number[];
431
- disabled?: boolean;
432
- }
433
- declare function useIntersectionObserver({ root, rootMargin, threshold, disabled, }?: UseIntersectionObserverOptions): UseObserverReturn<IntersectionObserverEntry>;
434
- /**
435
- * Resize Observer
436
- */
437
- interface ResizeObserverEntry {
438
- target: Element | null;
439
- contentRect: DOMRectReadOnly | null;
440
- contentBoxSize: ReadonlyArray<ResizeObserverSize> | null;
441
- borderBoxSize: ReadonlyArray<ResizeObserverSize> | null;
442
- }
443
- interface UseResizeObserverOptions {
444
- disabled?: boolean;
445
- }
446
- declare function useResizeObserver({ disabled, }?: UseResizeObserverOptions): UseObserverReturn<ResizeObserverEntry>;
447
-
448
- interface ResourceType {
449
- id?: string | null;
450
- name?: string | null;
451
- }
452
- interface ResourceWithTypes extends Resource {
453
- types?: ResourceType[];
454
- settings?: {
455
- hideTypeNames?: boolean;
456
- };
457
- }
458
- declare function useResourceTypeName(resource: ResourceWithTypes | null, type?: string | null): string | null;
459
-
460
- declare function useResourceUrlGenerator(): (routeResourceId: string | Resource, routeName?: string, params?: Record<string, unknown> | null) => string | null;
461
- declare function useResourceUrlGenerator(resourceId: string | Resource): (routeName?: string, params?: Record<string, unknown> | null) => string | null;
462
-
463
- interface QueryParams {
464
- page?: number;
465
- count?: number;
466
- [key: string]: unknown;
467
- }
468
- interface UseQueryReturn {
469
- query: QueryParams | null;
470
- onPageChange: (newPage: number) => void;
471
- onQueryChange: (newQuery: QueryParams | null) => void;
472
- onQueryReset: () => void;
473
- }
474
- declare function useQuery(initialBaseQuery?: QueryParams | null, paginated?: boolean): UseQueryReturn;
475
-
476
- interface Screen {
477
- name: string;
478
- mediaQuery?: string | null;
479
- }
480
- interface Media {
481
- type: string;
482
- width: string;
483
- height: string;
484
- }
485
- interface UseScreenSizeOptions {
486
- width?: number | null;
487
- height?: number | null;
488
- landscape?: boolean;
489
- screens?: Screen[];
490
- mediaType?: string;
491
- media?: Media | null;
492
- }
493
- interface ScreenSize {
494
- screen: string | null;
495
- screens: string[];
496
- width: number | null;
497
- height: number | null;
498
- landscape: boolean;
499
- }
500
- interface UseScreenSizeFromElementOptions extends Omit<UseScreenSizeOptions, 'landscape'> {
501
- withoutMaxSize?: boolean;
502
- }
503
- interface UseScreenSizeFromElementReturn {
504
- ref: RefObject<Element>;
505
- screenSize: ScreenSize;
506
- }
507
- declare function useScreenSizeFromElement({ width, height, ...opts }?: UseScreenSizeFromElementOptions): UseScreenSizeFromElementReturn;
508
- declare function useScreenSizeFromWindow(opts?: UseScreenSizeOptions): ScreenSize;
509
-
510
- declare const useWindowEvent: (event: string, callback: (...args: unknown[]) => void, enabled?: boolean) => void;
511
-
512
- export { KEYCODES, getObserver, useAnimationFrame, useDocumentEvent, useForm, useFormattedDate, useFormattedTime, useIntersectionObserver, useIsVisible, useKeyboardKeys, useLoadedFonts, useMediaApi, useMediasParser, useObserver, useQuery, useResizeObserver, useResourceTypeName, useResourceUrlGenerator, useScreenSizeFromElement, useScreenSizeFromWindow, useWindowEvent };