@orangelogic/design-system 3.15.0 → 3.17.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 (57) hide show
  1. package/library/chunks/{asset-link-format.GZb85GYh.js → asset-link-format.FmSSysED.js} +890 -893
  2. package/library/chunks/{button.BQoebhw_.js → button.DCyoZrRj.js} +1 -1
  3. package/library/chunks/{color-swatch-group.D25fjSK-.js → color-swatch-group.CvApE9bf.js} +5 -5
  4. package/library/chunks/{confirm-popover.C35rVtVI.js → confirm-popover.-_1n24v-.js} +1 -1
  5. package/library/chunks/{document-viewer.sz5uTo3c.js → document-viewer.DY5s9zRW.js} +3 -3
  6. package/library/chunks/{dom.DShN_5Jh.js → dom.DL-cNKsj.js} +40 -38
  7. package/library/chunks/{folder-select.CHY44KlA.js → folder-select.CsuADJH9.js} +2 -2
  8. package/library/chunks/{form.C8LMdQB4.js → form.DN2v7-DH.js} +1 -1
  9. package/library/chunks/{index.D8AuAxXl.js → index.CW7LXCxo.js} +9 -9
  10. package/library/chunks/{input.BRZzv6Zk.js → input.Csf-S2nB.js} +1 -1
  11. package/library/chunks/{pagination.DtdNeZZD.js → pagination.C9NblxKt.js} +2 -2
  12. package/library/chunks/{tab-group.BQh_hMDd.js → tab-group.B6Aej-jM.js} +2 -2
  13. package/library/chunks/{types.Bc8Tgozj.js → types.BNc8NEZr.js} +10879 -10646
  14. package/library/components/asset-link-format.js +2 -2
  15. package/library/components/atoms.js +5 -5
  16. package/library/components/border-input-group.js +1 -1
  17. package/library/components/button.js +2 -2
  18. package/library/components/checkbox.js +1 -1
  19. package/library/components/color-picker.js +3 -3
  20. package/library/components/color-swatch-group.js +1 -1
  21. package/library/components/confirm-popover.js +2 -2
  22. package/library/components/corner-position-input-group.js +1 -1
  23. package/library/components/document-viewer.js +1 -1
  24. package/library/components/dropdown.js +1 -1
  25. package/library/components/dynamic-select.js +1 -1
  26. package/library/components/element-clamp.js +1 -1
  27. package/library/components/file-on-demand.js +4 -4
  28. package/library/components/folder-select.js +2 -2
  29. package/library/components/input.js +2 -2
  30. package/library/components/line-clamp.js +1 -1
  31. package/library/components/molecules.js +2 -2
  32. package/library/components/organisms.js +2 -2
  33. package/library/components/padding-input-group.js +1 -1
  34. package/library/components/pagination.js +3 -3
  35. package/library/components/radio-group.js +1 -1
  36. package/library/components/range.js +1 -1
  37. package/library/components/select.js +1 -1
  38. package/library/components/shadow-input-group.js +1 -1
  39. package/library/components/share-option-list.js +1 -1
  40. package/library/components/size-input-group.js +1 -1
  41. package/library/components/switch.js +1 -1
  42. package/library/components/tab-group.js +3 -3
  43. package/library/components/textarea.js +1 -1
  44. package/library/components/types.js +128 -127
  45. package/library/package.json +1 -1
  46. package/library/packages/events/src/cx-comment-task-mention-select.d.ts +13 -0
  47. package/library/packages/events/src/events.d.ts +1 -0
  48. package/library/packages/organisms/src/comment/comment.d.ts +72 -0
  49. package/library/packages/services/src/api/asset/asset.d.ts +6 -25
  50. package/library/packages/tools/src/fetch-image/fetch-image.d.ts +4 -0
  51. package/library/packages/tools/src/tiptap/extensions/task-mention/index.d.ts +77 -0
  52. package/library/packages/types/src/gallery-item.d.ts +1 -0
  53. package/library/packages/types/src/xml-editor.d.ts +1 -1
  54. package/library/packages/utils/src/dom/dom.d.ts +9 -0
  55. package/library/react-web-component.d.ts +86 -2
  56. package/library/utils.js +105 -104
  57. package/package.json +1 -1
