@chili-publish/studio-sdk 1.44.1 → 1.46.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 (113) hide show
  1. package/_bundles/main.js +2 -2
  2. package/_bundles/main.js.map +1 -1
  3. package/lib/src/controllers/BrandKitController.cjs.js +13 -64
  4. package/lib/src/controllers/BrandKitController.cjs.js.map +1 -1
  5. package/lib/src/controllers/BrandKitController.d.ts +22 -30
  6. package/lib/src/controllers/BrandKitController.es.js +13 -64
  7. package/lib/src/controllers/BrandKitController.es.js.map +1 -1
  8. package/lib/src/controllers/ComponentController.cjs.js +4 -0
  9. package/lib/src/controllers/ComponentController.cjs.js.map +1 -1
  10. package/lib/src/controllers/ComponentController.d.ts +7 -1
  11. package/lib/src/controllers/ComponentController.es.js +4 -0
  12. package/lib/src/controllers/ComponentController.es.js.map +1 -1
  13. package/lib/src/controllers/ConnectorController.cjs.js.map +1 -1
  14. package/lib/src/controllers/ConnectorController.d.ts +5 -5
  15. package/lib/src/controllers/ConnectorController.es.js.map +1 -1
  16. package/lib/src/controllers/SubscriberController.cjs.js +3 -0
  17. package/lib/src/controllers/SubscriberController.cjs.js.map +1 -1
  18. package/lib/src/controllers/SubscriberController.d.ts +7 -0
  19. package/lib/src/controllers/SubscriberController.es.js +3 -0
  20. package/lib/src/controllers/SubscriberController.es.js.map +1 -1
  21. package/lib/src/exceptions/AsyncExceptions.cjs.js.map +1 -1
  22. package/lib/src/exceptions/AsyncExceptions.d.ts +1 -0
  23. package/lib/src/exceptions/AsyncExceptions.es.js.map +1 -1
  24. package/lib/src/exceptions/Helpers.cjs.js.map +1 -1
  25. package/lib/src/exceptions/Helpers.es.js.map +1 -1
  26. package/lib/src/index.cjs.js +3 -2
  27. package/lib/src/index.cjs.js.map +1 -1
  28. package/lib/src/index.d.ts +2 -1
  29. package/lib/src/index.es.js +2 -1
  30. package/lib/src/interactions/Connector.cjs.js +2 -1
  31. package/lib/src/interactions/Connector.cjs.js.map +1 -1
  32. package/lib/src/interactions/Connector.d.ts +1 -0
  33. package/lib/src/interactions/Connector.es.js +2 -1
  34. package/lib/src/interactions/Connector.es.js.map +1 -1
  35. package/lib/src/next/NextInitiator.cjs.js +0 -2
  36. package/lib/src/next/NextInitiator.cjs.js.map +1 -1
  37. package/lib/src/next/NextInitiator.d.ts +0 -2
  38. package/lib/src/next/NextInitiator.es.js +0 -2
  39. package/lib/src/next/NextInitiator.es.js.map +1 -1
  40. package/lib/src/next/index.d.ts +0 -1
  41. package/lib/src/sdk/editor-engine.json.cjs.js +1 -1
  42. package/lib/src/sdk/editor-engine.json.es.js +1 -1
  43. package/lib/src/sdk/package.json.cjs.js +1 -1
  44. package/lib/src/sdk/package.json.es.js +1 -1
  45. package/lib/src/sdk.cjs.js +118 -79
  46. package/lib/src/sdk.cjs.js.map +1 -1
  47. package/lib/src/sdk.d.ts +52 -34
  48. package/lib/src/sdk.es.js +118 -79
  49. package/lib/src/sdk.es.js.map +1 -1
  50. package/lib/src/types/BrandKitTypes.d.ts +70 -108
  51. package/lib/src/types/ColorStyleTypes.cjs.js +10 -0
  52. package/lib/src/types/ColorStyleTypes.cjs.js.map +1 -1
  53. package/lib/src/types/ColorStyleTypes.es.js +10 -0
  54. package/lib/src/types/ColorStyleTypes.es.js.map +1 -1
  55. package/lib/src/types/CommonTypes.cjs.js +1 -0
  56. package/lib/src/types/CommonTypes.cjs.js.map +1 -1
  57. package/lib/src/types/CommonTypes.d.ts +12 -1
  58. package/lib/src/types/CommonTypes.es.js +1 -0
  59. package/lib/src/types/CommonTypes.es.js.map +1 -1
  60. package/lib/src/types/ComponentGridTypes.cjs.js.map +1 -1
  61. package/lib/src/types/ComponentGridTypes.es.js.map +1 -1
  62. package/lib/src/types/ConnectorTypes.cjs.js +6 -2
  63. package/lib/src/types/ConnectorTypes.cjs.js.map +1 -1
  64. package/lib/src/types/ConnectorTypes.d.ts +10 -1
  65. package/lib/src/types/ConnectorTypes.es.js +6 -2
  66. package/lib/src/types/ConnectorTypes.es.js.map +1 -1
  67. package/lib/src/types/FrameTypes.cjs.js.map +1 -1
  68. package/lib/src/types/FrameTypes.d.ts +2 -4
  69. package/lib/src/types/FrameTypes.es.js.map +1 -1
  70. package/lib/src/types/MethodInvocationTypes.d.ts +27 -0
  71. package/lib/src/types/RichTextRuleTypes.cjs.js.map +1 -1
  72. package/lib/src/types/RichTextRuleTypes.es.js.map +1 -1
  73. package/lib/src/types/ShapeTypes.cjs.js +1 -0
  74. package/lib/src/types/ShapeTypes.cjs.js.map +1 -1
  75. package/lib/src/types/ShapeTypes.d.ts +12 -2
  76. package/lib/src/types/ShapeTypes.es.js +1 -0
  77. package/lib/src/types/ShapeTypes.es.js.map +1 -1
  78. package/lib/src/utils/ConfigHelper.cjs.js +4 -0
  79. package/lib/src/utils/ConfigHelper.cjs.js.map +1 -1
  80. package/lib/src/utils/ConfigHelper.es.js +4 -0
  81. package/lib/src/utils/ConfigHelper.es.js.map +1 -1
  82. package/lib/src/utils/EngineEventTrigger.cjs.js +4 -1
  83. package/lib/src/utils/EngineEventTrigger.cjs.js.map +1 -1
  84. package/lib/src/utils/EngineEventTrigger.d.ts +2 -1
  85. package/lib/src/utils/EngineEventTrigger.es.js +5 -2
  86. package/lib/src/utils/EngineEventTrigger.es.js.map +1 -1
  87. package/lib/src/utils/MethodInstrumentation.cjs.js +176 -0
  88. package/lib/src/utils/MethodInstrumentation.cjs.js.map +1 -0
  89. package/lib/src/utils/MethodInstrumentation.d.ts +10 -0
  90. package/lib/src/utils/MethodInstrumentation.es.js +176 -0
  91. package/lib/src/utils/MethodInstrumentation.es.js.map +1 -0
  92. package/lib/src/utils/SdkEvent.cjs.js +29 -0
  93. package/lib/src/utils/SdkEvent.cjs.js.map +1 -0
  94. package/lib/src/utils/SdkEvent.d.ts +13 -0
  95. package/lib/src/utils/SdkEvent.es.js +29 -0
  96. package/lib/src/utils/SdkEvent.es.js.map +1 -0
  97. package/lib/src/utils/SdkEvents.cjs.js +11 -0
  98. package/lib/src/utils/SdkEvents.cjs.js.map +1 -0
  99. package/lib/src/utils/SdkEvents.d.ts +19 -0
  100. package/lib/src/utils/SdkEvents.es.js +11 -0
  101. package/lib/src/utils/SdkEvents.es.js.map +1 -0
  102. package/package.json +1 -1
  103. package/lib/src/next/controllers/BrandKitController.cjs.js +0 -34
  104. package/lib/src/next/controllers/BrandKitController.cjs.js.map +0 -1
  105. package/lib/src/next/controllers/BrandKitController.d.ts +0 -24
  106. package/lib/src/next/controllers/BrandKitController.es.js +0 -34
  107. package/lib/src/next/controllers/BrandKitController.es.js.map +0 -1
  108. package/lib/src/next/types/BrandKitTypes.d.ts +0 -52
  109. package/lib/src/utils/BrandKitAdapter.cjs.js +0 -42
  110. package/lib/src/utils/BrandKitAdapter.cjs.js.map +0 -1
  111. package/lib/src/utils/BrandKitAdapter.d.ts +0 -9
  112. package/lib/src/utils/BrandKitAdapter.es.js +0 -42
  113. package/lib/src/utils/BrandKitAdapter.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.cjs.js","sources":["../../../src/interactions/Connector.ts"],"sourcesContent":["import { Connection, connectToChild } from 'penpal';\nimport { Id } from '../types/CommonTypes';\nimport { StudioStyling } from '../types/ConfigurationTypes';\n\nexport const validateEditorLink = (editorLink: string) => {\n const linkValidator = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w]+\\/$/);\n let link = '';\n if (linkValidator.test(editorLink)) {\n link = editorLink;\n } else if (editorLink.indexOf('/index.html') > -1) {\n link = editorLink.replace('/index.html', '/');\n } else if (editorLink.charAt(-1) !== '/') {\n link = `${editorLink}/`;\n }\n return link;\n};\n\nexport const setupFrame = (iframe: HTMLIFrameElement, editorLink: string, styling?: StudioStyling) => {\n const link = validateEditorLink(editorLink);\n const stylingJson = JSON.stringify(styling || {});\n const html = `<html>\n <head>\n <base href=\"/\" />\n <meta charset=\"UTF-8\"/>\n <!-- use this property to pass the StudioStyling to the engine -->\n <meta name=\"studio-styling\" content='${stylingJson}'>\n </head>\n <body>\n <script>\n const handleIframeError = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: {\n message: event.message,\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n error: event.error?.toString(),\n },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n const handleUnhandledRejection = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: { message: event.reason?.toString() || 'Unhandled promise rejection' },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n window.addEventListener('error', handleIframeError);\n window.addEventListener('unhandledrejection', handleUnhandledRejection);\n </script>\n <script src=\"${link}init.js\" async></script>\n <script src=\"${link}flutter_bootstrap.js\"></script>\n <script>\n try {\n if(!window?.initializeStudioEngine){\n throw new Error('Failed to initialize studio engine: initializeStudioEngine not found');\n }\n initializeStudioEngine({\n assetBase: '${link}',\n });\n } catch(error) {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage({\n type: 'iframe-error',\n error: {\n message: error?.message || 'Error initializing studio engine',\n error: error?.toString()\n }\n }, window.location.ancestorOrigins[0] || window.location.origin);\n }\n throw error;\n } finally {\n window.removeEventListener('error', handleIframeError);\n window.removeEventListener('unhandledrejection', handleUnhandledRejection);\n }\n </script>\n </body>\n</html>`;\n\n // Set the iframe's content using DOM manipulation\n // eslint-disable-next-line no-param-reassign\n iframe.srcdoc = html;\n};\n\ninterface ConfigParameterTypes {\n onActionsChanged: (state: string) => void;\n onStateChanged: (state: string) => void;\n onAuthExpired: (authRefreshRequest: string) => Promise<string | null>;\n onViewportRequested: () => string | null;\n onDocumentLoaded: () => void;\n onSelectedFramesContentChanged: (state: string) => void;\n onSelectedFramesLayoutChanged: (state: string) => void;\n onFramesLayoutChanged: (state: string) => void;\n onSelectedLayoutPropertiesChanged: (state: string) => void;\n onSelectedLayoutUnitChanged: (state: string) => void;\n /**\n * @deprecated use `onSelectedPageIdChanged` instead\n */\n onPageSelectionChanged: (id: Id) => void;\n onScrubberPositionChanged: (state: string) => void;\n onFrameAnimationsChanged: (state: string) => void;\n onVariableListChanged: (state: string) => void;\n onSelectedToolChanged: (state: string) => void;\n onUndoStateChanged: (state: string) => void;\n onSelectedLayoutFramesChanged: (state: string) => void;\n onSelectedTextStyleChanged: (styles: string) => void;\n onColorsChanged: (colors: string) => void;\n onParagraphStylesChanged: (paragraphStyles: string) => void;\n onCharacterStylesChanged: (characterStyles: string) => void;\n onFontFamiliesChanged: (fonts: string) => void;\n onSelectedLayoutIdChanged: (id: string) => void;\n onLayoutsChanged: (layouts: string) => void;\n onConnectorEvent: (state: string) => void;\n onConnectorsChanged: (state: string) => void;\n onZoomChanged: (scaleFactor: string) => void;\n onSelectedPageIdChanged: (pageId: string) => void;\n onPagesChanged: (pages: string) => void;\n onPageSnapshotInvalidated: (pageId: Id) => void;\n onPageSizeChanged: (scaleFactor: string) => void;\n onShapeCornerRadiusChanged: (cornerRadius: string) => void;\n onCropActiveFrameIdChanged: (id?: Id) => void;\n onAsyncError: (asyncError: string) => void;\n onViewModeChanged: (viewMode: string) => void;\n onBarcodeValidationChanged: (validationResults: string) => void;\n onDataSourceIdChanged: (connectorId?: Id) => void;\n onInjectedDataChanged: (variableId: Id) => void;\n onDocumentIssueListChanged: (documentIssues: string) => void;\n onCustomUndoDataChanged: (customData: string) => void;\n onEngineEditModeChanged: (engineEditMode: string) => void;\n onBrandKitMediaChanged: (brandKitMedia: string) => void;\n}\n\nlet messageHandler: ((event: MessageEvent) => void) | null = null;\n\nconst Connect = (\n editorLink: string,\n params: ConfigParameterTypes,\n setConnection: (connection: Connection) => void,\n editorId = 'chili-editor',\n styling?: StudioStyling,\n onSetupFrameError?: (error: Error) => void,\n) => {\n if (messageHandler) {\n window.removeEventListener('message', messageHandler);\n }\n const editorSelectorId = `#${editorId}`;\n const iframe = document.createElement('iframe');\n iframe.setAttribute('srcdoc', ' ');\n iframe.setAttribute('title', 'Chili-Editor');\n iframe.setAttribute('style', 'width: 100%; height: 100%;');\n iframe.setAttribute('frameBorder', '0');\n iframe.setAttribute('referrerpolicy', 'origin');\n const setupNewFrame = () => {\n const iframeContainer = document.querySelector(editorSelectorId);\n if (iframeContainer) {\n iframeContainer?.appendChild(iframe);\n\n iframe.addEventListener(\n 'error',\n () => {\n const error = new Error('Failed to setup frame: iframe failed to load');\n onSetupFrameError?.(error);\n },\n { capture: true, once: true },\n );\n\n try {\n setupFrame(iframe, editorLink, styling);\n } catch (error: unknown) {\n if (error instanceof Error) {\n onSetupFrameError?.(error);\n } else {\n onSetupFrameError?.(new Error(`Failed to setup frame: ${error}`));\n }\n }\n }\n };\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n setupNewFrame();\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n setupNewFrame();\n });\n }\n\n messageHandler = (event: MessageEvent) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n if (event.data?.type === 'iframe-error') {\n const errorData = event.data.error;\n const error = new Error(errorData.message || 'Failed to setup frame: error in iframe');\n onSetupFrameError?.(error);\n }\n };\n\n window.addEventListener('message', messageHandler);\n\n setConnection(\n connectToChild({\n // The iframe to which a connection should be made\n iframe,\n // All the methods that we want to expose to the child should be inside the methods object\n // f.e. stateChange(documentJson)\n methods: {\n actionsChanged: params.onActionsChanged,\n stateChanged: params.onStateChanged,\n documentLoaded: params.onDocumentLoaded,\n authExpired: params.onAuthExpired,\n viewportRequested: params.onViewportRequested,\n selectedFramesContent: params.onSelectedFramesContentChanged,\n selectedFramesLayout: params.onSelectedFramesLayoutChanged,\n allFramesLayout: params.onFramesLayoutChanged,\n selectedLayoutProperties: params.onSelectedLayoutPropertiesChanged,\n openLayoutPropertiesPanel: params.onPageSelectionChanged,\n selectedLayoutUnit: params.onSelectedLayoutUnitChanged,\n scrubberPositionChanged: params.onScrubberPositionChanged,\n frameAnimationsChanged: params.onFrameAnimationsChanged,\n selectedToolChanged: params.onSelectedToolChanged,\n variableListChanged: params.onVariableListChanged,\n undoStackStateChanged: params.onUndoStateChanged,\n selectedLayoutFramesChanged: params.onSelectedLayoutFramesChanged,\n selectedTextStyleChanged: params.onSelectedTextStyleChanged,\n colorsChanged: params.onColorsChanged,\n paragraphStylesChanged: params.onParagraphStylesChanged,\n characterStylesChanged: params.onCharacterStylesChanged,\n fontFamiliesChanged: params.onFontFamiliesChanged,\n selectedLayoutId: params.onSelectedLayoutIdChanged,\n layoutListChanged: params.onLayoutsChanged,\n connectorEvent: params.onConnectorEvent,\n connectorsChanged: params.onConnectorsChanged,\n zoomChanged: params.onZoomChanged,\n pageSnapshotInvalidated: params.onPageSnapshotInvalidated,\n pagesChanged: params.onPagesChanged,\n pageSizeChanged: params.onPageSizeChanged,\n shapeCornerRadiusChanged: params.onShapeCornerRadiusChanged,\n cropActiveFrameIdChanged: params.onCropActiveFrameIdChanged,\n asyncError: params.onAsyncError,\n viewModeChanged: params.onViewModeChanged,\n barcodeValidationChanged: params.onBarcodeValidationChanged,\n selectedPageIdChanged: params.onSelectedPageIdChanged,\n dataSourceIdChanged: params.onDataSourceIdChanged,\n injectedDataChanged: params.onInjectedDataChanged,\n documentIssueListChanged: params.onDocumentIssueListChanged,\n customUndoDataChanged: params.onCustomUndoDataChanged,\n engineEditingModeChanged: params.onEngineEditModeChanged,\n brandKitMediaChanged: params.onBrandKitMediaChanged,\n },\n }),\n );\n};\nexport default Connect;\n"],"names":["connectToChild"],"mappings":"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"}
1
+ {"version":3,"file":"Connector.cjs.js","sources":["../../../src/interactions/Connector.ts"],"sourcesContent":["import { Connection, connectToChild } from 'penpal';\nimport { Id } from '../types/CommonTypes';\nimport { StudioStyling } from '../types/ConfigurationTypes';\n\nexport const validateEditorLink = (editorLink: string) => {\n const linkValidator = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w]+\\/$/);\n let link = '';\n if (linkValidator.test(editorLink)) {\n link = editorLink;\n } else if (editorLink.indexOf('/index.html') > -1) {\n link = editorLink.replace('/index.html', '/');\n } else if (editorLink.charAt(-1) !== '/') {\n link = `${editorLink}/`;\n }\n return link;\n};\n\nexport const setupFrame = (iframe: HTMLIFrameElement, editorLink: string, styling?: StudioStyling) => {\n const link = validateEditorLink(editorLink);\n const stylingJson = JSON.stringify(styling || {});\n const html = `<html>\n <head>\n <base href=\"/\" />\n <meta charset=\"UTF-8\"/>\n <!-- use this property to pass the StudioStyling to the engine -->\n <meta name=\"studio-styling\" content='${stylingJson}'>\n </head>\n <body>\n <script>\n const handleIframeError = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: {\n message: event.message,\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n error: event.error?.toString(),\n },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n const handleUnhandledRejection = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: { message: event.reason?.toString() || 'Unhandled promise rejection' },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n window.addEventListener('error', handleIframeError);\n window.addEventListener('unhandledrejection', handleUnhandledRejection);\n </script>\n <script src=\"${link}init.js\" async></script>\n <script src=\"${link}flutter_bootstrap.js\"></script>\n <script>\n try {\n if(!window?.initializeStudioEngine){\n throw new Error('Failed to initialize studio engine: initializeStudioEngine not found');\n }\n initializeStudioEngine({\n assetBase: '${link}',\n });\n } catch(error) {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage({\n type: 'iframe-error',\n error: {\n message: error?.message || 'Error initializing studio engine',\n error: error?.toString()\n }\n }, window.location.ancestorOrigins[0] || window.location.origin);\n }\n throw error;\n } finally {\n window.removeEventListener('error', handleIframeError);\n window.removeEventListener('unhandledrejection', handleUnhandledRejection);\n }\n </script>\n </body>\n</html>`;\n\n // Set the iframe's content using DOM manipulation\n // eslint-disable-next-line no-param-reassign\n iframe.srcdoc = html;\n};\n\ninterface ConfigParameterTypes {\n onActionsChanged: (state: string) => void;\n onStateChanged: (state: string) => void;\n onAuthExpired: (authRefreshRequest: string) => Promise<string | null>;\n onViewportRequested: () => string | null;\n onDocumentLoaded: () => void;\n onSelectedFramesContentChanged: (state: string) => void;\n onSelectedFramesLayoutChanged: (state: string) => void;\n onFramesLayoutChanged: (state: string) => void;\n onSelectedLayoutPropertiesChanged: (state: string) => void;\n onSelectedLayoutUnitChanged: (state: string) => void;\n /**\n * @deprecated use `onSelectedPageIdChanged` instead\n */\n onPageSelectionChanged: (id: Id) => void;\n onScrubberPositionChanged: (state: string) => void;\n onFrameAnimationsChanged: (state: string) => void;\n onVariableListChanged: (state: string) => void;\n onSelectedToolChanged: (state: string) => void;\n onUndoStateChanged: (state: string) => void;\n onSelectedLayoutFramesChanged: (state: string) => void;\n onSelectedTextStyleChanged: (styles: string) => void;\n onColorsChanged: (colors: string) => void;\n onParagraphStylesChanged: (paragraphStyles: string) => void;\n onCharacterStylesChanged: (characterStyles: string) => void;\n onFontFamiliesChanged: (fonts: string) => void;\n onSelectedLayoutIdChanged: (id: string) => void;\n onLayoutsChanged: (layouts: string) => void;\n onConnectorEvent: (state: string) => void;\n onConnectorsChanged: (state: string) => void;\n onZoomChanged: (scaleFactor: string) => void;\n onSelectedPageIdChanged: (pageId: string) => void;\n onPagesChanged: (pages: string) => void;\n onPageSnapshotInvalidated: (pageId: Id) => void;\n onPageSizeChanged: (scaleFactor: string) => void;\n onShapeCornerRadiusChanged: (cornerRadius: string) => void;\n onCropActiveFrameIdChanged: (id?: Id) => void;\n onAsyncError: (asyncError: string) => void;\n onViewModeChanged: (viewMode: string) => void;\n onBarcodeValidationChanged: (validationResults: string) => void;\n onDataSourceIdChanged: (connectorId?: Id) => void;\n onInjectedDataChanged: (variableId: Id) => void;\n onDocumentIssueListChanged: (documentIssues: string) => void;\n onCustomUndoDataChanged: (customData: string) => void;\n onEngineEditModeChanged: (engineEditMode: string) => void;\n onBrandKitMediaChanged: (brandKitMedia: string) => void;\n onCanvasFramesManipulated: (frameIds: string) => void;\n}\n\nlet messageHandler: ((event: MessageEvent) => void) | null = null;\n\nconst Connect = (\n editorLink: string,\n params: ConfigParameterTypes,\n setConnection: (connection: Connection) => void,\n editorId = 'chili-editor',\n styling?: StudioStyling,\n onSetupFrameError?: (error: Error) => void,\n) => {\n if (messageHandler) {\n window.removeEventListener('message', messageHandler);\n }\n const editorSelectorId = `#${editorId}`;\n const iframe = document.createElement('iframe');\n iframe.setAttribute('srcdoc', ' ');\n iframe.setAttribute('title', 'Chili-Editor');\n iframe.setAttribute('style', 'width: 100%; height: 100%;');\n iframe.setAttribute('frameBorder', '0');\n iframe.setAttribute('referrerpolicy', 'origin');\n const setupNewFrame = () => {\n const iframeContainer = document.querySelector(editorSelectorId);\n if (iframeContainer) {\n iframeContainer?.appendChild(iframe);\n\n iframe.addEventListener(\n 'error',\n () => {\n const error = new Error('Failed to setup frame: iframe failed to load');\n onSetupFrameError?.(error);\n },\n { capture: true, once: true },\n );\n\n try {\n setupFrame(iframe, editorLink, styling);\n } catch (error: unknown) {\n if (error instanceof Error) {\n onSetupFrameError?.(error);\n } else {\n onSetupFrameError?.(new Error(`Failed to setup frame: ${error}`));\n }\n }\n }\n };\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n setupNewFrame();\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n setupNewFrame();\n });\n }\n\n messageHandler = (event: MessageEvent) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n if (event.data?.type === 'iframe-error') {\n const errorData = event.data.error;\n const error = new Error(errorData.message || 'Failed to setup frame: error in iframe');\n onSetupFrameError?.(error);\n }\n };\n\n window.addEventListener('message', messageHandler);\n\n setConnection(\n connectToChild({\n // The iframe to which a connection should be made\n iframe,\n // All the methods that we want to expose to the child should be inside the methods object\n // f.e. stateChange(documentJson)\n methods: {\n actionsChanged: params.onActionsChanged,\n stateChanged: params.onStateChanged,\n documentLoaded: params.onDocumentLoaded,\n authExpired: params.onAuthExpired,\n viewportRequested: params.onViewportRequested,\n selectedFramesContent: params.onSelectedFramesContentChanged,\n selectedFramesLayout: params.onSelectedFramesLayoutChanged,\n allFramesLayout: params.onFramesLayoutChanged,\n selectedLayoutProperties: params.onSelectedLayoutPropertiesChanged,\n openLayoutPropertiesPanel: params.onPageSelectionChanged,\n selectedLayoutUnit: params.onSelectedLayoutUnitChanged,\n scrubberPositionChanged: params.onScrubberPositionChanged,\n frameAnimationsChanged: params.onFrameAnimationsChanged,\n selectedToolChanged: params.onSelectedToolChanged,\n variableListChanged: params.onVariableListChanged,\n undoStackStateChanged: params.onUndoStateChanged,\n selectedLayoutFramesChanged: params.onSelectedLayoutFramesChanged,\n selectedTextStyleChanged: params.onSelectedTextStyleChanged,\n colorsChanged: params.onColorsChanged,\n paragraphStylesChanged: params.onParagraphStylesChanged,\n characterStylesChanged: params.onCharacterStylesChanged,\n fontFamiliesChanged: params.onFontFamiliesChanged,\n selectedLayoutId: params.onSelectedLayoutIdChanged,\n layoutListChanged: params.onLayoutsChanged,\n connectorEvent: params.onConnectorEvent,\n connectorsChanged: params.onConnectorsChanged,\n zoomChanged: params.onZoomChanged,\n pageSnapshotInvalidated: params.onPageSnapshotInvalidated,\n pagesChanged: params.onPagesChanged,\n pageSizeChanged: params.onPageSizeChanged,\n shapeCornerRadiusChanged: params.onShapeCornerRadiusChanged,\n cropActiveFrameIdChanged: params.onCropActiveFrameIdChanged,\n asyncError: params.onAsyncError,\n viewModeChanged: params.onViewModeChanged,\n barcodeValidationChanged: params.onBarcodeValidationChanged,\n selectedPageIdChanged: params.onSelectedPageIdChanged,\n dataSourceIdChanged: params.onDataSourceIdChanged,\n injectedDataChanged: params.onInjectedDataChanged,\n documentIssueListChanged: params.onDocumentIssueListChanged,\n customUndoDataChanged: params.onCustomUndoDataChanged,\n engineEditingModeChanged: params.onEngineEditModeChanged,\n brandKitMediaChanged: params.onBrandKitMediaChanged,\n frameManipulated: params.onCanvasFramesManipulated,\n },\n }),\n );\n};\nexport default Connect;\n"],"names":["connectToChild"],"mappings":"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"}
@@ -49,6 +49,7 @@ interface ConfigParameterTypes {
49
49
  onCustomUndoDataChanged: (customData: string) => void;
50
50
  onEngineEditModeChanged: (engineEditMode: string) => void;
51
51
  onBrandKitMediaChanged: (brandKitMedia: string) => void;
52
+ onCanvasFramesManipulated: (frameIds: string) => void;
52
53
  }
53
54
  declare const Connect: (editorLink: string, params: ConfigParameterTypes, setConnection: (connection: Connection) => void, editorId?: string, styling?: StudioStyling, onSetupFrameError?: (error: Error) => void) => void;
54
55
  export default Connect;
@@ -186,7 +186,8 @@ const Connect = (editorLink, params, setConnection, editorId = "chili-editor", s
186
186
  documentIssueListChanged: params.onDocumentIssueListChanged,
187
187
  customUndoDataChanged: params.onCustomUndoDataChanged,
188
188
  engineEditingModeChanged: params.onEngineEditModeChanged,
189
- brandKitMediaChanged: params.onBrandKitMediaChanged
189
+ brandKitMediaChanged: params.onBrandKitMediaChanged,
190
+ frameManipulated: params.onCanvasFramesManipulated
190
191
  }
191
192
  })
