@pitcher/js-api 1.26.1 → 1.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/js-api.esm.d.ts +0 -1
  2. package/js-api.esm.js +141 -0
  3. package/js-api.esm.js.map +1 -1
  4. package/js-api.umd.min.js +17 -10
  5. package/js-api.umd.min.js.map +1 -1
  6. package/lib/apps/browser/appTypes.d.ts +2 -1
  7. package/lib/apps/browser/stores/api.d.ts +22 -2
  8. package/lib/apps/browser/stores/app.d.ts +6 -1
  9. package/lib/apps/browser/util/sortOrder.d.ts +36 -0
  10. package/lib/apps/browser/util/sortOrder.test.d.ts +1 -0
  11. package/lib/apps/canvas-builder/components/ui/DataCharts/types.d.ts +7 -1
  12. package/lib/apps/canvas-builder/components/ui/DataCharts/types.spec.d.ts +1 -0
  13. package/lib/apps/canvas-builder/components/ui/DynamicContent/useDynamicContent.d.ts +11 -1
  14. package/lib/apps/canvas-builder/composables/lazySections.d.ts +53 -0
  15. package/lib/apps/canvas-builder/composables/lazySections.spec.d.ts +1 -0
  16. package/lib/apps/canvas-builder/composables/useCanvas.d.ts +108 -14
  17. package/lib/apps/canvas-builder/composables/useCanvasBlocks.d.ts +4 -0
  18. package/lib/apps/canvas-builder/composables/useHtmlUserPropertyFields.d.ts +4 -0
  19. package/lib/apps/canvas-builder/courseMode.spec.d.ts +1 -0
  20. package/lib/apps/canvas-builder/types/canvas.d.ts +77 -2
  21. package/lib/apps/canvas-selector/stores/app.d.ts +14 -0
  22. package/lib/apps/collection-player/stores/app.store.d.ts +1 -0
  23. package/lib/components/savedCanvases/CSavedCanvasesManagement.use.d.ts +2 -0
  24. package/lib/components/savedCanvases/smartFolders/SmartFolders.use.d.ts +8 -0
  25. package/lib/composables/useCanvasRendererExcludedTags.d.ts +15 -0
  26. package/lib/composables/useCanvasRendererExcludedTags.spec.d.ts +1 -0
  27. package/lib/composables/useThemeVars.d.ts +2 -0
  28. package/lib/constants/cdp.const.d.ts +1 -0
  29. package/lib/main.lib.d.ts +5 -1
  30. package/lib/sdk/api/HighLevelApi.d.ts +17 -0
  31. package/lib/sdk/api/modules/ai.d.ts +52 -0
  32. package/lib/sdk/api/modules/canvas.d.ts +42 -1
  33. package/lib/sdk/api/modules/index.d.ts +1 -0
  34. package/lib/sdk/interfaces.d.ts +13 -1
  35. package/lib/sdk/main.d.ts +39 -0
  36. package/lib/sdk/payload.types.d.ts +121 -0
  37. package/lib/theme/light.d.ts +2 -0
  38. package/lib/theme/theme.types.d.ts +1 -0
  39. package/lib/types/ai-tasks.const.d.ts +80 -0
  40. package/lib/types/instanceSettings.types.d.ts +2 -0
  41. package/lib/types/launchDarkly.types.d.ts +16 -7
  42. package/lib/types/organizationSettings.types.d.ts +18 -0
  43. package/lib/util/fullscreen.util.d.ts +12 -1
  44. package/lib/util/handlebars.d.ts +19 -0
  45. package/lib/util/network.d.ts +21 -0
  46. package/lib/util/network.test.d.ts +1 -0
  47. package/lib/util/string.d.ts +13 -0
  48. package/package.json +1 -1
  49. package/types/openapi/index.d.ts +1 -0
  50. package/types/openapi/models/Canvas.d.ts +2 -2
  51. package/types/openapi/models/CanvasCreate.d.ts +2 -2
  52. package/types/openapi/models/CanvasRetrieve.d.ts +10 -2
  53. package/types/openapi/models/CanvasUpdate.d.ts +2 -2
  54. package/types/openapi/models/DeletedCanvas.d.ts +2 -2
  55. package/types/openapi/models/FolderFolder.d.ts +4 -0
  56. package/types/openapi/models/FolderRetrieve.d.ts +1 -0
  57. package/types/openapi/models/MetadataTemplateFieldTypeEnum.d.ts +3 -1
  58. package/types/openapi/models/MiniCanvasWithTags.d.ts +5 -0
