Bootstrap

API config

callWidgetFactory

constant

const callWidgetFactory: <W>(factory, options?) => WidgetSlotContext<W> = configFactories.callWidgetFactory

Creates and initializes a widget using the provided factory and configuration options.

Type Parameters
W

W extends Widget<object, object, object, object>

Parameters
factory

WidgetFactory<W>

the widget factory

options?

the optional options

defaultConfig?

Partial<WidgetProps<W>> | ReadableSignal<undefined | Partial<WidgetProps<W>>>

the default configuration for the widget

events?

Partial<Pick<WidgetProps<W>, keyof WidgetProps<W> & on${string}Change >>

the events to be passed to the widget

props?

Partial<WidgetProps<W>>

the props to be passed to the widget

Returns

WidgetSlotContext<W>

the state, api and directives to track and interact with the widget


createWidgetsConfig

function

createWidgetsConfig<T>(parent$?, adaptParentConfig?): WidgetsConfigStore<T>

Creates a new widgets default configuration store, optionally inheriting from a parent store, and containing its own set of widgets configuration properties that override the same properties form the parent configuration.

Type Parameters
T

T

Parameters
parent$?

WidgetsConfigStore<T>

optional parent widgets default configuration store.

adaptParentConfig?

(config) => Partial2Levels<T>

optional function that receives a 2-levels copy of the widgets default configuration from parent$ (or an empty object if parent$ is not specified) and returns the widgets default configuration to be used. It is called only if the configuration is needed, and was not yet computed for the current value of the parent configuration. It is called in a tansu reactive context, so it can use any tansu store and will be called again if those stores change.

Returns

WidgetsConfigStore<T>

the resulting widgets default configuration store, which contains 3 additional properties that are stores: parent$, adaptedParent$ (containing the value computed after the first step), and own$ (that contains only overridding properties). The resulting store is writable, its set function is actually the set function of the own$ store.

Remarks

The resulting store has a value computed from the parent store in two steps:

  • first step: the parent configuration is transformed by the adaptParentConfig function (if specified). If adaptParentConfig is not specified, this step is skipped.
  • second step: the configuration from step 1 is merged (2-levels deep) with the own$ store. The own$ store initially contains an empty object (i.e. no property from the parent is overridden). It can be changed by calling set on the store returned by this function.

createWidgetsDefaultConfig

constant

const createWidgetsDefaultConfig: CreateWidgetsDefaultConfig = configFactories.createWidgetsDefaultConfig

Creates in the Svelte context hierarchy a new widgets default configuration store that inherits from any widgets default configuration store already defined at an upper level in the Svelte context hierarchy. It contains its own set of widgets configuration properties that override the same properties form the parent configuration.

Remarks

The configuration is computed from the parent configuration in two steps:

  • first step: the parent configuration is transformed by the adaptParentConfig function (if specified). If adaptParentConfig is not specified, this step is skipped.
  • second step: the configuration from step 1 is merged (2-levels deep) with the own$ store. The own$ store initially contains an empty object (i.e. no property from the parent is overridden). It can be changed by calling set on the store returned by this function.
Param

optional function that receives a 2-levels copy of the widgets default configuration defined at an upper level in the Svelte context hierarchy (or an empty object if there is none) and returns the widgets default configuration to be used. It is called only if the configuration is needed, and was not yet computed for the current value of the parent configuration. It is called in a tansu reactive context, so it can use any tansu store and will be called again if those stores change.

Returns

the resulting widgets default configuration store, which contains 3 additional properties that are stores: parent$, adaptedParent$ (containing the value computed after the first step), and own$ (that contains only overridding properties). The resulting store is writable, its set function is actually the set function of the own$ store.

Example
const widgetsConfig = createWidgetsDefaultConfig((parentConfig) => {
  // first step configuration: transforms the parent configuration
  parentConfig.rating = parentConfig.rating ?? {};
  parentConfig.rating.className = `${parentConfig.rating.className ?? ''} my-rating-extra-class`
  return parentConfig;
});
widgetsConfig.set({
  // second step configuration: overrides the parent configuration
  rating: {
    slotStar: MyCustomSlotStar
  }
});