@@ -1,10 +1,7 @@
1
- import { GetAllFormatCodesResponse, GetAssetsInFolderRequest, GetAssetsInFolderResponse, GetAssetsRequest, GetAssetsResponse, GetAuthorizedObjectsRequest, GetAuthorizedObjectsResponse, GetAvailableProxiesResponse, GetCropZoneSuggestionRequest, GetCropZoneSuggestionResponse, GetTransformAssetLinkResponse, SearchAssetsItem, SearchAssetsParams, SearchAssetsResponse } from './asset.types';
1
+ import { GetAllFormatCodesResponse, GetAssetsInFolderRequest, GetAssetsInFolderResponse, GetAssetsRequest, GetAssetsResponse, GetAuthorizedObjectsRequest, GetAuthorizedObjectsResponse, GetAvailableProxiesResponse, GetCropZoneSuggestionRequest, GetCropZoneSuggestionResponse, GetTransformAssetLinkResponse, SearchAssetsParams, SearchAssetsResponse } from './asset.types';
2
2
 
3
- export declare const DEFAULT_VIEW_SIZE = "CoreField.LargeSizePreview";
4
- export declare const FIELD_CORTEX_PATH = "Document.CortexPath";
5
3
  export declare const FIELD_DOC_TYPE = "CoreField.DocType";
6
4
  export declare const FIELD_DOC_TITLE = "Document.Title";
7
- export declare const FIELD_DOC_CAPTION_LONG = "Document.CaptionLong";
8
5
  export declare const FIELD_EXTENSION = "Document.FileExtension";
9
6
  export declare const FIELD_FILE_SIZE = "CoreField.FileSize";
10
7
  export declare const FIELD_IDENTIFIER = "CoreField.Identifier";
@@ -13,25 +10,16 @@ export declare const FIELD_MAX_WIDTH = "CoreField.MaxWidth";
13
10
  export declare const FIELD_RECORD_ID = "Document.RecordID";
14
11
  export declare const FIELD_SUBTYPE = "CoreField.DocSubType";
15
12
  export declare const FIELD_TITLE_WITH_FALLBACK = "CoreField.TitleWithFallback";
16
- export declare const FIELD_HAS_BROWSER_CHILDREN = "Document.HasBrowserChildren";
17
13
  export declare const FIELD_ORIGINAL_FILE_NAME = "CoreField.OriginalFileName";
18
- export declare const FIELD_UPDATED_FILE_NAME = "CoreField.UpdatedFileName";
19
- export declare const FIELD_LARGE_SIZE_PREVIEW_ID = "Document.DocumentDirectRepresentativeRID";
20
- export declare const LIBRARY_NAME = "Library";
21
14
  /** Appended to a `path_*` key to carry that proxy's rendered width alongside its URI. */
22
15
  export declare const MEDIA_FIELD_WIDTH_SUFFIX = "__width";
23
- export declare const MESSAGE_NEW_LINE = "\n";
24
- export declare const ORIGINAL_VIEW_SIZE = "CoreField.OriginalPreview";
16
+ /** Same, for the height — a proxy keeps the source aspect ratio, so the pair stands in for it. */
17
+ export declare const MEDIA_FIELD_HEIGHT_SUFFIX = "__height";
25
18
  export declare const FIELD_DOC_SUBTYPE = "Document.DocSubType";
26
19
  export declare const FIELD_IN_POINT = "Document.InPoint";
27
20
  export declare const FIELD_OUT_POINT = "Document.OutPoint";
28
- export declare const SEARCH_FIELDS: {
29
- DEFAULT_VIEW_SIZE: string;
30
- FIELD_TITLE_WITH_FALLBACK: string;
31
- ORIGINAL_VIEW_SIZE: string;
32
- };
33
21
  export declare function resolveAssetExtraFilters(selectedFacets?: Record<string, string[]>): Record<string, string[]>;