@@ -1,14 +1,24 @@
1
- export type LaunchDarklyBooleanFlagKey = 'ai_code_generation_model' | 'ai_text_generation_model' | 'ai_image_generation_model' | 'ai_video_generation_model' | 'allow_ai_prompts_in_canvas_text' | 'allow_bulk_actions_canvases_files' | 'allow_content_grid_autofill' | 'allow_canvas_duplication' | 'allow_canvases_tables_columns_settings' | 'allow_table_column_resizing' | 'allow_creating_canvas_with_no_template' | 'allow_dynamic_data_table_for_scribble_component' | 'allow_html_for_scribble_component' | 'allow_embeddable_for_scribble_component' | 'allow_embeddable_hiding' | 'allow_multimedia_for_scribble_component' | 'allow_note_taking' | 'allow_rep_canvas_metadata_edit' | 'allow_rep_file_distributions' | 'allow_rep_file_rating' | 'allow_rep_file_upload' | 'allow_saving_annotations_in_personal_layer' | 'allow_user_to_edit_font_size_and_color_in_canvas_tokens' | 'are_sections_system_controlled' | 'enable_canvas_core_distributions' | 'copy_context_to_canvas' | 'copy_template_metadata_to_canvas' | 'disable_canvas_edit_for_reps' | 'disable_custom_tooltips' | 'disable_file_edit_content' | 'enable_inline_wopi_edit_button' | 'disable_fullscreen_canvas_builder' | 'disable_impact_web_browser_fullscreen' | 'disable_user_invitations' | 'display_section_list_name' | 'disable_download_canvas' | 'enable_ai_generated_thumbnails' | 'enable_analytics' | 'enable_app_developer_role' | 'enable_algolia_search' | 'enable_background_image_theme_options' | 'enable_better_canvas_builder_control_bars_on_zoom' | 'enable_bulk_update_file_attributes' | 'enable_canvas_as_home' | 'enable_canvas_blocks' | 'enable_canvas_node_debugging' | 'enable_canvas_freeze' | 'enable_canvas_locks' | 'enable_canvas_template_edit_in_impact' | 'enable_canvas_tokens' | 'enable_collaborations' | 'enable_collection_player_data_accessor' | 'enable_content_grid_data_accessor' | 'enable_content_type_change_in_content_selector' | 'enable_cross_tab_instance_reload_for_ld_sync' | 'enable_create_section_from_section_template' | 'enable_custom_display_overrides' | 'enable_default_crm_shape' | 'enable_detailed_date_format' | 'enable_dsr_readonly_annotations' | 'enable_dynamic_content_component' | 'enable_dynamic_data_table_component' | 'enable_custom_data_tables' | 'enable_embedded_video_autoplay' | 'enable_embedded_video' | 'enable_enhanced_canvas_drawer_app' | 'enable_enhanced_indicators' | 'enable_enhanced_section_execution_states' | 'enable_experimental_canvas_builder_dnd' | 'enable_extra_file_data' | 'enable_file_copy' | 'enable_file_pages_metadata' | 'enable_file_revisions' | 'enable_file_divisible_permission' | 'enable_folder_details_edit' | 'enable_folder_distributions' | 'enable_handlebar_template_support' | 'enable_height_in_component_theming' | 'enable_home_customization' | 'enable_hotspot_visibility' | 'enable_improved_canvas_node_updating' | 'enable_individual_users_in_file_distribution' | 'enable_inline_filter_options' | 'enable_insearch_in_section_selector' | 'enable_instance_cloner' | 'enable_advanced_cloner' | 'enable_content_promotion' | 'enable_instance_editor_role' | 'enable_instance_navigation_from_management' | 'enable_knock_notifications' | 'enable_maintain_section_theme_control' | 'enable_metadata_in_file_uploads_with_default_values' | 'enable_more_intuitive_component_spacing' | 'enable_multi_destination_upload' | 'enable_multimedia_component_ai_images' | 'enable_new_meeting_bar' | 'enable_provider_agnostic_meeting_bar' | 'enable_original_pdf_link' | 'enable_scale_content' | 'enable_sorting_in_tiptap_table' | 'enable_theme_assets' | 'enable_toc_enhancements_to_support_same_section_in_section_list' | 'enable_pia_assistant' | 'enable_pipe_character_multi_search' | 'enable_popup_apps' | 'enable_pre_send_validation' | 'enable_reorder_search' | 'enable_reorder_scribble_isolation' | 'enable_reorder_component_options_menu' | 'enable_resizable_multimedia_component' | 'enable_responsive_scribble_component' | 'enable_saved_canvases_filters' | 'enable_short_tag_column_in_tables' | 'enable_scribble_component' | 'enable_scribble_content_as_background' | 'enable_search_and_filters_in_multimedia_component' | 'enable_section_context_in_dsr' | 'enable_selectors_dnd' | 'enable_section_selector_edit_section' | 'enable_smart_folders' | 'enable_smart_folders_for_sections' | 'enable_smart_folders_in_section_selector' | 'enable_smart_folders_in_files' | 'enable_sorting_in_sections' | 'enable_suggested_tags' | 'enable_template_component_permissions' | 'enable_template_folders' | 'enable_theme_options_border_radius' | 'enable_themes' | 'hide_asset_uploader' | 'hide_user_feedback_widget' | 'include_files_content_in_print' | 'interpolate_rep_canvases_on_edit_mode' | 'is_timeline_component_allowed' | 'launch_in_full_screen_on_present_mode' | 'prefer_online_handlers' | 'restrict_owned_files_from_admins' | 'show_asset_manager_for_multimedia' | 'show_clear_all_annotations_button' | 'show_content_selector_list_view' | 'show_metadata_filters_in_all_canvas_things' | 'show_only_preview_mode_for_html_component' | 'show_popularity_icons' | 'use_core_endpoint_for_analytics' | 'convert_pptx_to_section_with_scribble_pdfjs' | 'use_short_url_for_shared_link' | 'use_zoho_instead_of_ms_wopi' | 'enable_new_section_list' | 'enable_sharebox_apps' | 'enable_sharebox_bulk_filtering' | 'enable_back_to_previous_location_in_canvas' | 'enable_crm_shape_for_external_links' | 'enable_adaptive_popup_apps' | 'enable_file_version_polling' | 'skip_pspdfkit_wait_for_high_res_thumbs' | 'enable_reactive_scribble_component_toolbar' | 'enable_embeddable_full_screen_mode' | 'enable_enhanced_user_management' | 'enable_impersonation' | 'enable_instance_admin_user_assignment' | 'keep_static_pptx_editable' | 'enable_canvas_pdf_dimensions' | 'enable_editable_pptx_of_canvas' | 'enable_editable_pptx_of_canvas_with_fonts' | 'enable_aspose_pptx_of_canvas' | 'enable_canvas_control_bars_collapse' | 'enable_rep_app_visibility_order' | 'enable_file_sharing_print_permissions' | 'enable_section_sharing_print_permissions' | 'enable_marketplace_tab' | 'enable_sfdc_account_visibility_for_canvases' | 'sfdc_offline_enabled' | 'enable_granular_permissions' | 'enable_hub_collections' | 'enable_hub_recommended_smart_folder' | 'enable_custom_user_properties';
1
+ export type LaunchDarklyBooleanFlagKey = 'ai_image_generation_model' | 'ai_video_generation_model' | 'allow_ai_prompts_in_canvas_text' | 'allow_bulk_actions_canvases_files' | 'allow_content_grid_autofill' | 'allow_canvas_duplication' | 'allow_canvases_tables_columns_settings' | 'allow_table_column_resizing' | 'allow_creating_canvas_with_no_template' | 'allow_dynamic_data_table_for_scribble_component' | 'allow_html_for_scribble_component' | 'allow_embeddable_for_scribble_component' | 'allow_embeddable_hiding' | 'allow_multimedia_for_scribble_component' | 'allow_note_taking' | 'allow_rep_canvas_metadata_edit' | 'allow_rep_file_distributions' | 'allow_rep_file_rating' | 'allow_rep_file_upload' | 'allow_saving_annotations_in_personal_layer' | 'allow_user_to_edit_font_size_and_color_in_canvas_tokens' | 'are_sections_system_controlled' | 'enable_canvas_core_distributions' | 'copy_context_to_canvas' | 'copy_template_metadata_to_canvas' | 'disable_canvas_edit_for_reps' | 'disable_custom_tooltips' | 'disable_file_edit_content' | 'enable_inline_wopi_edit_button' | 'disable_fullscreen_canvas_builder' | 'disable_impact_web_browser_fullscreen' | 'disable_user_invitations' | 'display_section_list_name' | 'disable_download_canvas' | 'enable_ai_generated_thumbnails' | 'enable_analytics' | 'enable_app_developer_role' | 'enable_algolia_search' | 'enable_background_image_theme_options' | 'enable_better_canvas_builder_control_bars_on_zoom' | 'enable_bulk_update_file_attributes' | 'enable_canvas_as_home' | 'enable_canvas_blocks' | 'enable_canvas_node_debugging' | 'enable_canvas_freeze' | 'enable_canvas_locks' | 'enable_canvas_template_edit_in_impact' | 'enable_canvas_tokens' | 'enable_collaborations' | 'enable_collection_player_data_accessor' | 'enable_content_grid_data_accessor' | 'enable_content_type_change_in_content_selector' | 'enable_cross_tab_instance_reload_for_ld_sync' | 'enable_create_section_from_section_template' | 'enable_custom_display_overrides' | 'enable_default_crm_shape' | 'enable_detailed_date_format' | 'enable_dsr_readonly_annotations' | 'enable_dnd_html_editor' | 'enable_dynamic_content_component' | 'enable_dynamic_data_table_component' | 'enable_custom_data_tables' | 'enable_embedded_video_autoplay' | 'enable_embedded_video' | 'enable_enhanced_canvas_drawer_app' | 'enable_enhanced_indicators' | 'enable_enhanced_section_execution_states' | 'enable_experimental_canvas_builder_dnd' | 'enable_extra_file_data' | 'enable_file_copy' | 'enable_file_pages_metadata' | 'enable_file_revisions' | 'enable_file_divisible_permission' | 'enable_folder_details_edit' | 'enable_folder_distributions' | 'enable_handlebar_template_support' | 'enable_height_in_component_theming' | 'enable_home_customization' | 'enable_hotspot_visibility' | 'enable_improved_canvas_node_updating' | 'enable_individual_users_in_file_distribution' | 'enable_inline_filter_options' | 'enable_insearch_in_section_selector' | 'enable_instance_cloner' | 'enable_advanced_cloner' | 'enable_content_promotion' | 'enable_instance_editor_role' | 'enable_instance_navigation_from_management' | 'enable_knock_notifications' | 'enable_maintain_section_theme_control' | 'enable_metadata_in_file_uploads_with_default_values' | 'enable_more_intuitive_component_spacing' | 'enable_multi_destination_upload' | 'enable_multimedia_component_ai_images' | 'enable_new_meeting_bar' | 'enable_provider_agnostic_meeting_bar' | 'enable_original_pdf_link' | 'enable_scale_content' | 'enable_sorting_in_tiptap_table' | 'enable_theme_assets' | 'enable_toc_enhancements_to_support_same_section_in_section_list' | 'enable_pia_assistant' | 'enable_pipe_character_multi_search' | 'enable_popup_apps' | 'enable_pre_send_validation' | 'enable_reorder_search' | 'enable_reorder_scribble_isolation' | 'enable_reorder_component_options_menu' | 'enable_resizable_multimedia_component' | 'enable_responsive_scribble_component' | 'enable_saved_canvases_filters' | 'enable_short_tag_column_in_tables' | 'enable_scribble_component' | 'enable_scribble_content_as_background' | 'enable_search_and_filters_in_multimedia_component' | 'enable_section_context_in_dsr' | 'enable_selectors_dnd' | 'enable_section_selector_edit_section' | 'enable_smart_folders' | 'enable_smart_folders_for_sections' | 'enable_smart_folders_in_section_selector' | 'enable_smart_folders_in_files' | 'enable_sorting_in_sections' | 'enable_suggested_tags' | 'enable_template_component_permissions' | 'enable_template_folders' | 'enable_theme_options_border_radius' | 'enable_themes' | 'hide_asset_uploader' | 'hide_user_feedback_widget' | 'include_files_content_in_print' | 'interpolate_rep_canvases_on_edit_mode' | 'is_timeline_component_allowed' | 'launch_in_full_screen_on_present_mode' | 'prefer_online_handlers' | 'restrict_owned_files_from_admins' | 'show_asset_manager_for_multimedia' | 'show_clear_all_annotations_button' | 'show_content_selector_list_view' | 'show_metadata_filters_in_all_canvas_things' | 'show_only_preview_mode_for_html_component' | 'show_popularity_icons' | 'use_core_endpoint_for_analytics' | 'convert_pptx_to_section_with_scribble_pdfjs' | 'use_short_url_for_shared_link' | 'use_zoho_instead_of_ms_wopi' | 'enable_new_section_list' | 'enable_sharebox_apps' | 'enable_sharebox_bulk_filtering' | 'enable_back_to_previous_location_in_canvas' | 'enable_crm_shape_for_external_links' | 'enable_adaptive_popup_apps' | 'enable_file_version_polling' | 'skip_pspdfkit_wait_for_high_res_thumbs' | 'enable_reactive_scribble_component_toolbar' | 'enable_embeddable_full_screen_mode' | 'enable_enhanced_user_management' | 'enable_impersonation' | 'enable_instance_admin_user_assignment' | 'keep_static_pptx_editable' | 'enable_canvas_pdf_dimensions' | 'enable_editable_pptx_of_canvas' | 'enable_editable_pptx_of_canvas_with_fonts' | 'enable_aspose_pptx_of_canvas' | 'enable_canvas_control_bars_collapse' | 'enable_rep_app_visibility_order' | 'enable_file_sharing_print_permissions' | 'enable_section_sharing_print_permissions' | 'enable_marketplace_tab' | 'enable_sfdc_account_visibility_for_canvases' | 'sfdc_offline_enabled' | 'enable_granular_permissions' | 'enable_hub_collections' | 'enable_hub_recommended_smart_folder' | 'enable_custom_user_properties';
2
2
  export type LaunchDarklyNumberFlagKey = 'canvas_section_selector_page_size' | 'canvas_section_selector_selected_items_with_thumbnail_size';