getContextWidgetConfig

constant

const getContextWidgetConfig: <N>(widgetName) => ReadableSignal<undefined | Partial<WidgetsConfig[N]>> = configFactories.getContextWidgetConfig

Retrieves a widgets configuration store from the Svelte context hierarchy.

Type Parameters
N

N extends keyof WidgetsConfig

Parameters
widgetName

N

the name of the widget

Returns

ReadableSignal<undefined | Partial<WidgetsConfig[N]>>

the widgets configuration store


mergeInto

function

mergeInto<T>(destination, source, levels): T

Merges source object into destination object, up to the provided number of levels.

Type Parameters
T

T

Parameters
destination

T

destination object

source

source object

undefined | T

levels

number = Infinity

number of levels to merge

Returns

T

the destination object in most cases, or the source in some cases (if the source is not undefined and either levels is smaller than 1 or the source is not an object)


Partial2Levels

type alias

Partial2Levels<T> = Partial<{ [Level1 in keyof T]: Partial<T[Level1]> }>

A utility type that makes all properties of an object type T optional, and also makes all properties of the nested objects within T optional.

Type Parameters
T

T

The object type to be transformed.


widgetsConfigFactory

function

widgetsConfigFactory<Config>(widgetsDefaultConfigKey): object

A factory to create the utilities to allow widgets to be context-aware.

It can be used when extending the core and creating new widgets.

Type Parameters
Config

Config extends object = WidgetsConfig

The shape of the widgets configuration object.

Parameters
widgetsDefaultConfigKey

symbol = ...

the widgets config key

Returns

the utilities to create / manage widgets and contexts

callWidgetFactory

callWidgetFactory: <W>(factory, options?) => WidgetSlotContext<W>

Creates and initializes a widget using the provided factory and configuration options.

Type Parameters
W

W extends Widget<object, object, object, object>

Parameters
factory

WidgetFactory<W>

the widget factory

options?

the optional options

####### defaultConfig?

Partial<WidgetProps<W>> | ReadableSignal<undefined | Partial<WidgetProps<W>>>

the default configuration for the widget

####### events?

Partial<Pick<WidgetProps<W>, keyof WidgetProps<W> & on${string}Change >>

the events to be passed to the widget

####### props?

Partial<WidgetProps<W>>

the props to be passed to the widget

Returns

WidgetSlotContext<W>

the state, api and directives to track and interact with the widget

createWidgetsDefaultConfig

createWidgetsDefaultConfig: CreateWidgetsDefaultConfig<Config>

getContextWidgetConfig

getContextWidgetConfig: <N>(widgetName) => ReadableSignal<undefined | Partial<Config[N]>>

Retrieves a widgets configuration store from the Svelte context hierarchy.

Type Parameters
N

N extends string | number | symbol

Parameters
widgetName

N

the name of the widget

Returns

ReadableSignal<undefined | Partial<Config[N]>>

the widgets configuration store

widgetsDefaultConfigKey

widgetsDefaultConfigKey: symbol

Key used in the Svelte context to get or set the widgets default configuration store.


WidgetsConfigStore

type alias

WidgetsConfigStore<T> = WritableSignal<Partial2Levels<T>> & object

Represents a store for widget configurations with support for partial updates at two levels of depth. This store includes signals for its own state, an optional parent state, and an optional adapted parent state.

Type declaration
adaptedParent$

adaptedParent$: undefined | ReadableSignal<Partial2Levels<T>>

own$

own$: WritableSignal<Partial2Levels<T>>

parent$

parent$: undefined | WritableSignal<Partial2Levels<T>>

Type Parameters
T

T

The type of the widget configuration.


widgetsDefaultConfigKey

constant

const widgetsDefaultConfigKey: symbol = configFactories.widgetsDefaultConfigKey

Key used in the Svelte context to get or set the widgets default configuration store.