@agnos-ui/core 0.8.1 → 0.9.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.
Files changed (63) hide show
  1. package/{accordion-BLVIYePx.js → accordion-CoM4efp-.js} +5 -4
  2. package/{accordion-vfnqMstG.cjs → accordion-cR5JqWJ8.cjs} +3 -2
  3. package/{alert-D6W48Ffr.cjs → alert-DtDozJal.cjs} +2 -1
  4. package/alert-YIlqdEPO.js +10 -0
  5. package/components/accordion/index.cjs +1 -1
  6. package/components/accordion/index.js +1 -1
  7. package/components/alert/index.cjs +1 -1
  8. package/components/alert/index.js +1 -1
  9. package/components/carousel/carousel.d.ts +2 -2
  10. package/components/carousel/index.cjs +6 -5
  11. package/components/carousel/index.js +6 -5
  12. package/components/modal/index.cjs +1 -1
  13. package/components/modal/index.js +1 -1
  14. package/components/modal/modal.d.ts +2 -2
  15. package/components/pagination/index.cjs +1 -1
  16. package/components/pagination/index.js +1 -1
  17. package/components/pagination/pagination.d.ts +2 -2
  18. package/components/progressbar/index.cjs +1 -1
  19. package/components/progressbar/index.js +1 -1
  20. package/components/progressbar/progressbar.d.ts +2 -2
  21. package/components/rating/index.cjs +1 -1
  22. package/components/rating/index.js +1 -1
  23. package/components/rating/rating.d.ts +2 -2
  24. package/components/select/index.cjs +1 -1
  25. package/components/select/index.js +1 -1
  26. package/components/select/select.d.ts +2 -2
  27. package/components/slider/index.cjs +1 -1
  28. package/components/slider/index.js +1 -1
  29. package/components/slider/slider.d.ts +2 -2
  30. package/components/toast/index.cjs +1 -1
  31. package/components/toast/index.js +1 -1
  32. package/components/toast/toast.d.ts +2 -2
  33. package/components/tree/index.cjs +1 -1
  34. package/components/tree/index.js +1 -1
  35. package/components/tree/tree.d.ts +3 -3
  36. package/index.cjs +11 -10
  37. package/index.js +12 -11
  38. package/{modal-Dw1MuWPV.cjs → modal-BEnQ6c5M.cjs} +3 -2
  39. package/{modal-CGK3h9pR.js → modal-D3wGIDlj.js} +3 -2
  40. package/package.json +1 -1
  41. package/{pagination-CRAKaOuh.js → pagination-B97wBLok.js} +4 -3
  42. package/{pagination-BzyKulaI.cjs → pagination-C1TT-oea.cjs} +3 -2
  43. package/{progressbar-Csnqx_Pk.js → progressbar-BWBlRk_Y.js} +3 -2
  44. package/{progressbar-D9rvrxXi.cjs → progressbar-CRvhNB5R.cjs} +3 -2
  45. package/{rating-CvTnNxgN.js → rating-BXvy9kXq.js} +3 -2
  46. package/{rating-C4c8Paz-.cjs → rating-DAb6nR67.cjs} +3 -2
  47. package/{select-C-77MJfC.js → select-BdjpnE7_.js} +3 -2
  48. package/{select-D1pBz4CM.cjs → select-C0rJJQfl.cjs} +3 -2
  49. package/services/extendWidget.cjs +28 -23
  50. package/services/extendWidget.js +28 -23
  51. package/{slider-BF6a0eh_.js → slider-DVthNbSG.js} +3 -2
  52. package/{slider-B0ZfAY0K.cjs → slider-xEieAbBb.cjs} +3 -2
  53. package/{toaster-B2ibv38T.cjs → toaster-Cayg6Lbq.cjs} +3 -2
  54. package/{toaster-PwfLC7FH.js → toaster-XfzHDqz_.js} +3 -2
  55. package/{tree-DUU_TWqy.js → tree-BFrXdJox.js} +3 -2
  56. package/{tree-Dwv2U0ea.cjs → tree-Pvr2rZ-D.cjs} +3 -2
  57. package/types.cjs +2 -0
  58. package/types.d.ts +8 -1
  59. package/types.js +2 -0
  60. package/utils/widget.cjs +8 -0
  61. package/utils/widget.d.ts +11 -0
  62. package/utils/widget.js +8 -0
  63. package/alert-BpepSIHu.js +0 -9
@@ -1,9 +1,10 @@
1
- import { writablesForProps, idWithDefault, stateStores, mergeConfigStores, normalizeConfigStores, true$ } from "./utils/stores.js";
1
+ import { writablesForProps, idWithDefault, stateStores, true$, mergeConfigStores, normalizeConfigStores } from "./utils/stores.js";
2
2
  import { createTransition } from "./services/transitions/baseTransitions.js";
3
- import { writable, computed, asWritable, readable } from "@amadeus-it-group/tansu";
3
+ import { writable, computed, readable, asWritable } from "@amadeus-it-group/tansu";
4
4
  import { noop } from "./utils/func.js";
5
5
  import { e as typeString, g as typeFunction, c as typeBoolean } from "./writables-CgpOQ4hA.js";
6
6
  import { k as mergeDirectives, n as createAttributesDirective, r as registrationArray, d as directiveSubscribe } from "./dom-gfxqXJpK.js";
7
+ import { createWidgetFactory } from "./utils/widget.js";
7
8
  function adjustItemsCloseOthers(items, openItems, oldOpen) {
8
9
  let keepOpen;
9
10
  if (openItems.length == 2) {
@@ -204,7 +205,7 @@ function createAccordionItem(config) {
204
205
  };
205
206
  }
206
207
  function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
207
- return (config) => {
208
+ return createWidgetFactory("accordion", (config) => {
208
209
  const [writables, patch] = writablesForProps(accordionConfig, config, accordionValidator);
209
210
  const { closeOthers$, onItemShown$, onItemHidden$, className$ } = writables;
210
211
  const accordionItemConfig = Object.fromEntries(
@@ -306,7 +307,7 @@ function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItem
306
307
  )
307
308
  }
308
309
  };
309
- };
310
+ });
310
311
  }
311
312
  const createAccordion = factoryCreateAccordion();
312
313
  export {
@@ -5,6 +5,7 @@ const tansu = require("@amadeus-it-group/tansu");
5
5
  const utils_func = require("./utils/func.cjs");
6
6
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
7
7
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
8
+ const utils_widget = require("./utils/widget.cjs");
8
9
  function adjustItemsCloseOthers(items, openItems, oldOpen) {
9
10
  let keepOpen;
10
11
  if (openItems.length == 2) {
@@ -205,7 +206,7 @@ function createAccordionItem(config) {
205
206
  };
206
207
  }
207
208
  function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
208
- return (config) => {
209
+ return utils_widget.createWidgetFactory("accordion", (config) => {
209
210
  const [writables, patch] = utils_stores.writablesForProps(accordionConfig, config, accordionValidator);
210
211
  const { closeOthers$, onItemShown$, onItemHidden$, className$ } = writables;
211
212
  const accordionItemConfig = Object.fromEntries(
@@ -307,7 +308,7 @@ function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItem
307
308
  )
308
309
  }
309
310
  };
310
- };
311
+ });
311
312
  }
312
313
  const createAccordion = factoryCreateAccordion();
313
314
  exports.createAccordion = createAccordion;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  const common = require("./common-BToNPUDq.cjs");
3
+ const utils_widget = require("./utils/widget.cjs");
3
4
  function getAlertDefaultConfig() {
4
5
  return { ...common.getCommonAlertDefaultConfig() };
5
6
  }