3
- export type HubPiaSearchFlag = {
4
- enabled: boolean;
5
- model_for_pia_search: string;
6
- model_for_pia_embedding: string;
3
+ /** How PIA Search serves inference (PIT-6863). */
4
+ export type PiaSearchMode = 'off' | 'on_device' | 'online';
5
+ /**
6
+ * `pia_search_config` LD flag value — selects how PIA Search serves inference.
7
+ * Object-valued (not a bare boolean) so the mode can grow sibling config later
8
+ * without a second flag; `mode` is the only field today.
9
+ */
10
+ export type PiaSearchConfig = {
11
+ mode?: PiaSearchMode;
7
12
  };
13
+ /**
14
+ * Resolve the PIA Search mode from the `pia_search_config` flag: a valid `mode`
15
+ * wins; anything missing or invalid resolves to `'off'` (fail-closed).
16
+ */
17
+ export declare function resolvePiaSearchMode(config: PiaSearchConfig | null | undefined): PiaSearchMode;
8
18
  type LaunchDarklyObjectFlags = {
9
19
  canvas_manager_table_columns: CanvasManagerTableColumns;
10
20
  context_crm_shape: Record<string, any>;
11
- enable_hub_pia_search: HubPiaSearchFlag;
21
+ pia_search_config: PiaSearchConfig;
12
22
  };
13
23
  export type LaunchDarklyObjectFlagKey = keyof LaunchDarklyObjectFlags;
14
24
  export type LaunchDarklyStringFlagKey = keyof typeof _LaunchDarklyStringFlags;
@@ -21,7 +31,6 @@ declare const _LaunchDarklyStringFlags: {
21
31
  readonly dsr_remote_script_url: readonly ["https://anyvalidurl.xyz", ""];
22
32
  readonly ai_image_generation_model: readonly ["minimax/image-01", ""];
23
33
  readonly ai_video_generation_model: readonly ["minimax/video-01", ""];
24
- readonly ai_text_generation_model: readonly ["anthropic/claude-4.6-sonnet", ""];
25
34
  readonly sharebox_format: readonly ["content-grid", "content-grid-default", "collection-player-default"];
26
35
  };
27
36
  type LaunchDarklyStringFlagValue<K extends LaunchDarklyStringFlagKey = LaunchDarklyStringFlagKey> = K extends LaunchDarklyStringFlagKey ? (typeof _LaunchDarklyStringFlags)[K][number] : never;
@@ -1,5 +1,15 @@
1
1
  import { TranslationOverrides } from './translations';
2
2
  import { MetadataHighlightProperty } from './metadataHighlightProperty';
3
+ /**
4
+ * Forward stub for PIT-6124 content-recommendation matching. Maps a CRM/context
5
+ * source field to a canvas/file metadata key so recommendations can be filtered
6
+ * or ranked by metadata alignment.
7
+ */
8
+ export type ContentMatchRule = {
9
+ source_field: string;
10
+ target_metadata_key: string;
11
+ required?: boolean;
12
+ };
3
13
  type SmartFolderRuleAttribute = {
4
14
  name: string;
5
15
  type: 'string' | 'boolean' | 'number' | 'date' | 'array';
@@ -55,6 +65,8 @@ export type OrganizationSettings = {
55
65
  enable_multi_language?: boolean;
56
66
  enable_multipeer_connectivity?: boolean;
57
67
  enable_syncbox?: boolean;
68
+ enable_custom_folder_order?: boolean;
69
+ lazy_load_sections?: boolean;
58
70
  canvases_route_order?: number;
59
71
  content_browser_route_order?: number;
60
72
  assets_route_order?: number;
@@ -125,5 +137,11 @@ export type OrganizationSettings = {
125
137
  use_static_ip_proxy?: boolean;
126
138
  api_version?: string;
127
139
  };
140
+ ai_tasks?: {
141
+ disabled?: string[];
142
+ };
143
+ content_recommendation?: {
144
+ match_rules?: ContentMatchRule[];
145
+ };
128
146
  };
129
147
  export {};
@@ -10,7 +10,18 @@ export type DocumentWithFullscreen = Document & {
10
10
  webkitExitFullscreen?: () => Promise<void>;
11
11
  msExitFullscreen?: () => Promise<void>;
12
12
  };
13
- export declare function requestFullscreen(el?: FullscreenElement | null): Promise<void>;
13
+ /**
14
+ * Request fullscreen on `el` (or the document root). Resolves `true` when fullscreen
15
+ * was actually entered, `false` when it was a no-op or blocked — e.g. inside an iframe
16
+ * whose `allow` lacks `fullscreen` (SFDC embed / app host), where the browser rejects
17
+ * with "TypeError: Disallowed by permissions policy". Swallowing that rejection keeps
18
+ * it from surfacing as an unhandled rejection (IMPACT-WEB-NG-GH/GG).
19
+ *
20
+ * IMPORTANT: resolution does NOT mean fullscreen is active — callers that run side
21
+ * effects on entering fullscreen (set state, broadcast events, reparent DOM, steal
22
+ * focus) MUST gate them on the returned boolean.
23
+ */
24
+ export declare function requestFullscreen(el?: FullscreenElement | null): Promise<boolean>;
14
25
  export declare function exitFullscreen(): Promise<void>;
15
26
  export declare function toggleFullscreen(element: FullscreenElement): void;
16
27
  export declare function isFullscreen(): boolean;
@@ -1,4 +1,22 @@
1
1
  export declare function renderTemplate(template: string, context?: Record<string, any>): string;
2
+ /**
3
+ * Return a render context where the named `html`-typed custom user properties
4
+ * (`context.user.<field>`) are wrapped in `Handlebars.SafeString`, so a plain
5
+ * `{{user.field}}` renders the stored markup unescaped (parity with the disclosure
6
+ * HTML the field type is for) without authors needing triple-mustache.
7
+ *
8
+ * - Non-mutating: shallow-clones `context` and `context.user` only when a wrap happens,
9
+ * so the persisted `canvas.context` is never touched (a `SafeString` would corrupt it
10
+ * on save / JSON-serialize). The wrapped values live only in the transient render context.
11
+ * - Sanitized here before wrapping (defense-in-depth): values are also sanitized on input
12
+ * (admin UI + CSV), but server-side write paths (SSO sync, direct API PATCH) bypass that,
13
+ * and marking a value `SafeString` makes it render as trusted HTML — so re-sanitize at the
14
+ * point we declare it safe. Idempotent on already-clean markup.
15
+ */
16
+ type RenderContext = {
17
+ user?: Record<string, unknown>;
18
+ } & Record<string, unknown>;
19
+ export declare function withSafeHtmlUserProps(context?: RenderContext, htmlFieldNames?: string[]): RenderContext;
2
20
  export interface CustomHandlebarsHelper {
3
21
  name: string;
4
22
  code: string;
@@ -34,3 +52,4 @@ export declare function loadCustomHelpersFromApps(installedApps: Array<{
34
52
  registered: number;
35
53
  failed: number;
36
54
  };
55
+ export {};
@@ -19,3 +19,24 @@ export declare function derivePatchRequestFields<T extends object>(current: T, u
19
19
  payload: Partial<T>;
20
20
  };
21
21
  export declare function requestStream(url: string, body: Record<string, any>, token: string, onStreamedChunk?: (chunk: string, response: string) => void, signal?: AbortSignal): Promise<string>;
22
+ /**
23
+ * Split a raw SSE buffer on the `\n\n` event boundary. When `done`, the trailing
24
+ * fragment is flushed as a final event; otherwise it is returned in `rest` to be
25
+ * prepended to the next chunk.
26
+ */
27
+ export declare function splitSseBuffer(buffer: string, done: boolean): {
28
+ events: string[];
29
+ rest: string;
30
+ };
31
+ /** Parse one SSE event block into its JSON payload; null for `[DONE]`, keep-alives, or non-JSON. */
32
+ export declare function parseSseEvent(event: string): Record<string, unknown> | null;
33
+ /**
34
+ * Consume the Bedrock SSE stream from `/core/api/protected/ai/ai-generation/stream`
35
+ * and accumulate text. The endpoint emits `data: {"type":"content_delta","delta":"…"}`
36
+ * frames, a `data: {"type":"error","error":"…"}` on failure, and a `data: [DONE]`
37
+ * terminator (PIT-7145). Calls `onText(delta, fullText)` per content chunk and
38
+ * returns the full text; throws on error frames / network failures. Replaces the
39
+ * legacy Replicate NDJSON parsing now that platform AI surfaces run on the
40
+ * `routine` tier (Bedrock).
41
+ */
42
+ export declare function requestAiStream(url: string, body: Record<string, any>, token: string, onText?: (delta: string, fullText: string) => void, signal?: AbortSignal): Promise<string>;
@@ -0,0 +1 @@
1
+ export {};
@@ -3,3 +3,16 @@ export declare function prefixHttps(url: string): string;
3
3
  export declare function stripHtmlTags(htmlString: string | undefined): string;
4
4
  export declare function sanitizeHtml(htmlString: string | undefined): string;
5
5
  export declare function stripHtmlTagsAndTrim(htmlString: string | undefined): string;
6
+ /**
7
+ * Allowlist-sanitize user-authored HTML that will be rendered as TRUSTED markup
8
+ * (e.g. an `html`-typed custom user property wrapped in a Handlebars `SafeString`,
9
+ * or shown via `v-html`). Uses DOMPurify with an explicit tag/attribute allowlist;
10
+ * DOMPurify additionally strips every `on*` handler and blocks dangerous URL schemes
11
+ * (`javascript:` etc.) on `href`. Prefer this over `sanitizeHtml` (a weak denylist)
12
+ * anywhere user HTML is rendered unescaped.
13
+ *
14
+ * DOMPurify needs a DOM; user HTML only renders client-side. With no `window`
15
+ * (Node/SSR) fall back to `stripHtmlTags` — a regex strip that needs no DOMParser,
16
+ * so it never throws and never emits raw markup (fail closed to inert text).
17
+ */
18
+ export declare function sanitizeUserHtml(htmlString: string | undefined): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pitcher/js-api",
3
- "version": "1.26.1",
3
+ "version": "1.27.1",
4
4
  "type": "module",
5
5
  "main": "js-api.umd.min.js",
6
6
  "module": "js-api.esm.js",
@@ -146,6 +146,7 @@ export type { MetadataTemplateSection } from './models/MetadataTemplateSection';
146
146
  export type { MetadataTemplateSectionRequest } from './models/MetadataTemplateSectionRequest';
147
147
  export type { MiniCanvas } from './models/MiniCanvas';
148
148
  export type { MiniCanvasRequest } from './models/MiniCanvasRequest';
149
+ export type { MiniCanvasWithTags } from './models/MiniCanvasWithTags';
149
150
  export type { MiniContentDistributionGroup } from './models/MiniContentDistributionGroup';
150
151
  export type { MiniContentDistributionGroupRequest } from './models/MiniContentDistributionGroupRequest';
151
152
  export type { MiniEnvironment } from './models/MiniEnvironment';
@@ -1,6 +1,6 @@
1
1
  import { AccessTypeEnum } from './AccessTypeEnum';
2
2
  import { Account } from './Account';
3
- import { MiniCanvas } from './MiniCanvas';
3
+ import { MiniCanvasWithTags } from './MiniCanvasWithTags';
4
4
  import { MiniSharedLink } from './MiniSharedLink';
5
5
  import { MiniUser } from './MiniUser';
6
6
  export type Canvas = {
@@ -19,7 +19,7 @@ export type Canvas = {
19
19
  expires_at?: string | null;
20
20
  access_type?: AccessTypeEnum;
21
21
  thumbnail_url?: string | null;
22
- readonly template: MiniCanvas;
22
+ readonly template: MiniCanvasWithTags;
23
23
  readonly shared_link: MiniSharedLink;
24
24
  account?: Account | null;
25
25
  folder_id?: string | null;
@@ -1,7 +1,7 @@
1
1
  import { AccessTypeEnum } from './AccessTypeEnum';
2
2
  import { Account } from './Account';
3
3
  import { CanvasSection } from './CanvasSection';
4
- import { MiniCanvas } from './MiniCanvas';
4
+ import { MiniCanvasWithTags } from './MiniCanvasWithTags';
5
5
  import { MiniEvent } from './MiniEvent';
6
6
  import { MiniSharedLink } from './MiniSharedLink';
7
7
  import { MiniUser } from './MiniUser';
@@ -25,7 +25,7 @@ export type CanvasCreate = {
25
25
  access_type?: AccessTypeEnum;
26
26
  thumbnail_url?: string | null;
27
27
  instance_id: string;
28
- readonly template: MiniCanvas;
28
+ readonly template: MiniCanvasWithTags;
29
29
  readonly sections: Array<CanvasSection>;
30
30
  readonly shared_link: MiniSharedLink;
31
31
  account?: Account | null;
@@ -1,7 +1,7 @@
1
1
  import { AccessTypeEnum } from './AccessTypeEnum';
2
2
  import { Account } from './Account';
3
3
  import { CanvasSection } from './CanvasSection';
4
- import { MiniCanvas } from './MiniCanvas';
4
+ import { MiniCanvasWithTags } from './MiniCanvasWithTags';
5
5
  import { MiniEvent } from './MiniEvent';
6
6
  import { MiniSharedLink } from './MiniSharedLink';
7
7
  import { MiniUser } from './MiniUser';
@@ -25,8 +25,16 @@ export type CanvasRetrieve = {
25
25
  access_type?: AccessTypeEnum;
26
26
  thumbnail_url?: string | null;
27
27
  instance_id: string;
28
- readonly template: MiniCanvas;
28
+ readonly template: MiniCanvasWithTags;
29
29
  readonly sections: Array<CanvasSection>;
30
+ /**
31
+ * Opt-in lazy section loading: present (instead of inline `sections`) only when
32
+ * the canvas was fetched with `?lazy_sections=true` AND the org/instance
33
+ * `lazy_load_sections` setting is on. Ordered referenced section IDs; the client
34
+ * hydrates bodies on demand via `getSectionsByIds`. Absent on every legacy
35
+ * (fully-expanded) response. Hand-added (additive) — preserve on type regen.
36
+ */
37
+ readonly section_ids?: Array<string>;
30
38
  readonly shared_link: MiniSharedLink;
31
39
  account?: Account | null;
32
40
  readonly events: Array<MiniEvent>;
@@ -1,7 +1,7 @@
1
1
  import { AccessTypeEnum } from './AccessTypeEnum';
2
2
  import { Account } from './Account';
3
3
  import { CanvasSection } from './CanvasSection';
4
- import { MiniCanvas } from './MiniCanvas';
4
+ import { MiniCanvasWithTags } from './MiniCanvasWithTags';
5
5
  import { MiniEvent } from './MiniEvent';
6
6
  import { MiniSharedLink } from './MiniSharedLink';
7
7
  import { MiniUser } from './MiniUser';
@@ -25,7 +25,7 @@ export type CanvasUpdate = {
25
25
  access_type?: AccessTypeEnum;
26
26
  thumbnail_url?: string | null;
27
27
  instance_id: string;
28
- readonly template: MiniCanvas;
28
+ readonly template: MiniCanvasWithTags;
29
29
  readonly sections: Array<CanvasSection>;
30
30
  readonly shared_link: MiniSharedLink;
31
31
  account?: Account | null;
@@ -1,6 +1,6 @@
1
1
  import { AccessTypeEnum } from './AccessTypeEnum';
2
2
  import { Account } from './Account';
3
- import { MiniCanvas } from './MiniCanvas';
3
+ import { MiniCanvasWithTags } from './MiniCanvasWithTags';
4
4
  import { MiniSharedLink } from './MiniSharedLink';
5
5
  import { MiniUser } from './MiniUser';
6
6
  export type DeletedCanvas = {
@@ -19,7 +19,7 @@ export type DeletedCanvas = {
19
19
  expires_at?: string | null;
20
20
  access_type?: AccessTypeEnum;
21
21
  thumbnail_url?: string | null;
22
- readonly template: MiniCanvas;
22
+ readonly template: MiniCanvasWithTags;
23
23
  readonly shared_link: MiniSharedLink;
24
24
  account?: Account | null;
25
25
  folder_id?: string | null;
@@ -5,6 +5,10 @@ export type FolderFolder = {
5
5
  readonly id: string;
6
6
  name: string;
7
7
  readonly thumbnail_url: string | null;
8
+ /**
9
+ * Manual custom-sort position among siblings. Null when no custom order is set.
10
+ */
11
+ order?: number | null;
8
12
  readonly folders_count: number;
9
13
  readonly files_count: number;
10
14
  readonly available_files_count: number;
@@ -10,6 +10,7 @@ import { MiniUser } from './MiniUser';
10
10
  export type FolderRetrieve = {
11
11
  readonly id: string;
12
12
  name: string;
13
+ readonly instance_id: string;
13
14
  readonly content_type: string;
14
15
  access_type?: AccessTypeEnum;
15
16
  rules?: Array<FolderRule>;
@@ -5,6 +5,7 @@
5
5
  * * `select` - Dropdown - Single Select
6
6
  * * `multi-select` - Dropdown - Multiple Select
7
7
  * * `checkbox` - Checkbox
8
+ * * `html` - HTML
8
9
  */
9
10
  export declare enum MetadataTemplateFieldTypeEnum {
10
11
  TEXT = "text",
@@ -12,5 +13,6 @@ export declare enum MetadataTemplateFieldTypeEnum {
12
13
  DATE = "date",
13
14
  SELECT = "select",
14
15
  MULTI_SELECT = "multi-select",
15
- CHECKBOX = "checkbox"
16
+ CHECKBOX = "checkbox",
17
+ HTML = "html"
16
18
  }
@@ -0,0 +1,5 @@
1
+ export type MiniCanvasWithTags = {
2
+ readonly id: string;
3
+ name: string;
4
+ readonly tags?: Array<string>;
5
+ };