192
193
  );
@@ -1 +1 @@
1
- {"version":3,"file":"Connector.es.js","sources":["../../../src/interactions/Connector.ts"],"sourcesContent":["import { Connection, connectToChild } from 'penpal';\nimport { Id } from '../types/CommonTypes';\nimport { StudioStyling } from '../types/ConfigurationTypes';\n\nexport const validateEditorLink = (editorLink: string) => {\n const linkValidator = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w]+\\/$/);\n let link = '';\n if (linkValidator.test(editorLink)) {\n link = editorLink;\n } else if (editorLink.indexOf('/index.html') > -1) {\n link = editorLink.replace('/index.html', '/');\n } else if (editorLink.charAt(-1) !== '/') {\n link = `${editorLink}/`;\n }\n return link;\n};\n\nexport const setupFrame = (iframe: HTMLIFrameElement, editorLink: string, styling?: StudioStyling) => {\n const link = validateEditorLink(editorLink);\n const stylingJson = JSON.stringify(styling || {});\n const html = `<html>\n <head>\n <base href=\"/\" />\n <meta charset=\"UTF-8\"/>\n <!-- use this property to pass the StudioStyling to the engine -->\n <meta name=\"studio-styling\" content='${stylingJson}'>\n </head>\n <body>\n <script>\n const handleIframeError = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: {\n message: event.message,\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n error: event.error?.toString(),\n },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n const handleUnhandledRejection = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: { message: event.reason?.toString() || 'Unhandled promise rejection' },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n window.addEventListener('error', handleIframeError);\n window.addEventListener('unhandledrejection', handleUnhandledRejection);\n </script>\n <script src=\"${link}init.js\" async></script>\n <script src=\"${link}flutter_bootstrap.js\"></script>\n <script>\n try {\n if(!window?.initializeStudioEngine){\n throw new Error('Failed to initialize studio engine: initializeStudioEngine not found');\n }\n initializeStudioEngine({\n assetBase: '${link}',\n });\n } catch(error) {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage({\n type: 'iframe-error',\n error: {\n message: error?.message || 'Error initializing studio engine',\n error: error?.toString()\n }\n }, window.location.ancestorOrigins[0] || window.location.origin);\n }\n throw error;\n } finally {\n window.removeEventListener('error', handleIframeError);\n window.removeEventListener('unhandledrejection', handleUnhandledRejection);\n }\n </script>\n </body>\n</html>`;\n\n // Set the iframe's content using DOM manipulation\n // eslint-disable-next-line no-param-reassign\n iframe.srcdoc = html;\n};\n\ninterface ConfigParameterTypes {\n onActionsChanged: (state: string) => void;\n onStateChanged: (state: string) => void;\n onAuthExpired: (authRefreshRequest: string) => Promise<string | null>;\n onViewportRequested: () => string | null;\n onDocumentLoaded: () => void;\n onSelectedFramesContentChanged: (state: string) => void;\n onSelectedFramesLayoutChanged: (state: string) => void;\n onFramesLayoutChanged: (state: string) => void;\n onSelectedLayoutPropertiesChanged: (state: string) => void;\n onSelectedLayoutUnitChanged: (state: string) => void;\n /**\n * @deprecated use `onSelectedPageIdChanged` instead\n */\n onPageSelectionChanged: (id: Id) => void;\n onScrubberPositionChanged: (state: string) => void;\n onFrameAnimationsChanged: (state: string) => void;\n onVariableListChanged: (state: string) => void;\n onSelectedToolChanged: (state: string) => void;\n onUndoStateChanged: (state: string) => void;\n onSelectedLayoutFramesChanged: (state: string) => void;\n onSelectedTextStyleChanged: (styles: string) => void;\n onColorsChanged: (colors: string) => void;\n onParagraphStylesChanged: (paragraphStyles: string) => void;\n onCharacterStylesChanged: (characterStyles: string) => void;\n onFontFamiliesChanged: (fonts: string) => void;\n onSelectedLayoutIdChanged: (id: string) => void;\n onLayoutsChanged: (layouts: string) => void;\n onConnectorEvent: (state: string) => void;\n onConnectorsChanged: (state: string) => void;\n onZoomChanged: (scaleFactor: string) => void;\n onSelectedPageIdChanged: (pageId: string) => void;\n onPagesChanged: (pages: string) => void;\n onPageSnapshotInvalidated: (pageId: Id) => void;\n onPageSizeChanged: (scaleFactor: string) => void;\n onShapeCornerRadiusChanged: (cornerRadius: string) => void;\n onCropActiveFrameIdChanged: (id?: Id) => void;\n onAsyncError: (asyncError: string) => void;\n onViewModeChanged: (viewMode: string) => void;\n onBarcodeValidationChanged: (validationResults: string) => void;\n onDataSourceIdChanged: (connectorId?: Id) => void;\n onInjectedDataChanged: (variableId: Id) => void;\n onDocumentIssueListChanged: (documentIssues: string) => void;\n onCustomUndoDataChanged: (customData: string) => void;\n onEngineEditModeChanged: (engineEditMode: string) => void;\n onBrandKitMediaChanged: (brandKitMedia: string) => void;\n}\n\nlet messageHandler: ((event: MessageEvent) => void) | null = null;\n\nconst Connect = (\n editorLink: string,\n params: ConfigParameterTypes,\n setConnection: (connection: Connection) => void,\n editorId = 'chili-editor',\n styling?: StudioStyling,\n onSetupFrameError?: (error: Error) => void,\n) => {\n if (messageHandler) {\n window.removeEventListener('message', messageHandler);\n }\n const editorSelectorId = `#${editorId}`;\n const iframe = document.createElement('iframe');\n iframe.setAttribute('srcdoc', ' ');\n iframe.setAttribute('title', 'Chili-Editor');\n iframe.setAttribute('style', 'width: 100%; height: 100%;');\n iframe.setAttribute('frameBorder', '0');\n iframe.setAttribute('referrerpolicy', 'origin');\n const setupNewFrame = () => {\n const iframeContainer = document.querySelector(editorSelectorId);\n if (iframeContainer) {\n iframeContainer?.appendChild(iframe);\n\n iframe.addEventListener(\n 'error',\n () => {\n const error = new Error('Failed to setup frame: iframe failed to load');\n onSetupFrameError?.(error);\n },\n { capture: true, once: true },\n );\n\n try {\n setupFrame(iframe, editorLink, styling);\n } catch (error: unknown) {\n if (error instanceof Error) {\n onSetupFrameError?.(error);\n } else {\n onSetupFrameError?.(new Error(`Failed to setup frame: ${error}`));\n }\n }\n }\n };\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n setupNewFrame();\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n setupNewFrame();\n });\n }\n\n messageHandler = (event: MessageEvent) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n if (event.data?.type === 'iframe-error') {\n const errorData = event.data.error;\n const error = new Error(errorData.message || 'Failed to setup frame: error in iframe');\n onSetupFrameError?.(error);\n }\n };\n\n window.addEventListener('message', messageHandler);\n\n setConnection(\n connectToChild({\n // The iframe to which a connection should be made\n iframe,\n // All the methods that we want to expose to the child should be inside the methods object\n // f.e. stateChange(documentJson)\n methods: {\n actionsChanged: params.onActionsChanged,\n stateChanged: params.onStateChanged,\n documentLoaded: params.onDocumentLoaded,\n authExpired: params.onAuthExpired,\n viewportRequested: params.onViewportRequested,\n selectedFramesContent: params.onSelectedFramesContentChanged,\n selectedFramesLayout: params.onSelectedFramesLayoutChanged,\n allFramesLayout: params.onFramesLayoutChanged,\n selectedLayoutProperties: params.onSelectedLayoutPropertiesChanged,\n openLayoutPropertiesPanel: params.onPageSelectionChanged,\n selectedLayoutUnit: params.onSelectedLayoutUnitChanged,\n scrubberPositionChanged: params.onScrubberPositionChanged,\n frameAnimationsChanged: params.onFrameAnimationsChanged,\n selectedToolChanged: params.onSelectedToolChanged,\n variableListChanged: params.onVariableListChanged,\n undoStackStateChanged: params.onUndoStateChanged,\n selectedLayoutFramesChanged: params.onSelectedLayoutFramesChanged,\n selectedTextStyleChanged: params.onSelectedTextStyleChanged,\n colorsChanged: params.onColorsChanged,\n paragraphStylesChanged: params.onParagraphStylesChanged,\n characterStylesChanged: params.onCharacterStylesChanged,\n fontFamiliesChanged: params.onFontFamiliesChanged,\n selectedLayoutId: params.onSelectedLayoutIdChanged,\n layoutListChanged: params.onLayoutsChanged,\n connectorEvent: params.onConnectorEvent,\n connectorsChanged: params.onConnectorsChanged,\n zoomChanged: params.onZoomChanged,\n pageSnapshotInvalidated: params.onPageSnapshotInvalidated,\n pagesChanged: params.onPagesChanged,\n pageSizeChanged: params.onPageSizeChanged,\n shapeCornerRadiusChanged: params.onShapeCornerRadiusChanged,\n cropActiveFrameIdChanged: params.onCropActiveFrameIdChanged,\n asyncError: params.onAsyncError,\n viewModeChanged: params.onViewModeChanged,\n barcodeValidationChanged: params.onBarcodeValidationChanged,\n selectedPageIdChanged: params.onSelectedPageIdChanged,\n dataSourceIdChanged: params.onDataSourceIdChanged,\n injectedDataChanged: params.onInjectedDataChanged,\n documentIssueListChanged: params.onDocumentIssueListChanged,\n customUndoDataChanged: params.onCustomUndoDataChanged,\n engineEditingModeChanged: params.onEngineEditModeChanged,\n brandKitMediaChanged: params.onBrandKitMediaChanged,\n },\n }),\n );\n};\nexport default Connect;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Connector.es.js","sources":["../../../src/interactions/Connector.ts"],"sourcesContent":["import { Connection, connectToChild } from 'penpal';\nimport { Id } from '../types/CommonTypes';\nimport { StudioStyling } from '../types/ConfigurationTypes';\n\nexport const validateEditorLink = (editorLink: string) => {\n const linkValidator = new RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w]+\\/$/);\n let link = '';\n if (linkValidator.test(editorLink)) {\n link = editorLink;\n } else if (editorLink.indexOf('/index.html') > -1) {\n link = editorLink.replace('/index.html', '/');\n } else if (editorLink.charAt(-1) !== '/') {\n link = `${editorLink}/`;\n }\n return link;\n};\n\nexport const setupFrame = (iframe: HTMLIFrameElement, editorLink: string, styling?: StudioStyling) => {\n const link = validateEditorLink(editorLink);\n const stylingJson = JSON.stringify(styling || {});\n const html = `<html>\n <head>\n <base href=\"/\" />\n <meta charset=\"UTF-8\"/>\n <!-- use this property to pass the StudioStyling to the engine -->\n <meta name=\"studio-styling\" content='${stylingJson}'>\n </head>\n <body>\n <script>\n const handleIframeError = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: {\n message: event.message,\n filename: event.filename,\n lineno: event.lineno,\n colno: event.colno,\n error: event.error?.toString(),\n },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n const handleUnhandledRejection = (event) => {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage(\n {\n type: 'iframe-error',\n error: { message: event.reason?.toString() || 'Unhandled promise rejection' },\n },\n window.location.ancestorOrigins[0] || window.location.origin,\n );\n }\n };\n window.addEventListener('error', handleIframeError);\n window.addEventListener('unhandledrejection', handleUnhandledRejection);\n </script>\n <script src=\"${link}init.js\" async></script>\n <script src=\"${link}flutter_bootstrap.js\"></script>\n <script>\n try {\n if(!window?.initializeStudioEngine){\n throw new Error('Failed to initialize studio engine: initializeStudioEngine not found');\n }\n initializeStudioEngine({\n assetBase: '${link}',\n });\n } catch(error) {\n if (window.parent && window.parent !== window) {\n window.parent.postMessage({\n type: 'iframe-error',\n error: {\n message: error?.message || 'Error initializing studio engine',\n error: error?.toString()\n }\n }, window.location.ancestorOrigins[0] || window.location.origin);\n }\n throw error;\n } finally {\n window.removeEventListener('error', handleIframeError);\n window.removeEventListener('unhandledrejection', handleUnhandledRejection);\n }\n </script>\n </body>\n</html>`;\n\n // Set the iframe's content using DOM manipulation\n // eslint-disable-next-line no-param-reassign\n iframe.srcdoc = html;\n};\n\ninterface ConfigParameterTypes {\n onActionsChanged: (state: string) => void;\n onStateChanged: (state: string) => void;\n onAuthExpired: (authRefreshRequest: string) => Promise<string | null>;\n onViewportRequested: () => string | null;\n onDocumentLoaded: () => void;\n onSelectedFramesContentChanged: (state: string) => void;\n onSelectedFramesLayoutChanged: (state: string) => void;\n onFramesLayoutChanged: (state: string) => void;\n onSelectedLayoutPropertiesChanged: (state: string) => void;\n onSelectedLayoutUnitChanged: (state: string) => void;\n /**\n * @deprecated use `onSelectedPageIdChanged` instead\n */\n onPageSelectionChanged: (id: Id) => void;\n onScrubberPositionChanged: (state: string) => void;\n onFrameAnimationsChanged: (state: string) => void;\n onVariableListChanged: (state: string) => void;\n onSelectedToolChanged: (state: string) => void;\n onUndoStateChanged: (state: string) => void;\n onSelectedLayoutFramesChanged: (state: string) => void;\n onSelectedTextStyleChanged: (styles: string) => void;\n onColorsChanged: (colors: string) => void;\n onParagraphStylesChanged: (paragraphStyles: string) => void;\n onCharacterStylesChanged: (characterStyles: string) => void;\n onFontFamiliesChanged: (fonts: string) => void;\n onSelectedLayoutIdChanged: (id: string) => void;\n onLayoutsChanged: (layouts: string) => void;\n onConnectorEvent: (state: string) => void;\n onConnectorsChanged: (state: string) => void;\n onZoomChanged: (scaleFactor: string) => void;\n onSelectedPageIdChanged: (pageId: string) => void;\n onPagesChanged: (pages: string) => void;\n onPageSnapshotInvalidated: (pageId: Id) => void;\n onPageSizeChanged: (scaleFactor: string) => void;\n onShapeCornerRadiusChanged: (cornerRadius: string) => void;\n onCropActiveFrameIdChanged: (id?: Id) => void;\n onAsyncError: (asyncError: string) => void;\n onViewModeChanged: (viewMode: string) => void;\n onBarcodeValidationChanged: (validationResults: string) => void;\n onDataSourceIdChanged: (connectorId?: Id) => void;\n onInjectedDataChanged: (variableId: Id) => void;\n onDocumentIssueListChanged: (documentIssues: string) => void;\n onCustomUndoDataChanged: (customData: string) => void;\n onEngineEditModeChanged: (engineEditMode: string) => void;\n onBrandKitMediaChanged: (brandKitMedia: string) => void;\n onCanvasFramesManipulated: (frameIds: string) => void;\n}\n\nlet messageHandler: ((event: MessageEvent) => void) | null = null;\n\nconst Connect = (\n editorLink: string,\n params: ConfigParameterTypes,\n setConnection: (connection: Connection) => void,\n editorId = 'chili-editor',\n styling?: StudioStyling,\n onSetupFrameError?: (error: Error) => void,\n) => {\n if (messageHandler) {\n window.removeEventListener('message', messageHandler);\n }\n const editorSelectorId = `#${editorId}`;\n const iframe = document.createElement('iframe');\n iframe.setAttribute('srcdoc', ' ');\n iframe.setAttribute('title', 'Chili-Editor');\n iframe.setAttribute('style', 'width: 100%; height: 100%;');\n iframe.setAttribute('frameBorder', '0');\n iframe.setAttribute('referrerpolicy', 'origin');\n const setupNewFrame = () => {\n const iframeContainer = document.querySelector(editorSelectorId);\n if (iframeContainer) {\n iframeContainer?.appendChild(iframe);\n\n iframe.addEventListener(\n 'error',\n () => {\n const error = new Error('Failed to setup frame: iframe failed to load');\n onSetupFrameError?.(error);\n },\n { capture: true, once: true },\n );\n\n try {\n setupFrame(iframe, editorLink, styling);\n } catch (error: unknown) {\n if (error instanceof Error) {\n onSetupFrameError?.(error);\n } else {\n onSetupFrameError?.(new Error(`Failed to setup frame: ${error}`));\n }\n }\n }\n };\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n setupNewFrame();\n } else {\n document.addEventListener('DOMContentLoaded', () => {\n setupNewFrame();\n });\n }\n\n messageHandler = (event: MessageEvent) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n if (event.data?.type === 'iframe-error') {\n const errorData = event.data.error;\n const error = new Error(errorData.message || 'Failed to setup frame: error in iframe');\n onSetupFrameError?.(error);\n }\n };\n\n window.addEventListener('message', messageHandler);\n\n setConnection(\n connectToChild({\n // The iframe to which a connection should be made\n iframe,\n // All the methods that we want to expose to the child should be inside the methods object\n // f.e. stateChange(documentJson)\n methods: {\n actionsChanged: params.onActionsChanged,\n stateChanged: params.onStateChanged,\n documentLoaded: params.onDocumentLoaded,\n authExpired: params.onAuthExpired,\n viewportRequested: params.onViewportRequested,\n selectedFramesContent: params.onSelectedFramesContentChanged,\n selectedFramesLayout: params.onSelectedFramesLayoutChanged,\n allFramesLayout: params.onFramesLayoutChanged,\n selectedLayoutProperties: params.onSelectedLayoutPropertiesChanged,\n openLayoutPropertiesPanel: params.onPageSelectionChanged,\n selectedLayoutUnit: params.onSelectedLayoutUnitChanged,\n scrubberPositionChanged: params.onScrubberPositionChanged,\n frameAnimationsChanged: params.onFrameAnimationsChanged,\n selectedToolChanged: params.onSelectedToolChanged,\n variableListChanged: params.onVariableListChanged,\n undoStackStateChanged: params.onUndoStateChanged,\n selectedLayoutFramesChanged: params.onSelectedLayoutFramesChanged,\n selectedTextStyleChanged: params.onSelectedTextStyleChanged,\n colorsChanged: params.onColorsChanged,\n paragraphStylesChanged: params.onParagraphStylesChanged,\n characterStylesChanged: params.onCharacterStylesChanged,\n fontFamiliesChanged: params.onFontFamiliesChanged,\n selectedLayoutId: params.onSelectedLayoutIdChanged,\n layoutListChanged: params.onLayoutsChanged,\n connectorEvent: params.onConnectorEvent,\n connectorsChanged: params.onConnectorsChanged,\n zoomChanged: params.onZoomChanged,\n pageSnapshotInvalidated: params.onPageSnapshotInvalidated,\n pagesChanged: params.onPagesChanged,\n pageSizeChanged: params.onPageSizeChanged,\n shapeCornerRadiusChanged: params.onShapeCornerRadiusChanged,\n cropActiveFrameIdChanged: params.onCropActiveFrameIdChanged,\n asyncError: params.onAsyncError,\n viewModeChanged: params.onViewModeChanged,\n barcodeValidationChanged: params.onBarcodeValidationChanged,\n selectedPageIdChanged: params.onSelectedPageIdChanged,\n dataSourceIdChanged: params.onDataSourceIdChanged,\n injectedDataChanged: params.onInjectedDataChanged,\n documentIssueListChanged: params.onDocumentIssueListChanged,\n customUndoDataChanged: params.onCustomUndoDataChanged,\n engineEditingModeChanged: params.onEngineEditModeChanged,\n brandKitMediaChanged: params.onBrandKitMediaChanged,\n frameManipulated: params.onCanvasFramesManipulated,\n },\n }),\n );\n};\nexport default Connect;\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const BrandKitController = require("./controllers/BrandKitController.cjs.js");
4
3
  const SubscriberController = require("./controllers/SubscriberController.cjs.js");
5
4
  const VariableController = require("./controllers/VariableController.cjs.js");
6
5
  const ConnectorController = require("./controllers/ConnectorController.cjs.js");
@@ -21,7 +20,6 @@ class NextInitiator {
21
20
  this.connector = new ConnectorController.ConnectorController(this.editorAPI);
22
21
  this.page = new PageController.PageController(this.editorAPI);
23
22
  this.canvas = new CanvasController.CanvasController(this.editorAPI);
24
- this.brandKit = new BrandKitController.BrandKitController(this.editorAPI);
25
23
  }
26
24
  }
27
25
  exports.NextInitiator = NextInitiator;
@@ -1 +1 @@
1
- {"version":3,"file":"NextInitiator.cjs.js","sources":["../../../src/next/NextInitiator.ts"],"sourcesContent":["import { Connection } from 'penpal';\nimport { EditorAPI, RuntimeConfigType } from '../types/CommonTypes';\nimport { BrandKitController } from './controllers/BrandKitController';\nimport { SubscriberController } from './controllers/SubscriberController';\nimport { VariableController } from './controllers/VariableController';\nimport { ConnectorController } from './controllers/ConnectorController';\nimport { PageController } from './controllers/PageController';\nimport { CanvasController } from '../controllers/CanvasController';\n\n/**\n * The next initiator is a split off on SDK level to tag next features.\n * The principle is that all breaking changes that we are anticipating, come into this section of the SDK.\n * This allows us to introduce breaking changes before bumping the SDK Major version, since we want to bundle some of them.\n * This way our major version can stay stable for longer, without sacrificing the flexibility we need to innovate.\n * Together with a major update, the functions and additions in this part of the SDK will be moved to the main part.\n * If you're using the next controller, you might need to import the typings also from the next types.\n * this can be referenced in your application as @chili-publish/studio-sdk/lib/src/next\n */\nexport class NextInitiator {\n private config: RuntimeConfigType;\n private connection: Connection;\n\n /**\n * @ignore\n */\n private editorAPI: EditorAPI;\n\n subscriber: SubscriberController;\n variable: VariableController;\n connector: ConnectorController;\n page: PageController;\n canvas: CanvasController;\n brandKit: BrandKitController;\n\n /**\n * The next initiator is a split off on SDK level to tag next features\n * The SDK should be configured clientside and it exposes all controllers to work with in other applications\n * @param config The configuration object where the SDK and editor can get configured\n */\n constructor(config: RuntimeConfigType, connection: Connection, editorAPI: EditorAPI) {\n this.config = config;\n this.connection = connection;\n this.editorAPI = editorAPI;\n\n this.subscriber = new SubscriberController(config);\n this.variable = new VariableController(this.editorAPI);\n this.connector = new ConnectorController(this.editorAPI);\n this.page = new PageController(this.editorAPI);\n this.canvas = new CanvasController(this.editorAPI);\n this.brandKit = new BrandKitController(this.editorAPI);\n }\n}\n"],"names":["SubscriberController","VariableController","ConnectorController","PageController","CanvasController","BrandKitController"],"mappings":";;;;;;;;AAkBO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBvB,YAAY,QAA2B,YAAwB,WAAsB;AACjF,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,YAAY;AAEjB,SAAK,aAAa,IAAIA,qBAAAA,qBAAqB,MAAM;AACjD,SAAK,WAAW,IAAIC,sCAAmB,KAAK,SAAS;AACrD,SAAK,YAAY,IAAIC,wCAAoB,KAAK,SAAS;AACvD,SAAK,OAAO,IAAIC,8BAAe,KAAK,SAAS;AAC7C,SAAK,SAAS,IAAIC,kCAAiB,KAAK,SAAS;AACjD,SAAK,WAAW,IAAIC,sCAAmB,KAAK,SAAS;AAAA,EACzD;AACJ;;"}
1
+ {"version":3,"file":"NextInitiator.cjs.js","sources":["../../../src/next/NextInitiator.ts"],"sourcesContent":["import { Connection } from 'penpal';\nimport { EditorAPI, RuntimeConfigType } from '../types/CommonTypes';\nimport { SubscriberController } from './controllers/SubscriberController';\nimport { VariableController } from './controllers/VariableController';\nimport { ConnectorController } from './controllers/ConnectorController';\nimport { PageController } from './controllers/PageController';\nimport { CanvasController } from '../controllers/CanvasController';\n\n/**\n * The next initiator is a split off on SDK level to tag next features.\n * The principle is that all breaking changes that we are anticipating, come into this section of the SDK.\n * This allows us to introduce breaking changes before bumping the SDK Major version, since we want to bundle some of them.\n * This way our major version can stay stable for longer, without sacrificing the flexibility we need to innovate.\n * Together with a major update, the functions and additions in this part of the SDK will be moved to the main part.\n * If you're using the next controller, you might need to import the typings also from the next types.\n * this can be referenced in your application as @chili-publish/studio-sdk/lib/src/next\n */\nexport class NextInitiator {\n private config: RuntimeConfigType;\n private connection: Connection;\n\n /**\n * @ignore\n */\n private editorAPI: EditorAPI;\n\n subscriber: SubscriberController;\n variable: VariableController;\n connector: ConnectorController;\n page: PageController;\n canvas: CanvasController;\n\n /**\n * The next initiator is a split off on SDK level to tag next features\n * The SDK should be configured clientside and it exposes all controllers to work with in other applications\n * @param config The configuration object where the SDK and editor can get configured\n */\n constructor(config: RuntimeConfigType, connection: Connection, editorAPI: EditorAPI) {\n this.config = config;\n this.connection = connection;\n this.editorAPI = editorAPI;\n\n this.subscriber = new SubscriberController(config);\n this.variable = new VariableController(this.editorAPI);\n this.connector = new ConnectorController(this.editorAPI);\n this.page = new PageController(this.editorAPI);\n this.canvas = new CanvasController(this.editorAPI);\n }\n}\n"],"names":["SubscriberController","VariableController","ConnectorController","PageController","CanvasController"],"mappings":";;;;;;;AAiBO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBvB,YAAY,QAA2B,YAAwB,WAAsB;AACjF,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,YAAY;AAEjB,SAAK,aAAa,IAAIA,qBAAAA,qBAAqB,MAAM;AACjD,SAAK,WAAW,IAAIC,sCAAmB,KAAK,SAAS;AACrD,SAAK,YAAY,IAAIC,wCAAoB,KAAK,SAAS;AACvD,SAAK,OAAO,IAAIC,8BAAe,KAAK,SAAS;AAC7C,SAAK,SAAS,IAAIC,kCAAiB,KAAK,SAAS;AAAA,EACrD;AACJ;;"}
@@ -1,6 +1,5 @@
1
1
  import { Connection } from 'penpal';
2
2
  import { EditorAPI, RuntimeConfigType } from '../types/CommonTypes';
3
- import { BrandKitController } from './controllers/BrandKitController';
4
3
  import { SubscriberController } from './controllers/SubscriberController';
5
4
  import { VariableController } from './controllers/VariableController';
6
5
  import { ConnectorController } from './controllers/ConnectorController';
@@ -27,7 +26,6 @@ export declare class NextInitiator {
27
26
  connector: ConnectorController;
28
27
  page: PageController;
29
28
  canvas: CanvasController;
30
- brandKit: BrandKitController;
31
29
  /**
32
30
  * The next initiator is a split off on SDK level to tag next features
33
31
  * The SDK should be configured clientside and it exposes all controllers to work with in other applications
@@ -1,4 +1,3 @@
1
- import { BrandKitController } from "./controllers/BrandKitController.es.js";
2
1
  import { SubscriberController } from "./controllers/SubscriberController.es.js";
3
2
  import { VariableController } from "./controllers/VariableController.es.js";
4
3
  import { ConnectorController } from "./controllers/ConnectorController.es.js";
@@ -19,7 +18,6 @@ class NextInitiator {
19
18
  this.connector = new ConnectorController(this.editorAPI);
20
19
  this.page = new PageController(this.editorAPI);
21
20
  this.canvas = new CanvasController(this.editorAPI);
22
- this.brandKit = new BrandKitController(this.editorAPI);
23
21
  }
24
22
  }
25
23
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"NextInitiator.es.js","sources":["../../../src/next/NextInitiator.ts"],"sourcesContent":["import { Connection } from 'penpal';\nimport { EditorAPI, RuntimeConfigType } from '../types/CommonTypes';\nimport { BrandKitController } from './controllers/BrandKitController';\nimport { SubscriberController } from './controllers/SubscriberController';\nimport { VariableController } from './controllers/VariableController';\nimport { ConnectorController } from './controllers/ConnectorController';\nimport { PageController } from './controllers/PageController';\nimport { CanvasController } from '../controllers/CanvasController';\n\n/**\n * The next initiator is a split off on SDK level to tag next features.\n * The principle is that all breaking changes that we are anticipating, come into this section of the SDK.\n * This allows us to introduce breaking changes before bumping the SDK Major version, since we want to bundle some of them.\n * This way our major version can stay stable for longer, without sacrificing the flexibility we need to innovate.\n * Together with a major update, the functions and additions in this part of the SDK will be moved to the main part.\n * If you're using the next controller, you might need to import the typings also from the next types.\n * this can be referenced in your application as @chili-publish/studio-sdk/lib/src/next\n */\nexport class NextInitiator {\n private config: RuntimeConfigType;\n private connection: Connection;\n\n /**\n * @ignore\n */\n private editorAPI: EditorAPI;\n\n subscriber: SubscriberController;\n variable: VariableController;\n connector: ConnectorController;\n page: PageController;\n canvas: CanvasController;\n brandKit: BrandKitController;\n\n /**\n * The next initiator is a split off on SDK level to tag next features\n * The SDK should be configured clientside and it exposes all controllers to work with in other applications\n * @param config The configuration object where the SDK and editor can get configured\n */\n constructor(config: RuntimeConfigType, connection: Connection, editorAPI: EditorAPI) {\n this.config = config;\n this.connection = connection;\n this.editorAPI = editorAPI;\n\n this.subscriber = new SubscriberController(config);\n this.variable = new VariableController(this.editorAPI);\n this.connector = new ConnectorController(this.editorAPI);\n this.page = new PageController(this.editorAPI);\n this.canvas = new CanvasController(this.editorAPI);\n this.brandKit = new BrandKitController(this.editorAPI);\n }\n}\n"],"names":[],"mappings":";;;;;;AAkBO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBvB,YAAY,QAA2B,YAAwB,WAAsB;AACjF,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,YAAY;AAEjB,SAAK,aAAa,IAAI,qBAAqB,MAAM;AACjD,SAAK,WAAW,IAAI,mBAAmB,KAAK,SAAS;AACrD,SAAK,YAAY,IAAI,oBAAoB,KAAK,SAAS;AACvD,SAAK,OAAO,IAAI,eAAe,KAAK,SAAS;AAC7C,SAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS;AACjD,SAAK,WAAW,IAAI,mBAAmB,KAAK,SAAS;AAAA,EACzD;AACJ;"}
1
+ {"version":3,"file":"NextInitiator.es.js","sources":["../../../src/next/NextInitiator.ts"],"sourcesContent":["import { Connection } from 'penpal';\nimport { EditorAPI, RuntimeConfigType } from '../types/CommonTypes';\nimport { SubscriberController } from './controllers/SubscriberController';\nimport { VariableController } from './controllers/VariableController';\nimport { ConnectorController } from './controllers/ConnectorController';\nimport { PageController } from './controllers/PageController';\nimport { CanvasController } from '../controllers/CanvasController';\n\n/**\n * The next initiator is a split off on SDK level to tag next features.\n * The principle is that all breaking changes that we are anticipating, come into this section of the SDK.\n * This allows us to introduce breaking changes before bumping the SDK Major version, since we want to bundle some of them.\n * This way our major version can stay stable for longer, without sacrificing the flexibility we need to innovate.\n * Together with a major update, the functions and additions in this part of the SDK will be moved to the main part.\n * If you're using the next controller, you might need to import the typings also from the next types.\n * this can be referenced in your application as @chili-publish/studio-sdk/lib/src/next\n */\nexport class NextInitiator {\n private config: RuntimeConfigType;\n private connection: Connection;\n\n /**\n * @ignore\n */\n private editorAPI: EditorAPI;\n\n subscriber: SubscriberController;\n variable: VariableController;\n connector: ConnectorController;\n page: PageController;\n canvas: CanvasController;\n\n /**\n * The next initiator is a split off on SDK level to tag next features\n * The SDK should be configured clientside and it exposes all controllers to work with in other applications\n * @param config The configuration object where the SDK and editor can get configured\n */\n constructor(config: RuntimeConfigType, connection: Connection, editorAPI: EditorAPI) {\n this.config = config;\n this.connection = connection;\n this.editorAPI = editorAPI;\n\n this.subscriber = new SubscriberController(config);\n this.variable = new VariableController(this.editorAPI);\n this.connector = new ConnectorController(this.editorAPI);\n this.page = new PageController(this.editorAPI);\n this.canvas = new CanvasController(this.editorAPI);\n }\n}\n"],"names":[],"mappings":";;;;;AAiBO,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBvB,YAAY,QAA2B,YAAwB,WAAsB;AACjF,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,YAAY;AAEjB,SAAK,aAAa,IAAI,qBAAqB,MAAM;AACjD,SAAK,WAAW,IAAI,mBAAmB,KAAK,SAAS;AACrD,SAAK,YAAY,IAAI,oBAAoB,KAAK,SAAS;AACvD,SAAK,OAAO,IAAI,eAAe,KAAK,SAAS;AAC7C,SAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS;AAAA,EACrD;AACJ;"}
@@ -3,4 +3,3 @@ export type { ConnectorGrafxRegistration, ConnectorInstance, ConnectorLocalRegis
3
3
  export type { NextSubscribers } from './types/NextSubscribers';
4
4
  export type { ListVariable } from './types/VariableTypes';
5
5
  export type { PageSize } from './types/PageTypes';
6
- export type { APIBrandKit, APIBrandKitCharacterStyle, APIBrandKitColor, APIBrandKitFont, APIBrandKitMedia, APIBrandKitParagraphStyle, BrandKit, } from './types/BrandKitTypes';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const current = "2.27.latest";
3
+ const current = "2.29.latest";
4
4
  const engineInfo = {
5
5
  current
6
6
  };
@@ -1,4 +1,4 @@
1
- const current = "2.27.latest";
1
+ const current = "2.29.latest";
2
2
  const engineInfo = {
3
3
  current
4
4
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const version = "1.44.1";
3
+ const version = "1.46.0";
4
4
  const packageInfo = {
5
5
  version
6
6
  };
@@ -1,4 +1,4 @@
1
- const version = "1.44.1";
1
+ const version = "1.46.0";
2
2
  const packageInfo = {
3
3
  version
4
4
  };
@@ -43,19 +43,34 @@ const GradientStyleController = require("./controllers/GradientStyleController.c
43
43
  const ComponentConnectorController = require("./controllers/ComponentConnectorController.cjs.js");
44
44
  const ComponentController = require("./controllers/ComponentController.cjs.js");
45
45
  const ComponentGridController = require("./controllers/ComponentGridController.cjs.js");
46
+ const MethodInstrumentation = require("./utils/MethodInstrumentation.cjs.js");
47
+ const SdkEvents = require("./utils/SdkEvents.cjs.js");
46
48
  const ENGINE_DOMAIN = "studio-cdn.chiligrafx.com";
47
49
  const FIXED_EDITOR_LINK = `https://${ENGINE_DOMAIN}/editor/${editorEngine.default.current}/web`;
48
50
  let connection;
51
+ const PENDING_INSTRUMENTATION = Symbol("pendingInstrumentation");
52
+ const markForInstrumentation = (controller) => {
53
+ Object.defineProperty(controller, PENDING_INSTRUMENTATION, {
54
+ value: true,
55
+ enumerable: false,
56
+ configurable: true
57
+ });
58
+ };
59
+ const isPendingInstrumentation = (value) => {
60
+ return typeof value === "object" && value !== null && value[PENDING_INSTRUMENTATION] === true;
61
+ };
49
62
  class SDK {
50
63
  /**
51
64
  * The SDK should be configured clientside and it exposes all controllers to work with in other applications
52
65
  * @param config The configuration object where the SDK and editor can get configured
53
66
  */
54
67
  constructor(config) {
68
+ var _a;
55
69
  this.localConfig = /* @__PURE__ */ new Map();
56
70
  this.dataItemMappingTools = new DataItemMappingTools.DataItemMappingTools();
71
+ this.methodListeners = new MethodInstrumentation.MethodListenerRegistry();
57
72
  this.loadEditor = () => {
58
- var _a;
73
+ var _a2;
59
74
  Connector.default(
60
75
  this.config.editorLink || FIXED_EDITOR_LINK,
61
76
  {
@@ -73,8 +88,8 @@ class SDK {
73
88
  onScrubberPositionChanged: this.subscriber.onAnimationPlaybackChanged,
74
89
  onFrameAnimationsChanged: this.subscriber.onAnimationChanged,
75
90
  onVariableListChanged: (state) => {
76
- var _a2;
77
- if ((_a2 = this.enabledNextSubscribers) == null ? void 0 : _a2.onVariableListChanged) {
91
+ var _a3;
92
+ if ((_a3 = this.enabledNextSubscribers) == null ? void 0 : _a3.onVariableListChanged) {
78
93
  this.next.subscriber.onVariableListChanged(state);
79
94
  } else {
80
95
  this.subscriber.onVariableListChanged(state);
@@ -92,8 +107,8 @@ class SDK {
92
107
  onLayoutsChanged: this.subscriber.onLayoutsChanged,
93
108
  onConnectorEvent: this.subscriber.onConnectorEvent,
94
109
  onConnectorsChanged: (state) => {
95
- var _a2;
96
- if ((_a2 = this.enabledNextSubscribers) == null ? void 0 : _a2.onConnectorsChanged) {
110
+ var _a3;
111
+ if ((_a3 = this.enabledNextSubscribers) == null ? void 0 : _a3.onConnectorsChanged) {
97
112
  this.next.subscriber.onConnectorsChanged(state);
98
113
  } else {
99
114
  this.subscriber.onConnectorsChanged(state);
@@ -104,8 +119,8 @@ class SDK {
104
119
  onPagesChanged: this.subscriber.onPagesChanged,
105
120
  onPageSnapshotInvalidated: this.subscriber.onPageSnapshotInvalidated,
106
121
  onPageSizeChanged: (state) => {
107
- var _a2;
108
- if ((_a2 = this.enabledNextSubscribers) == null ? void 0 : _a2.onPageSizeChanged) {
122
+ var _a3;
123
+ if ((_a3 = this.enabledNextSubscribers) == null ? void 0 : _a3.onPageSizeChanged) {
109
124
  this.next.subscriber.onPageSizeChanged(state);
110
125
  } else {
111
126
  this.subscriber.onPageSizeChanged(state);
@@ -121,54 +136,56 @@ class SDK {
121
136
  onDocumentIssueListChanged: this.subscriber.onDocumentIssueListChanged,
122
137
  onCustomUndoDataChanged: this.subscriber.onCustomUndoDataChanged,
123
138
  onEngineEditModeChanged: this.subscriber.onEngineEditModeChanged,
124
- onBrandKitMediaChanged: this.subscriber.onBrandKitMediaChanged
139
+ onBrandKitMediaChanged: this.subscriber.onBrandKitMediaChanged,
140
+ onCanvasFramesManipulated: this.subscriber.onCanvasFramesManipulated
125
141
  },
126
142
  this.setConnection,
127
143
  this.config.editorId,
128
144
  this.config.studioStyling,
129
145
  (error) => {
130
- var _a2, _b;
131
- (_b = (_a2 = this.config).onConnectionError) == null ? void 0 : _b.call(_a2, error);
146
+ var _a3, _b;
147
+ (_b = (_a3 = this.config).onConnectionError) == null ? void 0 : _b.call(_a3, error);
132
148
  }
133
149
  );
134
150
  this.editorAPI = connection == null ? void 0 : connection.promise.then((editorAPI) => {
135
151
  return editorAPI;
136
152
  });
137
- this.action = new ActionController.ActionController(this.editorAPI);
138
- this.layout = new LayoutController.LayoutController(this.editorAPI);
139
- this.frame = new FrameController.FrameController(this.editorAPI);
140
- this.barcode = new BarcodeController.BarcodeController(this.editorAPI);
141
- this.component = new ComponentController.ComponentController(this.editorAPI);
142
- this.animation = new AnimationController.AnimationController(this.editorAPI);
143
- this.document = new DocumentController.DocumentController(this.editorAPI);
144
- this.configuration = new LocalConfigurationDecorator.LocalConfigurationDecorator(this.editorAPI, this.localConfig);
145
- this.utils = new UtilsController.UtilsController(this.editorAPI, this.localConfig);
146
- this.tool = new ToolController.ToolController(this.editorAPI);
147
- this.page = new PageController.PageController(this.editorAPI);
148
- this.debug = new DebugController.DebugController(this.editorAPI);
149
- this.undoManager = new UndoManagerController.UndoManagerController(this.editorAPI, this);
150
- this.textSelection = new TextStyleController.TextStyleController(this.editorAPI);
151
- this.colorStyle = new ColorStyleController.ColorStyleController(this.editorAPI);
152
- this.gradientStyle = new GradientStyleController.GradientStyleController(this.editorAPI);
153
- this.paragraphStyle = new ParagraphStyleController.ParagraphStyleController(this.editorAPI);
154
- this.characterStyle = new CharacterStyleController.CharacterStyleController(this.editorAPI);
155
- this.mediaConnector = new MediaConnectorController.MediaConnectorController(this.editorAPI);
156
- this.fontConnector = new FontConnectorController.FontConnectorController(this.editorAPI);
157
- this.componentConnector = new ComponentConnectorController.ComponentConnectorController(this.editorAPI);
158
- this.dataConnector = new DataConnectorController.DataConnectorController(this.editorAPI, this.dataItemMappingTools);
159
- this.dataSource = new DataSourceController.DataSourceController(this.editorAPI, this.dataItemMappingTools);
160
- this.connector = new ConnectorController.ConnectorController(this.editorAPI, this.localConfig);
161
- this.variable = new VariableController.VariableController(this.editorAPI, this.dataItemMappingTools);
162
- this.font = new FontController.FontController(this.editorAPI);
163
- this.experiment = new ExperimentController.ExperimentController(this.editorAPI);
164
- this.canvas = new CanvasController.CanvasController(this.editorAPI);
165
- this.shape = new ShapeController.ShapeController(this.editorAPI);
166
- this.colorConversion = new ColorConversionController.ColorConversionController(this.editorAPI);
167
- this.info = new InfoController.InfoController();
168
- this.clipboard = new ClipboardController.ClipboardController(this.editorAPI);
169
- this.brandKit = new BrandKitController.BrandKitController(this.editorAPI, this);
170
- this.componentGrid = new ComponentGridController.ComponentGridController(this.editorAPI);
153
+ this.action = this.toInstrumented(new ActionController.ActionController(this.editorAPI));
154
+ this.layout = this.toInstrumented(new LayoutController.LayoutController(this.editorAPI));
155
+ this.frame = this.toInstrumented(new FrameController.FrameController(this.editorAPI));
156
+ this.barcode = this.toInstrumented(new BarcodeController.BarcodeController(this.editorAPI));
157
+ this.component = this.toInstrumented(new ComponentController.ComponentController(this.editorAPI));
158
+ this.animation = this.toInstrumented(new AnimationController.AnimationController(this.editorAPI));
159
+ this.document = this.toInstrumented(new DocumentController.DocumentController(this.editorAPI));
160
+ this.configuration = this.toInstrumented(new LocalConfigurationDecorator.LocalConfigurationDecorator(this.editorAPI, this.localConfig));
161
+ this.utils = this.toInstrumented(new UtilsController.UtilsController(this.editorAPI, this.localConfig));
162
+ this.tool = this.toInstrumented(new ToolController.ToolController(this.editorAPI));
163
+ this.page = this.toInstrumented(new PageController.PageController(this.editorAPI));
164
+ this.debug = this.toInstrumented(new DebugController.DebugController(this.editorAPI));
165
+ this.undoManager = this.toInstrumented(new UndoManagerController.UndoManagerController(this.editorAPI, this));
166
+ this.textSelection = this.toInstrumented(new TextStyleController.TextStyleController(this.editorAPI));
167
+ this.colorStyle = this.toInstrumented(new ColorStyleController.ColorStyleController(this.editorAPI));
168
+ this.gradientStyle = this.toInstrumented(new GradientStyleController.GradientStyleController(this.editorAPI));
169
+ this.paragraphStyle = this.toInstrumented(new ParagraphStyleController.ParagraphStyleController(this.editorAPI));
170
+ this.characterStyle = this.toInstrumented(new CharacterStyleController.CharacterStyleController(this.editorAPI));
171
+ this.mediaConnector = this.toInstrumented(new MediaConnectorController.MediaConnectorController(this.editorAPI));
172
+ this.fontConnector = this.toInstrumented(new FontConnectorController.FontConnectorController(this.editorAPI));
173
+ this.componentConnector = this.toInstrumented(new ComponentConnectorController.ComponentConnectorController(this.editorAPI));
174
+ this.dataConnector = this.toInstrumented(new DataConnectorController.DataConnectorController(this.editorAPI, this.dataItemMappingTools));
175
+ this.dataSource = this.toInstrumented(new DataSourceController.DataSourceController(this.editorAPI, this.dataItemMappingTools));
176
+ this.connector = this.toInstrumented(new ConnectorController.ConnectorController(this.editorAPI, this.localConfig));
177
+ this.variable = this.toInstrumented(new VariableController.VariableController(this.editorAPI, this.dataItemMappingTools));
178
+ this.font = this.toInstrumented(new FontController.FontController(this.editorAPI));
179
+ this.experiment = this.toInstrumented(new ExperimentController.ExperimentController(this.editorAPI));
180
+ this.canvas = this.toInstrumented(new CanvasController.CanvasController(this.editorAPI));
181
+ this.shape = this.toInstrumented(new ShapeController.ShapeController(this.editorAPI));
182
+ this.colorConversion = this.toInstrumented(new ColorConversionController.ColorConversionController(this.editorAPI));
183
+ this.info = this.toInstrumented(new InfoController.InfoController());
184
+ this.clipboard = this.toInstrumented(new ClipboardController.ClipboardController(this.editorAPI));
185
+ this.brandKit = this.toInstrumented(new BrandKitController.BrandKitController(this.editorAPI, this));
186
+ this.componentGrid = this.toInstrumented(new ComponentGridController.ComponentGridController(this.editorAPI));
171
187
  this.next = new NextInitiator.NextInitiator(this.config, this.connection, this.editorAPI);
188
+ this.applyMethodInstrumentation();
172
189
  this.configuration.setValue(ConfigurationTypes.WellKnownConfigurationKeys.GraFxStudioSdkVersion, _package.default.version);
173
190
  this.configuration.setValue(
174
191
  ConfigurationTypes.WellKnownConfigurationKeys.GraFxStudioDocumentType,
@@ -177,54 +194,76 @@ class SDK {
177
194
  this.configuration.updateStudioOptions(this.config.studioOptions || ConfigurationTypes.defaultStudioOptions);
178
195
  this.configuration.setValue(
179
196
  ConfigurationTypes.WellKnownConfigurationKeys.QueryCallCacheEnabled,
180
- ((_a = this.config.enableQueryCallCache) == null ? void 0 : _a.toString()) || "false"
197
+ ((_a2 = this.config.enableQueryCallCache) == null ? void 0 : _a2.toString()) || "false"
181
198
  );
182
199
  };
183
200
  this.setConnection = (newConnection) => {
184
201
  connection = newConnection;
185
202
  };
203
+ this.toInstrumented = (controller) => {
204
+ markForInstrumentation(controller);
205
+ return controller;
206
+ };
207
+ this.applyMethodInstrumentation = () => {
208
+ var _a2;
209
+ const sdkProperties = this;
210
+ for (const propertyName of Object.keys(sdkProperties)) {
211
+ const value = sdkProperties[propertyName];
212
+ if (isPendingInstrumentation(value)) {
213
+ sdkProperties[propertyName] = MethodInstrumentation.wrapWithInvocationObserver(
214
+ value,
215
+ propertyName,
216
+ this.methodListeners,
217
+ this.sdkEvents,
218
+ (_a2 = this.config.logging) == null ? void 0 : _a2.logger
219
+ );
220
+ }
221
+ }
222
+ };
186
223
  this.config = ConfigHelper.ConfigHelper.createRuntimeConfig(config);
224
+ this.sdkEvents = new SdkEvents.SdkEvents((_a = this.config.logging) == null ? void 0 : _a.logger);
187
225
  this.connection = connection;
188
226
  this.editorAPI = connection == null ? void 0 : connection.promise.then((child) => {
189
227
  return child;
190
228
  });
191
- this.action = new ActionController.ActionController(this.editorAPI);
192
- this.layout = new LayoutController.LayoutController(this.editorAPI);
193
- this.frame = new FrameController.FrameController(this.editorAPI);
194
- this.shape = new ShapeController.ShapeController(this.editorAPI);
195
- this.barcode = new BarcodeController.BarcodeController(this.editorAPI);
196
- this.component = new ComponentController.ComponentController(this.editorAPI);
197
- this.undoManager = new UndoManagerController.UndoManagerController(this.editorAPI, this);
198
- this.connector = new ConnectorController.ConnectorController(this.editorAPI, this.localConfig);
199
- this.mediaConnector = new MediaConnectorController.MediaConnectorController(this.editorAPI);
200
- this.fontConnector = new FontConnectorController.FontConnectorController(this.editorAPI);
201
- this.componentConnector = new ComponentConnectorController.ComponentConnectorController(this.editorAPI);
202
- this.dataConnector = new DataConnectorController.DataConnectorController(this.editorAPI, this.dataItemMappingTools);
203
- this.dataSource = new DataSourceController.DataSourceController(this.editorAPI, this.dataItemMappingTools);
204
- this.animation = new AnimationController.AnimationController(this.editorAPI);
205
- this.document = new DocumentController.DocumentController(this.editorAPI);
206
- this.configuration = new LocalConfigurationDecorator.LocalConfigurationDecorator(this.editorAPI, this.localConfig);
207
- this.variable = new VariableController.VariableController(this.editorAPI, this.dataItemMappingTools);
208
- this.utils = new UtilsController.UtilsController(this.editorAPI, this.localConfig);
229
+ this.action = this.toInstrumented(new ActionController.ActionController(this.editorAPI));
230
+ this.layout = this.toInstrumented(new LayoutController.LayoutController(this.editorAPI));
231
+ this.frame = this.toInstrumented(new FrameController.FrameController(this.editorAPI));
232
+ this.shape = this.toInstrumented(new ShapeController.ShapeController(this.editorAPI));
233
+ this.barcode = this.toInstrumented(new BarcodeController.BarcodeController(this.editorAPI));
234
+ this.component = this.toInstrumented(new ComponentController.ComponentController(this.editorAPI));
235
+ this.undoManager = this.toInstrumented(new UndoManagerController.UndoManagerController(this.editorAPI, this));
236
+ this.connector = this.toInstrumented(new ConnectorController.ConnectorController(this.editorAPI, this.localConfig));
237
+ this.mediaConnector = this.toInstrumented(new MediaConnectorController.MediaConnectorController(this.editorAPI));
238
+ this.fontConnector = this.toInstrumented(new FontConnectorController.FontConnectorController(this.editorAPI));
239
+ this.componentConnector = this.toInstrumented(new ComponentConnectorController.ComponentConnectorController(this.editorAPI));
240
+ this.dataConnector = this.toInstrumented(new DataConnectorController.DataConnectorController(this.editorAPI, this.dataItemMappingTools));
241
+ this.dataSource = this.toInstrumented(new DataSourceController.DataSourceController(this.editorAPI, this.dataItemMappingTools));
242
+ this.animation = this.toInstrumented(new AnimationController.AnimationController(this.editorAPI));
243
+ this.document = this.toInstrumented(new DocumentController.DocumentController(this.editorAPI));
244
+ this.configuration = this.toInstrumented(new LocalConfigurationDecorator.LocalConfigurationDecorator(this.editorAPI, this.localConfig));
245
+ this.variable = this.toInstrumented(new VariableController.VariableController(this.editorAPI, this.dataItemMappingTools));
246
+ this.utils = this.toInstrumented(new UtilsController.UtilsController(this.editorAPI, this.localConfig));
209
247
  this.subscriber = new SubscriberController.SubscriberController(this.config, this.localConfig);
210
- this.tool = new ToolController.ToolController(this.editorAPI);
211
- this.page = new PageController.PageController(this.editorAPI);
212
- this.debug = new DebugController.DebugController(this.editorAPI);
213
- this.textSelection = new TextStyleController.TextStyleController(this.editorAPI);
214
- this.colorStyle = new ColorStyleController.ColorStyleController(this.editorAPI);
215
- this.gradientStyle = new GradientStyleController.GradientStyleController(this.editorAPI);
216
- this.paragraphStyle = new ParagraphStyleController.ParagraphStyleController(this.editorAPI);
217
- this.characterStyle = new CharacterStyleController.CharacterStyleController(this.editorAPI);
218
- this.font = new FontController.FontController(this.editorAPI);
219
- this.experiment = new ExperimentController.ExperimentController(this.editorAPI);
220
- this.canvas = new CanvasController.CanvasController(this.editorAPI);
221
- this.colorConversion = new ColorConversionController.ColorConversionController(this.editorAPI);
222
- this.info = new InfoController.InfoController();
223
- this.clipboard = new ClipboardController.ClipboardController(this.editorAPI);
248
+ this.tool = this.toInstrumented(new ToolController.ToolController(this.editorAPI));
249
+ this.page = this.toInstrumented(new PageController.PageController(this.editorAPI));
250
+ this.debug = this.toInstrumented(new DebugController.DebugController(this.editorAPI));
251
+ this.textSelection = this.toInstrumented(new TextStyleController.TextStyleController(this.editorAPI));
252
+ this.colorStyle = this.toInstrumented(new ColorStyleController.ColorStyleController(this.editorAPI));
253
+ this.gradientStyle = this.toInstrumented(new GradientStyleController.GradientStyleController(this.editorAPI));
254
+ this.paragraphStyle = this.toInstrumented(new ParagraphStyleController.ParagraphStyleController(this.editorAPI));
255
+ this.characterStyle = this.toInstrumented(new CharacterStyleController.CharacterStyleController(this.editorAPI));
256
+ this.font = this.toInstrumented(new FontController.FontController(this.editorAPI));
257
+ this.experiment = this.toInstrumented(new ExperimentController.ExperimentController(this.editorAPI));
258
+ this.canvas = this.toInstrumented(new CanvasController.CanvasController(this.editorAPI));
259
+ this.colorConversion = this.toInstrumented(new ColorConversionController.ColorConversionController(this.editorAPI));
260
+ this.info = this.toInstrumented(new InfoController.InfoController());
261
+ this.clipboard = this.toInstrumented(new ClipboardController.ClipboardController(this.editorAPI));
224
262
  this.next = new NextInitiator.NextInitiator(this.config, this.connection, this.editorAPI);
225
263
  this.enabledNextSubscribers = this.config.enableNextSubscribers;
226
- this.brandKit = new BrandKitController.BrandKitController(this.editorAPI, this);
227
- this.componentGrid = new ComponentGridController.ComponentGridController(this.editorAPI);
264
+ this.brandKit = this.toInstrumented(new BrandKitController.BrandKitController(this.editorAPI, this));
265
+ this.componentGrid = this.toInstrumented(new ComponentGridController.ComponentGridController(this.editorAPI));
266
+ this.applyMethodInstrumentation();
228
267
  }
229
268
  }
230
269
  exports.SDK = SDK;