seatable-html-page-sdk 0.0.13-beta.2 → 0.0.13-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +29 -16
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/comment-mode.js +26 -14
- package/es/comment-mode.js.map +1 -1
- package/es/iframe-adapter.js +3 -2
- package/es/iframe-adapter.js.map +1 -1
- package/lib/comment-mode.js +26 -14
- package/lib/comment-mode.js.map +1 -1
- package/lib/iframe-adapter.js +3 -2
- package/lib/iframe-adapter.js.map +1 -1
- package/package.json +1 -1
package/es/comment-mode.js
CHANGED
|
@@ -72,6 +72,7 @@ class CommentModeAdapter {
|
|
|
72
72
|
this.mouseEvents.forEach(eventType => {
|
|
73
73
|
window.addEventListener(eventType, this._handleEvent, true);
|
|
74
74
|
});
|
|
75
|
+
this.addCommentModeStyle();
|
|
75
76
|
}
|
|
76
77
|
disable() {
|
|
77
78
|
if (!this.isActive) return;
|
|
@@ -79,6 +80,20 @@ class CommentModeAdapter {
|
|
|
79
80
|
this.mouseEvents.forEach(eventType => {
|
|
80
81
|
window.removeEventListener(eventType, this._handleEvent, true);
|
|
81
82
|
});
|
|
83
|
+
this.removeCommentStyle();
|
|
84
|
+
}
|
|
85
|
+
addCommentModeStyle() {
|
|
86
|
+
let style = document.getElementById('ai-comment-cursor-style');
|
|
87
|
+
if (!style) {
|
|
88
|
+
style = document.createElement('style');
|
|
89
|
+
style.id = 'ai-comment-cursor-style';
|
|
90
|
+
style.innerHTML = '* { cursor: crosshair !important; }';
|
|
91
|
+
document.head.appendChild(style);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
removeCommentStyle() {
|
|
95
|
+
const style = document.getElementById('ai-comment-cursor-style');
|
|
96
|
+
if (style) style.remove();
|
|
82
97
|
}
|
|
83
98
|
_handleEvent(event) {
|
|
84
99
|
if (!this.isActive) return;
|
|
@@ -86,22 +101,19 @@ class CommentModeAdapter {
|
|
|
86
101
|
event.stopPropagation();
|
|
87
102
|
event.stopImmediatePropagation();
|
|
88
103
|
const target = event.target;
|
|
104
|
+
const isBodyOrHtml = target === document.body || target === document.documentElement;
|
|
89
105
|
if (event.type === 'mouseover') {
|
|
90
|
-
const data = this.buildElementData(target);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}, '*');
|
|
96
|
-
}
|
|
106
|
+
const data = isBodyOrHtml ? null : this.buildElementData(target);
|
|
107
|
+
window.parent.postMessage({
|
|
108
|
+
type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER,
|
|
109
|
+
data
|
|
110
|
+
}, '*');
|
|
97
111
|
} else if (event.type === 'click') {
|
|
98
|
-
const data = this.buildElementData(target);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}, '*');
|
|
104
|
-
}
|
|
112
|
+
const data = isBodyOrHtml ? null : this.buildElementData(target);
|
|
113
|
+
window.parent.postMessage({
|
|
114
|
+
type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED,
|
|
115
|
+
data
|
|
116
|
+
}, '*');
|
|
105
117
|
}
|
|
106
118
|
}
|
|
107
119
|
buildElementData(target) {
|
package/es/comment-mode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-mode.js","sources":["../src/comment-mode.js"],"sourcesContent":["import { POST_MESSAGE_TYPE } from './constants';\n\nconst countSameTagSiblingsBefore = (element) => {\n let count = 0;\n let sibling = element.previousElementSibling;\n while (sibling) {\n if (sibling.tagName === element.tagName) count += 1;\n sibling = sibling.previousElementSibling;\n }\n return count;\n};\n\nconst generateSelector = (element) => {\n if (!element || element === document.body) return null;\n\n const parts = [];\n let current = element;\n\n while (current && current !== document.body) {\n const tag = current.tagName.toLowerCase();\n const index = countSameTagSiblingsBefore(current) + 1;\n parts.unshift(`${tag}:nth-of-type(${index})`);\n current = current.parentElement;\n }\n\n return 'body > ' + parts.join(' > ');\n};\n\nconst getHtmlHint = (element, maxLen = 180) => {\n const html = element.outerHTML || '';\n return html.length > maxLen ? html.slice(0, maxLen) : html;\n};\n\nconst getCurrentText = (element, maxLen = 160) => {\n const text = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n return text.length > maxLen ? text.slice(0, maxLen) : text;\n};\n\nconst computeStyle = (element) => {\n const style = window.getComputedStyle(element);\n return {\n backgroundColor: style.backgroundColor,\n color: style.color,\n fontSize: style.fontSize,\n fontWeight: style.fontWeight,\n fontFamily: style.fontFamily,\n lineHeight: style.lineHeight,\n borderRadius: style.borderRadius,\n paddingBottom: style.paddingBottom,\n paddingLeft: style.paddingLeft,\n paddingRight: style.paddingRight,\n paddingTop: style.paddingTop,\n marginBottom: style.marginBottom,\n marginLeft: style.marginLeft,\n marginRight: style.marginRight,\n marginTop: style.marginTop,\n textAlign: style.textAlign,\n display: style.display,\n width: style.width,\n height: style.height,\n };\n};\n\nconst generateLabel = (element) => {\n const tag = element.tagName.toLowerCase();\n const classes = element.classList.length > 0\n ? '.' + Array.from(element.classList).join('.')\n : '';\n return `${tag}${classes}`;\n};\n\nexport class CommentModeAdapter {\n constructor() {\n this.isActive = false;\n this._handleEvent = this._handleEvent.bind(this);\n this.mouseEvents = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'contextmenu'];\n }\n\n enable() {\n if (this.isActive) return;\n this.isActive = true;\n this.mouseEvents.forEach(eventType => {\n window.addEventListener(eventType, this._handleEvent, true);\n });\n }\n\n disable() {\n if (!this.isActive) return;\n this.isActive = false;\n this.mouseEvents.forEach(eventType => {\n window.removeEventListener(eventType, this._handleEvent, true);\n });\n }\n\n _handleEvent(event) {\n if (!this.isActive) return;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n const target = event.target;\n if (event.type === 'mouseover') {\n const data = this.buildElementData(target);\n if (data) {\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER, data }, '*');\n }\n } else if (event.type === 'click') {\n const data = this.buildElementData(target);\n if (data) {\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED, data }, '*');\n }\n }\n }\n\n buildElementData(target) {\n const rect = target.getBoundingClientRect();\n const selector = generateSelector(target) || null;\n return {\n selector,\n currentText: getCurrentText(target),\n htmlHint: getHtmlHint(target),\n computedStyle: computeStyle(target),\n label: generateLabel(target),\n elementPosition: {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n };\n }\n\n destroy() {\n this.disable();\n }\n}\n"],"names":["countSameTagSiblingsBefore","element","count","sibling","previousElementSibling","tagName","generateSelector","document","body","parts","current","tag","toLowerCase","index","unshift","parentElement","join","getHtmlHint","maxLen","arguments","length","undefined","html","outerHTML","slice","getCurrentText","text","textContent","replace","trim","computeStyle","style","window","getComputedStyle","backgroundColor","color","fontSize","fontWeight","fontFamily","lineHeight","borderRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","marginBottom","marginLeft","marginRight","marginTop","textAlign","display","width","height","generateLabel","classes","classList","Array","from","CommentModeAdapter","constructor","isActive","_handleEvent","bind","mouseEvents","enable","forEach","eventType","addEventListener","disable","removeEventListener","event","preventDefault","stopPropagation","stopImmediatePropagation","target","type","data","buildElementData","parent","postMessage","POST_MESSAGE_TYPE","HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER","HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED","rect","getBoundingClientRect","selector","currentText","htmlHint","computedStyle","label","elementPosition","left","top","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comment-mode.js","sources":["../src/comment-mode.js"],"sourcesContent":["import { POST_MESSAGE_TYPE } from './constants';\n\nconst countSameTagSiblingsBefore = (element) => {\n let count = 0;\n let sibling = element.previousElementSibling;\n while (sibling) {\n if (sibling.tagName === element.tagName) count += 1;\n sibling = sibling.previousElementSibling;\n }\n return count;\n};\n\nconst generateSelector = (element) => {\n if (!element || element === document.body) return null;\n\n const parts = [];\n let current = element;\n\n while (current && current !== document.body) {\n const tag = current.tagName.toLowerCase();\n const index = countSameTagSiblingsBefore(current) + 1;\n parts.unshift(`${tag}:nth-of-type(${index})`);\n current = current.parentElement;\n }\n\n return 'body > ' + parts.join(' > ');\n};\n\nconst getHtmlHint = (element, maxLen = 180) => {\n const html = element.outerHTML || '';\n return html.length > maxLen ? html.slice(0, maxLen) : html;\n};\n\nconst getCurrentText = (element, maxLen = 160) => {\n const text = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n return text.length > maxLen ? text.slice(0, maxLen) : text;\n};\n\nconst computeStyle = (element) => {\n const style = window.getComputedStyle(element);\n return {\n backgroundColor: style.backgroundColor,\n color: style.color,\n fontSize: style.fontSize,\n fontWeight: style.fontWeight,\n fontFamily: style.fontFamily,\n lineHeight: style.lineHeight,\n borderRadius: style.borderRadius,\n paddingBottom: style.paddingBottom,\n paddingLeft: style.paddingLeft,\n paddingRight: style.paddingRight,\n paddingTop: style.paddingTop,\n marginBottom: style.marginBottom,\n marginLeft: style.marginLeft,\n marginRight: style.marginRight,\n marginTop: style.marginTop,\n textAlign: style.textAlign,\n display: style.display,\n width: style.width,\n height: style.height,\n };\n};\n\nconst generateLabel = (element) => {\n const tag = element.tagName.toLowerCase();\n const classes = element.classList.length > 0\n ? '.' + Array.from(element.classList).join('.')\n : '';\n return `${tag}${classes}`;\n};\n\nexport class CommentModeAdapter {\n constructor() {\n this.isActive = false;\n this._handleEvent = this._handleEvent.bind(this);\n this.mouseEvents = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'contextmenu'];\n }\n\n enable() {\n if (this.isActive) return;\n this.isActive = true;\n this.mouseEvents.forEach(eventType => {\n window.addEventListener(eventType, this._handleEvent, true);\n });\n this.addCommentModeStyle();\n }\n\n disable() {\n if (!this.isActive) return;\n this.isActive = false;\n this.mouseEvents.forEach(eventType => {\n window.removeEventListener(eventType, this._handleEvent, true);\n });\n this.removeCommentStyle();\n }\n\n addCommentModeStyle() {\n let style = document.getElementById('ai-comment-cursor-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'ai-comment-cursor-style';\n style.innerHTML = '* { cursor: crosshair !important; }';\n document.head.appendChild(style);\n }\n }\n\n removeCommentStyle() {\n const style = document.getElementById('ai-comment-cursor-style');\n if (style) style.remove();\n }\n\n _handleEvent(event) {\n if (!this.isActive) return;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n const target = event.target;\n const isBodyOrHtml = target === document.body || target === document.documentElement;\n\n if (event.type === 'mouseover') {\n const data = isBodyOrHtml ? null : this.buildElementData(target);\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER, data }, '*');\n } else if (event.type === 'click') {\n const data = isBodyOrHtml ? null : this.buildElementData(target);\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED, data }, '*');\n }\n }\n\n buildElementData(target) {\n const rect = target.getBoundingClientRect();\n const selector = generateSelector(target) || null;\n return {\n selector,\n currentText: getCurrentText(target),\n htmlHint: getHtmlHint(target),\n computedStyle: computeStyle(target),\n label: generateLabel(target),\n elementPosition: {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n };\n }\n\n destroy() {\n this.disable();\n }\n}\n"],"names":["countSameTagSiblingsBefore","element","count","sibling","previousElementSibling","tagName","generateSelector","document","body","parts","current","tag","toLowerCase","index","unshift","parentElement","join","getHtmlHint","maxLen","arguments","length","undefined","html","outerHTML","slice","getCurrentText","text","textContent","replace","trim","computeStyle","style","window","getComputedStyle","backgroundColor","color","fontSize","fontWeight","fontFamily","lineHeight","borderRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","marginBottom","marginLeft","marginRight","marginTop","textAlign","display","width","height","generateLabel","classes","classList","Array","from","CommentModeAdapter","constructor","isActive","_handleEvent","bind","mouseEvents","enable","forEach","eventType","addEventListener","addCommentModeStyle","disable","removeEventListener","removeCommentStyle","getElementById","createElement","id","innerHTML","head","appendChild","remove","event","preventDefault","stopPropagation","stopImmediatePropagation","target","isBodyOrHtml","documentElement","type","data","buildElementData","parent","postMessage","POST_MESSAGE_TYPE","HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER","HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED","rect","getBoundingClientRect","selector","currentText","htmlHint","computedStyle","label","elementPosition","left","top","destroy"],"mappings":"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"}
|
package/es/iframe-adapter.js
CHANGED
|
@@ -201,6 +201,9 @@ class IframeAdapter {
|
|
|
201
201
|
eventType,
|
|
202
202
|
payload
|
|
203
203
|
} = event.data;
|
|
204
|
+
if (type && type.includes('COMMENT')) {
|
|
205
|
+
console.log('--- SDK handleMessage ---', type);
|
|
206
|
+
}
|
|
204
207
|
if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {
|
|
205
208
|
const pending = this.pendingRequests[requestId];
|
|
206
209
|
if (pending) {
|
|
@@ -216,12 +219,10 @@ class IframeAdapter {
|
|
|
216
219
|
this.emitEvent(eventType, payload);
|
|
217
220
|
} else if (type === POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {
|
|
218
221
|
this.isCommentMode = true;
|
|
219
|
-
document.body.style.cursor = 'crosshair';
|
|
220
222
|
this.unbindInteractiveEvents();
|
|
221
223
|
if (this.commentModeAdapter) this.commentModeAdapter.enable();
|
|
222
224
|
} else if (type === POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {
|
|
223
225
|
this.isCommentMode = false;
|
|
224
|
-
document.body.style.cursor = '';
|
|
225
226
|
if (this.commentModeAdapter) this.commentModeAdapter.disable();
|
|
226
227
|
this.bindInteractiveEvents();
|
|
227
228
|
} else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {
|
package/es/iframe-adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframe-adapter.js","sources":["../src/iframe-adapter.js"],"sourcesContent":["import { CommentModeAdapter } from './comment-mode';\nimport { POST_MESSAGE_TYPE } from './constants';\n\nexport const POST_MESSAGE_REQUEST_TYPE = {\n GET_SERVER: 'get_server',\n GET_ACCESS_TOKEN: 'get_access_token',\n GET_APP_UUID: 'get_app_uuid',\n GET_PAGE_ID: 'get_page_id',\n};\n\nconst WINDOW_EVENT_SOURCE_TYPE = {\n APP: 'app',\n IFRAME: 'iframe',\n};\nconst SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];\nconst SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];\nconst SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];\nconst HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];\nconst INTERACTIVE_TAGS = ['SELECT', 'INPUT', 'TEXTAREA', 'BUTTON'];\n\nconst hasOwnProperty = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nconst generatorBase64Code = (keyLength = 4) => {\n let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';\n let key = '';\n for (let i = 0; i < keyLength; i++) {\n key += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return key;\n};\n\nconst createWindowEventData = ({ eventType, event }) => {\n if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n button: event.button,\n buttons: event.buttons,\n };\n }\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n key: event.key,\n code: event.code,\n keyCode: event.keyCode,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n repeat: event.repeat,\n };\n }\n if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n };\n }\n return null;\n};\n\n/**\n * IframeAdapter – enables secure postMessage communication in production environments\n * For HTML page running inside an iframe\n */\nexport class IframeAdapter {\n constructor(options) {\n this.options = options || {};\n this.selfWindow = window.parent === window.self;\n this.targetOrigin = this.options.targetOrigin || '*';\n this.pendingRequests = {};\n this.eventHandlers = {};\n this.timeout = this.options.timeout || 10000;\n this.isCommentMode = false;\n this.commentModeAdapter = new CommentModeAdapter();\n this.setupMessageListener();\n }\n\n generatorRequestId() {\n let id = generatorBase64Code();\n while (hasOwnProperty(this.pendingRequests, id)) {\n id = generatorBase64Code();\n }\n return id;\n }\n\n setupMessageListener() {\n if (this.selfWindow) return;\n window.addEventListener('message', this.handleMessage.bind(this));\n this.setEventsListener();\n }\n\n postWindowEvent(eventData) {\n if (!eventData) return;\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.WINDOW_EVENT,\n params: {\n event_data: {\n ...eventData,\n source: WINDOW_EVENT_SOURCE_TYPE.IFRAME,\n }\n }\n }, this.targetOrigin);\n }\n\n setEventsListener() {\n this._windowEventHandler = this._windowEventHandler.bind(this);\n this.interactiveEventTypes = [\n ...SUPPORT_WINDOW_MOUSE_EVENT_TYPES,\n ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES,\n ...SUPPORT_WINDOW_DRAG_EVENT_TYPES,\n ];\n this.rafId = null;\n this.pendingEvent = null;\n\n this.bindInteractiveEvents();\n }\n\n bindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.addEventListener(eventType, this._windowEventHandler, true);\n });\n }\n\n unbindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.removeEventListener(eventType, this._windowEventHandler, true);\n });\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingEvent = null;\n }\n\n _windowEventHandler(event) {\n if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;\n const target = event.target;\n if (target && INTERACTIVE_TAGS.includes(target.tagName)) return;\n\n const eventType = event.type;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n const active = document.activeElement;\n if (active && INTERACTIVE_TAGS.includes(active.tagName)) return;\n }\n if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {\n this.pendingEvent = createWindowEventData({ eventType, event });\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingEvent) {\n this.postWindowEvent(this.pendingEvent);\n this.pendingEvent = null;\n this.rafId = null;\n }\n });\n }\n return;\n }\n this.postWindowEvent(createWindowEventData({ eventType, event }));\n }\n\n async request(method, params) {\n if (this.selfWindow) {\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n const requestId = this.generatorRequestId();\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject };\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,\n requestId,\n method,\n params\n }, this.targetOrigin);\n\n // request timeout\n // reject and clear the pending request\n const timeoutId = setTimeout(() => {\n if (hasOwnProperty(this.pendingRequests, requestId)) {\n delete this.pendingRequests[requestId];\n reject(new Error(`Request timeout: ${method}`));\n }\n }, this.timeout);\n\n // save timeoutId for the pending request\n const pending = this.pendingRequests[requestId];\n if (pending) {\n pending.timeoutId = timeoutId;\n }\n });\n }\n\n handleMessage(event) {\n const { type, requestId, data, error, eventType, payload } = event.data;\n if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {\n const pending = this.pendingRequests[requestId];\n if (pending) {\n clearTimeout(pending.timeoutId);\n delete this.pendingRequests[requestId];\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(data ? JSON.parse(data) : null);\n }\n }\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {\n this.emitEvent(eventType, payload);\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {\n this.isCommentMode = true;\n document.body.style.cursor = 'crosshair';\n this.unbindInteractiveEvents();\n if (this.commentModeAdapter) this.commentModeAdapter.enable();\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {\n this.isCommentMode = false;\n document.body.style.cursor = '';\n if (this.commentModeAdapter) this.commentModeAdapter.disable();\n this.bindInteractiveEvents();\n } else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {\n this.handleWindowEvent(data);\n }\n }\n\n handleWindowEvent(data) {\n const eventData = data.event_data;\n if (!eventData || this.isCommentMode) return;\n let syntheticEvent;\n let targetElement;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new KeyboardEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n key: eventData.key,\n code: eventData.code,\n keyCode: eventData.keyCode,\n ctrlKey: eventData.ctrlKey,\n shiftKey: eventData.shiftKey,\n altKey: eventData.altKey,\n metaKey: eventData.metaKey,\n repeat: eventData.repeat,\n view: window,\n });\n targetElement = document.activeElement || document.body;\n } else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new MouseEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n } else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new DragEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n }\n\n if (!targetElement || !syntheticEvent) return;\n\n // Dispatch once on the target element, it will bubble up naturally\n syntheticEvent.source = eventData.source;\n targetElement.dispatchEvent(syntheticEvent);\n }\n\n on(eventType, handler) {\n if (!hasOwnProperty(this.eventHandlers, eventType)) {\n this.eventHandlers[eventType] = [];\n }\n this.eventHandlers[eventType].push(handler);\n return () => this.off(eventType, handler);\n }\n\n off(eventType, handler) {\n const handlers = this.eventHandlers[eventType];\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n emitEvent(eventType, payload) {\n const handlers = this.eventHandlers[eventType] || [];\n handlers.forEach(handler => {\n try {\n handler(payload);\n } catch (error) {\n // eslint-disable-next-line\n console.error(`Error in event handler for ${eventType}:`, error);\n }\n });\n }\n\n destroy() {\n this.pendingRequests.forEach(pending => {\n clearTimeout(pending.timeoutId);\n pending.reject(new Error('Adapter destroyed'));\n });\n this.pendingRequests = {};\n this.eventHandlers = {};\n if (this.commentModeAdapter) {\n this.commentModeAdapter.destroy();\n }\n }\n}\n"],"names":["POST_MESSAGE_REQUEST_TYPE","GET_SERVER","GET_ACCESS_TOKEN","GET_APP_UUID","GET_PAGE_ID","WINDOW_EVENT_SOURCE_TYPE","APP","IFRAME","SUPPORT_WINDOW_MOUSE_EVENT_TYPES","SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES","SUPPORT_WINDOW_DRAG_EVENT_TYPES","HIGH_FREQUENCY_WINDOW_EVENT_TYPES","INTERACTIVE_TAGS","hasOwnProperty","obj","key","Object","prototype","call","generatorBase64Code","keyLength","arguments","length","undefined","possible","i","charAt","Math","floor","random","createWindowEventData","_ref","eventType","event","includes","type","x","y","button","buttons","code","keyCode","ctrlKey","shiftKey","altKey","metaKey","repeat","IframeAdapter","constructor","options","selfWindow","window","parent","self","targetOrigin","pendingRequests","eventHandlers","timeout","isCommentMode","commentModeAdapter","CommentModeAdapter","setupMessageListener","generatorRequestId","id","addEventListener","handleMessage","bind","setEventsListener","postWindowEvent","eventData","postMessage","POST_MESSAGE_TYPE","WINDOW_EVENT","params","event_data","source","_windowEventHandler","interactiveEventTypes","rafId","pendingEvent","bindInteractiveEvents","forEach","unbindInteractiveEvents","removeEventListener","cancelAnimationFrame","target","tagName","active","document","activeElement","requestAnimationFrame","request","method","Promise","resolve","requestId","reject","HTML_PAGE_REQUEST","timeoutId","setTimeout","Error","pending","data","error","payload","HTML_PAGE_RESPONSE","clearTimeout","JSON","parse","HTML_PAGE_EVENT","emitEvent","HTML_PAGE_ENABLE_COMMENT_MODE","body","style","cursor","enable","HTML_PAGE_DISABLE_COMMENT_MODE","disable","handleWindowEvent","syntheticEvent","targetElement","KeyboardEvent","bubbles","cancelable","view","MouseEvent","clientX","clientY","screenX","screenY","elementAtPoint","elementFromPoint","DragEvent","dispatchEvent","on","handler","push","off","handlers","index","indexOf","splice","console","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iframe-adapter.js","sources":["../src/iframe-adapter.js"],"sourcesContent":["import { CommentModeAdapter } from './comment-mode';\nimport { POST_MESSAGE_TYPE } from './constants';\n\nexport const POST_MESSAGE_REQUEST_TYPE = {\n GET_SERVER: 'get_server',\n GET_ACCESS_TOKEN: 'get_access_token',\n GET_APP_UUID: 'get_app_uuid',\n GET_PAGE_ID: 'get_page_id',\n};\n\nconst WINDOW_EVENT_SOURCE_TYPE = {\n APP: 'app',\n IFRAME: 'iframe',\n};\nconst SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];\nconst SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];\nconst SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];\nconst HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];\nconst INTERACTIVE_TAGS = ['SELECT', 'INPUT', 'TEXTAREA', 'BUTTON'];\n\nconst hasOwnProperty = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nconst generatorBase64Code = (keyLength = 4) => {\n let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';\n let key = '';\n for (let i = 0; i < keyLength; i++) {\n key += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return key;\n};\n\nconst createWindowEventData = ({ eventType, event }) => {\n if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n button: event.button,\n buttons: event.buttons,\n };\n }\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n key: event.key,\n code: event.code,\n keyCode: event.keyCode,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n repeat: event.repeat,\n };\n }\n if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n };\n }\n return null;\n};\n\n/**\n * IframeAdapter – enables secure postMessage communication in production environments\n * For HTML page running inside an iframe\n */\nexport class IframeAdapter {\n constructor(options) {\n this.options = options || {};\n this.selfWindow = window.parent === window.self;\n this.targetOrigin = this.options.targetOrigin || '*';\n this.pendingRequests = {};\n this.eventHandlers = {};\n this.timeout = this.options.timeout || 10000;\n this.isCommentMode = false;\n this.commentModeAdapter = new CommentModeAdapter();\n this.setupMessageListener();\n }\n\n generatorRequestId() {\n let id = generatorBase64Code();\n while (hasOwnProperty(this.pendingRequests, id)) {\n id = generatorBase64Code();\n }\n return id;\n }\n\n setupMessageListener() {\n if (this.selfWindow) return;\n window.addEventListener('message', this.handleMessage.bind(this));\n this.setEventsListener();\n }\n\n postWindowEvent(eventData) {\n if (!eventData) return;\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.WINDOW_EVENT,\n params: {\n event_data: {\n ...eventData,\n source: WINDOW_EVENT_SOURCE_TYPE.IFRAME,\n }\n }\n }, this.targetOrigin);\n }\n\n setEventsListener() {\n this._windowEventHandler = this._windowEventHandler.bind(this);\n this.interactiveEventTypes = [\n ...SUPPORT_WINDOW_MOUSE_EVENT_TYPES,\n ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES,\n ...SUPPORT_WINDOW_DRAG_EVENT_TYPES,\n ];\n this.rafId = null;\n this.pendingEvent = null;\n\n this.bindInteractiveEvents();\n }\n\n bindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.addEventListener(eventType, this._windowEventHandler, true);\n });\n }\n\n unbindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.removeEventListener(eventType, this._windowEventHandler, true);\n });\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingEvent = null;\n }\n\n _windowEventHandler(event) {\n if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;\n const target = event.target;\n if (target && INTERACTIVE_TAGS.includes(target.tagName)) return;\n\n const eventType = event.type;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n const active = document.activeElement;\n if (active && INTERACTIVE_TAGS.includes(active.tagName)) return;\n }\n if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {\n this.pendingEvent = createWindowEventData({ eventType, event });\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingEvent) {\n this.postWindowEvent(this.pendingEvent);\n this.pendingEvent = null;\n this.rafId = null;\n }\n });\n }\n return;\n }\n this.postWindowEvent(createWindowEventData({ eventType, event }));\n }\n\n async request(method, params) {\n if (this.selfWindow) {\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n const requestId = this.generatorRequestId();\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject };\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,\n requestId,\n method,\n params\n }, this.targetOrigin);\n\n // request timeout\n // reject and clear the pending request\n const timeoutId = setTimeout(() => {\n if (hasOwnProperty(this.pendingRequests, requestId)) {\n delete this.pendingRequests[requestId];\n reject(new Error(`Request timeout: ${method}`));\n }\n }, this.timeout);\n\n // save timeoutId for the pending request\n const pending = this.pendingRequests[requestId];\n if (pending) {\n pending.timeoutId = timeoutId;\n }\n });\n }\n\n handleMessage(event) {\n const { type, requestId, data, error, eventType, payload } = event.data;\n if (type && type.includes('COMMENT')) {\n console.log('--- SDK handleMessage ---', type);\n }\n if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {\n const pending = this.pendingRequests[requestId];\n if (pending) {\n clearTimeout(pending.timeoutId);\n delete this.pendingRequests[requestId];\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(data ? JSON.parse(data) : null);\n }\n }\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {\n this.emitEvent(eventType, payload);\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {\n this.isCommentMode = true;\n this.unbindInteractiveEvents();\n if (this.commentModeAdapter) this.commentModeAdapter.enable();\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {\n this.isCommentMode = false;\n if (this.commentModeAdapter) this.commentModeAdapter.disable();\n this.bindInteractiveEvents();\n } else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {\n this.handleWindowEvent(data);\n }\n }\n\n handleWindowEvent(data) {\n const eventData = data.event_data;\n if (!eventData || this.isCommentMode) return;\n let syntheticEvent;\n let targetElement;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new KeyboardEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n key: eventData.key,\n code: eventData.code,\n keyCode: eventData.keyCode,\n ctrlKey: eventData.ctrlKey,\n shiftKey: eventData.shiftKey,\n altKey: eventData.altKey,\n metaKey: eventData.metaKey,\n repeat: eventData.repeat,\n view: window,\n });\n targetElement = document.activeElement || document.body;\n } else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new MouseEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n } else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new DragEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n }\n\n if (!targetElement || !syntheticEvent) return;\n\n // Dispatch once on the target element, it will bubble up naturally\n syntheticEvent.source = eventData.source;\n targetElement.dispatchEvent(syntheticEvent);\n }\n\n on(eventType, handler) {\n if (!hasOwnProperty(this.eventHandlers, eventType)) {\n this.eventHandlers[eventType] = [];\n }\n this.eventHandlers[eventType].push(handler);\n return () => this.off(eventType, handler);\n }\n\n off(eventType, handler) {\n const handlers = this.eventHandlers[eventType];\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n emitEvent(eventType, payload) {\n const handlers = this.eventHandlers[eventType] || [];\n handlers.forEach(handler => {\n try {\n handler(payload);\n } catch (error) {\n // eslint-disable-next-line\n console.error(`Error in event handler for ${eventType}:`, error);\n }\n });\n }\n\n destroy() {\n this.pendingRequests.forEach(pending => {\n clearTimeout(pending.timeoutId);\n pending.reject(new Error('Adapter destroyed'));\n });\n this.pendingRequests = {};\n this.eventHandlers = {};\n if (this.commentModeAdapter) {\n this.commentModeAdapter.destroy();\n }\n }\n}\n"],"names":["POST_MESSAGE_REQUEST_TYPE","GET_SERVER","GET_ACCESS_TOKEN","GET_APP_UUID","GET_PAGE_ID","WINDOW_EVENT_SOURCE_TYPE","APP","IFRAME","SUPPORT_WINDOW_MOUSE_EVENT_TYPES","SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES","SUPPORT_WINDOW_DRAG_EVENT_TYPES","HIGH_FREQUENCY_WINDOW_EVENT_TYPES","INTERACTIVE_TAGS","hasOwnProperty","obj","key","Object","prototype","call","generatorBase64Code","keyLength","arguments","length","undefined","possible","i","charAt","Math","floor","random","createWindowEventData","_ref","eventType","event","includes","type","x","y","button","buttons","code","keyCode","ctrlKey","shiftKey","altKey","metaKey","repeat","IframeAdapter","constructor","options","selfWindow","window","parent","self","targetOrigin","pendingRequests","eventHandlers","timeout","isCommentMode","commentModeAdapter","CommentModeAdapter","setupMessageListener","generatorRequestId","id","addEventListener","handleMessage","bind","setEventsListener","postWindowEvent","eventData","postMessage","POST_MESSAGE_TYPE","WINDOW_EVENT","params","event_data","source","_windowEventHandler","interactiveEventTypes","rafId","pendingEvent","bindInteractiveEvents","forEach","unbindInteractiveEvents","removeEventListener","cancelAnimationFrame","target","tagName","active","document","activeElement","requestAnimationFrame","request","method","Promise","resolve","requestId","reject","HTML_PAGE_REQUEST","timeoutId","setTimeout","Error","pending","data","error","payload","console","log","HTML_PAGE_RESPONSE","clearTimeout","JSON","parse","HTML_PAGE_EVENT","emitEvent","HTML_PAGE_ENABLE_COMMENT_MODE","enable","HTML_PAGE_DISABLE_COMMENT_MODE","disable","handleWindowEvent","syntheticEvent","targetElement","KeyboardEvent","bubbles","cancelable","view","body","MouseEvent","clientX","clientY","screenX","screenY","elementAtPoint","elementFromPoint","DragEvent","dispatchEvent","on","handler","push","off","handlers","index","indexOf","splice","destroy"],"mappings":"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"}
|
package/lib/comment-mode.js
CHANGED
|
@@ -76,6 +76,7 @@ class CommentModeAdapter {
|
|
|
76
76
|
this.mouseEvents.forEach(eventType => {
|
|
77
77
|
window.addEventListener(eventType, this._handleEvent, true);
|
|
78
78
|
});
|
|
79
|
+
this.addCommentModeStyle();
|
|
79
80
|
}
|
|
80
81
|
disable() {
|
|
81
82
|
if (!this.isActive) return;
|
|
@@ -83,6 +84,20 @@ class CommentModeAdapter {
|
|
|
83
84
|
this.mouseEvents.forEach(eventType => {
|
|
84
85
|
window.removeEventListener(eventType, this._handleEvent, true);
|
|
85
86
|
});
|
|
87
|
+
this.removeCommentStyle();
|
|
88
|
+
}
|
|
89
|
+
addCommentModeStyle() {
|
|
90
|
+
let style = document.getElementById('ai-comment-cursor-style');
|
|
91
|
+
if (!style) {
|
|
92
|
+
style = document.createElement('style');
|
|
93
|
+
style.id = 'ai-comment-cursor-style';
|
|
94
|
+
style.innerHTML = '* { cursor: crosshair !important; }';
|
|
95
|
+
document.head.appendChild(style);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
removeCommentStyle() {
|
|
99
|
+
const style = document.getElementById('ai-comment-cursor-style');
|
|
100
|
+
if (style) style.remove();
|
|
86
101
|
}
|
|
87
102
|
_handleEvent(event) {
|
|
88
103
|
if (!this.isActive) return;
|
|
@@ -90,22 +105,19 @@ class CommentModeAdapter {
|
|
|
90
105
|
event.stopPropagation();
|
|
91
106
|
event.stopImmediatePropagation();
|
|
92
107
|
const target = event.target;
|
|
108
|
+
const isBodyOrHtml = target === document.body || target === document.documentElement;
|
|
93
109
|
if (event.type === 'mouseover') {
|
|
94
|
-
const data = this.buildElementData(target);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}, '*');
|
|
100
|
-
}
|
|
110
|
+
const data = isBodyOrHtml ? null : this.buildElementData(target);
|
|
111
|
+
window.parent.postMessage({
|
|
112
|
+
type: constants.POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER,
|
|
113
|
+
data
|
|
114
|
+
}, '*');
|
|
101
115
|
} else if (event.type === 'click') {
|
|
102
|
-
const data = this.buildElementData(target);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}, '*');
|
|
108
|
-
}
|
|
116
|
+
const data = isBodyOrHtml ? null : this.buildElementData(target);
|
|
117
|
+
window.parent.postMessage({
|
|
118
|
+
type: constants.POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED,
|
|
119
|
+
data
|
|
120
|
+
}, '*');
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
123
|
buildElementData(target) {
|
package/lib/comment-mode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-mode.js","sources":["../src/comment-mode.js"],"sourcesContent":["import { POST_MESSAGE_TYPE } from './constants';\n\nconst countSameTagSiblingsBefore = (element) => {\n let count = 0;\n let sibling = element.previousElementSibling;\n while (sibling) {\n if (sibling.tagName === element.tagName) count += 1;\n sibling = sibling.previousElementSibling;\n }\n return count;\n};\n\nconst generateSelector = (element) => {\n if (!element || element === document.body) return null;\n\n const parts = [];\n let current = element;\n\n while (current && current !== document.body) {\n const tag = current.tagName.toLowerCase();\n const index = countSameTagSiblingsBefore(current) + 1;\n parts.unshift(`${tag}:nth-of-type(${index})`);\n current = current.parentElement;\n }\n\n return 'body > ' + parts.join(' > ');\n};\n\nconst getHtmlHint = (element, maxLen = 180) => {\n const html = element.outerHTML || '';\n return html.length > maxLen ? html.slice(0, maxLen) : html;\n};\n\nconst getCurrentText = (element, maxLen = 160) => {\n const text = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n return text.length > maxLen ? text.slice(0, maxLen) : text;\n};\n\nconst computeStyle = (element) => {\n const style = window.getComputedStyle(element);\n return {\n backgroundColor: style.backgroundColor,\n color: style.color,\n fontSize: style.fontSize,\n fontWeight: style.fontWeight,\n fontFamily: style.fontFamily,\n lineHeight: style.lineHeight,\n borderRadius: style.borderRadius,\n paddingBottom: style.paddingBottom,\n paddingLeft: style.paddingLeft,\n paddingRight: style.paddingRight,\n paddingTop: style.paddingTop,\n marginBottom: style.marginBottom,\n marginLeft: style.marginLeft,\n marginRight: style.marginRight,\n marginTop: style.marginTop,\n textAlign: style.textAlign,\n display: style.display,\n width: style.width,\n height: style.height,\n };\n};\n\nconst generateLabel = (element) => {\n const tag = element.tagName.toLowerCase();\n const classes = element.classList.length > 0\n ? '.' + Array.from(element.classList).join('.')\n : '';\n return `${tag}${classes}`;\n};\n\nexport class CommentModeAdapter {\n constructor() {\n this.isActive = false;\n this._handleEvent = this._handleEvent.bind(this);\n this.mouseEvents = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'contextmenu'];\n }\n\n enable() {\n if (this.isActive) return;\n this.isActive = true;\n this.mouseEvents.forEach(eventType => {\n window.addEventListener(eventType, this._handleEvent, true);\n });\n }\n\n disable() {\n if (!this.isActive) return;\n this.isActive = false;\n this.mouseEvents.forEach(eventType => {\n window.removeEventListener(eventType, this._handleEvent, true);\n });\n }\n\n _handleEvent(event) {\n if (!this.isActive) return;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n const target = event.target;\n if (event.type === 'mouseover') {\n const data = this.buildElementData(target);\n if (data) {\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER, data }, '*');\n }\n } else if (event.type === 'click') {\n const data = this.buildElementData(target);\n if (data) {\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED, data }, '*');\n }\n }\n }\n\n buildElementData(target) {\n const rect = target.getBoundingClientRect();\n const selector = generateSelector(target) || null;\n return {\n selector,\n currentText: getCurrentText(target),\n htmlHint: getHtmlHint(target),\n computedStyle: computeStyle(target),\n label: generateLabel(target),\n elementPosition: {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n };\n }\n\n destroy() {\n this.disable();\n }\n}\n"],"names":["countSameTagSiblingsBefore","element","count","sibling","previousElementSibling","tagName","generateSelector","document","body","parts","current","tag","toLowerCase","index","unshift","parentElement","join","getHtmlHint","maxLen","arguments","length","undefined","html","outerHTML","slice","getCurrentText","text","textContent","replace","trim","computeStyle","style","window","getComputedStyle","backgroundColor","color","fontSize","fontWeight","fontFamily","lineHeight","borderRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","marginBottom","marginLeft","marginRight","marginTop","textAlign","display","width","height","generateLabel","classes","classList","Array","from","CommentModeAdapter","constructor","isActive","_handleEvent","bind","mouseEvents","enable","forEach","eventType","addEventListener","disable","removeEventListener","event","preventDefault","stopPropagation","stopImmediatePropagation","target","type","data","buildElementData","parent","postMessage","POST_MESSAGE_TYPE","HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER","HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED","rect","getBoundingClientRect","selector","currentText","htmlHint","computedStyle","label","elementPosition","left","top","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comment-mode.js","sources":["../src/comment-mode.js"],"sourcesContent":["import { POST_MESSAGE_TYPE } from './constants';\n\nconst countSameTagSiblingsBefore = (element) => {\n let count = 0;\n let sibling = element.previousElementSibling;\n while (sibling) {\n if (sibling.tagName === element.tagName) count += 1;\n sibling = sibling.previousElementSibling;\n }\n return count;\n};\n\nconst generateSelector = (element) => {\n if (!element || element === document.body) return null;\n\n const parts = [];\n let current = element;\n\n while (current && current !== document.body) {\n const tag = current.tagName.toLowerCase();\n const index = countSameTagSiblingsBefore(current) + 1;\n parts.unshift(`${tag}:nth-of-type(${index})`);\n current = current.parentElement;\n }\n\n return 'body > ' + parts.join(' > ');\n};\n\nconst getHtmlHint = (element, maxLen = 180) => {\n const html = element.outerHTML || '';\n return html.length > maxLen ? html.slice(0, maxLen) : html;\n};\n\nconst getCurrentText = (element, maxLen = 160) => {\n const text = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n return text.length > maxLen ? text.slice(0, maxLen) : text;\n};\n\nconst computeStyle = (element) => {\n const style = window.getComputedStyle(element);\n return {\n backgroundColor: style.backgroundColor,\n color: style.color,\n fontSize: style.fontSize,\n fontWeight: style.fontWeight,\n fontFamily: style.fontFamily,\n lineHeight: style.lineHeight,\n borderRadius: style.borderRadius,\n paddingBottom: style.paddingBottom,\n paddingLeft: style.paddingLeft,\n paddingRight: style.paddingRight,\n paddingTop: style.paddingTop,\n marginBottom: style.marginBottom,\n marginLeft: style.marginLeft,\n marginRight: style.marginRight,\n marginTop: style.marginTop,\n textAlign: style.textAlign,\n display: style.display,\n width: style.width,\n height: style.height,\n };\n};\n\nconst generateLabel = (element) => {\n const tag = element.tagName.toLowerCase();\n const classes = element.classList.length > 0\n ? '.' + Array.from(element.classList).join('.')\n : '';\n return `${tag}${classes}`;\n};\n\nexport class CommentModeAdapter {\n constructor() {\n this.isActive = false;\n this._handleEvent = this._handleEvent.bind(this);\n this.mouseEvents = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', 'mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'contextmenu'];\n }\n\n enable() {\n if (this.isActive) return;\n this.isActive = true;\n this.mouseEvents.forEach(eventType => {\n window.addEventListener(eventType, this._handleEvent, true);\n });\n this.addCommentModeStyle();\n }\n\n disable() {\n if (!this.isActive) return;\n this.isActive = false;\n this.mouseEvents.forEach(eventType => {\n window.removeEventListener(eventType, this._handleEvent, true);\n });\n this.removeCommentStyle();\n }\n\n addCommentModeStyle() {\n let style = document.getElementById('ai-comment-cursor-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'ai-comment-cursor-style';\n style.innerHTML = '* { cursor: crosshair !important; }';\n document.head.appendChild(style);\n }\n }\n\n removeCommentStyle() {\n const style = document.getElementById('ai-comment-cursor-style');\n if (style) style.remove();\n }\n\n _handleEvent(event) {\n if (!this.isActive) return;\n\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n\n const target = event.target;\n const isBodyOrHtml = target === document.body || target === document.documentElement;\n\n if (event.type === 'mouseover') {\n const data = isBodyOrHtml ? null : this.buildElementData(target);\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER, data }, '*');\n } else if (event.type === 'click') {\n const data = isBodyOrHtml ? null : this.buildElementData(target);\n window.parent.postMessage({ type: POST_MESSAGE_TYPE.HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED, data }, '*');\n }\n }\n\n buildElementData(target) {\n const rect = target.getBoundingClientRect();\n const selector = generateSelector(target) || null;\n return {\n selector,\n currentText: getCurrentText(target),\n htmlHint: getHtmlHint(target),\n computedStyle: computeStyle(target),\n label: generateLabel(target),\n elementPosition: {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n }\n };\n }\n\n destroy() {\n this.disable();\n }\n}\n"],"names":["countSameTagSiblingsBefore","element","count","sibling","previousElementSibling","tagName","generateSelector","document","body","parts","current","tag","toLowerCase","index","unshift","parentElement","join","getHtmlHint","maxLen","arguments","length","undefined","html","outerHTML","slice","getCurrentText","text","textContent","replace","trim","computeStyle","style","window","getComputedStyle","backgroundColor","color","fontSize","fontWeight","fontFamily","lineHeight","borderRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","marginBottom","marginLeft","marginRight","marginTop","textAlign","display","width","height","generateLabel","classes","classList","Array","from","CommentModeAdapter","constructor","isActive","_handleEvent","bind","mouseEvents","enable","forEach","eventType","addEventListener","addCommentModeStyle","disable","removeEventListener","removeCommentStyle","getElementById","createElement","id","innerHTML","head","appendChild","remove","event","preventDefault","stopPropagation","stopImmediatePropagation","target","isBodyOrHtml","documentElement","type","data","buildElementData","parent","postMessage","POST_MESSAGE_TYPE","HTML_PAGE_COMMENT_MODE_ELEMENT_HOVER","HTML_PAGE_COMMENT_MODE_ELEMENT_SELECTED","rect","getBoundingClientRect","selector","currentText","htmlHint","computedStyle","label","elementPosition","left","top","destroy"],"mappings":"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"}
|
package/lib/iframe-adapter.js
CHANGED
|
@@ -205,6 +205,9 @@ class IframeAdapter {
|
|
|
205
205
|
eventType,
|
|
206
206
|
payload
|
|
207
207
|
} = event.data;
|
|
208
|
+
if (type && type.includes('COMMENT')) {
|
|
209
|
+
console.log('--- SDK handleMessage ---', type);
|
|
210
|
+
}
|
|
208
211
|
if (type === constants.POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {
|
|
209
212
|
const pending = this.pendingRequests[requestId];
|
|
210
213
|
if (pending) {
|
|
@@ -220,12 +223,10 @@ class IframeAdapter {
|
|
|
220
223
|
this.emitEvent(eventType, payload);
|
|
221
224
|
} else if (type === constants.POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {
|
|
222
225
|
this.isCommentMode = true;
|
|
223
|
-
document.body.style.cursor = 'crosshair';
|
|
224
226
|
this.unbindInteractiveEvents();
|
|
225
227
|
if (this.commentModeAdapter) this.commentModeAdapter.enable();
|
|
226
228
|
} else if (type === constants.POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {
|
|
227
229
|
this.isCommentMode = false;
|
|
228
|
-
document.body.style.cursor = '';
|
|
229
230
|
if (this.commentModeAdapter) this.commentModeAdapter.disable();
|
|
230
231
|
this.bindInteractiveEvents();
|
|
231
232
|
} else if (type === constants.POST_MESSAGE_TYPE.WINDOW_EVENT) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframe-adapter.js","sources":["../src/iframe-adapter.js"],"sourcesContent":["import { CommentModeAdapter } from './comment-mode';\nimport { POST_MESSAGE_TYPE } from './constants';\n\nexport const POST_MESSAGE_REQUEST_TYPE = {\n GET_SERVER: 'get_server',\n GET_ACCESS_TOKEN: 'get_access_token',\n GET_APP_UUID: 'get_app_uuid',\n GET_PAGE_ID: 'get_page_id',\n};\n\nconst WINDOW_EVENT_SOURCE_TYPE = {\n APP: 'app',\n IFRAME: 'iframe',\n};\nconst SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];\nconst SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];\nconst SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];\nconst HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];\nconst INTERACTIVE_TAGS = ['SELECT', 'INPUT', 'TEXTAREA', 'BUTTON'];\n\nconst hasOwnProperty = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nconst generatorBase64Code = (keyLength = 4) => {\n let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';\n let key = '';\n for (let i = 0; i < keyLength; i++) {\n key += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return key;\n};\n\nconst createWindowEventData = ({ eventType, event }) => {\n if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n button: event.button,\n buttons: event.buttons,\n };\n }\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n key: event.key,\n code: event.code,\n keyCode: event.keyCode,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n repeat: event.repeat,\n };\n }\n if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n };\n }\n return null;\n};\n\n/**\n * IframeAdapter – enables secure postMessage communication in production environments\n * For HTML page running inside an iframe\n */\nexport class IframeAdapter {\n constructor(options) {\n this.options = options || {};\n this.selfWindow = window.parent === window.self;\n this.targetOrigin = this.options.targetOrigin || '*';\n this.pendingRequests = {};\n this.eventHandlers = {};\n this.timeout = this.options.timeout || 10000;\n this.isCommentMode = false;\n this.commentModeAdapter = new CommentModeAdapter();\n this.setupMessageListener();\n }\n\n generatorRequestId() {\n let id = generatorBase64Code();\n while (hasOwnProperty(this.pendingRequests, id)) {\n id = generatorBase64Code();\n }\n return id;\n }\n\n setupMessageListener() {\n if (this.selfWindow) return;\n window.addEventListener('message', this.handleMessage.bind(this));\n this.setEventsListener();\n }\n\n postWindowEvent(eventData) {\n if (!eventData) return;\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.WINDOW_EVENT,\n params: {\n event_data: {\n ...eventData,\n source: WINDOW_EVENT_SOURCE_TYPE.IFRAME,\n }\n }\n }, this.targetOrigin);\n }\n\n setEventsListener() {\n this._windowEventHandler = this._windowEventHandler.bind(this);\n this.interactiveEventTypes = [\n ...SUPPORT_WINDOW_MOUSE_EVENT_TYPES,\n ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES,\n ...SUPPORT_WINDOW_DRAG_EVENT_TYPES,\n ];\n this.rafId = null;\n this.pendingEvent = null;\n\n this.bindInteractiveEvents();\n }\n\n bindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.addEventListener(eventType, this._windowEventHandler, true);\n });\n }\n\n unbindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.removeEventListener(eventType, this._windowEventHandler, true);\n });\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingEvent = null;\n }\n\n _windowEventHandler(event) {\n if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;\n const target = event.target;\n if (target && INTERACTIVE_TAGS.includes(target.tagName)) return;\n\n const eventType = event.type;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n const active = document.activeElement;\n if (active && INTERACTIVE_TAGS.includes(active.tagName)) return;\n }\n if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {\n this.pendingEvent = createWindowEventData({ eventType, event });\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingEvent) {\n this.postWindowEvent(this.pendingEvent);\n this.pendingEvent = null;\n this.rafId = null;\n }\n });\n }\n return;\n }\n this.postWindowEvent(createWindowEventData({ eventType, event }));\n }\n\n async request(method, params) {\n if (this.selfWindow) {\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n const requestId = this.generatorRequestId();\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject };\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,\n requestId,\n method,\n params\n }, this.targetOrigin);\n\n // request timeout\n // reject and clear the pending request\n const timeoutId = setTimeout(() => {\n if (hasOwnProperty(this.pendingRequests, requestId)) {\n delete this.pendingRequests[requestId];\n reject(new Error(`Request timeout: ${method}`));\n }\n }, this.timeout);\n\n // save timeoutId for the pending request\n const pending = this.pendingRequests[requestId];\n if (pending) {\n pending.timeoutId = timeoutId;\n }\n });\n }\n\n handleMessage(event) {\n const { type, requestId, data, error, eventType, payload } = event.data;\n if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {\n const pending = this.pendingRequests[requestId];\n if (pending) {\n clearTimeout(pending.timeoutId);\n delete this.pendingRequests[requestId];\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(data ? JSON.parse(data) : null);\n }\n }\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {\n this.emitEvent(eventType, payload);\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {\n this.isCommentMode = true;\n document.body.style.cursor = 'crosshair';\n this.unbindInteractiveEvents();\n if (this.commentModeAdapter) this.commentModeAdapter.enable();\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {\n this.isCommentMode = false;\n document.body.style.cursor = '';\n if (this.commentModeAdapter) this.commentModeAdapter.disable();\n this.bindInteractiveEvents();\n } else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {\n this.handleWindowEvent(data);\n }\n }\n\n handleWindowEvent(data) {\n const eventData = data.event_data;\n if (!eventData || this.isCommentMode) return;\n let syntheticEvent;\n let targetElement;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new KeyboardEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n key: eventData.key,\n code: eventData.code,\n keyCode: eventData.keyCode,\n ctrlKey: eventData.ctrlKey,\n shiftKey: eventData.shiftKey,\n altKey: eventData.altKey,\n metaKey: eventData.metaKey,\n repeat: eventData.repeat,\n view: window,\n });\n targetElement = document.activeElement || document.body;\n } else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new MouseEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n } else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new DragEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n }\n\n if (!targetElement || !syntheticEvent) return;\n\n // Dispatch once on the target element, it will bubble up naturally\n syntheticEvent.source = eventData.source;\n targetElement.dispatchEvent(syntheticEvent);\n }\n\n on(eventType, handler) {\n if (!hasOwnProperty(this.eventHandlers, eventType)) {\n this.eventHandlers[eventType] = [];\n }\n this.eventHandlers[eventType].push(handler);\n return () => this.off(eventType, handler);\n }\n\n off(eventType, handler) {\n const handlers = this.eventHandlers[eventType];\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n emitEvent(eventType, payload) {\n const handlers = this.eventHandlers[eventType] || [];\n handlers.forEach(handler => {\n try {\n handler(payload);\n } catch (error) {\n // eslint-disable-next-line\n console.error(`Error in event handler for ${eventType}:`, error);\n }\n });\n }\n\n destroy() {\n this.pendingRequests.forEach(pending => {\n clearTimeout(pending.timeoutId);\n pending.reject(new Error('Adapter destroyed'));\n });\n this.pendingRequests = {};\n this.eventHandlers = {};\n if (this.commentModeAdapter) {\n this.commentModeAdapter.destroy();\n }\n }\n}\n"],"names":["POST_MESSAGE_REQUEST_TYPE","GET_SERVER","GET_ACCESS_TOKEN","GET_APP_UUID","GET_PAGE_ID","WINDOW_EVENT_SOURCE_TYPE","APP","IFRAME","SUPPORT_WINDOW_MOUSE_EVENT_TYPES","SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES","SUPPORT_WINDOW_DRAG_EVENT_TYPES","HIGH_FREQUENCY_WINDOW_EVENT_TYPES","INTERACTIVE_TAGS","hasOwnProperty","obj","key","Object","prototype","call","generatorBase64Code","keyLength","arguments","length","undefined","possible","i","charAt","Math","floor","random","createWindowEventData","_ref","eventType","event","includes","type","x","y","button","buttons","code","keyCode","ctrlKey","shiftKey","altKey","metaKey","repeat","IframeAdapter","constructor","options","selfWindow","window","parent","self","targetOrigin","pendingRequests","eventHandlers","timeout","isCommentMode","commentModeAdapter","CommentModeAdapter","setupMessageListener","generatorRequestId","id","addEventListener","handleMessage","bind","setEventsListener","postWindowEvent","eventData","postMessage","POST_MESSAGE_TYPE","WINDOW_EVENT","params","event_data","source","_windowEventHandler","interactiveEventTypes","rafId","pendingEvent","bindInteractiveEvents","forEach","unbindInteractiveEvents","removeEventListener","cancelAnimationFrame","target","tagName","active","document","activeElement","requestAnimationFrame","request","method","Promise","resolve","requestId","reject","HTML_PAGE_REQUEST","timeoutId","setTimeout","Error","pending","data","error","payload","HTML_PAGE_RESPONSE","clearTimeout","JSON","parse","HTML_PAGE_EVENT","emitEvent","HTML_PAGE_ENABLE_COMMENT_MODE","body","style","cursor","enable","HTML_PAGE_DISABLE_COMMENT_MODE","disable","handleWindowEvent","syntheticEvent","targetElement","KeyboardEvent","bubbles","cancelable","view","MouseEvent","clientX","clientY","screenX","screenY","elementAtPoint","elementFromPoint","DragEvent","dispatchEvent","on","handler","push","off","handlers","index","indexOf","splice","console","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"iframe-adapter.js","sources":["../src/iframe-adapter.js"],"sourcesContent":["import { CommentModeAdapter } from './comment-mode';\nimport { POST_MESSAGE_TYPE } from './constants';\n\nexport const POST_MESSAGE_REQUEST_TYPE = {\n GET_SERVER: 'get_server',\n GET_ACCESS_TOKEN: 'get_access_token',\n GET_APP_UUID: 'get_app_uuid',\n GET_PAGE_ID: 'get_page_id',\n};\n\nconst WINDOW_EVENT_SOURCE_TYPE = {\n APP: 'app',\n IFRAME: 'iframe',\n};\nconst SUPPORT_WINDOW_MOUSE_EVENT_TYPES = ['click', 'dblclick', 'mousemove', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'contextmenu'];\nconst SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES = ['keydown', 'keyup', 'keypress'];\nconst SUPPORT_WINDOW_DRAG_EVENT_TYPES = ['dragstart', 'dragover', 'drag', 'dragend', 'dragenter', 'dragleave', 'drop'];\nconst HIGH_FREQUENCY_WINDOW_EVENT_TYPES = ['mousemove', 'dragover'];\nconst INTERACTIVE_TAGS = ['SELECT', 'INPUT', 'TEXTAREA', 'BUTTON'];\n\nconst hasOwnProperty = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nconst generatorBase64Code = (keyLength = 4) => {\n let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';\n let key = '';\n for (let i = 0; i < keyLength; i++) {\n key += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n return key;\n};\n\nconst createWindowEventData = ({ eventType, event }) => {\n if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n button: event.button,\n buttons: event.buttons,\n };\n }\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n key: event.key,\n code: event.code,\n keyCode: event.keyCode,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n repeat: event.repeat,\n };\n }\n if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventType)) {\n return {\n type: eventType,\n x: event.x,\n y: event.y,\n };\n }\n return null;\n};\n\n/**\n * IframeAdapter – enables secure postMessage communication in production environments\n * For HTML page running inside an iframe\n */\nexport class IframeAdapter {\n constructor(options) {\n this.options = options || {};\n this.selfWindow = window.parent === window.self;\n this.targetOrigin = this.options.targetOrigin || '*';\n this.pendingRequests = {};\n this.eventHandlers = {};\n this.timeout = this.options.timeout || 10000;\n this.isCommentMode = false;\n this.commentModeAdapter = new CommentModeAdapter();\n this.setupMessageListener();\n }\n\n generatorRequestId() {\n let id = generatorBase64Code();\n while (hasOwnProperty(this.pendingRequests, id)) {\n id = generatorBase64Code();\n }\n return id;\n }\n\n setupMessageListener() {\n if (this.selfWindow) return;\n window.addEventListener('message', this.handleMessage.bind(this));\n this.setEventsListener();\n }\n\n postWindowEvent(eventData) {\n if (!eventData) return;\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.WINDOW_EVENT,\n params: {\n event_data: {\n ...eventData,\n source: WINDOW_EVENT_SOURCE_TYPE.IFRAME,\n }\n }\n }, this.targetOrigin);\n }\n\n setEventsListener() {\n this._windowEventHandler = this._windowEventHandler.bind(this);\n this.interactiveEventTypes = [\n ...SUPPORT_WINDOW_MOUSE_EVENT_TYPES,\n ...SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES,\n ...SUPPORT_WINDOW_DRAG_EVENT_TYPES,\n ];\n this.rafId = null;\n this.pendingEvent = null;\n\n this.bindInteractiveEvents();\n }\n\n bindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.addEventListener(eventType, this._windowEventHandler, true);\n });\n }\n\n unbindInteractiveEvents() {\n this.interactiveEventTypes.forEach(eventType => {\n window.removeEventListener(eventType, this._windowEventHandler, true);\n });\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.pendingEvent = null;\n }\n\n _windowEventHandler(event) {\n if (event.source === WINDOW_EVENT_SOURCE_TYPE.APP) return;\n const target = event.target;\n if (target && INTERACTIVE_TAGS.includes(target.tagName)) return;\n\n const eventType = event.type;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventType)) {\n const active = document.activeElement;\n if (active && INTERACTIVE_TAGS.includes(active.tagName)) return;\n }\n if (HIGH_FREQUENCY_WINDOW_EVENT_TYPES.includes(eventType)) {\n this.pendingEvent = createWindowEventData({ eventType, event });\n if (this.rafId === null) {\n this.rafId = requestAnimationFrame(() => {\n if (this.pendingEvent) {\n this.postWindowEvent(this.pendingEvent);\n this.pendingEvent = null;\n this.rafId = null;\n }\n });\n }\n return;\n }\n this.postWindowEvent(createWindowEventData({ eventType, event }));\n }\n\n async request(method, params) {\n if (this.selfWindow) {\n return new Promise((resolve) => {\n resolve(null);\n });\n }\n const requestId = this.generatorRequestId();\n return new Promise((resolve, reject) => {\n this.pendingRequests[requestId] = { resolve, reject };\n window.parent.postMessage({\n type: POST_MESSAGE_TYPE.HTML_PAGE_REQUEST,\n requestId,\n method,\n params\n }, this.targetOrigin);\n\n // request timeout\n // reject and clear the pending request\n const timeoutId = setTimeout(() => {\n if (hasOwnProperty(this.pendingRequests, requestId)) {\n delete this.pendingRequests[requestId];\n reject(new Error(`Request timeout: ${method}`));\n }\n }, this.timeout);\n\n // save timeoutId for the pending request\n const pending = this.pendingRequests[requestId];\n if (pending) {\n pending.timeoutId = timeoutId;\n }\n });\n }\n\n handleMessage(event) {\n const { type, requestId, data, error, eventType, payload } = event.data;\n if (type && type.includes('COMMENT')) {\n console.log('--- SDK handleMessage ---', type);\n }\n if (type === POST_MESSAGE_TYPE.HTML_PAGE_RESPONSE) {\n const pending = this.pendingRequests[requestId];\n if (pending) {\n clearTimeout(pending.timeoutId);\n delete this.pendingRequests[requestId];\n if (error) {\n pending.reject(new Error(error));\n } else {\n pending.resolve(data ? JSON.parse(data) : null);\n }\n }\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_EVENT) {\n this.emitEvent(eventType, payload);\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_ENABLE_COMMENT_MODE) {\n this.isCommentMode = true;\n this.unbindInteractiveEvents();\n if (this.commentModeAdapter) this.commentModeAdapter.enable();\n } else if (type === POST_MESSAGE_TYPE.HTML_PAGE_DISABLE_COMMENT_MODE) {\n this.isCommentMode = false;\n if (this.commentModeAdapter) this.commentModeAdapter.disable();\n this.bindInteractiveEvents();\n } else if (type === POST_MESSAGE_TYPE.WINDOW_EVENT) {\n this.handleWindowEvent(data);\n }\n }\n\n handleWindowEvent(data) {\n const eventData = data.event_data;\n if (!eventData || this.isCommentMode) return;\n let syntheticEvent;\n let targetElement;\n if (SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new KeyboardEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n key: eventData.key,\n code: eventData.code,\n keyCode: eventData.keyCode,\n ctrlKey: eventData.ctrlKey,\n shiftKey: eventData.shiftKey,\n altKey: eventData.altKey,\n metaKey: eventData.metaKey,\n repeat: eventData.repeat,\n view: window,\n });\n targetElement = document.activeElement || document.body;\n } else if (SUPPORT_WINDOW_MOUSE_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new MouseEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n } else if (SUPPORT_WINDOW_DRAG_EVENT_TYPES.includes(eventData.type)) {\n syntheticEvent = new DragEvent(eventData.type, {\n bubbles: true,\n cancelable: true,\n view: window,\n clientX: eventData.x,\n clientY: eventData.y,\n screenX: eventData.x,\n screenY: eventData.y,\n button: eventData.button,\n buttons: eventData.buttons,\n });\n const elementAtPoint = document.elementFromPoint(eventData.x, eventData.y);\n targetElement = elementAtPoint || document.body;\n }\n\n if (!targetElement || !syntheticEvent) return;\n\n // Dispatch once on the target element, it will bubble up naturally\n syntheticEvent.source = eventData.source;\n targetElement.dispatchEvent(syntheticEvent);\n }\n\n on(eventType, handler) {\n if (!hasOwnProperty(this.eventHandlers, eventType)) {\n this.eventHandlers[eventType] = [];\n }\n this.eventHandlers[eventType].push(handler);\n return () => this.off(eventType, handler);\n }\n\n off(eventType, handler) {\n const handlers = this.eventHandlers[eventType];\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n emitEvent(eventType, payload) {\n const handlers = this.eventHandlers[eventType] || [];\n handlers.forEach(handler => {\n try {\n handler(payload);\n } catch (error) {\n // eslint-disable-next-line\n console.error(`Error in event handler for ${eventType}:`, error);\n }\n });\n }\n\n destroy() {\n this.pendingRequests.forEach(pending => {\n clearTimeout(pending.timeoutId);\n pending.reject(new Error('Adapter destroyed'));\n });\n this.pendingRequests = {};\n this.eventHandlers = {};\n if (this.commentModeAdapter) {\n this.commentModeAdapter.destroy();\n }\n }\n}\n"],"names":["POST_MESSAGE_REQUEST_TYPE","GET_SERVER","GET_ACCESS_TOKEN","GET_APP_UUID","GET_PAGE_ID","WINDOW_EVENT_SOURCE_TYPE","APP","IFRAME","SUPPORT_WINDOW_MOUSE_EVENT_TYPES","SUPPORT_WINDOW_KEYBOARD_EVENT_TYPES","SUPPORT_WINDOW_DRAG_EVENT_TYPES","HIGH_FREQUENCY_WINDOW_EVENT_TYPES","INTERACTIVE_TAGS","hasOwnProperty","obj","key","Object","prototype","call","generatorBase64Code","keyLength","arguments","length","undefined","possible","i","charAt","Math","floor","random","createWindowEventData","_ref","eventType","event","includes","type","x","y","button","buttons","code","keyCode","ctrlKey","shiftKey","altKey","metaKey","repeat","IframeAdapter","constructor","options","selfWindow","window","parent","self","targetOrigin","pendingRequests","eventHandlers","timeout","isCommentMode","commentModeAdapter","CommentModeAdapter","setupMessageListener","generatorRequestId","id","addEventListener","handleMessage","bind","setEventsListener","postWindowEvent","eventData","postMessage","POST_MESSAGE_TYPE","WINDOW_EVENT","params","event_data","source","_windowEventHandler","interactiveEventTypes","rafId","pendingEvent","bindInteractiveEvents","forEach","unbindInteractiveEvents","removeEventListener","cancelAnimationFrame","target","tagName","active","document","activeElement","requestAnimationFrame","request","method","Promise","resolve","requestId","reject","HTML_PAGE_REQUEST","timeoutId","setTimeout","Error","pending","data","error","payload","console","log","HTML_PAGE_RESPONSE","clearTimeout","JSON","parse","HTML_PAGE_EVENT","emitEvent","HTML_PAGE_ENABLE_COMMENT_MODE","enable","HTML_PAGE_DISABLE_COMMENT_MODE","disable","handleWindowEvent","syntheticEvent","targetElement","KeyboardEvent","bubbles","cancelable","view","body","MouseEvent","clientX","clientY","screenX","screenY","elementAtPoint","elementFromPoint","DragEvent","dispatchEvent","on","handler","push","off","handlers","index","indexOf","splice","destroy"],"mappings":";;;;;;;AAGO,MAAMA,yBAAyB,GAAG;AACvCC,EAAAA,UAAU,EAAE,YAAY;AACxBC,EAAAA,gBAAgB,EAAE,kBAAkB;AACpCC,EAAAA,YAAY,EAAE,cAAc;AAC5BC,EAAAA,WAAW,EAAE,aAAA;AACf,EAAC;AAED,MAAMC,wBAAwB,GAAG;AAC/BC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,MAAM,EAAE,QAAA;AACV,CAAC,CAAA;AACD,MAAMC,gCAAgC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;AAC9I,MAAMC,mCAAmC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAC5E,MAAMC,+BAA+B,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;AACtH,MAAMC,iCAAiC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AACnE,MAAMC,gBAAgB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;AAElE,MAAMC,cAAc,GAAGA,CAACC,GAAG,EAAEC,GAAG,KAAK;EACnC,OAAOC,MAAM,CAACC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAACJ,GAAG,EAAEC,GAAG,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAMI,mBAAmB,GAAG,YAAmB;AAAA,EAAA,IAAlBC,SAAS,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC,CAAA;EACxC,IAAIG,QAAQ,GAAG,0EAA0E,CAAA;EACzF,IAAIT,GAAG,GAAG,EAAE,CAAA;EACZ,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,SAAS,EAAEK,CAAC,EAAE,EAAE;AAClCV,IAAAA,GAAG,IAAIS,QAAQ,CAACE,MAAM,CAACC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAGL,QAAQ,CAACF,MAAM,CAAC,CAAC,CAAA;AACrE,GAAA;AACA,EAAA,OAAOP,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAMe,qBAAqB,GAAGC,IAAA,IAA0B;EAAA,IAAzB;IAAEC,SAAS;AAAEC,IAAAA,KAAAA;AAAM,GAAC,GAAAF,IAAA,CAAA;AACjD,EAAA,IAAIvB,gCAAgC,CAAC0B,QAAQ,CAACF,SAAS,CAAC,EAAE;IACxD,OAAO;AACLG,MAAAA,IAAI,EAAEH,SAAS;MACfI,CAAC,EAAEH,KAAK,CAACG,CAAC;MACVC,CAAC,EAAEJ,KAAK,CAACI,CAAC;MACVC,MAAM,EAAEL,KAAK,CAACK,MAAM;MACpBC,OAAO,EAAEN,KAAK,CAACM,OAAAA;KAChB,CAAA;AACH,GAAA;AACA,EAAA,IAAI9B,mCAAmC,CAACyB,QAAQ,CAACF,SAAS,CAAC,EAAE;IAC3D,OAAO;AACLG,MAAAA,IAAI,EAAEH,SAAS;MACfjB,GAAG,EAAEkB,KAAK,CAAClB,GAAG;MACdyB,IAAI,EAAEP,KAAK,CAACO,IAAI;MAChBC,OAAO,EAAER,KAAK,CAACQ,OAAO;MACtBC,OAAO,EAAET,KAAK,CAACS,OAAO;MACtBC,QAAQ,EAAEV,KAAK,CAACU,QAAQ;MACxBC,MAAM,EAAEX,KAAK,CAACW,MAAM;MACpBC,OAAO,EAAEZ,KAAK,CAACY,OAAO;MACtBC,MAAM,EAAEb,KAAK,CAACa,MAAAA;KACf,CAAA;AACH,GAAA;AACA,EAAA,IAAIpC,+BAA+B,CAACwB,QAAQ,CAACF,SAAS,CAAC,EAAE;IACvD,OAAO;AACLG,MAAAA,IAAI,EAAEH,SAAS;MACfI,CAAC,EAAEH,KAAK,CAACG,CAAC;MACVC,CAAC,EAAEJ,KAAK,CAACI,CAAAA;KACV,CAAA;AACH,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACO,MAAMU,aAAa,CAAC;EACzBC,WAAWA,CAACC,OAAO,EAAE;AACnB,IAAA,IAAI,CAACA,OAAO,GAAGA,OAAO,IAAI,EAAE,CAAA;IAC5B,IAAI,CAACC,UAAU,GAAGC,MAAM,CAACC,MAAM,KAAKD,MAAM,CAACE,IAAI,CAAA;IAC/C,IAAI,CAACC,YAAY,GAAG,IAAI,CAACL,OAAO,CAACK,YAAY,IAAI,GAAG,CAAA;AACpD,IAAA,IAAI,CAACC,eAAe,GAAG,EAAE,CAAA;AACzB,IAAA,IAAI,CAACC,aAAa,GAAG,EAAE,CAAA;IACvB,IAAI,CAACC,OAAO,GAAG,IAAI,CAACR,OAAO,CAACQ,OAAO,IAAI,KAAK,CAAA;IAC5C,IAAI,CAACC,aAAa,GAAG,KAAK,CAAA;AAC1B,IAAA,IAAI,CAACC,kBAAkB,GAAG,IAAIC,8BAAkB,EAAE,CAAA;IAClD,IAAI,CAACC,oBAAoB,EAAE,CAAA;AAC7B,GAAA;AAEAC,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAIC,EAAE,GAAG5C,mBAAmB,EAAE,CAAA;IAC9B,OAAON,cAAc,CAAC,IAAI,CAAC0C,eAAe,EAAEQ,EAAE,CAAC,EAAE;MAC/CA,EAAE,GAAG5C,mBAAmB,EAAE,CAAA;AAC5B,KAAA;AACA,IAAA,OAAO4C,EAAE,CAAA;AACX,GAAA;AAEAF,EAAAA,oBAAoBA,GAAG;IACrB,IAAI,IAAI,CAACX,UAAU,EAAE,OAAA;AACrBC,IAAAA,MAAM,CAACa,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,IAAI,CAACC,iBAAiB,EAAE,CAAA;AAC1B,GAAA;EAEAC,eAAeA,CAACC,SAAS,EAAE;IACzB,IAAI,CAACA,SAAS,EAAE,OAAA;AAChBlB,IAAAA,MAAM,CAACC,MAAM,CAACkB,WAAW,CAAC;MACxBnC,IAAI,EAAEoC,2BAAiB,CAACC,YAAY;AACpCC,MAAAA,MAAM,EAAE;AACNC,QAAAA,UAAU,EAAE;AACV,UAAA,GAAGL,SAAS;UACZM,MAAM,EAAEtE,wBAAwB,CAACE,MAAAA;AACnC,SAAA;AACF,OAAA;AACF,KAAC,EAAE,IAAI,CAAC+C,YAAY,CAAC,CAAA;AACvB,GAAA;AAEAa,EAAAA,iBAAiBA,GAAG;IAClB,IAAI,CAACS,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACV,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9D,IAAA,IAAI,CAACW,qBAAqB,GAAG,CAC3B,GAAGrE,gCAAgC,EACnC,GAAGC,mCAAmC,EACtC,GAAGC,+BAA+B,CACnC,CAAA;IACD,IAAI,CAACoE,KAAK,GAAG,IAAI,CAAA;IACjB,IAAI,CAACC,YAAY,GAAG,IAAI,CAAA;IAExB,IAAI,CAACC,qBAAqB,EAAE,CAAA;AAC9B,GAAA;AAEAA,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,IAAI,CAACH,qBAAqB,CAACI,OAAO,CAACjD,SAAS,IAAI;MAC9CmB,MAAM,CAACa,gBAAgB,CAAChC,SAAS,EAAE,IAAI,CAAC4C,mBAAmB,EAAE,IAAI,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAM,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,IAAI,CAACL,qBAAqB,CAACI,OAAO,CAACjD,SAAS,IAAI;MAC9CmB,MAAM,CAACgC,mBAAmB,CAACnD,SAAS,EAAE,IAAI,CAAC4C,mBAAmB,EAAE,IAAI,CAAC,CAAA;AACvE,KAAC,CAAC,CAAA;AACF,IAAA,IAAI,IAAI,CAACE,KAAK,KAAK,IAAI,EAAE;AACvBM,MAAAA,oBAAoB,CAAC,IAAI,CAACN,KAAK,CAAC,CAAA;MAChC,IAAI,CAACA,KAAK,GAAG,IAAI,CAAA;AACnB,KAAA;IACA,IAAI,CAACC,YAAY,GAAG,IAAI,CAAA;AAC1B,GAAA;EAEAH,mBAAmBA,CAAC3C,KAAK,EAAE;AACzB,IAAA,IAAIA,KAAK,CAAC0C,MAAM,KAAKtE,wBAAwB,CAACC,GAAG,EAAE,OAAA;AACnD,IAAA,MAAM+E,MAAM,GAAGpD,KAAK,CAACoD,MAAM,CAAA;IAC3B,IAAIA,MAAM,IAAIzE,gBAAgB,CAACsB,QAAQ,CAACmD,MAAM,CAACC,OAAO,CAAC,EAAE,OAAA;AAEzD,IAAA,MAAMtD,SAAS,GAAGC,KAAK,CAACE,IAAI,CAAA;AAC5B,IAAA,IAAI1B,mCAAmC,CAACyB,QAAQ,CAACF,SAAS,CAAC,EAAE;AAC3D,MAAA,MAAMuD,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAA;MACrC,IAAIF,MAAM,IAAI3E,gBAAgB,CAACsB,QAAQ,CAACqD,MAAM,CAACD,OAAO,CAAC,EAAE,OAAA;AAC3D,KAAA;AACA,IAAA,IAAI3E,iCAAiC,CAACuB,QAAQ,CAACF,SAAS,CAAC,EAAE;AACzD,MAAA,IAAI,CAAC+C,YAAY,GAAGjD,qBAAqB,CAAC;QAAEE,SAAS;AAAEC,QAAAA,KAAAA;AAAM,OAAC,CAAC,CAAA;AAC/D,MAAA,IAAI,IAAI,CAAC6C,KAAK,KAAK,IAAI,EAAE;AACvB,QAAA,IAAI,CAACA,KAAK,GAAGY,qBAAqB,CAAC,MAAM;UACvC,IAAI,IAAI,CAACX,YAAY,EAAE;AACrB,YAAA,IAAI,CAACX,eAAe,CAAC,IAAI,CAACW,YAAY,CAAC,CAAA;YACvC,IAAI,CAACA,YAAY,GAAG,IAAI,CAAA;YACxB,IAAI,CAACD,KAAK,GAAG,IAAI,CAAA;AACnB,WAAA;AACF,SAAC,CAAC,CAAA;AACJ,OAAA;AACA,MAAA,OAAA;AACF,KAAA;AACA,IAAA,IAAI,CAACV,eAAe,CAACtC,qBAAqB,CAAC;MAAEE,SAAS;AAAEC,MAAAA,KAAAA;AAAM,KAAC,CAAC,CAAC,CAAA;AACnE,GAAA;AAEA,EAAA,MAAM0D,OAAOA,CAACC,MAAM,EAAEnB,MAAM,EAAE;IAC5B,IAAI,IAAI,CAACvB,UAAU,EAAE;AACnB,MAAA,OAAO,IAAI2C,OAAO,CAAEC,OAAO,IAAK;QAC9BA,OAAO,CAAC,IAAI,CAAC,CAAA;AACf,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,MAAMC,SAAS,GAAG,IAAI,CAACjC,kBAAkB,EAAE,CAAA;AAC3C,IAAA,OAAO,IAAI+B,OAAO,CAAC,CAACC,OAAO,EAAEE,MAAM,KAAK;AACtC,MAAA,IAAI,CAACzC,eAAe,CAACwC,SAAS,CAAC,GAAG;QAAED,OAAO;AAAEE,QAAAA,MAAAA;OAAQ,CAAA;AACrD7C,MAAAA,MAAM,CAACC,MAAM,CAACkB,WAAW,CAAC;QACxBnC,IAAI,EAAEoC,2BAAiB,CAAC0B,iBAAiB;QACzCF,SAAS;QACTH,MAAM;AACNnB,QAAAA,MAAAA;AACF,OAAC,EAAE,IAAI,CAACnB,YAAY,CAAC,CAAA;;AAErB;AACA;AACA,MAAA,MAAM4C,SAAS,GAAGC,UAAU,CAAC,MAAM;QACjC,IAAItF,cAAc,CAAC,IAAI,CAAC0C,eAAe,EAAEwC,SAAS,CAAC,EAAE;AACnD,UAAA,OAAO,IAAI,CAACxC,eAAe,CAACwC,SAAS,CAAC,CAAA;UACtCC,MAAM,CAAC,IAAII,KAAK,CAAC,oBAAoBR,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA;AACjD,SAAA;AACF,OAAC,EAAE,IAAI,CAACnC,OAAO,CAAC,CAAA;;AAEhB;AACA,MAAA,MAAM4C,OAAO,GAAG,IAAI,CAAC9C,eAAe,CAACwC,SAAS,CAAC,CAAA;AAC/C,MAAA,IAAIM,OAAO,EAAE;QACXA,OAAO,CAACH,SAAS,GAAGA,SAAS,CAAA;AAC/B,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEAjC,aAAaA,CAAChC,KAAK,EAAE;IACnB,MAAM;MAAEE,IAAI;MAAE4D,SAAS;MAAEO,IAAI;MAAEC,KAAK;MAAEvE,SAAS;AAAEwE,MAAAA,OAAAA;KAAS,GAAGvE,KAAK,CAACqE,IAAI,CAAA;IACvE,IAAInE,IAAI,IAAIA,IAAI,CAACD,QAAQ,CAAC,SAAS,CAAC,EAAE;AACpCuE,MAAAA,OAAO,CAACC,GAAG,CAAC,2BAA2B,EAAEvE,IAAI,CAAC,CAAA;AAChD,KAAA;AACA,IAAA,IAAIA,IAAI,KAAKoC,2BAAiB,CAACoC,kBAAkB,EAAE;AACjD,MAAA,MAAMN,OAAO,GAAG,IAAI,CAAC9C,eAAe,CAACwC,SAAS,CAAC,CAAA;AAC/C,MAAA,IAAIM,OAAO,EAAE;AACXO,QAAAA,YAAY,CAACP,OAAO,CAACH,SAAS,CAAC,CAAA;AAC/B,QAAA,OAAO,IAAI,CAAC3C,eAAe,CAACwC,SAAS,CAAC,CAAA;AACtC,QAAA,IAAIQ,KAAK,EAAE;UACTF,OAAO,CAACL,MAAM,CAAC,IAAII,KAAK,CAACG,KAAK,CAAC,CAAC,CAAA;AAClC,SAAC,MAAM;AACLF,UAAAA,OAAO,CAACP,OAAO,CAACQ,IAAI,GAAGO,IAAI,CAACC,KAAK,CAACR,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;AACjD,SAAA;AACF,OAAA;AACF,KAAC,MAAM,IAAInE,IAAI,KAAKoC,2BAAiB,CAACwC,eAAe,EAAE;AACrD,MAAA,IAAI,CAACC,SAAS,CAAChF,SAAS,EAAEwE,OAAO,CAAC,CAAA;AACpC,KAAC,MAAM,IAAIrE,IAAI,KAAKoC,2BAAiB,CAAC0C,6BAA6B,EAAE;MACnE,IAAI,CAACvD,aAAa,GAAG,IAAI,CAAA;MACzB,IAAI,CAACwB,uBAAuB,EAAE,CAAA;MAC9B,IAAI,IAAI,CAACvB,kBAAkB,EAAE,IAAI,CAACA,kBAAkB,CAACuD,MAAM,EAAE,CAAA;AAC/D,KAAC,MAAM,IAAI/E,IAAI,KAAKoC,2BAAiB,CAAC4C,8BAA8B,EAAE;MACpE,IAAI,CAACzD,aAAa,GAAG,KAAK,CAAA;MAC1B,IAAI,IAAI,CAACC,kBAAkB,EAAE,IAAI,CAACA,kBAAkB,CAACyD,OAAO,EAAE,CAAA;MAC9D,IAAI,CAACpC,qBAAqB,EAAE,CAAA;AAC9B,KAAC,MAAM,IAAI7C,IAAI,KAAKoC,2BAAiB,CAACC,YAAY,EAAE;AAClD,MAAA,IAAI,CAAC6C,iBAAiB,CAACf,IAAI,CAAC,CAAA;AAC9B,KAAA;AACF,GAAA;EAEAe,iBAAiBA,CAACf,IAAI,EAAE;AACtB,IAAA,MAAMjC,SAAS,GAAGiC,IAAI,CAAC5B,UAAU,CAAA;AACjC,IAAA,IAAI,CAACL,SAAS,IAAI,IAAI,CAACX,aAAa,EAAE,OAAA;AACtC,IAAA,IAAI4D,cAAc,CAAA;AAClB,IAAA,IAAIC,aAAa,CAAA;IACjB,IAAI9G,mCAAmC,CAACyB,QAAQ,CAACmC,SAAS,CAAClC,IAAI,CAAC,EAAE;AAChEmF,MAAAA,cAAc,GAAG,IAAIE,aAAa,CAACnD,SAAS,CAAClC,IAAI,EAAE;AACjDsF,QAAAA,OAAO,EAAE,IAAI;AACbC,QAAAA,UAAU,EAAE,IAAI;QAChB3G,GAAG,EAAEsD,SAAS,CAACtD,GAAG;QAClByB,IAAI,EAAE6B,SAAS,CAAC7B,IAAI;QACpBC,OAAO,EAAE4B,SAAS,CAAC5B,OAAO;QAC1BC,OAAO,EAAE2B,SAAS,CAAC3B,OAAO;QAC1BC,QAAQ,EAAE0B,SAAS,CAAC1B,QAAQ;QAC5BC,MAAM,EAAEyB,SAAS,CAACzB,MAAM;QACxBC,OAAO,EAAEwB,SAAS,CAACxB,OAAO;QAC1BC,MAAM,EAAEuB,SAAS,CAACvB,MAAM;AACxB6E,QAAAA,IAAI,EAAExE,MAAAA;AACR,OAAC,CAAC,CAAA;AACFoE,MAAAA,aAAa,GAAG/B,QAAQ,CAACC,aAAa,IAAID,QAAQ,CAACoC,IAAI,CAAA;KACxD,MAAM,IAAIpH,gCAAgC,CAAC0B,QAAQ,CAACmC,SAAS,CAAClC,IAAI,CAAC,EAAE;AACpEmF,MAAAA,cAAc,GAAG,IAAIO,UAAU,CAACxD,SAAS,CAAClC,IAAI,EAAE;AAC9CsF,QAAAA,OAAO,EAAE,IAAI;AACbC,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,IAAI,EAAExE,MAAM;QACZ2E,OAAO,EAAEzD,SAAS,CAACjC,CAAC;QACpB2F,OAAO,EAAE1D,SAAS,CAAChC,CAAC;QACpB2F,OAAO,EAAE3D,SAAS,CAACjC,CAAC;QACpB6F,OAAO,EAAE5D,SAAS,CAAChC,CAAC;QACpBC,MAAM,EAAE+B,SAAS,CAAC/B,MAAM;QACxBC,OAAO,EAAE8B,SAAS,CAAC9B,OAAAA;AACrB,OAAC,CAAC,CAAA;AACF,MAAA,MAAM2F,cAAc,GAAG1C,QAAQ,CAAC2C,gBAAgB,CAAC9D,SAAS,CAACjC,CAAC,EAAEiC,SAAS,CAAChC,CAAC,CAAC,CAAA;AAC1EkF,MAAAA,aAAa,GAAGW,cAAc,IAAI1C,QAAQ,CAACoC,IAAI,CAAA;KAChD,MAAM,IAAIlH,+BAA+B,CAACwB,QAAQ,CAACmC,SAAS,CAAClC,IAAI,CAAC,EAAE;AACnEmF,MAAAA,cAAc,GAAG,IAAIc,SAAS,CAAC/D,SAAS,CAAClC,IAAI,EAAE;AAC7CsF,QAAAA,OAAO,EAAE,IAAI;AACbC,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,IAAI,EAAExE,MAAM;QACZ2E,OAAO,EAAEzD,SAAS,CAACjC,CAAC;QACpB2F,OAAO,EAAE1D,SAAS,CAAChC,CAAC;QACpB2F,OAAO,EAAE3D,SAAS,CAACjC,CAAC;QACpB6F,OAAO,EAAE5D,SAAS,CAAChC,CAAC;QACpBC,MAAM,EAAE+B,SAAS,CAAC/B,MAAM;QACxBC,OAAO,EAAE8B,SAAS,CAAC9B,OAAAA;AACrB,OAAC,CAAC,CAAA;AACF,MAAA,MAAM2F,cAAc,GAAG1C,QAAQ,CAAC2C,gBAAgB,CAAC9D,SAAS,CAACjC,CAAC,EAAEiC,SAAS,CAAChC,CAAC,CAAC,CAAA;AAC1EkF,MAAAA,aAAa,GAAGW,cAAc,IAAI1C,QAAQ,CAACoC,IAAI,CAAA;AACjD,KAAA;AAEA,IAAA,IAAI,CAACL,aAAa,IAAI,CAACD,cAAc,EAAE,OAAA;;AAEvC;AACAA,IAAAA,cAAc,CAAC3C,MAAM,GAAGN,SAAS,CAACM,MAAM,CAAA;AACxC4C,IAAAA,aAAa,CAACc,aAAa,CAACf,cAAc,CAAC,CAAA;AAC7C,GAAA;AAEAgB,EAAAA,EAAEA,CAACtG,SAAS,EAAEuG,OAAO,EAAE;IACrB,IAAI,CAAC1H,cAAc,CAAC,IAAI,CAAC2C,aAAa,EAAExB,SAAS,CAAC,EAAE;AAClD,MAAA,IAAI,CAACwB,aAAa,CAACxB,SAAS,CAAC,GAAG,EAAE,CAAA;AACpC,KAAA;IACA,IAAI,CAACwB,aAAa,CAACxB,SAAS,CAAC,CAACwG,IAAI,CAACD,OAAO,CAAC,CAAA;IAC3C,OAAO,MAAM,IAAI,CAACE,GAAG,CAACzG,SAAS,EAAEuG,OAAO,CAAC,CAAA;AAC3C,GAAA;AAEAE,EAAAA,GAAGA,CAACzG,SAAS,EAAEuG,OAAO,EAAE;AACtB,IAAA,MAAMG,QAAQ,GAAG,IAAI,CAAClF,aAAa,CAACxB,SAAS,CAAC,CAAA;AAC9C,IAAA,IAAI0G,QAAQ,EAAE;AACZ,MAAA,MAAMC,KAAK,GAAGD,QAAQ,CAACE,OAAO,CAACL,OAAO,CAAC,CAAA;AACvC,MAAA,IAAII,KAAK,KAAK,CAAC,CAAC,EAAE;AAChBD,QAAAA,QAAQ,CAACG,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,OAAA;AACF,KAAA;AACF,GAAA;AAEA3B,EAAAA,SAASA,CAAChF,SAAS,EAAEwE,OAAO,EAAE;IAC5B,MAAMkC,QAAQ,GAAG,IAAI,CAAClF,aAAa,CAACxB,SAAS,CAAC,IAAI,EAAE,CAAA;AACpD0G,IAAAA,QAAQ,CAACzD,OAAO,CAACsD,OAAO,IAAI;MAC1B,IAAI;QACFA,OAAO,CAAC/B,OAAO,CAAC,CAAA;OACjB,CAAC,OAAOD,KAAK,EAAE;AACd;QACAE,OAAO,CAACF,KAAK,CAAC,CAAA,2BAAA,EAA8BvE,SAAS,CAAG,CAAA,CAAA,EAAEuE,KAAK,CAAC,CAAA;AAClE,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;AAEAuC,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACvF,eAAe,CAAC0B,OAAO,CAACoB,OAAO,IAAI;AACtCO,MAAAA,YAAY,CAACP,OAAO,CAACH,SAAS,CAAC,CAAA;MAC/BG,OAAO,CAACL,MAAM,CAAC,IAAII,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAChD,KAAC,CAAC,CAAA;AACF,IAAA,IAAI,CAAC7C,eAAe,GAAG,EAAE,CAAA;AACzB,IAAA,IAAI,CAACC,aAAa,GAAG,EAAE,CAAA;IACvB,IAAI,IAAI,CAACG,kBAAkB,EAAE;AAC3B,MAAA,IAAI,CAACA,kBAAkB,CAACmF,OAAO,EAAE,CAAA;AACnC,KAAA;AACF,GAAA;AACF;;;;;"}
|
package/package.json
CHANGED