6
- const createAlert = common.createCommonAlert;
7
+ const createAlert = utils_widget.createWidgetFactory("alert", common.createCommonAlert);
7
8
  exports.createAlert = createAlert;
8
9
  exports.getAlertDefaultConfig = getAlertDefaultConfig;
@@ -0,0 +1,10 @@
1
+ import { g as getCommonAlertDefaultConfig, c as createCommonAlert } from "./common-BqUjUBPy.js";
2
+ import { createWidgetFactory } from "./utils/widget.js";
3
+ function getAlertDefaultConfig() {
4
+ return { ...getCommonAlertDefaultConfig() };
5
+ }
6
+ const createAlert = createWidgetFactory("alert", createCommonAlert);
7
+ export {
8
+ createAlert as c,
9
+ getAlertDefaultConfig as g
10
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const accordion = require("../../accordion-vfnqMstG.cjs");
3
+ const accordion = require("../../accordion-cR5JqWJ8.cjs");
4
4
  exports.createAccordion = accordion.createAccordion;
5
5
  exports.createAccordionItem = accordion.createAccordionItem;
6
6
  exports.factoryCreateAccordion = accordion.factoryCreateAccordion;
@@ -1,4 +1,4 @@
1
- import { a, c, f, g } from "../../accordion-BLVIYePx.js";
1
+ import { a, c, f, g } from "../../accordion-CoM4efp-.js";
2
2
  export {
3
3
  a as createAccordion,
4
4
  c as createAccordionItem,
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const alert = require("../../alert-D6W48Ffr.cjs");
3
+ const alert = require("../../alert-DtDozJal.cjs");
4
4
  exports.createAlert = alert.createAlert;
5
5
  exports.getAlertDefaultConfig = alert.getAlertDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../alert-BpepSIHu.js";
1
+ import { c, g } from "../../alert-YIlqdEPO.js";
2
2
  export {
3
3
  c as createAlert,
4
4
  g as getAlertDefaultConfig
@@ -1,4 +1,4 @@
1
- import type { Directive, PropsConfig, Widget } from '../../types';
1
+ import type { Directive, Widget, WidgetFactory } from '../../types';
2
2
  import type { EmblaCarouselType, EmblaPluginsType, EmblaPluginType } from 'embla-carousel';
3
3
  import type { ReadableSignal } from '@amadeus-it-group/tansu';
4
4
  /**
@@ -228,5 +228,5 @@ export declare function createEmblaCarousel(options$: ReadableSignal<Partial<Emb
228
228
  * @param config - an optional carousel config
229
229
  * @returns a CarouselWidget
230
230
  */
231
- export declare function createCarousel(config?: PropsConfig<CarouselProps>): CarouselWidget;
231
+ export declare const createCarousel: WidgetFactory<CarouselWidget>;
232
232
  export {};
@@ -6,6 +6,7 @@ const EmblaCarousel = require("embla-carousel");
6
6
  const tansu = require("@amadeus-it-group/tansu");
7
7
  const utils_writables = require("../../writables-Bn3uhKEG.cjs");
8
8
  const services_navManager = require("../../services/navManager.cjs");
9
+ const utils_widget = require("../../utils/widget.cjs");
9
10
  const defaultConfig = {
10
11
  align: "center",
11
12
  container: null,
@@ -119,7 +120,7 @@ function createEmblaCarousel(options$, plugins$) {
119
120
  }
120
121
  };
121
122
  }
122
- function createCarousel(config) {
123
+ const createCarousel = utils_widget.createWidgetFactory("carousel", (config) => {
123
124
  const [
124
125
  {
125
126
  align$,
@@ -155,11 +156,11 @@ function createCarousel(config) {
155
156
  const {
156
157
  stores: { slideNodes$, ...emblaStores }
157
158
  } = emblaCarousel;
158
- const { directive: navDirective, refreshElements, focusPrevious, focusNext, focusFirst, focusLast } = services_navManager.createNavManager();
159
+ const { directive: navDirective, refreshElements, focusLeft, focusRight, focusFirst, focusLast } = services_navManager.createNavManager();
159
160
  const navManagerConfig = {
160
161
  keys: {
161
- ArrowLeft: focusPrevious,
162
- ArrowRight: focusNext,
162
+ ArrowLeft: focusLeft,
163
+ ArrowRight: focusRight,
163
164
  Home: focusFirst,
164
165
  End: focusLast
165
166
  },
@@ -282,7 +283,7 @@ function createCarousel(config) {
282
283
  })
283
284
  }
284
285
  };
285
- }
286
+ });
286
287
  exports.createCarousel = createCarousel;
287
288
  exports.createEmblaCarousel = createEmblaCarousel;
288
289
  exports.getCarouselDefaultConfig = getCarouselDefaultConfig;
@@ -4,6 +4,7 @@ import EmblaCarousel from "embla-carousel";
4
4
  import { writable, computed, asReadable, readable } from "@amadeus-it-group/tansu";
5
5
  import { g as typeFunction, e as typeString, c as typeBoolean, a as typeNumber, j as createTypeEnum, f as typeStringOrNull, i as typeArray } from "../../writables-CgpOQ4hA.js";
6
6
  import { createNavManager } from "../../services/navManager.js";
7
+ import { createWidgetFactory } from "../../utils/widget.js";
7
8
  const defaultConfig = {
8
9
  align: "center",
9
10
  container: null,
@@ -117,7 +118,7 @@ function createEmblaCarousel(options$, plugins$) {
117
118
  }
118
119
  };
119
120
  }
120
- function createCarousel(config) {
121
+ const createCarousel = createWidgetFactory("carousel", (config) => {
121
122
  const [
122
123
  {
123
124
  align$,
@@ -153,11 +154,11 @@ function createCarousel(config) {
153
154
  const {
154
155
  stores: { slideNodes$, ...emblaStores }
155
156
  } = emblaCarousel;
156
- const { directive: navDirective, refreshElements, focusPrevious, focusNext, focusFirst, focusLast } = createNavManager();
157
+ const { directive: navDirective, refreshElements, focusLeft, focusRight, focusFirst, focusLast } = createNavManager();
157
158
  const navManagerConfig = {
158
159
  keys: {
159
- ArrowLeft: focusPrevious,
160
- ArrowRight: focusNext,
160
+ ArrowLeft: focusLeft,
161
+ ArrowRight: focusRight,
161
162
  Home: focusFirst,
162
163
  End: focusLast
163
164
  },
@@ -280,7 +281,7 @@ function createCarousel(config) {
280
281
  })
281
282
  }
282
283
  };
283
- }
284
+ });
284
285
  export {
285
286
  createCarousel,
286
287
  createEmblaCarousel,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const modal = require("../../modal-Dw1MuWPV.cjs");
3
+ const modal = require("../../modal-BEnQ6c5M.cjs");
4
4
  exports.createModal = modal.createModal;
5
5
  exports.getModalDefaultConfig = modal.getModalDefaultConfig;
6
6
  exports.modalCloseButtonClick = modal.modalCloseButtonClick;
@@ -1,4 +1,4 @@
1
- import { c, g, a, m } from "../../modal-CGK3h9pR.js";
1
+ import { c, g, a, m } from "../../modal-D3wGIDlj.js";
2
2
  export {
3
3
  c as createModal,
4
4
  g as getModalDefaultConfig,
@@ -1,6 +1,6 @@
1
1
  import type { WidgetsCommonPropsAndState } from '../commonProps';
2
2
  import type { TransitionFn } from '../../services/transitions/baseTransitions';
3
- import type { Directive, PropsConfig, Widget } from '../../types';
3
+ import type { Directive, Widget, WidgetFactory } from '../../types';
4
4
  /**
5
5
  * Value present in the {@link ModalBeforeCloseEvent.result|result} property of the {@link ModalProps.onBeforeClose|onBeforeClose} event
6
6
  * and returned by the {@link ModalApi.open|open} method, when the modal is closed by a click inside the viewport but outside the modal.
@@ -236,5 +236,5 @@ export declare function getModalDefaultConfig(): ModalProps;
236
236
  * @param config$ - config of the modal, either as a store or as an object containing values or stores.
237
237
  * @returns a new modal widget instance
238
238
  */
239
- export declare function createModal(config$?: PropsConfig<ModalProps>): ModalWidget;
239
+ export declare const createModal: WidgetFactory<ModalWidget>;
240
240
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const pagination = require("../../pagination-BzyKulaI.cjs");
3
+ const pagination = require("../../pagination-C1TT-oea.cjs");
4
4
  exports.createPagination = pagination.createPagination;
5
5
  exports.getPaginationDefaultConfig = pagination.getPaginationDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../pagination-CRAKaOuh.js";
1
+ import { c, g } from "../../pagination-B97wBLok.js";
2
2
  export {
3
3
  c as createPagination,
4
4
  g as getPaginationDefaultConfig
@@ -1,4 +1,4 @@
1
- import type { PropsConfig, Widget, Directive } from '../../types';
1
+ import type { Widget, Directive, WidgetFactory } from '../../types';
2
2
  import type { WidgetsCommonPropsAndState } from '../commonProps';
3
3
  /**
4
4
  * Interface representing the common properties and state for a pagination component.
@@ -310,5 +310,5 @@ export declare function getPaginationDefaultConfig(): PaginationProps;
310
310
  * @param config - an optional pagination config
311
311
  * @returns a PaginationWidget
312
312
  */
313
- export declare function createPagination(config?: PropsConfig<PaginationProps>): PaginationWidget;
313
+ export declare const createPagination: WidgetFactory<PaginationWidget>;
314
314
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const progressbar = require("../../progressbar-D9rvrxXi.cjs");
3
+ const progressbar = require("../../progressbar-CRvhNB5R.cjs");
4
4
  exports.createProgressbar = progressbar.createProgressbar;
5
5
  exports.getProgressbarDefaultConfig = progressbar.getProgressbarDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../progressbar-Csnqx_Pk.js";
1
+ import { c, g } from "../../progressbar-BWBlRk_Y.js";
2
2
  export {
3
3
  c as createProgressbar,
4
4
  g as getProgressbarDefaultConfig
@@ -1,4 +1,4 @@
1
- import type { Directive, PropsConfig, Widget } from '../../types';
1
+ import type { Directive, Widget, WidgetFactory } from '../../types';
2
2
  import type { WidgetsCommonPropsAndState } from '../commonProps';
3
3
  interface ProgressbarCommonPropsAndState extends WidgetsCommonPropsAndState {
4
4
  /**
@@ -87,5 +87,5 @@ export declare function getProgressbarDefaultConfig(): ProgressbarProps;
87
87
  * @param config - an optional progress bar config
88
88
  * @returns an ProgressbarWidget
89
89
  */
90
- export declare function createProgressbar(config?: PropsConfig<ProgressbarProps>): ProgressbarWidget;
90
+ export declare const createProgressbar: WidgetFactory<ProgressbarWidget>;
91
91
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const rating = require("../../rating-C4c8Paz-.cjs");
3
+ const rating = require("../../rating-DAb6nR67.cjs");
4
4
  exports.createRating = rating.createRating;
5
5
  exports.getRatingDefaultConfig = rating.getRatingDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../rating-CvTnNxgN.js";
1
+ import { c, g } from "../../rating-BXvy9kXq.js";
2
2
  export {
3
3
  c as createRating,
4
4
  g as getRatingDefaultConfig
@@ -1,4 +1,4 @@
1
- import type { Directive, PropsConfig, Widget } from '../../types';
1
+ import type { Directive, Widget, WidgetFactory } from '../../types';
2
2
  import type { WidgetsCommonPropsAndState } from '../commonProps';
3
3
  /**
4
4
  * Represents the context for a star in a rating component.
@@ -187,5 +187,5 @@ export declare function getRatingDefaultConfig(): RatingProps;
187
187
  * @param config - an optional alert config
188
188
  * @returns a RatingWidget
189
189
  */
190
- export declare function createRating(config?: PropsConfig<RatingProps>): RatingWidget;
190
+ export declare const createRating: WidgetFactory<RatingWidget>;
191
191
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const select = require("../../select-D1pBz4CM.cjs");
3
+ const select = require("../../select-C0rJJQfl.cjs");
4
4
  exports.createSelect = select.createSelect;
5
5
  exports.getSelectDefaultConfig = select.getSelectDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../select-C-77MJfC.js";
1
+ import { c, g } from "../../select-BdjpnE7_.js";
2
2
  export {
3
3
  c as createSelect,
4
4
  g as getSelectDefaultConfig
@@ -1,7 +1,7 @@
1
1
  import type { Placement } from '@floating-ui/dom';
2
2
  import type { FloatingUI } from '../../services/floatingUI';
3
3
  import type { HasFocus } from '../../services/focustrack';
4
- import type { Directive, PropsConfig, Widget } from '../../types';
4
+ import type { Directive, PropsConfig, Widget, WidgetFactory } from '../../types';
5
5
  import type { WidgetsCommonPropsAndState } from '../commonProps';
6
6
  interface SelectCommonPropsAndState<Item> extends WidgetsCommonPropsAndState {
7
7
  /**
@@ -307,5 +307,5 @@ export declare function getSelectDefaultConfig(): SelectProps<any>;
307
307
  * @param config - an optional alert config
308
308
  * @returns a SelectWidget
309
309
  */
310
- export declare function createSelect<Item>(config?: PropsConfig<SelectProps<Item>>): SelectWidget<Item>;
310
+ export declare const createSelect: WidgetFactory<SelectWidget<unknown>, <Item>(config?: PropsConfig<SelectProps<Item>>) => SelectWidget<Item>>;
311
311
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const slider = require("../../slider-B0ZfAY0K.cjs");
3
+ const slider = require("../../slider-xEieAbBb.cjs");
4
4
  exports.createSlider = slider.createSlider;
5
5
  exports.getSliderDefaultConfig = slider.getSliderDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../slider-BF6a0eh_.js";
1
+ import { c, g } from "../../slider-DVthNbSG.js";
2
2
  export {
3
3
  c as createSlider,
4
4
  g as getSliderDefaultConfig
@@ -1,5 +1,5 @@
1
1
  import type { WidgetsCommonPropsAndState } from '../commonProps';
2
- import type { Directive, PropsConfig, Widget } from '../../types';
2
+ import type { Directive, Widget, WidgetFactory } from '../../types';
3
3
  /**
4
4
  * Options for displaying progress in a slider component.
5
5
  */
@@ -354,5 +354,5 @@ export declare function getSliderDefaultConfig(): SliderProps;
354
354
  * @param config - an optional slider config
355
355
  * @returns a SliderWidget
356
356
  */
357
- export declare function createSlider(config?: PropsConfig<SliderProps>): SliderWidget;
357
+ export declare const createSlider: WidgetFactory<SliderWidget>;
358
358
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const toaster = require("../../toaster-B2ibv38T.cjs");
3
+ const toaster = require("../../toaster-Cayg6Lbq.cjs");
4
4
  exports.Toaster = toaster.Toaster;
5
5
  exports.createToast = toaster.createToast;
6
6
  exports.defaultToasterProps = toaster.defaultToasterProps;
@@ -1,4 +1,4 @@
1
- import { T, c, d, g } from "../../toaster-PwfLC7FH.js";
1
+ import { T, c, d, g } from "../../toaster-XfzHDqz_.js";
2
2
  export {
3
3
  T as Toaster,
4
4
  c as createToast,
@@ -1,4 +1,4 @@
1
- import type { Directive, PropsConfig, Widget } from '../../types';
1
+ import type { Directive, Widget, WidgetFactory } from '../../types';
2
2
  import type { CommonAlertApi, CommonAlertDirectives, CommonAlertProps, CommonAlertState } from '../alert/common';
3
3
  interface ToastExtraProps {
4
4
  /**
@@ -62,5 +62,5 @@ export declare function getToastDefaultConfig(): ToastProps;
62
62
  * @param config - an optional toast config
63
63
  * @returns a ToastWidget
64
64
  */
65
- export declare function createToast(config?: PropsConfig<ToastProps>): ToastWidget;
65
+ export declare const createToast: WidgetFactory<ToastWidget>;
66
66
  export {};
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const tree = require("../../tree-Dwv2U0ea.cjs");
3
+ const tree = require("../../tree-Pvr2rZ-D.cjs");
4
4
  exports.createTree = tree.createTree;
5
5
  exports.getTreeDefaultConfig = tree.getTreeDefaultConfig;
@@ -1,4 +1,4 @@
1
- import { c, g } from "../../tree-DUU_TWqy.js";
1
+ import { c, g } from "../../tree-BFrXdJox.js";
2
2
  export {
3
3
  c as createTree,
4
4
  g as getTreeDefaultConfig
@@ -1,5 +1,5 @@
1
- import type { Directive } from '../../types';
2
- import { type PropsConfig, type Widget } from '../../types';
1
+ import type { Directive, WidgetFactory } from '../../types';
2
+ import { type Widget } from '../../types';
3
3
  import type { WidgetsCommonPropsAndState } from '../commonProps';
4
4
  /**
5
5
  * Represents a tree item component.
@@ -145,5 +145,5 @@ export declare function getTreeDefaultConfig(): TreeProps;
145
145
  * @param config - an optional tree config
146
146
  * @returns a TreeWidget
147
147
  */
148
- export declare function createTree(config?: PropsConfig<TreeProps>): TreeWidget;
148
+ export declare const createTree: WidgetFactory<TreeWidget>;
149
149
  export {};
package/index.cjs CHANGED
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const types = require("./types.cjs");
4
- const accordion = require("./accordion-vfnqMstG.cjs");
5
- const alert = require("./alert-D6W48Ffr.cjs");
6
- const modal = require("./modal-Dw1MuWPV.cjs");
7
- const pagination = require("./pagination-BzyKulaI.cjs");
8
- const progressbar = require("./progressbar-D9rvrxXi.cjs");
9
- const rating = require("./rating-C4c8Paz-.cjs");
10
- const select = require("./select-D1pBz4CM.cjs");
11
- const slider = require("./slider-B0ZfAY0K.cjs");
12
- const toaster = require("./toaster-B2ibv38T.cjs");
13
- const tree = require("./tree-Dwv2U0ea.cjs");
4
+ const accordion = require("./accordion-cR5JqWJ8.cjs");
5
+ const alert = require("./alert-DtDozJal.cjs");
6
+ const modal = require("./modal-BEnQ6c5M.cjs");
7
+ const pagination = require("./pagination-C1TT-oea.cjs");
8
+ const progressbar = require("./progressbar-CRvhNB5R.cjs");
9
+ const rating = require("./rating-DAb6nR67.cjs");
10
+ const select = require("./select-C0rJJQfl.cjs");
11
+ const slider = require("./slider-xEieAbBb.cjs");
12
+ const toaster = require("./toaster-Cayg6Lbq.cjs");
13
+ const tree = require("./tree-Pvr2rZ-D.cjs");
14
14
  const config = require("./config.cjs");
15
15
  const services_extendWidget = require("./services/extendWidget.cjs");
16
16
  const services_floatingUI = require("./services/floatingUI.cjs");
@@ -28,6 +28,7 @@ const services_transitions_simpleClassTransition = require("./services/transitio
28
28
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
29
29
  const utils_stores = require("./utils/stores.cjs");
30
30
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
31
+ exports.FACTORY_WIDGET_NAME = types.FACTORY_WIDGET_NAME;
31
32
  exports.INVALID_VALUE = types.INVALID_VALUE;
32
33
  exports.createAccordion = accordion.createAccordion;
33
34
  exports.createAccordionItem = accordion.createAccordionItem;
package/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import { INVALID_VALUE } from "./types.js";
2
- import { a, c, f, g } from "./accordion-BLVIYePx.js";
3
- import { c as c2, g as g2 } from "./alert-BpepSIHu.js";
4
- import { c as c3, g as g3, a as a2, m } from "./modal-CGK3h9pR.js";
5
- import { c as c4, g as g4 } from "./pagination-CRAKaOuh.js";
6
- import { c as c5, g as g5 } from "./progressbar-Csnqx_Pk.js";
7
- import { c as c6, g as g6 } from "./rating-CvTnNxgN.js";
8
- import { c as c7, g as g7 } from "./select-C-77MJfC.js";
9
- import { c as c8, g as g8 } from "./slider-BF6a0eh_.js";
10
- import { T, c as c9, d, g as g9 } from "./toaster-PwfLC7FH.js";
11
- import { c as c10, g as g10 } from "./tree-DUU_TWqy.js";
1
+ import { FACTORY_WIDGET_NAME, INVALID_VALUE } from "./types.js";
2
+ import { a, c, f, g } from "./accordion-CoM4efp-.js";
3
+ import { c as c2, g as g2 } from "./alert-YIlqdEPO.js";
4
+ import { c as c3, g as g3, a as a2, m } from "./modal-D3wGIDlj.js";
5
+ import { c as c4, g as g4 } from "./pagination-B97wBLok.js";
6
+ import { c as c5, g as g5 } from "./progressbar-BWBlRk_Y.js";
7
+ import { c as c6, g as g6 } from "./rating-BXvy9kXq.js";
8
+ import { c as c7, g as g7 } from "./select-BdjpnE7_.js";
9
+ import { c as c8, g as g8 } from "./slider-DVthNbSG.js";
10
+ import { T, c as c9, d, g as g9 } from "./toaster-XfzHDqz_.js";
11
+ import { c as c10, g as g10 } from "./tree-BFrXdJox.js";
12
12
  import { createWidgetsConfig, mergeInto } from "./config.js";
13
13
  import { extendWidgetProps } from "./services/extendWidget.js";
14
14
  import { createFloatingUI } from "./services/floatingUI.js";
@@ -27,6 +27,7 @@ import { o, a as a3, c as c11, b, p, n, g as g11, j, f as f2, h, q, d as d2, e,
27
27
  import { bindableDerived, bindableProp, createPatch, false$, findChangedProperties, idWithDefault, isStore, mergeConfigStores, normalizeConfigStores, stateStores, toReadableStore, toWritableStore, true$, writableWithDefault, writablesForProps, writablesWithDefault } from "./utils/stores.js";
28
28
  import { j as j2, t, i as i2, c as c12, d as d3, g as g12, h as h2, a as a4, b as b2, e as e2, f as f3 } from "./writables-CgpOQ4hA.js";
29
29
  export {
30
+ FACTORY_WIDGET_NAME,
30
31
  INVALID_VALUE,
31
32
  T as Toaster,
32
33
  activeElement$,
@@ -8,6 +8,7 @@ const utils_func = require("./utils/func.cjs");
8
8
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
9
9
  const services_portal = require("./services/portal.cjs");
10
10
  const services_siblingsInert = require("./services/siblingsInert.cjs");
11
+ const utils_widget = require("./utils/widget.cjs");
11
12
  const internalRemoveScrollbars = () => {
12
13
  const scrollbarWidth = Math.abs(window.innerWidth - document.documentElement.clientWidth);
13
14
  const body = document.body;
@@ -85,7 +86,7 @@ const scrollbarsAction$ = tansu.computed(() => {
85
86
  const modalsAction$ = tansu.computed(() => {
86
87
  scrollbarsAction$();
87
88
  });
88
- function createModal(config$) {
89
+ const createModal = utils_widget.createWidgetFactory("modal", (config$) => {
89
90
  const [
90
91
  {
91
92
  animated$,
@@ -245,7 +246,7 @@ function createModal(config$) {
245
246
  }
246
247
  };
247
248
  return res;
248
- }
249
+ });
249
250
  exports.createModal = createModal;
250
251
  exports.getModalDefaultConfig = getModalDefaultConfig;
251
252
  exports.modalCloseButtonClick = modalCloseButtonClick;
@@ -7,6 +7,7 @@ import { noop } from "./utils/func.js";
7
7
  import { a as bindDirective, r as registrationArray, n as createAttributesDirective, k as mergeDirectives, d as directiveSubscribe, b as browserDirective } from "./dom-gfxqXJpK.js";
8
8
  import { portal } from "./services/portal.js";
9
9
  import { siblingsInert } from "./services/siblingsInert.js";
10
+ import { createWidgetFactory } from "./utils/widget.js";
10
11
  const internalRemoveScrollbars = () => {
11
12
  const scrollbarWidth = Math.abs(window.innerWidth - document.documentElement.clientWidth);
12
13
  const body = document.body;
@@ -84,7 +85,7 @@ const scrollbarsAction$ = computed(() => {
84
85
  const modalsAction$ = computed(() => {
85
86
  scrollbarsAction$();
86
87
  });
87
- function createModal(config$) {
88
+ const createModal = createWidgetFactory("modal", (config$) => {
88
89
  const [
89
90
  {
90
91
  animated$,
@@ -244,7 +245,7 @@ function createModal(config$) {
244
245
  }
245
246
  };
246
247
  return res;
247
- }
248
+ });
248
249
  export {
249
250
  modalCloseButtonClick as a,
250
251
  createModal as c,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agnos-ui/core",
3
3
  "description": "Framework-agnostic headless component library.",
4
- "version": "0.8.1",
4
+ "version": "0.9.0",
5
5
  "type": "module",
6
6
  "main": "./index.cjs",
7
7
  "module": "./index.js",
@@ -1,8 +1,9 @@
1
1
  import { computed } from "@amadeus-it-group/tansu";
2
2
  import { writablesForProps, bindableProp, stateStores, true$ } from "./utils/stores.js";
3
- import { e as typeString, g as typeFunction, c as typeBoolean, a as typeNumber, k as clamp, l as isNumber } from "./writables-CgpOQ4hA.js";
3
+ import { l as isNumber, e as typeString, g as typeFunction, c as typeBoolean, a as typeNumber, k as clamp } from "./writables-CgpOQ4hA.js";
4
4
  import { noop } from "./utils/func.js";
5
5
  import { n as createAttributesDirective } from "./dom-gfxqXJpK.js";
6
+ import { createWidgetFactory } from "./utils/widget.js";
6
7
  const PAGE_LINK_DEFAULT = "#";
7
8
  const defaultConfig = {
8
9
  page: 1,
@@ -55,7 +56,7 @@ const configValidator = {
55
56
  pageLink: typeFunction,
56
57
  ariaEllipsisLabel: typeString
57
58
  };
58
- function createPagination(config) {
59
+ const createPagination = createWidgetFactory("pagination", (config) => {
59
60
  const [
60
61
  {
61
62
  // dirty inputs that need adjustment:
@@ -244,7 +245,7 @@ function createPagination(config) {
244
245
  }
245
246
  };
246
247
  return widget;
247
- }
248
+ });
248
249
  export {
249
250
  createPagination as c,
250
251
  getPaginationDefaultConfig as g
@@ -4,6 +4,7 @@ const utils_stores = require("./utils/stores.cjs");
4
4
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
5
5
  const utils_func = require("./utils/func.cjs");
6
6
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
7
+ const utils_widget = require("./utils/widget.cjs");
7
8
  const PAGE_LINK_DEFAULT = "#";
8
9
  const defaultConfig = {
9
10
  page: 1,
@@ -56,7 +57,7 @@ const configValidator = {
56
57
  pageLink: utils_writables.typeFunction,
57
58
  ariaEllipsisLabel: utils_writables.typeString
58
59
  };
59
- function createPagination(config) {
60
+ const createPagination = utils_widget.createWidgetFactory("pagination", (config) => {
60
61
  const [
61
62
  {
62
63
  // dirty inputs that need adjustment:
@@ -245,6 +246,6 @@ function createPagination(config) {
245
246
  }
246
247
  };
247
248
  return widget;
248
- }
249
+ });
249
250
  exports.createPagination = createPagination;
250
251
  exports.getPaginationDefaultConfig = getPaginationDefaultConfig;
@@ -2,6 +2,7 @@ import { k as clamp, g as typeFunction, e as typeString, a as typeNumber } from
2
2
  import { writablesForProps, stateStores } from "./utils/stores.js";
3
3
  import { computed, readable } from "@amadeus-it-group/tansu";
4
4
  import { n as createAttributesDirective } from "./dom-gfxqXJpK.js";
5
+ import { createWidgetFactory } from "./utils/widget.js";
5
6
  const defaultConfig = {
6
7
  min: 0,
7
8
  max: 100,
@@ -21,7 +22,7 @@ const configValidator = {
21
22
  className: typeString,
22
23
  ariaValueTextFn: typeFunction
23
24
  };
24
- function createProgressbar(config) {
25
+ const createProgressbar = createWidgetFactory("progressbar", (config) => {
25
26
  const [
26
27
  {
27
28
  // dirty inputs that need adjustment:
@@ -76,7 +77,7 @@ function createProgressbar(config) {
76
77
  }))
77
78
  }
78
79
  };
79
- }
80
+ });
80
81
  export {
81
82
  createProgressbar as c,
82
83
  getProgressbarDefaultConfig as g
@@ -3,6 +3,7 @@ const utils_writables = require("./writables-Bn3uhKEG.cjs");
3
3
  const utils_stores = require("./utils/stores.cjs");
4
4
  const tansu = require("@amadeus-it-group/tansu");
5
5
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
6
+ const utils_widget = require("./utils/widget.cjs");
6
7
  const defaultConfig = {
7
8
  min: 0,
8
9
  max: 100,
@@ -22,7 +23,7 @@ const configValidator = {
22
23
  className: utils_writables.typeString,
23
24
  ariaValueTextFn: utils_writables.typeFunction
24
25
  };
25
- function createProgressbar(config) {
26
+ const createProgressbar = utils_widget.createWidgetFactory("progressbar", (config) => {
26
27
  const [
27
28
  {
28
29
  // dirty inputs that need adjustment:
@@ -77,6 +78,6 @@ function createProgressbar(config) {
77
78
  }))
78
79
  }
79
80
  };
80
- }
81
+ });
81
82
  exports.createProgressbar = createProgressbar;
82
83
  exports.getProgressbarDefaultConfig = getProgressbarDefaultConfig;
@@ -4,6 +4,7 @@ import { n as createAttributesDirective } from "./dom-gfxqXJpK.js";
4
4
  import { e as typeString, g as typeFunction, c as typeBoolean, a as typeNumber, k as clamp, l as isNumber } from "./writables-CgpOQ4hA.js";
5
5
  import { noop } from "./utils/func.js";
6
6
  import { writablesForProps, bindableProp, stateStores, true$ } from "./utils/stores.js";
7
+ import { createWidgetFactory } from "./utils/widget.js";
7
8
  const defaultConfig = {
8
9
  rating: 0,
9
10
  tabindex: 0,
@@ -37,7 +38,7 @@ const configValidator = {
37
38
  ariaLabel: typeString,
38
39
  ariaLabelledBy: typeString
39
40
  };
40
- function createRating(config) {
41
+ const createRating = createWidgetFactory("rating", (config) => {
41
42
  const [
42
43
  {
43
44
  // dirty inputs that need adjustment:
@@ -173,7 +174,7 @@ function createRating(config) {
173
174
  }
174
175
  };
175
176
  return widget;
176
- }
177
+ });
177
178
  export {
178
179
  createRating as c,
179
180
  getRatingDefaultConfig as g
@@ -5,6 +5,7 @@ const utils_directive = require("./dom-CuBx1JPZ.cjs");
5
5
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
6
6
  const utils_func = require("./utils/func.cjs");
7
7
  const utils_stores = require("./utils/stores.cjs");
8
+ const utils_widget = require("./utils/widget.cjs");
8
9
  const defaultConfig = {
9
10
  rating: 0,
10
11
  tabindex: 0,
@@ -38,7 +39,7 @@ const configValidator = {
38
39
  ariaLabel: utils_writables.typeString,
39
40
  ariaLabelledBy: utils_writables.typeString
40
41
  };
41
- function createRating(config) {
42
+ const createRating = utils_widget.createWidgetFactory("rating", (config) => {
42
43
  const [
43
44
  {
44
45
  // dirty inputs that need adjustment:
@@ -174,6 +175,6 @@ function createRating(config) {
174
175
  }
175
176
  };
176
177
  return widget;
177
- }
178
+ });
178
179
  exports.createRating = createRating;
179
180
  exports.getRatingDefaultConfig = getRatingDefaultConfig;
@@ -6,6 +6,7 @@ import { createNavManager } from "./services/navManager.js";
6
6
  import { t as generateId, k as mergeDirectives, n as createAttributesDirective, a as bindDirective } from "./dom-gfxqXJpK.js";
7
7
  import { noop } from "./utils/func.js";
8
8
  import { writablesForProps, bindableProp, bindableDerived, stateStores, true$ } from "./utils/stores.js";
9
+ import { createWidgetFactory } from "./utils/widget.js";
9
10
  const defaultConfig = {
10
11
  id: void 0,
11
12
  ariaLabel: "Select",
@@ -29,7 +30,7 @@ const defaultConfig = {
29
30
  function getSelectDefaultConfig() {
30
31
  return { ...defaultConfig };
31
32
  }
32
- function createSelect(config) {
33
+ const createSelect = createWidgetFactory("select", (config) => {
33
34
  const [
34
35
  {
35
36
  id$: _dirtyId$,
@@ -370,7 +371,7 @@ function createSelect(config) {
370
371
  }
371
372
  };
372
373
  return widget;
373
- }
374
+ });
374
375
  export {
375
376
  createSelect as c,
376
377
  getSelectDefaultConfig as g
@@ -7,6 +7,7 @@ const services_navManager = require("./services/navManager.cjs");
7
7
  const utils_directive = require("./dom-CuBx1JPZ.cjs");
8
8
  const utils_func = require("./utils/func.cjs");
9
9
  const utils_stores = require("./utils/stores.cjs");
10
+ const utils_widget = require("./utils/widget.cjs");
10
11
  const defaultConfig = {
11
12
  id: void 0,
12
13
  ariaLabel: "Select",
@@ -30,7 +31,7 @@ const defaultConfig = {
30
31
  function getSelectDefaultConfig() {
31
32
  return { ...defaultConfig };
32
33
  }
33
- function createSelect(config) {
34
+ const createSelect = utils_widget.createWidgetFactory("select", (config) => {
34
35
  const [
35
36
  {
36
37
  id$: _dirtyId$,
@@ -371,6 +372,6 @@ function createSelect(config) {
371
372
  }
372
373
  };
373
374
  return widget;
374
- }
375
+ });
375
376
  exports.createSelect = createSelect;
376
377
  exports.getSelectDefaultConfig = getSelectDefaultConfig;
@@ -2,31 +2,36 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const tansu = require("@amadeus-it-group/tansu");
4
4
  const utils_stores = require("../utils/stores.cjs");
5
- const extendWidgetProps = (factory, extraPropsDefaults, extraPropsConfig, overrideDefaults) => (propsConfig) => {
6
- const extraPropsWritables = utils_stores.writablesWithDefault(extraPropsDefaults, propsConfig, extraPropsConfig);
7
- const propsConfigConfig = propsConfig == null ? void 0 : propsConfig.config;
8
- const config = utils_stores.isStore(propsConfigConfig) ? tansu.computed(() => ({ ...overrideDefaults, ...propsConfigConfig() })) : { ...overrideDefaults, ...propsConfigConfig ?? {} };
9
- const widget = factory({ props: propsConfig == null ? void 0 : propsConfig.props, config });
10
- return {
11
- ...widget,
12
- ...utils_stores.stateStores({ ...widget.stores, ...extraPropsWritables }),
13
- patch: (storesValues) => tansu.batch(() => {
14
- let widgetProps;
15
- for (const [name, value] of Object.entries(storesValues ?? {})) {
16
- const extraPropsStore = extraPropsWritables[`${name}$`];
17
- if (extraPropsStore) {
18
- extraPropsStore.set(value);
19
- } else {
20
- if (!widgetProps) {
21
- widgetProps = {};
5
+ const types = require("../types.cjs");
6
+ const extendWidgetProps = (factory, extraPropsDefaults, extraPropsConfig, overrideDefaults) => {
7
+ const extendedFactory = (propsConfig) => {
8
+ const extraPropsWritables = utils_stores.writablesWithDefault(extraPropsDefaults, propsConfig, extraPropsConfig);
9
+ const propsConfigConfig = propsConfig == null ? void 0 : propsConfig.config;
10
+ const config = utils_stores.isStore(propsConfigConfig) ? tansu.computed(() => ({ ...overrideDefaults, ...propsConfigConfig() })) : { ...overrideDefaults, ...propsConfigConfig ?? {} };
11
+ const widget = factory({ props: propsConfig == null ? void 0 : propsConfig.props, config });
12
+ return {
13
+ ...widget,
14
+ ...utils_stores.stateStores({ ...widget.stores, ...extraPropsWritables }),
15
+ patch: (storesValues) => tansu.batch(() => {
16
+ let widgetProps;
17
+ for (const [name, value] of Object.entries(storesValues ?? {})) {
18
+ const extraPropsStore = extraPropsWritables[`${name}$`];
19
+ if (extraPropsStore) {
20
+ extraPropsStore.set(value);
21
+ } else {
22
+ if (!widgetProps) {
23
+ widgetProps = {};
24
+ }
25
+ widgetProps[name] = value;
22
26
  }
23
- widgetProps[name] = value;
24
27
  }
25
- }
26
- if (widgetProps) {
27
- widget.patch(widgetProps);
28
- }
29
- })
28
+ if (widgetProps) {
29
+ widget.patch(widgetProps);
30
+ }
31
+ })
32
+ };
30
33
  };
34
+ extendedFactory[types.FACTORY_WIDGET_NAME] = factory[types.FACTORY_WIDGET_NAME];
35
+ return extendedFactory;
31
36
  };
32
37
  exports.extendWidgetProps = extendWidgetProps;
@@ -1,31 +1,36 @@
1
1
  import { computed, batch } from "@amadeus-it-group/tansu";
2
2
  import { writablesWithDefault, isStore, stateStores } from "../utils/stores.js";
3
- const extendWidgetProps = (factory, extraPropsDefaults, extraPropsConfig, overrideDefaults) => (propsConfig) => {
4
- const extraPropsWritables = writablesWithDefault(extraPropsDefaults, propsConfig, extraPropsConfig);
5
- const propsConfigConfig = propsConfig == null ? void 0 : propsConfig.config;
6
- const config = isStore(propsConfigConfig) ? computed(() => ({ ...overrideDefaults, ...propsConfigConfig() })) : { ...overrideDefaults, ...propsConfigConfig ?? {} };
7
- const widget = factory({ props: propsConfig == null ? void 0 : propsConfig.props, config });
8
- return {
9
- ...widget,
10
- ...stateStores({ ...widget.stores, ...extraPropsWritables }),
11
- patch: (storesValues) => batch(() => {
12
- let widgetProps;
13
- for (const [name, value] of Object.entries(storesValues ?? {})) {
14
- const extraPropsStore = extraPropsWritables[`${name}$`];
15
- if (extraPropsStore) {
16
- extraPropsStore.set(value);
17
- } else {
18
- if (!widgetProps) {
19
- widgetProps = {};
3
+ import { FACTORY_WIDGET_NAME } from "../types.js";
4
+ const extendWidgetProps = (factory, extraPropsDefaults, extraPropsConfig, overrideDefaults) => {
5
+ const extendedFactory = (propsConfig) => {
6
+ const extraPropsWritables = writablesWithDefault(extraPropsDefaults, propsConfig, extraPropsConfig);
7
+ const propsConfigConfig = propsConfig == null ? void 0 : propsConfig.config;
8
+ const config = isStore(propsConfigConfig) ? computed(() => ({ ...overrideDefaults, ...propsConfigConfig() })) : { ...overrideDefaults, ...propsConfigConfig ?? {} };
9
+ const widget = factory({ props: propsConfig == null ? void 0 : propsConfig.props, config });
10
+ return {
11
+ ...widget,
12
+ ...stateStores({ ...widget.stores, ...extraPropsWritables }),
13
+ patch: (storesValues) => batch(() => {
14
+ let widgetProps;
15
+ for (const [name, value] of Object.entries(storesValues ?? {})) {
16
+ const extraPropsStore = extraPropsWritables[`${name}$`];
17
+ if (extraPropsStore) {
18
+ extraPropsStore.set(value);
19
+ } else {
20
+ if (!widgetProps) {
21
+ widgetProps = {};
22
+ }
23
+ widgetProps[name] = value;
20
24
  }
21
- widgetProps[name] = value;
22
25
  }
23
- }
24
- if (widgetProps) {
25
- widget.patch(widgetProps);
26
- }
27
- })
26
+ if (widgetProps) {
27
+ widget.patch(widgetProps);
28
+ }
29
+ })
30
+ };
28
31
  };
32
+ extendedFactory[FACTORY_WIDGET_NAME] = factory[FACTORY_WIDGET_NAME];
33
+ return extendedFactory;
29
34
  };
30
35
  export {
31
36
  extendWidgetProps
@@ -4,6 +4,7 @@ import { noop } from "./utils/func.js";
4
4
  import { writablesForProps, bindableProp, stateStores, true$ } from "./utils/stores.js";
5
5
  import { i as typeArray, e as typeString, c as typeBoolean, b as typeNumberInRangeFactory, g as typeFunction, a as typeNumber } from "./writables-CgpOQ4hA.js";
6
6
  import { createResizeObserver } from "./services/resizeObserver.js";
7
+ import { createWidgetFactory } from "./utils/widget.js";
7
8
  const decimalRegExp = /(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/;
8
9
  function getDecimalPrecision(number) {
9
10
  var _a;
@@ -90,7 +91,7 @@ const getUpdateDirection = (vertical, rtl, keysVertical) => {
90
91
  return 1;
91
92
  };
92
93
  const percent = (value) => value != null ? `${value}%` : "";
93
- function createSlider(config) {
94
+ const createSlider = createWidgetFactory("slider", (config) => {
94
95
  const [
95
96
  {
96
97
  // dirty inputs that need adjustment:
@@ -737,7 +738,7 @@ function createSlider(config) {
737
738
  }
738
739
  };
739
740
  return widget;
740
- }
741
+ });
741
742
  export {
742
743
  createSlider as c,
743
744
  getSliderDefaultConfig as g
@@ -5,6 +5,7 @@ const utils_func = require("./utils/func.cjs");
5
5
  const utils_stores = require("./utils/stores.cjs");
6
6
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
7
7
  const services_resizeObserver = require("./services/resizeObserver.cjs");
8
+ const utils_widget = require("./utils/widget.cjs");
8
9
  const decimalRegExp = /(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/;
9
10
  function getDecimalPrecision(number) {
10
11
  var _a;
@@ -91,7 +92,7 @@ const getUpdateDirection = (vertical, rtl, keysVertical) => {
91
92
  return 1;
92
93
  };
93
94
  const percent = (value) => value != null ? `${value}%` : "";
94
- function createSlider(config) {
95
+ const createSlider = utils_widget.createWidgetFactory("slider", (config) => {
95
96
  const [
96
97
  {
97
98
  // dirty inputs that need adjustment:
@@ -738,6 +739,6 @@ function createSlider(config) {
738
739
  }
739
740
  };
740
741
  return widget;
741
- }
742
+ });
742
743
  exports.createSlider = createSlider;
743
744
  exports.getSliderDefaultConfig = getSliderDefaultConfig;
@@ -24,6 +24,7 @@ const utils_directive = require("./dom-CuBx1JPZ.cjs");
24
24
  const utils_stores = require("./utils/stores.cjs");
25
25
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
26
26
  const common = require("./common-BToNPUDq.cjs");
27
+ const utils_widget = require("./utils/widget.cjs");
27
28
  const toastDefaultConfig = {
28
29
  autoHide: true,
29
30
  delay: 5e3
@@ -35,7 +36,7 @@ const toastConfigValidator = {
35
36
  function getToastDefaultConfig() {
36
37
  return { ...common.getCommonAlertDefaultConfig(), ...toastDefaultConfig };
37
38
  }
38
- function createToast(config) {
39
+ const createToast = utils_widget.createWidgetFactory("toast", (config) => {
39
40
  let _timeout;
40
41
  const extendedAlert = services_extendWidget.extendWidgetProps(
41
42
  common.createCommonAlert,
@@ -77,7 +78,7 @@ function createToast(config) {
77
78
  closeButtonDirective
78
79
  }
79
80
  };
80
- }
81
+ });
81
82
  const defaultToasterProps = {
82
83
  duration: 5e3,
83
84
  position: "bottomRight",
@@ -23,6 +23,7 @@ import { n as createAttributesDirective, d as directiveSubscribe } from "./dom-g
23
23
  import { true$ } from "./utils/stores.js";
24
24
  import { b as typeNumberInRangeFactory, c as typeBoolean } from "./writables-CgpOQ4hA.js";
25
25
  import { g as getCommonAlertDefaultConfig, c as createCommonAlert } from "./common-BqUjUBPy.js";
26
+ import { createWidgetFactory } from "./utils/widget.js";
26
27
  const toastDefaultConfig = {
27
28
  autoHide: true,
28
29
  delay: 5e3
@@ -34,7 +35,7 @@ const toastConfigValidator = {
34
35
  function getToastDefaultConfig() {
35
36
  return { ...getCommonAlertDefaultConfig(), ...toastDefaultConfig };
36
37
  }
37
- function createToast(config) {
38
+ const createToast = createWidgetFactory("toast", (config) => {
38
39
  let _timeout;
39
40
  const extendedAlert = extendWidgetProps(
40
41
  createCommonAlert,
@@ -76,7 +77,7 @@ function createToast(config) {
76
77
  closeButtonDirective
77
78
  }
78
79
  };
79
- }
80
+ });
80
81
  const defaultToasterProps = {
81
82
  duration: 5e3,
82
83
  position: "bottomRight",
@@ -4,6 +4,7 @@ import { k as mergeDirectives, n as createAttributesDirective, b as browserDirec
4
4
  import { noop } from "./utils/func.js";
5
5
  import { writablesForProps, stateStores, true$ } from "./utils/stores.js";
6
6
  import { g as typeFunction, i as typeArray, e as typeString } from "./writables-CgpOQ4hA.js";
7
+ import { createWidgetFactory } from "./utils/widget.js";
7
8
  function getTreeDefaultConfig() {
8
9
  return {
9
10
  ...defaultTreeConfig
@@ -23,7 +24,7 @@ const configValidator = {
23
24
  navSelector: typeFunction,
24
25
  ariaLabelToggleFn: typeFunction
25
26
  };
26
- function createTree(config) {
27
+ const createTree = createWidgetFactory("tree", (config) => {
27
28
  const [{ nodes$, onExpandToggle$, navSelector$, ariaLabelToggleFn$, ...stateProps }, patch] = writablesForProps(
28
29
  defaultTreeConfig,
29
30
  config,
@@ -219,7 +220,7 @@ function createTree(config) {
219
220
  }
220
221
  };
221
222
  return widget;
222
- }
223
+ });
223
224
  export {
224
225
  createTree as c,
225
226
  getTreeDefaultConfig as g
@@ -5,6 +5,7 @@ const utils_directive = require("./dom-CuBx1JPZ.cjs");
5
5
  const utils_func = require("./utils/func.cjs");
6
6
  const utils_stores = require("./utils/stores.cjs");
7
7
  const utils_writables = require("./writables-Bn3uhKEG.cjs");
8
+ const utils_widget = require("./utils/widget.cjs");
8
9
  function getTreeDefaultConfig() {
9
10
  return {
10
11
  ...defaultTreeConfig
@@ -24,7 +25,7 @@ const configValidator = {
24
25
  navSelector: utils_writables.typeFunction,
25
26
  ariaLabelToggleFn: utils_writables.typeFunction
26
27
  };
27
- function createTree(config) {
28
+ const createTree = utils_widget.createWidgetFactory("tree", (config) => {
28
29
  const [{ nodes$, onExpandToggle$, navSelector$, ariaLabelToggleFn$, ...stateProps }, patch] = utils_stores.writablesForProps(
29
30
  defaultTreeConfig,
30
31
  config,
@@ -220,6 +221,6 @@ function createTree(config) {
220
221
  }
221
222
  };
222
223
  return widget;
223
- }
224
+ });
224
225
  exports.createTree = createTree;
225
226
  exports.getTreeDefaultConfig = getTreeDefaultConfig;
package/types.cjs CHANGED
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const FACTORY_WIDGET_NAME = Symbol();
3
4
  const INVALID_VALUE = Symbol();
5
+ exports.FACTORY_WIDGET_NAME = FACTORY_WIDGET_NAME;
4
6
  exports.INVALID_VALUE = INVALID_VALUE;
package/types.d.ts CHANGED
@@ -102,14 +102,21 @@ export type WidgetProps<T extends {
102
102
  }> = T extends {
103
103
  patch: (arg: Partial<infer U extends object>) => void;
104
104
  } ? U : never;
105
+ /**
106
+ * A unique symbol representing a widget factory widget name.
107
+ */
108
+ export declare const FACTORY_WIDGET_NAME: unique symbol;
105
109
  /**
106
110
  * A factory function type for creating instances of a widget.
107
111
  *
108
112
  * @template W - The type of the widget that extends the base Widget type.
113
+ * @template T - The type of the factory function that creates the widget. Useful when the factory function has a generic
109
114
  * @param props - Optional configuration properties for the widget.
110
115
  * @returns An instance of the widget.
111
116
  */
112
- export type WidgetFactory<W extends Widget> = (props?: PropsConfig<WidgetProps<W>>) => W;
117
+ export type WidgetFactory<W extends Widget, T extends (props?: PropsConfig<WidgetProps<W>>) => W = (props?: PropsConfig<WidgetProps<W>>) => W> = T & {
118
+ [FACTORY_WIDGET_NAME]?: string;
119
+ };
113
120
  /**
114
121
  * Represents a server-side rendered HTML element with limited functionality.
115
122
  *
package/types.js CHANGED
@@ -1,4 +1,6 @@
1
+ const FACTORY_WIDGET_NAME = Symbol();
1
2
  const INVALID_VALUE = Symbol();
2
3
  export {
4
+ FACTORY_WIDGET_NAME,
3
5
  INVALID_VALUE
4
6
  };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const types = require("../types.cjs");
4
+ function createWidgetFactory(widgetName, factory) {
5
+ factory[types.FACTORY_WIDGET_NAME] = widgetName;
6
+ return factory;
7
+ }
8
+ exports.createWidgetFactory = createWidgetFactory;
@@ -0,0 +1,11 @@
1
+ import type { PropsConfig, Widget, WidgetFactory, WidgetProps } from '../types';
2
+ /**
3
+ * Define a widget factory that can be linked with configuration through the provided widget name.
4
+ *
5
+ * @param widgetName - the widget name, used for configuration injection
6
+ * @param factory - the widget factory function
7
+ * @template W - The type of the widget
8
+ * @template T - The type of the widget factory function. Useful when the widget factory has a generic.
9
+ * @returns the widget factory
10
+ */
11
+ export declare function createWidgetFactory<W extends Widget, T extends (config?: PropsConfig<WidgetProps<W>>) => W = (config?: PropsConfig<WidgetProps<W>>) => W>(widgetName: string, factory: T): WidgetFactory<W, T>;
@@ -0,0 +1,8 @@
1
+ import { FACTORY_WIDGET_NAME } from "../types.js";
2
+ function createWidgetFactory(widgetName, factory) {
3
+ factory[FACTORY_WIDGET_NAME] = widgetName;
4
+ return factory;
5
+ }
6
+ export {
7
+ createWidgetFactory
8
+ };
package/alert-BpepSIHu.js DELETED
@@ -1,9 +0,0 @@
1
- import { c as createCommonAlert, g as getCommonAlertDefaultConfig } from "./common-BqUjUBPy.js";
2
- function getAlertDefaultConfig() {
3
- return { ...getCommonAlertDefaultConfig() };
4
- }
5
- const createAlert = createCommonAlert;
6
- export {
7
- createAlert as c,
8
- getAlertDefaultConfig as g
9
- };