34
- export declare function apiSearchAssets({ countPerPage, fields, getPermanentAssetsPaths, httpMethod, isSiteBuilder, pageNumber, query, securityByPassToken, siteUrl, sort, token, useSession, }: SearchAssetsParams): Promise<SearchAssetsResponse>;
22
+ export declare function apiSearchAssets({ consistency, countPerPage, fields, getPermanentAssetsPaths, httpMethod, isSiteBuilder, pageNumber, query, securityByPassToken, siteUrl, sort, token, useSession, }: SearchAssetsParams): Promise<SearchAssetsResponse>;
35
23
  export declare function apiGetTransformAssetLink({ assetId, extension, format, siteUrl, token, transformations, useSession, }: {
36
24
  assetId: string;
37
25
  extension?: string;
@@ -41,15 +29,8 @@ export declare function apiGetTransformAssetLink({ assetId, extension, format, s
41
29
  transformations?: string;
42
30
  useSession?: string;
43
31
  }): Promise<GetTransformAssetLinkResponse | null>;
44
- export declare function apiGetAssets({ extraFields, getPermanentAssetsPaths, isSiteBuilder, recordIds, securityByPassToken, token, }: GetAssetsRequest): Promise<GetAssetsResponse>;
45
- /**
46
- * Reads the pixel width a `path_*` proxy field actually has.
47
- *
48
- * Each proxy is rendered at its own size, so this is the ceiling for resizing that URL —
49
- * distinct from `CoreField.MaximumWidth`, which describes the original file.
50
- */
51
- export declare function readSearchAssetItemWidth(item: SearchAssetsItem, field: string): number | undefined;
52
- export declare function apiGetAssetsInFolder({ countPerPage, directParentFolderIdentifier, extraFields, getPermanentAssetsPaths, isSiteBuilder, limitedDocTypes, pageNumber, parentFolderIdentifier, searchTerm, securityByPassToken, sortOrder, token, }: GetAssetsInFolderRequest): Promise<GetAssetsInFolderResponse>;
32
+ export declare function apiGetAssets({ consistency, extraFields, getPermanentAssetsPaths, isSiteBuilder, recordIds, securityByPassToken, token, }: GetAssetsRequest): Promise<GetAssetsResponse>;
33
+ export declare function apiGetAssetsInFolder({ consistency, countPerPage, directParentFolderIdentifier, extraFields, getPermanentAssetsPaths, isSiteBuilder, limitedDocTypes, pageNumber, parentFolderIdentifier, searchTerm, securityByPassToken, sortOrder, token, }: GetAssetsInFolderRequest): Promise<GetAssetsInFolderResponse>;
53
34
  export declare function apiGetCropFocusMode({ autoCropMode, cropHeight, cropWidth, imageUrl, useSession, }: GetCropZoneSuggestionRequest): Promise<GetCropZoneSuggestionResponse | null>;
54
35
  export declare function apiGetAvailableProxies({ assetRecordId, isSiteBuilder, siteUrl, token, useSession, }: {
55
36
  assetRecordId: string;
@@ -22,6 +22,8 @@ type FetchImageControllerOptions = {
22
22
  * use. Opt in from a surface whose images are actually laid out responsively.
23
23
  */
24
24
  buildSrcset?: boolean;
25
+ /** How fresh the fetched values must be. See `SearchAssetsParams.consistency`. */
26
+ consistency?: string;
25
27
  isSiteBuilder?: boolean;
26
28
  maxEnd?: number;
27
29
  pageSize?: number;
@@ -44,6 +46,8 @@ export declare class FetchImageController implements ReactiveController {
44
46
  private readonly autoFormat;
45
47
  /** Whether items carry a `srcset` ladder. See `FetchImageControllerOptions`. */
46
48
  private readonly buildSrcset;
49
+ /** See `FetchImageControllerOptions.consistency`. */
50
+ private readonly consistency;
47
51
  private requestEpoch;
48
52
  constructor(host: ReactiveElement, options?: FetchImageControllerOptions);
49
53
  get totalDataCount(): number;
@@ -0,0 +1,77 @@
1
+ import { PluginKey } from '@tiptap/pm/state';
2
+ import { MentionNodeAttrs, MentionOptions } from '../mention';
3
+
4
+ export interface TaskMentionNodeAttrs extends MentionNodeAttrs {
5
+ /**
6
+ * Snapshot of the task title at insertion time, stored as a `data-title`
7
+ * attribute. Display-time rendering resolves the current title server-side;
8
+ * this is only a fallback for plain-text contexts.
9
+ */
10
+ title?: string | null;
11
+ }
12
+ /**
13
+ * A task reference resolved from a pasted permalink.
14
+ */
15
+ export interface ResolvedTaskMention {
16
+ id: string;
17
+ label: string;
18
+ title?: string;
19
+ }
20
+ export type TaskMentionOptions = MentionOptions<any, TaskMentionNodeAttrs> & {
21
+ /**
22
+ * Format of the chip text shown while composing, with `[IDENTIFIER]` and
23
+ * `[TITLE]` placeholders (mirrors the server's TaskMentionLinkTextTemplate,
24
+ * which formats the rendered mention links the same way). Mentions without
25
+ * a title always show the identifier alone. Display-only: the mention
26
+ * serializes as `{char}{identifier}` regardless of this option, so the
27
+ * title never becomes part of the stored comment body.
28
+ */
29
+ labelTemplate?: string;
30
+ /**
31
+ * Resolves a task identifier extracted from a pasted permalink into a
32
+ * mention item. Return `null` when the identifier matches no task; the
33
+ * pasted text is then left untouched (rendered as a plain link).
34
+ * URL paste conversion is disabled while this is unset.
35
+ */
36
+ resolveTaskUrl?: (identifier: string) => Promise<ResolvedTaskMention | null>;
37
+ /**
38
+ * Site-specific regex source, matched case-insensitively against a pasted
39
+ * same-origin URL's path, with the task identifier as capture group 1.
40
+ * Derived server-side from the site's task URL template so paste detection
41
+ * always follows it. Path-based detection is disabled while unset — only
42
+ * legacy `?TID={id}` links are recognized then.
43
+ */
44
+ urlPattern?: string;
45
+ };
46
+ /**
47
+ * The plugin key for the task mention plugin.
48
+ */
49
+ export declare const TaskMentionPluginKey: PluginKey<any>;
50
+ /**
51
+ * The chip text shown in the editor for a task mention: the trigger character
52
+ * followed by the label template with `[IDENTIFIER]`/`[TITLE]` filled in, or
53
+ * by the identifier alone when the mention has no title.
54
+ */
55
+ export declare function formatTaskMentionText(char: string, labelTemplate: string | undefined, identifier: string, title: string | null | undefined): string;
56
+ /**
57
+ * Extracts a task identifier from a task permalink pointing at `currentOrigin`.
58
+ * Path detection follows `sitePattern` (the site's task URL template, compiled
59
+ * by `compileTaskUrlPattern`); legacy `?TID={identifier}` links are always
60
+ * recognized. Returns `null` for anything else (foreign origins, non-task
61
+ * paths, plain text).
62
+ */
63
+ export declare function findTaskIdentifierInUrl(text: string, currentOrigin: string, sitePattern?: RegExp | null): string | null;
64
+ /**
65
+ * Compiles the site-specific URL pattern, or returns `null` when unset or
66
+ * invalid (path-based paste detection then stays disabled).
67
+ */
68
+ export declare function compileTaskUrlPattern(patternSource: string | undefined): RegExp | null;
69
+ /**
70
+ * This extension inserts references to other tasks into the editor — the task
71
+ * counterpart of the contact `Mention` extension. Stored as `span.task-mention`
72
+ * so the contact-mention parsers never touch it.
73
+ * Also converts pasted task permalinks into task mentions when
74
+ * `resolveTaskUrl` is configured; the pasted URL is matched against the
75
+ * site-provided `urlPattern` (or a legacy `?TID={id}` parameter).
76
+ */
77
+ export declare const TaskMention: import('@tiptap/core').Node<TaskMentionOptions, any>;
@@ -30,6 +30,7 @@ export type GalleryItem = {
30
30
  header?: string;
31
31
  id: string;
32
32
  isClone?: boolean;
33
+ maxHeight?: string;
33
34
  maxWidth?: string;
34
35
  name?: string;
35
36
  objectFit?: ObjectFit;
@@ -37,7 +37,7 @@ export declare enum XmlEditorNotifyType {
37
37
  * as record keys and index-signature values across `TagMap`, `TagActionMap`, `AttributeDefaultValue`, and the tree
38
38
  * mutation helpers — an enum would force `String(Tag.X)` conversions at every one of those call sites.
39
39
  */
40
- export type XmlEditorTag = 'Ancestors' | 'Descendants' | 'DescendantsSeeThru' | 'ExtraFilters' | 'FetchRules' | 'Generation' | 'LexicallySimilar' | 'Limit' | 'OrderBy' | 'Packet' | 'Relation' | 'Relations' | 'SameFieldValue' | 'SemanticallySimilar' | 'Self' | 'TypeFilters';
40
+ export type XmlEditorTag = 'Ancestors' | 'Descendants' | 'DescendantsSeeThru' | 'ExtraFilters' | 'FetchRules' | 'Generation' | 'LexicallySimilar' | 'Limit' | 'LinkedOrderProject' | 'OrderBy' | 'Packet' | 'Relation' | 'Relations' | 'SameFieldValue' | 'SemanticallySimilar' | 'Self' | 'TypeFilters';
41
41
  /** One Fetch Rules tree element (an `Element` node or a text leaf). */
42
42
  export type XmlEditorElement = {
43
43
  attributes?: {
@@ -33,3 +33,12 @@ export declare function getAttributes(attributes: NamedNodeMap): {
33
33
  [id: string]: string;
34
34
  };
35
35
  export declare function isElementInHorizontalView(container: HTMLElement, el: HTMLElement, offset?: number): boolean;
36
+ /**
37
+ * How fresh the values behind this element's asset searches have to be, as configured server-side and
38
+ * stamped onto an ancestor.
39
+ *
40
+ * The front end cannot read Cortex parameters (that endpoint is restricted to OrangeLogic users, and a
41
+ * published page renders for anonymous visitors), so the value travels in the markup. Absent means "not
42
+ * configured" - the caller sends nothing and the Search API applies its own default, a consistent read.
43
+ */
44
+ export declare const readSearchConsistency: (element: Element) => string | undefined;
@@ -33,8 +33,8 @@
33
33
  export type CxAssetLinkFormatFocusMode = { auto: boolean; label: string; value: string; };
34
34
  export type CxAssetLinkFormatProxy = { cdnName: string; extension: string; formatHeight: number; formatWidth: number; height: number; id: string; permanentLink: string; proxyLabel: string; proxyName: string; width: number; };
35
35
  export type CxAssetLinkFormatTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; position: 'bottom-center' | 'bottom-left' | 'bottom-right' | 'center-center' | 'center-left' | 'center-right' | 'top-center' | 'top-left' | 'top-right'; quality: number; ratioHeight: number; ratioWidth: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
36
- export type CxBentoGridGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; maxWidth: string; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; srcset: string; url: string; };
37
- export type CxCarouselGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; maxWidth: string; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; srcset: string; url: string; };
36
+ export type CxBentoGridGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; maxHeight: string; maxWidth: string; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; srcset: string; url: string; };
37
+ export type CxCarouselGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; maxHeight: string; maxWidth: string; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; srcset: string; url: string; };
38
38
  export type CxChatbotChatbotEvent = { event: string; excludedFromPurposes: string[]; label: string; };
39
39
  export type CxTableTimeFormatterParams = { color: string; fontSize: string; fontWeight: string; inputUnit: string; locale: string; placeholder: string; style: dictionary; unitsFormat: string; displayStyle: string; paramsMapField: string; paramsMap: dictionary; };
40
40
  export type CxTableTextFormatParams = { colorMap: dictionary; color: string; };
@@ -7774,6 +7774,34 @@
7774
7774
  *
7775
7775
  */
7776
7776
  autocompletionViewstate?: string;
7777
+ /**
7778
+ * Query module name for the task mention autocomplete. Task mentions (and task permalink paste conversion) stay disabled while unset.
7779
+ */
7780
+ taskQueryName?: string;
7781
+ /**
7782
+ * Filter module name for the task mention autocomplete.
7783
+ */
7784
+ taskFilterName?: string;
7785
+ /**
7786
+ * Optional filter module name used only to resolve pasted task permalinks, expected to match the pasted identifier exactly (unlike `task-filter-name`, whose fuzzy conditions also match title substrings). While unset, paste resolution runs through `task-filter-name` and keeps only an exact identifier match from its results.
7787
+ */
7788
+ taskPasteFilterName?: string;
7789
+ /**
7790
+ * Minimum query length for the task mention autocomplete. Defaults to 0 so suggestions show as soon as the trigger character is typed.
7791
+ */
7792
+ taskMinQueryLength?: number;
7793
+ /**
7794
+ * The character that triggers the task mention autocomplete. Defaults to `#`.
7795
+ */
7796
+ taskTriggerChar?: string;
7797
+ /**
7798
+ * Format of the task mention chip text while composing, with `[IDENTIFIER]` and `[TITLE]` placeholders — the same template the host uses for the rendered mention links. Display-only: the mention is stored as the identifier alone, so the title never enters the saved comment body.
7799
+ */
7800
+ taskLabelTemplate?: string;
7801
+ /**
7802
+ * Regex source (case-insensitive, capture group 1 = identifier) matched against pasted same-origin URL paths to detect task links. Provided by the host, derived from the site's task URL template. While unset, only legacy `?TID={id}` links are detected on paste.
7803
+ */
7804
+ taskUrlPattern?: string;
7777
7805
  /**
7778
7806
  *
7779
7807
  */
@@ -7904,6 +7932,34 @@
7904
7932
  *
7905
7933
  */
7906
7934
  autocompletionViewstate?: string;
7935
+ /**
7936
+ * Query module name for the task mention autocomplete. Task mentions (and task permalink paste conversion) stay disabled while unset.
7937
+ */
7938
+ taskQueryName?: string;
7939
+ /**
7940
+ * Filter module name for the task mention autocomplete.
7941
+ */
7942
+ taskFilterName?: string;
7943
+ /**
7944
+ * Optional filter module name used only to resolve pasted task permalinks, expected to match the pasted identifier exactly (unlike `task-filter-name`, whose fuzzy conditions also match title substrings). While unset, paste resolution runs through `task-filter-name` and keeps only an exact identifier match from its results.
7945
+ */
7946
+ taskPasteFilterName?: string;
7947
+ /**
7948
+ * Minimum query length for the task mention autocomplete. Defaults to 0 so suggestions show as soon as the trigger character is typed.
7949
+ */
7950
+ taskMinQueryLength?: number;
7951
+ /**
7952
+ * The character that triggers the task mention autocomplete. Defaults to `#`.
7953
+ */
7954
+ taskTriggerChar?: string;
7955
+ /**
7956
+ * Format of the task mention chip text while composing, with `[IDENTIFIER]` and `[TITLE]` placeholders — the same template the host uses for the rendered mention links. Display-only: the mention is stored as the identifier alone, so the title never enters the saved comment body.
7957
+ */
7958
+ taskLabelTemplate?: string;
7959
+ /**
7960
+ * Regex source (case-insensitive, capture group 1 = identifier) matched against pasted same-origin URL paths to detect task links. Provided by the host, derived from the site's task URL template. While unset, only legacy `?TID={id}` links are detected on paste.
7961
+ */
7962
+ taskUrlPattern?: string;
7907
7963
  /**
7908
7964
  *
7909
7965
  */
@@ -9240,6 +9296,34 @@
9240
9296
  *
9241
9297
  */
9242
9298
  autocompletionViewstate?: string;
9299
+ /**
9300
+ * Query module name for the task mention autocomplete. Task mentions (and task permalink paste conversion) stay disabled while unset.
9301
+ */
9302
+ taskQueryName?: string;
9303
+ /**
9304
+ * Filter module name for the task mention autocomplete.
9305
+ */
9306
+ taskFilterName?: string;
9307
+ /**
9308
+ * Optional filter module name used only to resolve pasted task permalinks, expected to match the pasted identifier exactly (unlike `task-filter-name`, whose fuzzy conditions also match title substrings). While unset, paste resolution runs through `task-filter-name` and keeps only an exact identifier match from its results.
9309
+ */
9310
+ taskPasteFilterName?: string;
9311
+ /**
9312
+ * Minimum query length for the task mention autocomplete. Defaults to 0 so suggestions show as soon as the trigger character is typed.
9313
+ */
9314
+ taskMinQueryLength?: number;
9315
+ /**
9316
+ * The character that triggers the task mention autocomplete. Defaults to `#`.
9317
+ */
9318
+ taskTriggerChar?: string;
9319
+ /**
9320
+ * Format of the task mention chip text while composing, with `[IDENTIFIER]` and `[TITLE]` placeholders — the same template the host uses for the rendered mention links. Display-only: the mention is stored as the identifier alone, so the title never enters the saved comment body.
9321
+ */
9322
+ taskLabelTemplate?: string;
9323
+ /**
9324
+ * Regex source (case-insensitive, capture group 1 = identifier) matched against pasted same-origin URL paths to detect task links. Provided by the host, derived from the site's task URL template. While unset, only legacy `?TID={id}` links are detected on paste.
9325
+ */
9326
+ taskUrlPattern?: string;
9243
9327
  /**
9244
9328
  *
9245
9329
  */