@magicx-eng/ai-autocomplete-vanilla 0.28.2 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -109,6 +109,8 @@ const ac = new AIAutocomplete(container, {
109
109
  // How the strip lays its cards out: a scrolling row, or "list" — the same
110
110
  // cards stacked as full-width rows.
111
111
  productsLayout: "row",
112
+ // Missing/blank URL or load error: "image" (default) or the title initial.
113
+ productImageFallback: "image",
112
114
  // Custom source for the strip. Omit it and the server's items are shown.
113
115
  products: {
114
116
  fetch: (query, signal) => myPlatform.search(query, { signal }),
@@ -138,6 +140,15 @@ const ac = new AIAutocomplete(container, {
138
140
  });
139
141
  ```
140
142
 
143
+ Product display options apply to both `renderMode: "full"` and
144
+ `renderMode: "dropdown"`, at construction and through `update()`:
145
+
146
+ | Option | Type | Default | Description |
147
+ |---|---|---|---|
148
+ | `showProducts?` | `boolean` | `true` | Show product cards whenever there are products to display. |
149
+ | `productsLayout?` | `"row" \| "list"` | `"row"` | Lay out cards as a scrolling row or a vertical list. |
150
+ | `productImageFallback?` | `"image" \| "initial"` | `"image"` | Fallback for a missing or blank product image URL, or an image load error. `"image"` shows the placeholder pictogram; `"initial"` shows the title initial. A working image still takes priority. See [Product strip](#product-strip). |
151
+
141
152
  ### Methods
142
153
 
143
154
  ```ts
@@ -204,6 +215,44 @@ default); `--aia-product-list-media-size` (44px) sizes the thumbnail and
204
215
  is the horizontal strip. `update({ productsLayout })` re-lays the strip out at
205
216
  once.
206
217
 
218
+ **Product image fallback.** A product's image takes priority when its
219
+ `imageUrl` loads successfully. A missing or blank URL, or an image load error,
220
+ uses `productImageFallback`: `"image"` (the default) shows the existing
221
+ placeholder pictogram; `"initial"` shows the first character of the trimmed,
222
+ uppercased title. This is a Unicode grapheme (so a combined character or emoji
223
+ stays together), with a Unicode code point fallback in older browsers. An
224
+ empty or whitespace-only title shows `?`. The fallback works in both row and
225
+ list layouts. Initial tiles are decorative (`aria-hidden="true"`); the card's
226
+ visible title supplies its text.
227
+
228
+ Set the option at construction or change it through `update()`. Both
229
+ rendered tiers (`"full"` and `"dropdown"`) apply it to the visible cards:
230
+
231
+ ```ts
232
+ const ac = new AIAutocomplete(container, {
233
+ apiConfig: { apiKey: "..." },
234
+ productImageFallback: "initial",
235
+ });
236
+
237
+ // Switch existing fallback tiles back to the placeholder pictogram.
238
+ ac.update({ productImageFallback: "image" });
239
+ ```
240
+
241
+ Style the initial tile itself with `[data-aia-product-initial]`. For
242
+ example, wrap the widget in an element with `id="catalog-search"` and add this
243
+ rule to your stylesheet. The existing `--aia-product-media-bg` variable sets
244
+ the background; `color`, `font-size` and `border-radius` style the initial
245
+ without additional SDK options.
246
+
247
+ ```css
248
+ #catalog-search [data-aia-product-initial] {
249
+ --aia-product-media-bg: #eef2ff;
250
+ color: #4338ca;
251
+ font-size: 22px;
252
+ border-radius: 12px;
253
+ }
254
+ ```
255
+
207
256
  #### The catalog report (`customFields`)
208
257
 
209
258
  Every response that read the catalog also says what it did with the query, and
@@ -294,7 +343,7 @@ type Product = {
294
343
  id: string;
295
344
  title: string;
296
345
  url?: string; // absent = a card with no link (still activatable)
297
- imageUrl?: string | null; // null renders the placeholder tile
346
+ imageUrl?: string | null; // null uses the configured productImageFallback
298
347
  price?: string; // pre-formatted by you
299
348
  vendor?: string;
300
349
  };
@@ -489,7 +538,7 @@ input.addEventListener("blur", () => ac.setFocused(false));
489
538
 
490
539
  Pills always render inside the dropdown in this mode. The library creates the dropdown DOM inside your container — you just provide the element and wire up your input's events.
491
540
 
492
- The [product strip](#product-strip) works here too: it renders inside the dropdown the library owns, from the server's items by default, and `products` / `showProducts` / `onProductSelect` behave exactly as in Tier 1.
541
+ The [product strip](#product-strip) works here too: it renders inside the dropdown the library owns, from the server's items by default, and `products` / `showProducts` / `productImageFallback` / `onProductSelect` behave exactly as in Tier 1.
493
542
 
494
543
  > Focus/blur wiring is required when `dropdownTrigger` is `"auto"` (the default) — the dropdown only opens while the input is focused. Without `setFocused()`, the dropdown will never open.
495
544
 
@@ -809,10 +858,10 @@ Override these on the container element. The variables are declared with `:where
809
858
  | `--aia-product-gap` | `8px` | `8px` | Gap between product cards. |
810
859
  | `--aia-product-bg` | `transparent` | `transparent` | Product card background. |
811
860
  | `--aia-product-bg-active` | `--aia-option-bg` | `--aia-option-bg` | Product card background on hover. |
812
- | `--aia-product-media-bg` | `--aia-skeleton-bg` | `--aia-skeleton-bg` | Fill behind the product image, and of the placeholder tile when a product has no image. |
861
+ | `--aia-product-media-bg` | `--aia-skeleton-bg` | `--aia-skeleton-bg` | Fill behind product images and both fallback tiles (placeholder pictogram or title initial), used when an image URL is missing, blank or fails to load. |
813
862
  | `--aia-scroll-arrow-color` | `--aia-option-color` | `--aia-option-color` | Chevron color of the arrow (`--aia-scroll-arrow-color-hover` on hover). |
814
863
  | `--aia-placeholder-fade` | `120ms` | `120ms` | Fade-out of the outgoing placeholder phrase when the starting-state placeholder changes (the incoming one types itself in). |
815
- | `--aia-product-placeholder-image` | storefront pictogram | storefront pictogram | The image drawn on the placeholder tile when a product has no `imageUrl`: a two-tone storefront pictogram, inlined as a data URI. Set it to any `url(...)` to swap the pictogram; it is drawn centered and contained inside the tile, over `--aia-product-media-bg`. |
864
+ | `--aia-product-placeholder-image` | storefront pictogram | storefront pictogram | The pictogram used by `productImageFallback: "image"` (the default) when an image URL is missing, blank or fails to load. Defaults to a two-tone storefront inlined as a data URI. Set any `url(...)` to swap it; it is centered and contained over `--aia-product-media-bg`. Does not affect `"initial"` tiles. |
816
865
  | `--aia-product-title-color` | `--aia-option-color-selected` | `--aia-option-color-selected` | Product title text. Follows the option colors by default, so theming the panel moves suggestions and products together. |
817
866
  | `--aia-product-price-color` | `--aia-option-color-selected` | `--aia-option-color-selected` | Product price text. |
818
867
  | `--aia-product-vendor-color` | `--aia-option-color` | `--aia-option-color` | Product vendor line. |
@@ -877,7 +926,8 @@ For styling beyond the CSS variables, target these stable `data-aia-*` attribute
877
926
  | `[data-aia-products]` | Product strip section (label + row) |
878
927
  | `[data-aia-products-row]` | The horizontally scrolling row of cards |
879
928
  | `[data-aia-product]` | Each product card |
880
- | `[data-aia-product-placeholder]` | Media tile of a card whose product has no image |
929
+ | `[data-aia-product-placeholder]` | Media tile showing the placeholder pictogram (`productImageFallback: "image"`) after a missing/blank URL or load error. The existing hook is unchanged. |
930
+ | `[data-aia-product-initial]` | The media tile itself when it shows the title initial (`productImageFallback: "initial"`). Decorative (`aria-hidden="true"`); target it to style the background, color, font size and border radius. |
881
931
 
882
932
  Completed params render as inline `<strong>` elements inside the editor. Override their weight with `[data-aia-input] strong { font-weight: 700; }` — a selector that names the editor wins without `!important`, while a bare `strong { … }` page rule is kept out by the isolation reset.
883
933
 
package/dist/index.d.mts CHANGED
@@ -358,6 +358,8 @@ interface Product {
358
358
  * (courses, listings, documents) rather than products on a shelf.
359
359
  */
360
360
  type ProductsLayout = "row" | "list";
361
+ /** What a product tile shows when its image is missing or fails to load. */
362
+ type ProductImageFallback = "image" | "initial";
361
363
  /**
362
364
  * Custom product-search wiring for the strip. Absent (the default), the strip
363
365
  * shows the items the `/suggest` response itself reports as matching the query
@@ -961,6 +963,12 @@ interface CoreOptions {
961
963
  * the strip out at once.
962
964
  */
963
965
  productsLayout?: ProductsLayout;
966
+ /**
967
+ * Fallback for a missing or failed product image. "image" (default) uses
968
+ * the placeholder image; "initial" uses the title's first character.
969
+ * Style initial tiles with `[data-aia-product-initial]` in CSS.
970
+ */
971
+ productImageFallback?: ProductImageFallback;
964
972
  /**
965
973
  * Custom source for the product strip. Omit it and the strip shows the items
966
974
  * the `/suggest` response itself reports (`custom_fields.items`), with no
@@ -2116,6 +2124,9 @@ declare class ModeController {
2116
2124
  */
2117
2125
  declare function identifiedParamLabel(type: string): string;
2118
2126
 
2127
+ /** Uppercase first character for a product tile; an empty title displays "?". */
2128
+ declare function productInitial(title: string): string;
2129
+
2119
2130
  /**
2120
2131
  * Sentinel `text` marking a `completed_params` entry the user skipped (→)
2121
2132
  * rather than filled. Sent regardless of `maskCompletedText` — it's a fixed
@@ -2166,4 +2177,4 @@ interface SubmitResultExtras {
2166
2177
  */
2167
2178
  declare function buildSubmitResult(text: string, completedParams: CompletedParamState[], skippedParams?: SkippedParamState[], extras?: SubmitResultExtras): AutocompleteResult;
2168
2179
 
2169
- export { AIAutocomplete, type APIConfig, type APIKeyConfig, ATTRIBUTION_URL, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteRequest, type AutocompleteResponse, type AutocompleteResult, type CompletedParam, type CompletedParamState, type CoreOptions, type CoreState, type CustomFieldsReport, DATE_RANGE_META_END, DATE_RANGE_META_START, DEFAULT_OPTION_COUNT_UNIT, type DateMonthView, type DateRange, type DateSelection, type ExpressedFilter, type FilterOp, type FormatType, type IdentifiedParam, type IdentifiedParamState, type InputItem, type LooseDateOptions, type MatchedItem, type MatchedItems, ModeController, OPTIONS_GRID_MOBILE_QUERY, OPTION_ENTER_DELAY_VAR, OPTION_ENTER_FADE_MS, OPTION_ENTER_RISE_MS, OPTION_ENTER_RISE_PX, OPTION_ENTER_STAGGER_MS, type OptionOverride, type OptionOverrides, type OptionsGridLayout, type OptionsGridPlan, PLACEHOLDER_FADE_OUT_MS, PLACEHOLDER_LEAVING_ATTR, PLACEHOLDER_SWAP_GAP_MS, PLACEHOLDER_TYPE_MS, PLACEHOLDER_WORD_PAUSE_MS, PRODUCT_PATH_PREFIX, PRODUCT_ROW_PX_PER_LINE, type Product, type ProductRowMetrics, type ProductRowWheel, type ProductsConfig, type ProductsLayout, RANGE_SEPARATOR, type RecentlySuggested, type RenderMode, SCROLL_ARROW_ATTR, SCROLL_ARROW_BOTTOM_VAR, SCROLL_ARROW_CLASS, SCROLL_ARROW_FADE_MS, SCROLL_ARROW_LABEL, SCROLL_ARROW_SCROLL_IDLE_MS, SCROLL_ARROW_VISIBLE_ATTR, SKIPPED_PARAM_TEXT, type ScrollArrowArgs, type ScrollArrowController, type Segment, type SkippedParamState, type Store, type SubmitResultExtras, type Suggestion, type SuggestionOption, type TaskKind, WEEKDAY_LABELS, addMonths, attachProductRowWheel, attachScrollArrow, buildAttributionUrl, buildDateOptions, buildQuery, buildSubmitResult, cellDay, cellIso, computeOptionsGridLayout, createStore, cursorIsAtEnd, dateCellMarks, dateSelectionFor, extractPlainText, formatAbsoluteDate, formatDate, formatDateRange, formatOptionCount, getCursorOffset, getFooterHint, identifiedParamLabel, isCalendarFormat, isOptionsGridMobileViewport, isoDate, measureOptionsGrid, monthLabel, needsOptionsGridMeasurement, optionCountLabel, optionEnterDelayMs, optionHasImage, optionImageSrc, optionLabel, optionsEntranceDurationMs, optionsGridTemplateColumns, parseDate, parseLooseDate, parseLooseDateRange, plainTextLength, planOptionsGrid, previousGraphemeBoundary, productFromMatchedItem, productRowWheelTarget, productsFromCustomFields, renderEditableContent, resolveFormatType, resolveIdentifiedDate, sameOptionRows, sanitizeOptionIconSvg, scrollCaretIntoView, selectedIsoFromText, selectedRangeFor, setCursorOffset, toWireIdentifiedParams, visibleDateRange, withSkippedParams };
2180
+ export { AIAutocomplete, type APIConfig, type APIKeyConfig, ATTRIBUTION_URL, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteRequest, type AutocompleteResponse, type AutocompleteResult, type CompletedParam, type CompletedParamState, type CoreOptions, type CoreState, type CustomFieldsReport, DATE_RANGE_META_END, DATE_RANGE_META_START, DEFAULT_OPTION_COUNT_UNIT, type DateMonthView, type DateRange, type DateSelection, type ExpressedFilter, type FilterOp, type FormatType, type IdentifiedParam, type IdentifiedParamState, type InputItem, type LooseDateOptions, type MatchedItem, type MatchedItems, ModeController, OPTIONS_GRID_MOBILE_QUERY, OPTION_ENTER_DELAY_VAR, OPTION_ENTER_FADE_MS, OPTION_ENTER_RISE_MS, OPTION_ENTER_RISE_PX, OPTION_ENTER_STAGGER_MS, type OptionOverride, type OptionOverrides, type OptionsGridLayout, type OptionsGridPlan, PLACEHOLDER_FADE_OUT_MS, PLACEHOLDER_LEAVING_ATTR, PLACEHOLDER_SWAP_GAP_MS, PLACEHOLDER_TYPE_MS, PLACEHOLDER_WORD_PAUSE_MS, PRODUCT_PATH_PREFIX, PRODUCT_ROW_PX_PER_LINE, type Product, type ProductImageFallback, type ProductRowMetrics, type ProductRowWheel, type ProductsConfig, type ProductsLayout, RANGE_SEPARATOR, type RecentlySuggested, type RenderMode, SCROLL_ARROW_ATTR, SCROLL_ARROW_BOTTOM_VAR, SCROLL_ARROW_CLASS, SCROLL_ARROW_FADE_MS, SCROLL_ARROW_LABEL, SCROLL_ARROW_SCROLL_IDLE_MS, SCROLL_ARROW_VISIBLE_ATTR, SKIPPED_PARAM_TEXT, type ScrollArrowArgs, type ScrollArrowController, type Segment, type SkippedParamState, type Store, type SubmitResultExtras, type Suggestion, type SuggestionOption, type TaskKind, WEEKDAY_LABELS, addMonths, attachProductRowWheel, attachScrollArrow, buildAttributionUrl, buildDateOptions, buildQuery, buildSubmitResult, cellDay, cellIso, computeOptionsGridLayout, createStore, cursorIsAtEnd, dateCellMarks, dateSelectionFor, extractPlainText, formatAbsoluteDate, formatDate, formatDateRange, formatOptionCount, getCursorOffset, getFooterHint, identifiedParamLabel, isCalendarFormat, isOptionsGridMobileViewport, isoDate, measureOptionsGrid, monthLabel, needsOptionsGridMeasurement, optionCountLabel, optionEnterDelayMs, optionHasImage, optionImageSrc, optionLabel, optionsEntranceDurationMs, optionsGridTemplateColumns, parseDate, parseLooseDate, parseLooseDateRange, plainTextLength, planOptionsGrid, previousGraphemeBoundary, productFromMatchedItem, productInitial, productRowWheelTarget, productsFromCustomFields, renderEditableContent, resolveFormatType, resolveIdentifiedDate, sameOptionRows, sanitizeOptionIconSvg, scrollCaretIntoView, selectedIsoFromText, selectedRangeFor, setCursorOffset, toWireIdentifiedParams, visibleDateRange, withSkippedParams };
package/dist/index.d.ts CHANGED
@@ -358,6 +358,8 @@ interface Product {
358
358
  * (courses, listings, documents) rather than products on a shelf.
359
359
  */
360
360
  type ProductsLayout = "row" | "list";
361
+ /** What a product tile shows when its image is missing or fails to load. */
362
+ type ProductImageFallback = "image" | "initial";
361
363
  /**
362
364
  * Custom product-search wiring for the strip. Absent (the default), the strip
363
365
  * shows the items the `/suggest` response itself reports as matching the query
@@ -961,6 +963,12 @@ interface CoreOptions {
961
963
  * the strip out at once.
962
964
  */
963
965
  productsLayout?: ProductsLayout;
966
+ /**
967
+ * Fallback for a missing or failed product image. "image" (default) uses
968
+ * the placeholder image; "initial" uses the title's first character.
969
+ * Style initial tiles with `[data-aia-product-initial]` in CSS.
970
+ */
971
+ productImageFallback?: ProductImageFallback;
964
972
  /**
965
973
  * Custom source for the product strip. Omit it and the strip shows the items
966
974
  * the `/suggest` response itself reports (`custom_fields.items`), with no
@@ -2116,6 +2124,9 @@ declare class ModeController {
2116
2124
  */
2117
2125
  declare function identifiedParamLabel(type: string): string;
2118
2126
 
2127
+ /** Uppercase first character for a product tile; an empty title displays "?". */
2128
+ declare function productInitial(title: string): string;
2129
+
2119
2130
  /**
2120
2131
  * Sentinel `text` marking a `completed_params` entry the user skipped (→)
2121
2132
  * rather than filled. Sent regardless of `maskCompletedText` — it's a fixed
@@ -2166,4 +2177,4 @@ interface SubmitResultExtras {
2166
2177
  */
2167
2178
  declare function buildSubmitResult(text: string, completedParams: CompletedParamState[], skippedParams?: SkippedParamState[], extras?: SubmitResultExtras): AutocompleteResult;
2168
2179
 
2169
- export { AIAutocomplete, type APIConfig, type APIKeyConfig, ATTRIBUTION_URL, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteRequest, type AutocompleteResponse, type AutocompleteResult, type CompletedParam, type CompletedParamState, type CoreOptions, type CoreState, type CustomFieldsReport, DATE_RANGE_META_END, DATE_RANGE_META_START, DEFAULT_OPTION_COUNT_UNIT, type DateMonthView, type DateRange, type DateSelection, type ExpressedFilter, type FilterOp, type FormatType, type IdentifiedParam, type IdentifiedParamState, type InputItem, type LooseDateOptions, type MatchedItem, type MatchedItems, ModeController, OPTIONS_GRID_MOBILE_QUERY, OPTION_ENTER_DELAY_VAR, OPTION_ENTER_FADE_MS, OPTION_ENTER_RISE_MS, OPTION_ENTER_RISE_PX, OPTION_ENTER_STAGGER_MS, type OptionOverride, type OptionOverrides, type OptionsGridLayout, type OptionsGridPlan, PLACEHOLDER_FADE_OUT_MS, PLACEHOLDER_LEAVING_ATTR, PLACEHOLDER_SWAP_GAP_MS, PLACEHOLDER_TYPE_MS, PLACEHOLDER_WORD_PAUSE_MS, PRODUCT_PATH_PREFIX, PRODUCT_ROW_PX_PER_LINE, type Product, type ProductRowMetrics, type ProductRowWheel, type ProductsConfig, type ProductsLayout, RANGE_SEPARATOR, type RecentlySuggested, type RenderMode, SCROLL_ARROW_ATTR, SCROLL_ARROW_BOTTOM_VAR, SCROLL_ARROW_CLASS, SCROLL_ARROW_FADE_MS, SCROLL_ARROW_LABEL, SCROLL_ARROW_SCROLL_IDLE_MS, SCROLL_ARROW_VISIBLE_ATTR, SKIPPED_PARAM_TEXT, type ScrollArrowArgs, type ScrollArrowController, type Segment, type SkippedParamState, type Store, type SubmitResultExtras, type Suggestion, type SuggestionOption, type TaskKind, WEEKDAY_LABELS, addMonths, attachProductRowWheel, attachScrollArrow, buildAttributionUrl, buildDateOptions, buildQuery, buildSubmitResult, cellDay, cellIso, computeOptionsGridLayout, createStore, cursorIsAtEnd, dateCellMarks, dateSelectionFor, extractPlainText, formatAbsoluteDate, formatDate, formatDateRange, formatOptionCount, getCursorOffset, getFooterHint, identifiedParamLabel, isCalendarFormat, isOptionsGridMobileViewport, isoDate, measureOptionsGrid, monthLabel, needsOptionsGridMeasurement, optionCountLabel, optionEnterDelayMs, optionHasImage, optionImageSrc, optionLabel, optionsEntranceDurationMs, optionsGridTemplateColumns, parseDate, parseLooseDate, parseLooseDateRange, plainTextLength, planOptionsGrid, previousGraphemeBoundary, productFromMatchedItem, productRowWheelTarget, productsFromCustomFields, renderEditableContent, resolveFormatType, resolveIdentifiedDate, sameOptionRows, sanitizeOptionIconSvg, scrollCaretIntoView, selectedIsoFromText, selectedRangeFor, setCursorOffset, toWireIdentifiedParams, visibleDateRange, withSkippedParams };
2180
+ export { AIAutocomplete, type APIConfig, type APIKeyConfig, ATTRIBUTION_URL, type AccessTokenConfig, type AccessTokenResult, type AppearanceMode, type AutocompleteRequest, type AutocompleteResponse, type AutocompleteResult, type CompletedParam, type CompletedParamState, type CoreOptions, type CoreState, type CustomFieldsReport, DATE_RANGE_META_END, DATE_RANGE_META_START, DEFAULT_OPTION_COUNT_UNIT, type DateMonthView, type DateRange, type DateSelection, type ExpressedFilter, type FilterOp, type FormatType, type IdentifiedParam, type IdentifiedParamState, type InputItem, type LooseDateOptions, type MatchedItem, type MatchedItems, ModeController, OPTIONS_GRID_MOBILE_QUERY, OPTION_ENTER_DELAY_VAR, OPTION_ENTER_FADE_MS, OPTION_ENTER_RISE_MS, OPTION_ENTER_RISE_PX, OPTION_ENTER_STAGGER_MS, type OptionOverride, type OptionOverrides, type OptionsGridLayout, type OptionsGridPlan, PLACEHOLDER_FADE_OUT_MS, PLACEHOLDER_LEAVING_ATTR, PLACEHOLDER_SWAP_GAP_MS, PLACEHOLDER_TYPE_MS, PLACEHOLDER_WORD_PAUSE_MS, PRODUCT_PATH_PREFIX, PRODUCT_ROW_PX_PER_LINE, type Product, type ProductImageFallback, type ProductRowMetrics, type ProductRowWheel, type ProductsConfig, type ProductsLayout, RANGE_SEPARATOR, type RecentlySuggested, type RenderMode, SCROLL_ARROW_ATTR, SCROLL_ARROW_BOTTOM_VAR, SCROLL_ARROW_CLASS, SCROLL_ARROW_FADE_MS, SCROLL_ARROW_LABEL, SCROLL_ARROW_SCROLL_IDLE_MS, SCROLL_ARROW_VISIBLE_ATTR, SKIPPED_PARAM_TEXT, type ScrollArrowArgs, type ScrollArrowController, type Segment, type SkippedParamState, type Store, type SubmitResultExtras, type Suggestion, type SuggestionOption, type TaskKind, WEEKDAY_LABELS, addMonths, attachProductRowWheel, attachScrollArrow, buildAttributionUrl, buildDateOptions, buildQuery, buildSubmitResult, cellDay, cellIso, computeOptionsGridLayout, createStore, cursorIsAtEnd, dateCellMarks, dateSelectionFor, extractPlainText, formatAbsoluteDate, formatDate, formatDateRange, formatOptionCount, getCursorOffset, getFooterHint, identifiedParamLabel, isCalendarFormat, isOptionsGridMobileViewport, isoDate, measureOptionsGrid, monthLabel, needsOptionsGridMeasurement, optionCountLabel, optionEnterDelayMs, optionHasImage, optionImageSrc, optionLabel, optionsEntranceDurationMs, optionsGridTemplateColumns, parseDate, parseLooseDate, parseLooseDateRange, plainTextLength, planOptionsGrid, previousGraphemeBoundary, productFromMatchedItem, productInitial, productRowWheelTarget, productsFromCustomFields, renderEditableContent, resolveFormatType, resolveIdentifiedDate, sameOptionRows, sanitizeOptionIconSvg, scrollCaretIntoView, selectedIsoFromText, selectedRangeFor, setCursorOffset, toWireIdentifiedParams, visibleDateRange, withSkippedParams };