@pie-lib/editable-html-tip-tap 2.1.10 → 2.2.0-beta

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 (114) hide show
  1. package/CHANGELOG.md +0 -75
  2. package/lib/__tests__/EditableHtml.test.js +831 -0
  3. package/lib/__tests__/EditableHtml.test.js.map +1 -0
  4. package/lib/__tests__/constants.test.js +21 -0
  5. package/lib/__tests__/constants.test.js.map +1 -0
  6. package/lib/__tests__/div-to-paragraph-conversion.test.js +213 -0
  7. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +1 -0
  8. package/lib/__tests__/extensions.test.js +209 -0
  9. package/lib/__tests__/extensions.test.js.map +1 -0
  10. package/lib/__tests__/index.test.js +250 -0
  11. package/lib/__tests__/index.test.js.map +1 -0
  12. package/lib/__tests__/size-utils.test.js +57 -0
  13. package/lib/__tests__/size-utils.test.js.map +1 -0
  14. package/lib/__tests__/theme.test.js +17 -0
  15. package/lib/__tests__/theme.test.js.map +1 -0
  16. package/lib/components/EditableHtml.js +4 -2
  17. package/lib/components/EditableHtml.js.map +1 -1
  18. package/lib/components/__tests__/AltDialog.test.js +201 -0
  19. package/lib/components/__tests__/AltDialog.test.js.map +1 -0
  20. package/lib/components/__tests__/CharacterPicker.test.js +455 -0
  21. package/lib/components/__tests__/CharacterPicker.test.js.map +1 -0
  22. package/lib/components/__tests__/CssIcon.test.js +58 -0
  23. package/lib/components/__tests__/CssIcon.test.js.map +1 -0
  24. package/lib/components/__tests__/DragInTheBlank.test.js +295 -0
  25. package/lib/components/__tests__/DragInTheBlank.test.js.map +1 -0
  26. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +345 -0
  27. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +1 -0
  28. package/lib/components/__tests__/ImageToolbar.test.js +185 -0
  29. package/lib/components/__tests__/ImageToolbar.test.js.map +1 -0
  30. package/lib/components/__tests__/InlineDropdown.test.js +839 -0
  31. package/lib/components/__tests__/InlineDropdown.test.js.map +1 -0
  32. package/lib/components/__tests__/InsertImageHandler.test.js +171 -0
  33. package/lib/components/__tests__/InsertImageHandler.test.js.map +1 -0
  34. package/lib/components/__tests__/MediaDialog.test.js +433 -0
  35. package/lib/components/__tests__/MediaDialog.test.js.map +1 -0
  36. package/lib/components/__tests__/MediaToolbar.test.js +126 -0
  37. package/lib/components/__tests__/MediaToolbar.test.js.map +1 -0
  38. package/lib/components/__tests__/MediaWrapper.test.js +96 -0
  39. package/lib/components/__tests__/MediaWrapper.test.js.map +1 -0
  40. package/lib/components/__tests__/MenuBar.test.js +502 -0
  41. package/lib/components/__tests__/MenuBar.test.js.map +1 -0
  42. package/lib/components/__tests__/RespArea.test.js +171 -0
  43. package/lib/components/__tests__/RespArea.test.js.map +1 -0
  44. package/lib/components/__tests__/TableIcons.test.js +153 -0
  45. package/lib/components/__tests__/TableIcons.test.js.map +1 -0
  46. package/lib/components/__tests__/TextAlign.test.js +209 -0
  47. package/lib/components/__tests__/TextAlign.test.js.map +1 -0
  48. package/lib/components/__tests__/TiptapContainer.test.js +196 -0
  49. package/lib/components/__tests__/TiptapContainer.test.js.map +1 -0
  50. package/lib/components/__tests__/characterUtils.test.js +178 -0
  51. package/lib/components/__tests__/characterUtils.test.js.map +1 -0
  52. package/lib/components/__tests__/choice.test.js +213 -0
  53. package/lib/components/__tests__/choice.test.js.map +1 -0
  54. package/lib/components/__tests__/custom-popper.test.js +108 -0
  55. package/lib/components/__tests__/custom-popper.test.js.map +1 -0
  56. package/lib/components/__tests__/done-button.test.js +72 -0
  57. package/lib/components/__tests__/done-button.test.js.map +1 -0
  58. package/lib/components/__tests__/toolbar-buttons.test.js +277 -0
  59. package/lib/components/__tests__/toolbar-buttons.test.js.map +1 -0
  60. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +90 -0
  61. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +1 -0
  62. package/lib/components/respArea/DragInTheBlank/choice.js +3 -0
  63. package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -1
  64. package/lib/components/respArea/MathTemplated.js +2 -2
  65. package/lib/components/respArea/MathTemplated.js.map +1 -1
  66. package/lib/components/respArea/__tests__/MathTemplated.test.js +217 -0
  67. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +1 -0
  68. package/lib/extensions/__tests__/css.test.js +214 -0
  69. package/lib/extensions/__tests__/css.test.js.map +1 -0
  70. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +175 -0
  71. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +1 -0
  72. package/lib/extensions/__tests__/divNode.test.js +108 -0
  73. package/lib/extensions/__tests__/divNode.test.js.map +1 -0
  74. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +50 -0
  75. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +1 -0
  76. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +60 -0
  77. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +1 -0
  78. package/lib/extensions/__tests__/extended-list-item.test.js +13 -0
  79. package/lib/extensions/__tests__/extended-list-item.test.js.map +1 -0
  80. package/lib/extensions/__tests__/extended-table-cell.test.js +15 -0
  81. package/lib/extensions/__tests__/extended-table-cell.test.js.map +1 -0
  82. package/lib/extensions/__tests__/extended-table.test.js +200 -0
  83. package/lib/extensions/__tests__/extended-table.test.js.map +1 -0
  84. package/lib/extensions/__tests__/image-component.test.js +432 -0
  85. package/lib/extensions/__tests__/image-component.test.js.map +1 -0
  86. package/lib/extensions/__tests__/image.test.js +313 -0
  87. package/lib/extensions/__tests__/image.test.js.map +1 -0
  88. package/lib/extensions/__tests__/math.test.js +1399 -0
  89. package/lib/extensions/__tests__/math.test.js.map +1 -0
  90. package/lib/extensions/__tests__/media-node-view.test.js +307 -0
  91. package/lib/extensions/__tests__/media-node-view.test.js.map +1 -0
  92. package/lib/extensions/__tests__/media.test.js +292 -0
  93. package/lib/extensions/__tests__/media.test.js.map +1 -0
  94. package/lib/extensions/__tests__/responseArea.test.js +736 -0
  95. package/lib/extensions/__tests__/responseArea.test.js.map +1 -0
  96. package/lib/extensions/image-component.js +9 -6
  97. package/lib/extensions/image-component.js.map +1 -1
  98. package/lib/extensions/responseArea.js +7 -1
  99. package/lib/extensions/responseArea.js.map +1 -1
  100. package/lib/utils/__tests__/helper.test.js +107 -0
  101. package/lib/utils/__tests__/helper.test.js.map +1 -0
  102. package/lib/utils/__tests__/toolbar.test.js +38 -0
  103. package/lib/utils/__tests__/toolbar.test.js.map +1 -0
  104. package/package.json +7 -7
  105. package/src/components/EditableHtml.jsx +5 -3
  106. package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +72 -0
  107. package/src/components/respArea/DragInTheBlank/choice.jsx +3 -0
  108. package/src/components/respArea/MathTemplated.jsx +1 -1
  109. package/src/components/respArea/__tests__/MathTemplated.test.jsx +1 -1
  110. package/src/extensions/__tests__/image-component.test.jsx +1 -0
  111. package/src/extensions/__tests__/responseArea.test.js +57 -3
  112. package/src/extensions/image-component.jsx +8 -6
  113. package/src/extensions/responseArea.js +7 -1
  114. package/LICENSE.md +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseArea.test.js","names":["_responseArea","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","Extension","create","fn","config","Node","ReactNodeViewRenderer","component","Plugin","PluginKey","key","TextSelection","near","pos","dir","type","doc","NodeSelection","__esModule","React","createElement","describe","it","expect","ResponseAreaExtension","name","toBe","options","addOptions","toHaveProperty","context","plugins","addProseMirrorPlugins","call","Array","isArray","toHaveLength","maxResponseAreas","commands","addCommands","_typeof2","insertResponseArea","refreshResponseArea","refreshCommand","mockNode","attrs","index","value","mockTr","setNodeMarkup","setSelection","mockState","selection","from","$from","nodeAfter","tr","mockCommands","focus","mockDispatch","state","dispatch","toHaveBeenCalled","not","toThrow","updated","toBeDefined","beforeEach","resetModules","buildInsertCommand","undefined","_require","createDoc","existingCount","typeName","descendants","callback","i","content","size","insert","mockInlineNode","nodeSize","mockDoc","schema","nodes","inline_dropdown","result","toHaveBeenCalledWith","id","runOnce","calls","toEqual","buildStateAndTr","_ref","_ref$withResolve","withResolve","resolve","resolved","each","replace","_buildStateAndTr","_require2","_buildStateAndTr2","_require3","ExplicitConstructedResponseNode","inline","group","atom","attributes","addAttributes","rules","parseHTML","renderHTML","HTMLAttributes","addNodeView","DragInTheBlankNode","inTable","InlineDropdownNode"],"sources":["../../../src/extensions/__tests__/responseArea.test.js"],"sourcesContent":["import {\n DragInTheBlankNode,\n ExplicitConstructedResponseNode,\n InlineDropdownNode,\n ResponseAreaExtension,\n} from '../responseArea';\n\njest.mock('@tiptap/core', () => ({\n Extension: { create: jest.fn((config) => config) },\n Node: { create: jest.fn((config) => config) },\n}));\n\njest.mock('@tiptap/react', () => ({\n Node: { create: jest.fn((config) => config) },\n ReactNodeViewRenderer: jest.fn((component) => component),\n}));\n\njest.mock('prosemirror-state', () => ({\n Plugin: jest.fn(function (config) {\n return config;\n }),\n PluginKey: jest.fn(function (key) {\n this.key = key;\n }),\n TextSelection: {\n near: jest.fn((pos, dir) => ({ type: 'text', pos, dir })),\n create: jest.fn((doc, pos) => ({ type: 'text', pos })),\n },\n NodeSelection: {\n create: jest.fn((doc, pos) => ({ type: 'node', pos })),\n },\n}));\n\njest.mock('../../components/respArea/ExplicitConstructedResponse', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"explicit-constructed-response\" />),\n}));\n\njest.mock('../../components/respArea/DragInTheBlank/DragInTheBlank', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"drag-in-the-blank\" />),\n}));\n\njest.mock('../../components/respArea/InlineDropdown', () => ({\n __esModule: true,\n default: jest.fn(() => <div data-testid=\"inline-dropdown\" />),\n}));\n\ndescribe('ResponseAreaExtension', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(ResponseAreaExtension.name).toBe('responseArea');\n });\n });\n\n describe('addOptions', () => {\n it('returns default options', () => {\n const options = ResponseAreaExtension.addOptions();\n\n expect(options).toHaveProperty('maxResponseAreas', null);\n expect(options).toHaveProperty('error', null);\n expect(options).toHaveProperty('options', null);\n expect(options).toHaveProperty('respAreaToolbar', null);\n expect(options).toHaveProperty('onHandleAreaChange', null);\n });\n });\n\n describe('addProseMirrorPlugins', () => {\n it('returns empty array when no type specified', () => {\n const context = {\n options: {},\n };\n\n const plugins = ResponseAreaExtension.addProseMirrorPlugins.call(context);\n\n expect(Array.isArray(plugins)).toBe(true);\n expect(plugins).toHaveLength(0);\n });\n\n it('returns plugin array when type is specified', () => {\n const context = {\n options: {\n type: 'explicit-constructed-response',\n maxResponseAreas: 5,\n },\n };\n\n const plugins = ResponseAreaExtension.addProseMirrorPlugins.call(context);\n\n expect(Array.isArray(plugins)).toBe(true);\n expect(plugins).toHaveLength(1);\n expect(plugins[0]).toHaveProperty('key');\n expect(plugins[0]).toHaveProperty('view');\n });\n });\n\n describe('addCommands', () => {\n it('returns insertResponseArea command', () => {\n const commands = ResponseAreaExtension.addCommands();\n\n expect(commands).toHaveProperty('insertResponseArea');\n expect(typeof commands.insertResponseArea).toBe('function');\n });\n\n it('returns refreshResponseArea command', () => {\n const commands = ResponseAreaExtension.addCommands();\n\n expect(commands).toHaveProperty('refreshResponseArea');\n expect(typeof commands.refreshResponseArea).toBe('function');\n });\n\n it('refreshResponseArea handles node with attrs safely', () => {\n const context = {\n options: {\n type: 'explicit-constructed-response',\n maxResponseAreas: 5,\n },\n };\n\n const commands = ResponseAreaExtension.addCommands.call(context);\n const refreshCommand = commands.refreshResponseArea();\n\n // Mock transaction and state\n const mockNode = {\n attrs: {\n index: '0',\n value: 'test',\n },\n };\n\n const mockTr = {\n setNodeMarkup: jest.fn(),\n setSelection: jest.fn(),\n };\n\n const mockState = {\n selection: {\n from: 0,\n $from: {\n nodeAfter: mockNode,\n },\n },\n tr: mockTr,\n };\n\n const mockCommands = {\n focus: jest.fn(),\n };\n\n const mockDispatch = jest.fn();\n\n refreshCommand({\n tr: mockTr,\n state: mockState,\n commands: mockCommands,\n dispatch: mockDispatch,\n });\n\n expect(mockTr.setNodeMarkup).toHaveBeenCalled();\n });\n\n it('refreshResponseArea handles node without attrs safely (optional chaining)', () => {\n const context = {\n options: {\n type: 'explicit-constructed-response',\n maxResponseAreas: 5,\n },\n };\n\n const commands = ResponseAreaExtension.addCommands.call(context);\n const refreshCommand = commands.refreshResponseArea();\n\n // Mock transaction and state with node that has no attrs\n const mockNode = null;\n\n const mockTr = {\n setNodeMarkup: jest.fn(),\n setSelection: jest.fn(),\n };\n\n const mockState = {\n selection: {\n from: 0,\n $from: {\n nodeAfter: mockNode,\n },\n },\n tr: mockTr,\n };\n\n const mockCommands = {\n focus: jest.fn(),\n };\n\n const mockDispatch = jest.fn();\n\n // This should not throw an error due to optional chaining on node?.attrs\n expect(() => {\n refreshCommand({\n tr: mockTr,\n state: mockState,\n commands: mockCommands,\n dispatch: mockDispatch,\n });\n }).not.toThrow();\n });\n\n it('refreshResponseArea updates timestamp in node attributes', () => {\n const context = {\n options: {\n type: 'explicit-constructed-response',\n maxResponseAreas: 5,\n },\n };\n\n const commands = ResponseAreaExtension.addCommands.call(context);\n const refreshCommand = commands.refreshResponseArea();\n\n const mockNode = {\n attrs: {\n index: '0',\n value: 'test',\n updated: '1234567890',\n },\n };\n\n const mockTr = {\n setNodeMarkup: jest.fn((pos, type, attrs) => {\n // Verify that updated timestamp is being set\n expect(attrs.updated).toBeDefined();\n expect(attrs.updated).not.toBe('1234567890');\n }),\n setSelection: jest.fn(),\n };\n\n const mockState = {\n selection: {\n from: 0,\n $from: {\n nodeAfter: mockNode,\n },\n },\n tr: mockTr,\n };\n\n const mockCommands = {\n focus: jest.fn(),\n };\n\n const mockDispatch = jest.fn();\n\n refreshCommand({\n tr: mockTr,\n state: mockState,\n commands: mockCommands,\n dispatch: mockDispatch,\n });\n\n expect(mockTr.setNodeMarkup).toHaveBeenCalled();\n });\n\n describe('insertResponseArea', () => {\n beforeEach(() => {\n jest.resetModules();\n });\n\n const buildInsertCommand = (type = 'inline-dropdown') => {\n const { ResponseAreaExtension } = require('../responseArea');\n const context = {\n options: {\n type,\n maxResponseAreas: 5,\n },\n };\n const commands = ResponseAreaExtension.addCommands.call(context);\n return commands.insertResponseArea(type);\n };\n\n const createDoc = (existingCount, typeName = 'inline_dropdown') => ({\n descendants: jest.fn((callback) => {\n for (let i = 0; i < existingCount; i += 1) {\n callback({ type: { name: typeName } }, i);\n }\n }),\n content: { size: 50 },\n });\n\n it('assigns index 1 and id 1 on the first insert', () => {\n const insert = buildInsertCommand();\n const mockInlineNode = { nodeSize: 1 };\n const create = jest.fn(() => mockInlineNode);\n const mockDoc = createDoc(0);\n const mockTr = {\n insert: jest.fn(),\n doc: mockDoc,\n setSelection: jest.fn(),\n };\n const state = {\n schema: {\n nodes: {\n inline_dropdown: { create },\n },\n },\n doc: mockDoc,\n selection: { from: 5 },\n };\n const mockDispatch = jest.fn();\n const mockCommands = { focus: jest.fn() };\n\n const result = insert({\n tr: mockTr,\n state,\n dispatch: mockDispatch,\n commands: mockCommands,\n });\n\n expect(result).toBe(true);\n expect(create).toHaveBeenCalledWith({\n index: '1',\n id: '1',\n value: '',\n });\n expect(mockTr.insert).toHaveBeenCalledWith(5, mockInlineNode);\n expect(mockDispatch).toHaveBeenCalled();\n });\n\n it('assigns consecutive indices on repeated inserts', () => {\n const insert = buildInsertCommand();\n const mockInlineNode = { nodeSize: 1 };\n const create = jest.fn(() => mockInlineNode);\n const mockDoc = createDoc(0);\n\n const runOnce = () => {\n const mockTr = {\n insert: jest.fn(),\n doc: mockDoc,\n setSelection: jest.fn(),\n };\n const state = {\n schema: {\n nodes: {\n inline_dropdown: { create },\n },\n },\n doc: mockDoc,\n selection: { from: 1 },\n };\n insert({\n tr: mockTr,\n state,\n dispatch: jest.fn(),\n commands: { focus: jest.fn() },\n });\n };\n\n runOnce();\n runOnce();\n\n expect(create.mock.calls[0][0]).toEqual({ index: '1', id: '1', value: '' });\n expect(create.mock.calls[1][0]).toEqual({ index: '2', id: '2', value: '' });\n });\n\n it('returns false when maxResponseAreas is reached', () => {\n const insert = buildInsertCommand();\n const mockInlineNode = { nodeSize: 1 };\n const create = jest.fn(() => mockInlineNode);\n const mockDoc = createDoc(5);\n const mockTr = {\n insert: jest.fn(),\n doc: mockDoc,\n setSelection: jest.fn(),\n };\n const state = {\n schema: {\n nodes: {\n inline_dropdown: { create },\n },\n },\n doc: mockDoc,\n selection: { from: 5 },\n };\n\n const result = insert({\n tr: mockTr,\n state,\n dispatch: jest.fn(),\n commands: { focus: jest.fn() },\n });\n\n expect(result).toBe(false);\n expect(create).not.toHaveBeenCalled();\n expect(mockTr.insert).not.toHaveBeenCalled();\n });\n\n describe('selection after insert', () => {\n const buildStateAndTr = (typeName, { withResolve = false } = {}) => {\n const mockInlineNode = { nodeSize: 1 };\n const create = jest.fn(() => mockInlineNode);\n const mockDoc = {\n descendants: jest.fn(),\n content: { size: 50 },\n ...(withResolve ? { resolve: jest.fn((pos) => ({ resolved: pos })) } : {}),\n };\n const mockTr = {\n insert: jest.fn(),\n doc: mockDoc,\n setSelection: jest.fn(),\n };\n const state = {\n schema: { nodes: { [typeName]: { create } } },\n doc: mockDoc,\n selection: { from: 5 },\n };\n\n return { mockTr, state };\n };\n\n it.each(['inline-dropdown', 'explicit-constructed-response'])(\n 'sets a NodeSelection on the inserted node for %s',\n (type) => {\n const insert = buildInsertCommand(type);\n const typeName = type.replace(/-/g, '_');\n const { mockTr, state } = buildStateAndTr(typeName);\n const { NodeSelection, TextSelection } = require('prosemirror-state');\n\n insert({ tr: mockTr, state, dispatch: jest.fn(), commands: { focus: jest.fn() } });\n\n expect(NodeSelection.create).toHaveBeenCalledWith(mockTr.doc, 5);\n expect(TextSelection.near).not.toHaveBeenCalled();\n expect(mockTr.setSelection).toHaveBeenCalledWith({ type: 'node', pos: 5 });\n },\n );\n\n it('sets a TextSelection just after the inserted node for math-templated (no NodeSelection)', () => {\n const insert = buildInsertCommand('math-templated');\n const { mockTr, state } = buildStateAndTr('math_templated', { withResolve: true });\n const { NodeSelection, TextSelection } = require('prosemirror-state');\n\n insert({ tr: mockTr, state, dispatch: jest.fn(), commands: { focus: jest.fn() } });\n\n expect(NodeSelection.create).not.toHaveBeenCalled();\n // usedPos (5) + nodeSize (1) === 6\n expect(mockTr.doc.resolve).toHaveBeenCalledWith(6);\n expect(TextSelection.near).toHaveBeenCalledWith({ resolved: 6 }, 1);\n expect(mockTr.setSelection).toHaveBeenCalledWith({ type: 'text', pos: { resolved: 6 }, dir: 1 });\n });\n });\n });\n });\n});\n\ndescribe('ExplicitConstructedResponseNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(ExplicitConstructedResponseNode.name).toBe('explicit_constructed_response');\n });\n\n it('is inline', () => {\n expect(ExplicitConstructedResponseNode.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(ExplicitConstructedResponseNode.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(ExplicitConstructedResponseNode.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns required attributes', () => {\n const attributes = ExplicitConstructedResponseNode.addAttributes();\n\n expect(attributes).toHaveProperty('index');\n expect(attributes).toHaveProperty('value');\n expect(attributes).toHaveProperty('updated');\n\n expect(attributes.index).toEqual({ default: null });\n expect(attributes.value).toEqual({ default: '' });\n expect(attributes.updated).toEqual({ default: '' });\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules', () => {\n const rules = ExplicitConstructedResponseNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag');\n });\n });\n\n describe('renderHTML', () => {\n it('renders span with attributes', () => {\n const result = ExplicitConstructedResponseNode.renderHTML({\n HTMLAttributes: {\n index: '1',\n id: '1',\n value: 'test',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-type', 'explicit_constructed_response');\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = ExplicitConstructedResponseNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n});\n\ndescribe('DragInTheBlankNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(DragInTheBlankNode.name).toBe('drag_in_the_blank');\n });\n\n it('is inline', () => {\n expect(DragInTheBlankNode.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(DragInTheBlankNode.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(DragInTheBlankNode.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns required attributes', () => {\n const attributes = DragInTheBlankNode.addAttributes();\n\n expect(attributes).toHaveProperty('index');\n expect(attributes).toHaveProperty('id');\n expect(attributes).toHaveProperty('value');\n expect(attributes).toHaveProperty('inTable');\n expect(attributes).toHaveProperty('updated');\n\n expect(attributes.index).toEqual({ default: null });\n expect(attributes.id).toEqual({ default: null });\n expect(attributes.value).toEqual({ default: '' });\n expect(attributes.inTable).toEqual({ default: null });\n expect(attributes.updated).toEqual({ default: '' });\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules', () => {\n const rules = DragInTheBlankNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag');\n });\n });\n\n describe('renderHTML', () => {\n it('renders span with attributes', () => {\n const result = DragInTheBlankNode.renderHTML({\n HTMLAttributes: {\n index: '1',\n id: '1',\n value: 'test',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-type', 'drag_in_the_blank');\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = DragInTheBlankNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n});\n\ndescribe('InlineDropdownNode', () => {\n describe('configuration', () => {\n it('has correct name', () => {\n expect(InlineDropdownNode.name).toBe('inline_dropdown');\n });\n\n it('is inline', () => {\n expect(InlineDropdownNode.inline).toBe(true);\n });\n\n it('is in inline group', () => {\n expect(InlineDropdownNode.group).toBe('inline');\n });\n\n it('is atomic', () => {\n expect(InlineDropdownNode.atom).toBe(true);\n });\n });\n\n describe('addAttributes', () => {\n it('returns required attributes', () => {\n const attributes = InlineDropdownNode.addAttributes();\n\n expect(attributes).toHaveProperty('index');\n expect(attributes).toHaveProperty('value');\n expect(attributes).toHaveProperty('updated');\n\n expect(attributes.index).toEqual({ default: null });\n expect(attributes.value).toEqual({ default: '' });\n expect(attributes.updated).toEqual({ default: '' });\n });\n });\n\n describe('parseHTML', () => {\n it('returns parsing rules', () => {\n const rules = InlineDropdownNode.parseHTML();\n\n expect(Array.isArray(rules)).toBe(true);\n expect(rules).toHaveLength(1);\n expect(rules[0]).toHaveProperty('tag');\n });\n });\n\n describe('renderHTML', () => {\n it('renders span with attributes', () => {\n const result = InlineDropdownNode.renderHTML({\n HTMLAttributes: {\n index: '1',\n id: '1',\n value: 'test',\n },\n });\n\n expect(result[0]).toBe('span');\n expect(result[1]).toHaveProperty('data-type', 'inline_dropdown');\n });\n });\n\n describe('addNodeView', () => {\n it('returns ReactNodeViewRenderer result', () => {\n const result = InlineDropdownNode.addNodeView();\n\n expect(result).toBeDefined();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -150,7 +150,7 @@ function ImageComponent(props) {
150
150
  editor.view.dispatch(editor.state.tr.setNodeMarkup(nodePos, undefined, _objectSpread(_objectSpread({}, currentNode.attrs), newAttrs)));
151
151
  }, [editor, findNodePos]);
152
152
  var applySizeData = (0, _react.useCallback)(function () {
153
- if (!node.attrs.width || !imgRef.current) return;
153
+ if (!node.attrs.width || !imgRef.current || !imgRef.current.naturalWidth) return;
154
154
  var resizePercent = getPercentFromWidth(node.attrs.width);
155
155
  if (node.attrs.resizePercent === resizePercent) return;
156
156
  updateThisNode({
@@ -166,7 +166,7 @@ function ImageComponent(props) {
166
166
  }, [node, pos]);
167
167
  (0, _react.useEffect)(function () {
168
168
  if (selected) {
169
- if (onlyThisNodeSelected) {
169
+ if (onlyThisNodeSelected && editor.isEditable) {
170
170
  var _node$attrs$src, _node$attrs, _options$imageHandlin;
171
171
  // Only open the upload UI for a fresh placeholder. Remounting after tab switch
172
172
  // would otherwise call insertImageRequested again and reopen the file modal.
@@ -181,11 +181,11 @@ function ImageComponent(props) {
181
181
  } else {
182
182
  setShowToolbar(selected);
183
183
  }
184
- }, [onlyThisNodeSelected, selected]);
184
+ }, [onlyThisNodeSelected, selected, editor.isEditable]);
185
185
  (0, _react.useEffect)(function () {
186
186
  applySizeData();
187
- var resizeHandle = resizeRef.current;
188
- if (resizeHandle) {
187
+ var resizeHandle = resizeRef === null || resizeRef === void 0 ? void 0 : resizeRef.current;
188
+ if (resizeHandle && editor.isEditable) {
189
189
  resizeHandle.addEventListener('mousedown', initResize, false);
190
190
  }
191
191
  return function () {
@@ -300,7 +300,10 @@ function ImageComponent(props) {
300
300
  alt: node.attrs.alt
301
301
  })), /*#__PURE__*/_react["default"].createElement(StyledResize, {
302
302
  ref: resizeRef,
303
- className: "resize"
303
+ className: "resize",
304
+ style: {
305
+ display: editor.isEditable ? undefined : 'none'
306
+ }
304
307
  }))), showToolbar && editor._tiptapContainerEl && /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement("div", {
305
308
  ref: toolbarRef,
306
309
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"image-component.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_isEqual","_debug","_LinearProgress","_styles","_react2","_reactDom","_InsertImageHandler","_ImageToolbar","_customToolbarWrapper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","StyledProgress","styled","LinearProgress","shouldForwardProp","prop","_ref","hideProgress","position","left","width","top","transition","opacity","StyledRoot","includes","_ref2","loading","pendingDelete","display","StyledImageContainer","_ref3","theme","alignItems","StyledImage","_ref4","active","border","concat","palette","primary","main","StyledResize","_ref5","backgroundColor","cursor","height","borderRadius","marginLeft","marginRight","sizePx","s","ImageComponent","props","_options$imageHandlin6","node","editor","attributes","onFocus","getPos","selected","options","_props$maxImageWidth","maxImageWidth","_props$maxImageHeight","maxImageHeight","alt","attrs","pos","selFrom","state","selection","from","selTo","to","onlyThisNodeSelected","useMemo","nodeSize","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","latestNodeRef","useRef","imgRef","resizeRef","toolbarRef","getPercentFromWidth","useCallback","floored","current","naturalWidth","parseInt","toFixed","findNodePos","key","nodeKey","found","doc","descendants","type","name","updateThisNode","newAttrs","nodePos","currentNode","nodeAt","view","dispatch","tr","setNodeMarkup","undefined","applySizeData","resizePercent","useEffect","_node$attrs$src","_node$attrs","_options$imageHandlin","hasImageSrc","String","src","trim","imageHandling","insertImageRequested","finish","InsertImageHandler","resizeHandle","addEventListener","initResize","removeEventListener","loadImage","box","style","w","Math","min","h","naturalHeight","update","isEqual","updateAspect","initial","next","keepAspect","resizeType","ratio","startResize","bounds","target","getBoundingClientRect","clientX","clientY","onChange","newValues","stopResize","window","objectFit","flexAlign","center","right","alignment","createElement","NodeViewWrapper","loaded","deleteStatus","justifyContent","mode","value","percent","onDragStart","preventDefault","_extends2","draggable","ref","onLoad","className","_tiptapContainerEl","ReactDOM","createPortal","zIndex","background","boxShadow","showDone","deletable","toolbarOpts","onDelete","_options$imageHandlin2","_options$imageHandlin3","commands","focus","onDone","_options$imageHandlin4","_options$imageHandlin5","disableImageAlignmentButtons","imageLoaded","propTypes","PropTypes","object","isRequired","func","number","_default","exports"],"sources":["../../src/extensions/image-component.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash-es/isEqual';\nimport debug from 'debug';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { styled } from '@mui/material/styles';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport ReactDOM from 'react-dom';\nimport InsertImageHandler from '../components/image/InsertImageHandler';\nimport ImageToolbar from '../components/image/ImageToolbar';\nimport CustomToolbarWrapper from './custom-toolbar-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst StyledProgress = styled(LinearProgress, {\n shouldForwardProp: (prop) => prop !== 'hideProgress',\n})(({ hideProgress }) => ({\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear',\n ...(hideProgress && {\n opacity: 0,\n }),\n}));\n\nconst StyledRoot = styled('div', {\n shouldForwardProp: (prop) => !['active', 'loading', 'pendingDelete'].includes(prop),\n})(({ loading, pendingDelete }) => ({\n position: 'relative',\n display: 'flex',\n transition: 'opacity 200ms linear',\n ...(loading && {\n opacity: 0.3,\n }),\n ...(pendingDelete && {\n opacity: 0.3,\n }),\n}));\n\nconst StyledImageContainer = styled('div')(({ theme }) => ({\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n '&&:hover > .resize': {\n display: 'block',\n },\n}));\n\nconst StyledImage = styled('img', {\n shouldForwardProp: (prop) => prop !== 'active',\n})(({ theme, active }) => ({\n border: active ? `solid 1px ${theme.palette.primary.main}` : 'solid 1px transparent',\n}));\n\nconst StyledResize = styled('div')(({ theme }) => ({\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none',\n}));\n\nconst sizePx = (s) => (s ? `${s}px` : 'calc(20px)');\n\nfunction ImageComponent(props) {\n const {\n node,\n editor,\n attributes,\n onFocus,\n getPos,\n selected,\n options,\n maxImageWidth = 700,\n maxImageHeight = 900,\n } = props;\n const { alt } = node.attrs;\n const pos = getPos();\n\n const selFrom = editor.state.selection.from;\n const selTo = editor.state.selection.to;\n const onlyThisNodeSelected = useMemo(() => selFrom + node.nodeSize === selTo, [selFrom, selTo, node.nodeSize]);\n\n const [showToolbar, setShowToolbar] = useState(false);\n\n const latestNodeRef = useRef(node);\n const imgRef = useRef(null);\n const resizeRef = useRef(null);\n const toolbarRef = useRef(null);\n\n const getPercentFromWidth = useCallback((width) => {\n const floored = (width / imgRef.current.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n }, []);\n\n const findNodePos = useCallback(() => {\n const key = latestNodeRef.current.attrs.nodeKey;\n let found = null;\n editor.state.doc.descendants((n, pos) => {\n if (found !== null) return false;\n if (n.type.name === 'imageUploadNode' && n.attrs.nodeKey === key) {\n found = pos;\n return false;\n }\n });\n return found;\n }, [editor]);\n\n // dispatch an attribute update targeted precisely at this node by nodeKey.\n const updateThisNode = useCallback(\n (newAttrs) => {\n const nodePos = findNodePos();\n if (nodePos === null) return;\n const currentNode = editor.state.doc.nodeAt(nodePos);\n if (!currentNode) return;\n editor.view.dispatch(editor.state.tr.setNodeMarkup(nodePos, undefined, { ...currentNode.attrs, ...newAttrs }));\n },\n [editor, findNodePos],\n );\n\n const applySizeData = useCallback(() => {\n if (!node.attrs.width || !imgRef.current) return;\n const resizePercent = getPercentFromWidth(node.attrs.width);\n if (node.attrs.resizePercent === resizePercent) return;\n updateThisNode({ resizePercent });\n }, [node.attrs.width, node.attrs.resizePercent, getPercentFromWidth, updateThisNode]);\n\n // keep ref in sync with latest node\n useEffect(() => {\n latestNodeRef.current = { ...node, pos };\n }, [node, pos]);\n\n useEffect(() => {\n if (selected) {\n if (onlyThisNodeSelected) {\n // Only open the upload UI for a fresh placeholder. Remounting after tab switch\n // would otherwise call insertImageRequested again and reopen the file modal.\n const hasImageSrc = String(node.attrs?.src ?? '').trim();\n\n if (!hasImageSrc && options.imageHandling?.insertImageRequested) {\n options.imageHandling.insertImageRequested(\n editor,\n [node, pos],\n (finish) => new InsertImageHandler(editor, [node, pos], finish),\n );\n }\n\n setShowToolbar(selected);\n }\n } else {\n setShowToolbar(selected);\n }\n }, [onlyThisNodeSelected, selected]);\n\n useEffect(() => {\n applySizeData();\n\n const resizeHandle = resizeRef.current;\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', initResize, false);\n }\n return () => {\n if (resizeHandle) {\n resizeHandle.removeEventListener('mousedown', initResize, false);\n }\n };\n }, []);\n\n useEffect(() => {\n applySizeData();\n });\n\n const loadImage = useCallback(() => {\n const box = imgRef.current;\n if (!box) return;\n\n if (!box.style.width || box.style.width === 'calc(20px)') {\n const w = Math.min(box.naturalWidth, maxImageWidth);\n const h = Math.min(box.naturalHeight, maxImageHeight);\n\n box.style.width = `${w}px`;\n box.style.height = `${h}px`;\n\n const update = { width: w, height: h };\n if (!isEqual(update, { width: node.attrs.width, height: node.attrs.height })) {\n updateThisNode(update);\n }\n }\n }, [node.attrs.width, node.attrs.height, maxImageWidth, maxImageHeight, updateThisNode]);\n\n const updateAspect = (initial, next, keepAspect = true, resizeType) => {\n if (keepAspect) {\n const ratio = initial.width / initial.height;\n if (resizeType === 'height') return { width: next.height * ratio, height: next.height };\n return { width: next.width, height: next.width / ratio };\n }\n return next;\n };\n\n const startResize = useCallback(\n (e) => {\n const box = imgRef.current;\n if (!box) return;\n\n const bounds = e.target.getBoundingClientRect();\n const initial = { width: box.naturalWidth, height: box.naturalHeight };\n\n const next = updateAspect(initial, {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top,\n });\n\n if (next.width > 50 && next.height > 50 && next.width <= 700 && next.height <= 900) {\n box.style.width = `${next.width}px`;\n box.style.height = `${next.height}px`;\n\n updateThisNode({ width: next.width, height: next.height });\n }\n },\n [editor, updateThisNode],\n );\n\n const onChange = useCallback(\n (newValues) => {\n updateThisNode(newValues);\n },\n [editor, updateThisNode],\n );\n\n const stopResize = useCallback(() => {\n window.removeEventListener('mousemove', startResize);\n window.removeEventListener('mouseup', stopResize);\n }, [startResize]);\n\n const initResize = useCallback(() => {\n window.addEventListener('mousemove', startResize);\n window.addEventListener('mouseup', stopResize);\n }, [startResize, stopResize]);\n\n const style = {\n width: sizePx(node.attrs.width),\n height: sizePx(node.attrs.height),\n objectFit: 'contain',\n };\n\n const flexAlign = { left: 'flex-start', center: 'center', right: 'flex-end' }[node.attrs.alignment] || 'flex-start';\n\n return (\n <NodeViewWrapper>\n <StyledRoot\n onFocus={onFocus}\n loading={!node.attrs.loaded}\n pendingDelete={node.attrs.deleteStatus === 'pending'}\n style={{ justifyContent: flexAlign }}\n >\n <StyledProgress mode=\"determinate\" value={node.attrs.percent || 0} hideProgress={node.attrs.loaded} />\n\n <StyledImageContainer onDragStart={(e) => e.preventDefault()}>\n <StyledImage\n {...attributes}\n active={selected && node.attrs.loaded}\n draggable={false}\n ref={imgRef}\n src={node.attrs.src}\n style={style}\n onLoad={loadImage}\n alt={node.attrs.alt}\n />\n <StyledResize ref={resizeRef} className=\"resize\" />\n </StyledImageContainer>\n </StyledRoot>\n\n {showToolbar &&\n editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <div\n ref={toolbarRef}\n style={{\n zIndex: 20,\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n width: '100%',\n }}\n >\n <CustomToolbarWrapper\n showDone\n deletable\n toolbarOpts={options.toolbarOpts || {}}\n onDelete={() => {\n const nodePos = findNodePos();\n if (nodePos === null) return;\n\n options.imageHandling?.onDelete?.(latestNodeRef.current);\n\n editor.view.dispatch(\n editor.state.tr.delete(nodePos, nodePos + editor.state.doc.nodeAt(nodePos).nodeSize),\n );\n setShowToolbar(false);\n editor.commands.focus();\n }}\n onDone={() => {\n setShowToolbar(false);\n options.imageHandling?.onDone?.(editor);\n editor.commands.focus('end');\n }}\n >\n <ImageToolbar\n disableImageAlignmentButtons={options.imageHandling?.disableImageAlignmentButtons}\n alt={node.attrs.alt}\n imageLoaded={node.attrs.loaded}\n alignment={node.attrs.alignment || 'left'}\n onChange={onChange}\n />\n </CustomToolbarWrapper>\n </div>,\n editor._tiptapContainerEl,\n )}\n </NodeViewWrapper>\n );\n}\n\nImageComponent.propTypes = {\n node: PropTypes.object.isRequired,\n editor: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n};\n\nexport default ImageComponent;\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,MAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,eAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,SAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,mBAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,aAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,qBAAA,GAAAT,sBAAA,CAAAF,OAAA;AAA4D,SAAAD,wBAAAa,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAf,uBAAA,YAAAA,wBAAAa,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAE5D,IAAMkC,GAAG,GAAG,IAAAC,iBAAK,EAAC,gDAAgD,CAAC;AAEnE,IAAMC,cAAc,GAAG,IAAAC,cAAM,EAACC,0BAAc,EAAE;EAC5CC,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAKA,IAAI,KAAK,cAAc;EAAA;AACtD,CAAC,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,YAAY,GAAAD,IAAA,CAAZC,YAAY;EAAA,OAAAf,aAAA;IAChBgB,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,GAAG;IACTC,KAAK,EAAE,aAAa;IACpBC,GAAG,EAAE,IAAI;IACTC,UAAU,EAAE;EAAsB,GAC9BL,YAAY,IAAI;IAClBM,OAAO,EAAE;EACX,CAAC;AAAA,CACD,CAAC;AAEH,IAAMC,UAAU,GAAG,IAAAZ,cAAM,EAAC,KAAK,EAAE;EAC/BE,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAK,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAACU,QAAQ,CAACV,IAAI,CAAC;EAAA;AACrF,CAAC,CAAC,CAAC,UAAAW,KAAA;EAAA,IAAGC,OAAO,GAAAD,KAAA,CAAPC,OAAO;IAAEC,aAAa,GAAAF,KAAA,CAAbE,aAAa;EAAA,OAAA1B,aAAA,CAAAA,aAAA;IAC1BgB,QAAQ,EAAE,UAAU;IACpBW,OAAO,EAAE,MAAM;IACfP,UAAU,EAAE;EAAsB,GAC9BK,OAAO,IAAI;IACbJ,OAAO,EAAE;EACX,CAAC,GACGK,aAAa,IAAI;IACnBL,OAAO,EAAE;EACX,CAAC;AAAA,CACD,CAAC;AAEH,IAAMO,oBAAoB,GAAG,IAAAlB,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAmB,KAAA;EAAA,IAAGC,KAAK,GAAAD,KAAA,CAALC,KAAK;EAAA,OAAQ;IACzDd,QAAQ,EAAE,UAAU;IACpBE,KAAK,EAAE,aAAa;IACpBS,OAAO,EAAE,MAAM;IACfI,UAAU,EAAE,QAAQ;IACpB,oBAAoB,EAAE;MACpBJ,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMK,WAAW,GAAG,IAAAtB,cAAM,EAAC,KAAK,EAAE;EAChCE,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAKA,IAAI,KAAK,QAAQ;EAAA;AAChD,CAAC,CAAC,CAAC,UAAAoB,KAAA;EAAA,IAAGH,KAAK,GAAAG,KAAA,CAALH,KAAK;IAAEI,MAAM,GAAAD,KAAA,CAANC,MAAM;EAAA,OAAQ;IACzBC,MAAM,EAAED,MAAM,gBAAAE,MAAA,CAAgBN,KAAK,CAACO,OAAO,CAACC,OAAO,CAACC,IAAI,IAAK;EAC/D,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,YAAY,GAAG,IAAA9B,cAAM,EAAC,KAAK,CAAC,CAAC,UAAA+B,KAAA;EAAA,IAAGX,KAAK,GAAAW,KAAA,CAALX,KAAK;EAAA,OAAQ;IACjDY,eAAe,EAAEZ,KAAK,CAACO,OAAO,CAACC,OAAO,CAACC,IAAI;IAC3CI,MAAM,EAAE,YAAY;IACpBC,MAAM,EAAE,MAAM;IACd1B,KAAK,EAAE,KAAK;IACZ2B,YAAY,EAAE,CAAC;IACfC,UAAU,EAAE,KAAK;IACjBC,WAAW,EAAE,MAAM;IACnBpB,OAAO,EAAE;EACX,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMqB,MAAM,GAAG,SAATA,MAAMA,CAAIC,CAAC;EAAA,OAAMA,CAAC,MAAAb,MAAA,CAAMa,CAAC,UAAO,YAAY;AAAA,CAAC;AAEnD,SAASC,cAAcA,CAACC,KAAK,EAAE;EAAA,IAAAC,sBAAA;EAC7B,IACEC,IAAI,GASFF,KAAK,CATPE,IAAI;IACJC,MAAM,GAQJH,KAAK,CARPG,MAAM;IACNC,UAAU,GAORJ,KAAK,CAPPI,UAAU;IACVC,OAAO,GAMLL,KAAK,CANPK,OAAO;IACPC,MAAM,GAKJN,KAAK,CALPM,MAAM;IACNC,QAAQ,GAINP,KAAK,CAJPO,QAAQ;IACRC,OAAO,GAGLR,KAAK,CAHPQ,OAAO;IAAAC,oBAAA,GAGLT,KAAK,CAFPU,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAG,GAAG,GAAAA,oBAAA;IAAAE,qBAAA,GAEjBX,KAAK,CADPY,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAG,GAAG,GAAAA,qBAAA;EAEtB,IAAQE,GAAG,GAAKX,IAAI,CAACY,KAAK,CAAlBD,GAAG;EACX,IAAME,GAAG,GAAGT,MAAM,CAAC,CAAC;EAEpB,IAAMU,OAAO,GAAGb,MAAM,CAACc,KAAK,CAACC,SAAS,CAACC,IAAI;EAC3C,IAAMC,KAAK,GAAGjB,MAAM,CAACc,KAAK,CAACC,SAAS,CAACG,EAAE;EACvC,IAAMC,oBAAoB,GAAG,IAAAC,cAAO,EAAC;IAAA,OAAMP,OAAO,GAAGd,IAAI,CAACsB,QAAQ,KAAKJ,KAAK;EAAA,GAAE,CAACJ,OAAO,EAAEI,KAAK,EAAElB,IAAI,CAACsB,QAAQ,CAAC,CAAC;EAE9G,IAAAC,SAAA,GAAsC,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA9CI,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAElC,IAAMI,aAAa,GAAG,IAAAC,aAAM,EAAC9B,IAAI,CAAC;EAClC,IAAM+B,MAAM,GAAG,IAAAD,aAAM,EAAC,IAAI,CAAC;EAC3B,IAAME,SAAS,GAAG,IAAAF,aAAM,EAAC,IAAI,CAAC;EAC9B,IAAMG,UAAU,GAAG,IAAAH,aAAM,EAAC,IAAI,CAAC;EAE/B,IAAMI,mBAAmB,GAAG,IAAAC,kBAAW,EAAC,UAACtE,KAAK,EAAK;IACjD,IAAMuE,OAAO,GAAIvE,KAAK,GAAGkE,MAAM,CAACM,OAAO,CAACC,YAAY,GAAI,CAAC;IACzD,OAAOC,QAAQ,CAACH,OAAO,CAACI,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;EAC9C,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,WAAW,GAAG,IAAAN,kBAAW,EAAC,YAAM;IACpC,IAAMO,GAAG,GAAGb,aAAa,CAACQ,OAAO,CAACzB,KAAK,CAAC+B,OAAO;IAC/C,IAAIC,KAAK,GAAG,IAAI;IAChB3C,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACC,WAAW,CAAC,UAAC1H,CAAC,EAAEyF,GAAG,EAAK;MACvC,IAAI+B,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK;MAChC,IAAIxH,CAAC,CAAC2H,IAAI,CAACC,IAAI,KAAK,iBAAiB,IAAI5H,CAAC,CAACwF,KAAK,CAAC+B,OAAO,KAAKD,GAAG,EAAE;QAChEE,KAAK,GAAG/B,GAAG;QACX,OAAO,KAAK;MACd;IACF,CAAC,CAAC;IACF,OAAO+B,KAAK;EACd,CAAC,EAAE,CAAC3C,MAAM,CAAC,CAAC;;EAEZ;EACA,IAAMgD,cAAc,GAAG,IAAAd,kBAAW,EAChC,UAACe,QAAQ,EAAK;IACZ,IAAMC,OAAO,GAAGV,WAAW,CAAC,CAAC;IAC7B,IAAIU,OAAO,KAAK,IAAI,EAAE;IACtB,IAAMC,WAAW,GAAGnD,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACQ,MAAM,CAACF,OAAO,CAAC;IACpD,IAAI,CAACC,WAAW,EAAE;IAClBnD,MAAM,CAACqD,IAAI,CAACC,QAAQ,CAACtD,MAAM,CAACc,KAAK,CAACyC,EAAE,CAACC,aAAa,CAACN,OAAO,EAAEO,SAAS,EAAA/G,aAAA,CAAAA,aAAA,KAAOyG,WAAW,CAACxC,KAAK,GAAKsC,QAAQ,CAAE,CAAC,CAAC;EAChH,CAAC,EACD,CAACjD,MAAM,EAAEwC,WAAW,CACtB,CAAC;EAED,IAAMkB,aAAa,GAAG,IAAAxB,kBAAW,EAAC,YAAM;IACtC,IAAI,CAACnC,IAAI,CAACY,KAAK,CAAC/C,KAAK,IAAI,CAACkE,MAAM,CAACM,OAAO,EAAE;IAC1C,IAAMuB,aAAa,GAAG1B,mBAAmB,CAAClC,IAAI,CAACY,KAAK,CAAC/C,KAAK,CAAC;IAC3D,IAAImC,IAAI,CAACY,KAAK,CAACgD,aAAa,KAAKA,aAAa,EAAE;IAChDX,cAAc,CAAC;MAAEW,aAAa,EAAbA;IAAc,CAAC,CAAC;EACnC,CAAC,EAAE,CAAC5D,IAAI,CAACY,KAAK,CAAC/C,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAACgD,aAAa,EAAE1B,mBAAmB,EAAEe,cAAc,CAAC,CAAC;;EAErF;EACA,IAAAY,gBAAS,EAAC,YAAM;IACdhC,aAAa,CAACQ,OAAO,GAAA1F,aAAA,CAAAA,aAAA,KAAQqD,IAAI;MAAEa,GAAG,EAAHA;IAAG,EAAE;EAC1C,CAAC,EAAE,CAACb,IAAI,EAAEa,GAAG,CAAC,CAAC;EAEf,IAAAgD,gBAAS,EAAC,YAAM;IACd,IAAIxD,QAAQ,EAAE;MACZ,IAAIe,oBAAoB,EAAE;QAAA,IAAA0C,eAAA,EAAAC,WAAA,EAAAC,qBAAA;QACxB;QACA;QACA,IAAMC,WAAW,GAAGC,MAAM,EAAAJ,eAAA,IAAAC,WAAA,GAAC/D,IAAI,CAACY,KAAK,cAAAmD,WAAA,uBAAVA,WAAA,CAAYI,GAAG,cAAAL,eAAA,cAAAA,eAAA,GAAI,EAAE,CAAC,CAACM,IAAI,CAAC,CAAC;QAExD,IAAI,CAACH,WAAW,KAAAD,qBAAA,GAAI1D,OAAO,CAAC+D,aAAa,cAAAL,qBAAA,eAArBA,qBAAA,CAAuBM,oBAAoB,EAAE;UAC/DhE,OAAO,CAAC+D,aAAa,CAACC,oBAAoB,CACxCrE,MAAM,EACN,CAACD,IAAI,EAAEa,GAAG,CAAC,EACX,UAAC0D,MAAM;YAAA,OAAK,IAAIC,8BAAkB,CAACvE,MAAM,EAAE,CAACD,IAAI,EAAEa,GAAG,CAAC,EAAE0D,MAAM,CAAC;UAAA,CACjE,CAAC;QACH;QAEA3C,cAAc,CAACvB,QAAQ,CAAC;MAC1B;IACF,CAAC,MAAM;MACLuB,cAAc,CAACvB,QAAQ,CAAC;IAC1B;EACF,CAAC,EAAE,CAACe,oBAAoB,EAAEf,QAAQ,CAAC,CAAC;EAEpC,IAAAwD,gBAAS,EAAC,YAAM;IACdF,aAAa,CAAC,CAAC;IAEf,IAAMc,YAAY,GAAGzC,SAAS,CAACK,OAAO;IACtC,IAAIoC,YAAY,EAAE;MAChBA,YAAY,CAACC,gBAAgB,CAAC,WAAW,EAAEC,UAAU,EAAE,KAAK,CAAC;IAC/D;IACA,OAAO,YAAM;MACX,IAAIF,YAAY,EAAE;QAChBA,YAAY,CAACG,mBAAmB,CAAC,WAAW,EAAED,UAAU,EAAE,KAAK,CAAC;MAClE;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAd,gBAAS,EAAC,YAAM;IACdF,aAAa,CAAC,CAAC;EACjB,CAAC,CAAC;EAEF,IAAMkB,SAAS,GAAG,IAAA1C,kBAAW,EAAC,YAAM;IAClC,IAAM2C,GAAG,GAAG/C,MAAM,CAACM,OAAO;IAC1B,IAAI,CAACyC,GAAG,EAAE;IAEV,IAAI,CAACA,GAAG,CAACC,KAAK,CAAClH,KAAK,IAAIiH,GAAG,CAACC,KAAK,CAAClH,KAAK,KAAK,YAAY,EAAE;MACxD,IAAMmH,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACJ,GAAG,CAACxC,YAAY,EAAE9B,aAAa,CAAC;MACnD,IAAM2E,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACJ,GAAG,CAACM,aAAa,EAAE1E,cAAc,CAAC;MAErDoE,GAAG,CAACC,KAAK,CAAClH,KAAK,MAAAkB,MAAA,CAAMiG,CAAC,OAAI;MAC1BF,GAAG,CAACC,KAAK,CAACxF,MAAM,MAAAR,MAAA,CAAMoG,CAAC,OAAI;MAE3B,IAAME,MAAM,GAAG;QAAExH,KAAK,EAAEmH,CAAC;QAAEzF,MAAM,EAAE4F;MAAE,CAAC;MACtC,IAAI,CAAC,IAAAG,mBAAO,EAACD,MAAM,EAAE;QAAExH,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAAC/C,KAAK;QAAE0B,MAAM,EAAES,IAAI,CAACY,KAAK,CAACrB;MAAO,CAAC,CAAC,EAAE;QAC5E0D,cAAc,CAACoC,MAAM,CAAC;MACxB;IACF;EACF,CAAC,EAAE,CAACrF,IAAI,CAACY,KAAK,CAAC/C,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAACrB,MAAM,EAAEiB,aAAa,EAAEE,cAAc,EAAEuC,cAAc,CAAC,CAAC;EAExF,IAAMsC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,OAAO,EAAEC,IAAI,EAAoC;IAAA,IAAlCC,UAAU,GAAA9I,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA8G,SAAA,GAAA9G,SAAA,MAAG,IAAI;IAAA,IAAE+I,UAAU,GAAA/I,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA8G,SAAA;IAChE,IAAIgC,UAAU,EAAE;MACd,IAAME,KAAK,GAAGJ,OAAO,CAAC3H,KAAK,GAAG2H,OAAO,CAACjG,MAAM;MAC5C,IAAIoG,UAAU,KAAK,QAAQ,EAAE,OAAO;QAAE9H,KAAK,EAAE4H,IAAI,CAAClG,MAAM,GAAGqG,KAAK;QAAErG,MAAM,EAAEkG,IAAI,CAAClG;MAAO,CAAC;MACvF,OAAO;QAAE1B,KAAK,EAAE4H,IAAI,CAAC5H,KAAK;QAAE0B,MAAM,EAAEkG,IAAI,CAAC5H,KAAK,GAAG+H;MAAM,CAAC;IAC1D;IACA,OAAOH,IAAI;EACb,CAAC;EAED,IAAMI,WAAW,GAAG,IAAA1D,kBAAW,EAC7B,UAACnH,CAAC,EAAK;IACL,IAAM8J,GAAG,GAAG/C,MAAM,CAACM,OAAO;IAC1B,IAAI,CAACyC,GAAG,EAAE;IAEV,IAAMgB,MAAM,GAAG9K,CAAC,CAAC+K,MAAM,CAACC,qBAAqB,CAAC,CAAC;IAC/C,IAAMR,OAAO,GAAG;MAAE3H,KAAK,EAAEiH,GAAG,CAACxC,YAAY;MAAE/C,MAAM,EAAEuF,GAAG,CAACM;IAAc,CAAC;IAEtE,IAAMK,IAAI,GAAGF,YAAY,CAACC,OAAO,EAAE;MACjC3H,KAAK,EAAE7C,CAAC,CAACiL,OAAO,GAAGH,MAAM,CAAClI,IAAI;MAC9B2B,MAAM,EAAEvE,CAAC,CAACkL,OAAO,GAAGJ,MAAM,CAAChI;IAC7B,CAAC,CAAC;IAEF,IAAI2H,IAAI,CAAC5H,KAAK,GAAG,EAAE,IAAI4H,IAAI,CAAClG,MAAM,GAAG,EAAE,IAAIkG,IAAI,CAAC5H,KAAK,IAAI,GAAG,IAAI4H,IAAI,CAAClG,MAAM,IAAI,GAAG,EAAE;MAClFuF,GAAG,CAACC,KAAK,CAAClH,KAAK,MAAAkB,MAAA,CAAM0G,IAAI,CAAC5H,KAAK,OAAI;MACnCiH,GAAG,CAACC,KAAK,CAACxF,MAAM,MAAAR,MAAA,CAAM0G,IAAI,CAAClG,MAAM,OAAI;MAErC0D,cAAc,CAAC;QAAEpF,KAAK,EAAE4H,IAAI,CAAC5H,KAAK;QAAE0B,MAAM,EAAEkG,IAAI,CAAClG;MAAO,CAAC,CAAC;IAC5D;EACF,CAAC,EACD,CAACU,MAAM,EAAEgD,cAAc,CACzB,CAAC;EAED,IAAMkD,QAAQ,GAAG,IAAAhE,kBAAW,EAC1B,UAACiE,SAAS,EAAK;IACbnD,cAAc,CAACmD,SAAS,CAAC;EAC3B,CAAC,EACD,CAACnG,MAAM,EAAEgD,cAAc,CACzB,CAAC;EAED,IAAMoD,UAAU,GAAG,IAAAlE,kBAAW,EAAC,YAAM;IACnCmE,MAAM,CAAC1B,mBAAmB,CAAC,WAAW,EAAEiB,WAAW,CAAC;IACpDS,MAAM,CAAC1B,mBAAmB,CAAC,SAAS,EAAEyB,UAAU,CAAC;EACnD,CAAC,EAAE,CAACR,WAAW,CAAC,CAAC;EAEjB,IAAMlB,UAAU,GAAG,IAAAxC,kBAAW,EAAC,YAAM;IACnCmE,MAAM,CAAC5B,gBAAgB,CAAC,WAAW,EAAEmB,WAAW,CAAC;IACjDS,MAAM,CAAC5B,gBAAgB,CAAC,SAAS,EAAE2B,UAAU,CAAC;EAChD,CAAC,EAAE,CAACR,WAAW,EAAEQ,UAAU,CAAC,CAAC;EAE7B,IAAMtB,KAAK,GAAG;IACZlH,KAAK,EAAE8B,MAAM,CAACK,IAAI,CAACY,KAAK,CAAC/C,KAAK,CAAC;IAC/B0B,MAAM,EAAEI,MAAM,CAACK,IAAI,CAACY,KAAK,CAACrB,MAAM,CAAC;IACjCgH,SAAS,EAAE;EACb,CAAC;EAED,IAAMC,SAAS,GAAG;IAAE5I,IAAI,EAAE,YAAY;IAAE6I,MAAM,EAAE,QAAQ;IAAEC,KAAK,EAAE;EAAW,CAAC,CAAC1G,IAAI,CAACY,KAAK,CAAC+F,SAAS,CAAC,IAAI,YAAY;EAEnH,oBACEzM,MAAA,YAAA0M,aAAA,CAACjM,OAAA,CAAAkM,eAAe,qBACd3M,MAAA,YAAA0M,aAAA,CAAC3I,UAAU;IACTkC,OAAO,EAAEA,OAAQ;IACjB/B,OAAO,EAAE,CAAC4B,IAAI,CAACY,KAAK,CAACkG,MAAO;IAC5BzI,aAAa,EAAE2B,IAAI,CAACY,KAAK,CAACmG,YAAY,KAAK,SAAU;IACrDhC,KAAK,EAAE;MAAEiC,cAAc,EAAER;IAAU;EAAE,gBAErCtM,MAAA,YAAA0M,aAAA,CAACxJ,cAAc;IAAC6J,IAAI,EAAC,aAAa;IAACC,KAAK,EAAElH,IAAI,CAACY,KAAK,CAACuG,OAAO,IAAI,CAAE;IAACzJ,YAAY,EAAEsC,IAAI,CAACY,KAAK,CAACkG;EAAO,CAAE,CAAC,eAEtG5M,MAAA,YAAA0M,aAAA,CAACrI,oBAAoB;IAAC6I,WAAW,EAAE,SAAbA,WAAWA,CAAGpM,CAAC;MAAA,OAAKA,CAAC,CAACqM,cAAc,CAAC,CAAC;IAAA;EAAC,gBAC3DnN,MAAA,YAAA0M,aAAA,CAACjI,WAAW,MAAA2I,SAAA,iBACNpH,UAAU;IACdrB,MAAM,EAAEwB,QAAQ,IAAIL,IAAI,CAACY,KAAK,CAACkG,MAAO;IACtCS,SAAS,EAAE,KAAM;IACjBC,GAAG,EAAEzF,MAAO;IACZoC,GAAG,EAAEnE,IAAI,CAACY,KAAK,CAACuD,GAAI;IACpBY,KAAK,EAAEA,KAAM;IACb0C,MAAM,EAAE5C,SAAU;IAClBlE,GAAG,EAAEX,IAAI,CAACY,KAAK,CAACD;EAAI,EACrB,CAAC,eACFzG,MAAA,YAAA0M,aAAA,CAACzH,YAAY;IAACqI,GAAG,EAAExF,SAAU;IAAC0F,SAAS,EAAC;EAAQ,CAAE,CAC9B,CACZ,CAAC,EAEZ/F,WAAW,IACV1B,MAAM,CAAC0H,kBAAkB,iBACzBC,oBAAQ,CAACC,YAAY,cACnB3N,MAAA,YAAA0M,aAAA;IACEY,GAAG,EAAEvF,UAAW;IAChB8C,KAAK,EAAE;MACL+C,MAAM,EAAE,EAAE;MACVC,UAAU,EAAE,0CAA0C;MACtDC,SAAS,EACP,+GAA+G;MACjHnK,KAAK,EAAE;IACT;EAAE,gBAEF3D,MAAA,YAAA0M,aAAA,CAAC7L,qBAAA,WAAoB;IACnBkN,QAAQ;IACRC,SAAS;IACTC,WAAW,EAAE7H,OAAO,CAAC6H,WAAW,IAAI,CAAC,CAAE;IACvCC,QAAQ,EAAE,SAAVA,QAAQA,CAAA,EAAQ;MAAA,IAAAC,sBAAA,EAAAC,sBAAA;MACd,IAAMnF,OAAO,GAAGV,WAAW,CAAC,CAAC;MAC7B,IAAIU,OAAO,KAAK,IAAI,EAAE;MAEtB,CAAAkF,sBAAA,GAAA/H,OAAO,CAAC+D,aAAa,cAAAgE,sBAAA,gBAAAC,sBAAA,GAArBD,sBAAA,CAAuBD,QAAQ,cAAAE,sBAAA,eAA/BA,sBAAA,CAAAtM,IAAA,CAAAqM,sBAAA,EAAkCxG,aAAa,CAACQ,OAAO,CAAC;MAExDpC,MAAM,CAACqD,IAAI,CAACC,QAAQ,CAClBtD,MAAM,CAACc,KAAK,CAACyC,EAAE,UAAO,CAACL,OAAO,EAAEA,OAAO,GAAGlD,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACQ,MAAM,CAACF,OAAO,CAAC,CAAC7B,QAAQ,CACrF,CAAC;MACDM,cAAc,CAAC,KAAK,CAAC;MACrB3B,MAAM,CAACsI,QAAQ,CAACC,KAAK,CAAC,CAAC;IACzB,CAAE;IACFC,MAAM,EAAE,SAARA,MAAMA,CAAA,EAAQ;MAAA,IAAAC,sBAAA,EAAAC,sBAAA;MACZ/G,cAAc,CAAC,KAAK,CAAC;MACrB,CAAA8G,sBAAA,GAAApI,OAAO,CAAC+D,aAAa,cAAAqE,sBAAA,gBAAAC,sBAAA,GAArBD,sBAAA,CAAuBD,MAAM,cAAAE,sBAAA,eAA7BA,sBAAA,CAAA3M,IAAA,CAAA0M,sBAAA,EAAgCzI,MAAM,CAAC;MACvCA,MAAM,CAACsI,QAAQ,CAACC,KAAK,CAAC,KAAK,CAAC;IAC9B;EAAE,gBAEFtO,MAAA,YAAA0M,aAAA,CAAC9L,aAAA,WAAY;IACX8N,4BAA4B,GAAA7I,sBAAA,GAAEO,OAAO,CAAC+D,aAAa,cAAAtE,sBAAA,uBAArBA,sBAAA,CAAuB6I,4BAA6B;IAClFjI,GAAG,EAAEX,IAAI,CAACY,KAAK,CAACD,GAAI;IACpBkI,WAAW,EAAE7I,IAAI,CAACY,KAAK,CAACkG,MAAO;IAC/BH,SAAS,EAAE3G,IAAI,CAACY,KAAK,CAAC+F,SAAS,IAAI,MAAO;IAC1CR,QAAQ,EAAEA;EAAS,CACpB,CACmB,CACnB,CAAC,EACNlG,MAAM,CAAC0H,kBACT,CACa,CAAC;AAEtB;AAEA9H,cAAc,CAACiJ,SAAS,GAAG;EACzB9I,IAAI,EAAE+I,qBAAS,CAACC,MAAM,CAACC,UAAU;EACjChJ,MAAM,EAAE8I,qBAAS,CAACC,MAAM,CAACC,UAAU;EACnC/I,UAAU,EAAE6I,qBAAS,CAACC,MAAM;EAC5B7I,OAAO,EAAE4I,qBAAS,CAACG,IAAI;EACvB1I,aAAa,EAAEuI,qBAAS,CAACI,MAAM;EAC/BzI,cAAc,EAAEqI,qBAAS,CAACI;AAC5B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEaxJ,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"image-component.js","names":["_react","_interopRequireWildcard","require","_propTypes","_interopRequireDefault","_isEqual","_debug","_LinearProgress","_styles","_react2","_reactDom","_InsertImageHandler","_ImageToolbar","_customToolbarWrapper","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","StyledProgress","styled","LinearProgress","shouldForwardProp","prop","_ref","hideProgress","position","left","width","top","transition","opacity","StyledRoot","includes","_ref2","loading","pendingDelete","display","StyledImageContainer","_ref3","theme","alignItems","StyledImage","_ref4","active","border","concat","palette","primary","main","StyledResize","_ref5","backgroundColor","cursor","height","borderRadius","marginLeft","marginRight","sizePx","s","ImageComponent","props","_options$imageHandlin6","node","editor","attributes","onFocus","getPos","selected","options","_props$maxImageWidth","maxImageWidth","_props$maxImageHeight","maxImageHeight","alt","attrs","pos","selFrom","state","selection","from","selTo","to","onlyThisNodeSelected","useMemo","nodeSize","_useState","useState","_useState2","_slicedToArray2","showToolbar","setShowToolbar","latestNodeRef","useRef","imgRef","resizeRef","toolbarRef","getPercentFromWidth","useCallback","floored","current","naturalWidth","parseInt","toFixed","findNodePos","key","nodeKey","found","doc","descendants","type","name","updateThisNode","newAttrs","nodePos","currentNode","nodeAt","view","dispatch","tr","setNodeMarkup","undefined","applySizeData","resizePercent","useEffect","isEditable","_node$attrs$src","_node$attrs","_options$imageHandlin","hasImageSrc","String","src","trim","imageHandling","insertImageRequested","finish","InsertImageHandler","resizeHandle","addEventListener","initResize","removeEventListener","loadImage","box","style","w","Math","min","h","naturalHeight","update","isEqual","updateAspect","initial","next","keepAspect","resizeType","ratio","startResize","bounds","target","getBoundingClientRect","clientX","clientY","onChange","newValues","stopResize","window","objectFit","flexAlign","center","right","alignment","createElement","NodeViewWrapper","loaded","deleteStatus","justifyContent","mode","value","percent","onDragStart","preventDefault","_extends2","draggable","ref","onLoad","className","_tiptapContainerEl","ReactDOM","createPortal","zIndex","background","boxShadow","showDone","deletable","toolbarOpts","onDelete","_options$imageHandlin2","_options$imageHandlin3","commands","focus","onDone","_options$imageHandlin4","_options$imageHandlin5","disableImageAlignmentButtons","imageLoaded","propTypes","PropTypes","object","isRequired","func","number","_default","exports"],"sources":["../../src/extensions/image-component.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash-es/isEqual';\nimport debug from 'debug';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { styled } from '@mui/material/styles';\nimport { NodeViewWrapper } from '@tiptap/react';\nimport ReactDOM from 'react-dom';\nimport InsertImageHandler from '../components/image/InsertImageHandler';\nimport ImageToolbar from '../components/image/ImageToolbar';\nimport CustomToolbarWrapper from './custom-toolbar-wrapper';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst StyledProgress = styled(LinearProgress, {\n shouldForwardProp: (prop) => prop !== 'hideProgress',\n})(({ hideProgress }) => ({\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear',\n ...(hideProgress && {\n opacity: 0,\n }),\n}));\n\nconst StyledRoot = styled('div', {\n shouldForwardProp: (prop) => !['active', 'loading', 'pendingDelete'].includes(prop),\n})(({ loading, pendingDelete }) => ({\n position: 'relative',\n display: 'flex',\n transition: 'opacity 200ms linear',\n ...(loading && {\n opacity: 0.3,\n }),\n ...(pendingDelete && {\n opacity: 0.3,\n }),\n}));\n\nconst StyledImageContainer = styled('div')(({ theme }) => ({\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n '&&:hover > .resize': {\n display: 'block',\n },\n}));\n\nconst StyledImage = styled('img', {\n shouldForwardProp: (prop) => prop !== 'active',\n})(({ theme, active }) => ({\n border: active ? `solid 1px ${theme.palette.primary.main}` : 'solid 1px transparent',\n}));\n\nconst StyledResize = styled('div')(({ theme }) => ({\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none',\n}));\n\nconst sizePx = (s) => (s ? `${s}px` : 'calc(20px)');\n\nfunction ImageComponent(props) {\n const {\n node,\n editor,\n attributes,\n onFocus,\n getPos,\n selected,\n options,\n maxImageWidth = 700,\n maxImageHeight = 900,\n } = props;\n const { alt } = node.attrs;\n const pos = getPos();\n\n const selFrom = editor.state.selection.from;\n const selTo = editor.state.selection.to;\n const onlyThisNodeSelected = useMemo(() => selFrom + node.nodeSize === selTo, [selFrom, selTo, node.nodeSize]);\n\n const [showToolbar, setShowToolbar] = useState(false);\n\n const latestNodeRef = useRef(node);\n const imgRef = useRef(null);\n const resizeRef = useRef(null);\n const toolbarRef = useRef(null);\n\n const getPercentFromWidth = useCallback((width) => {\n const floored = (width / imgRef.current.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n }, []);\n\n const findNodePos = useCallback(() => {\n const key = latestNodeRef.current.attrs.nodeKey;\n let found = null;\n editor.state.doc.descendants((n, pos) => {\n if (found !== null) return false;\n if (n.type.name === 'imageUploadNode' && n.attrs.nodeKey === key) {\n found = pos;\n return false;\n }\n });\n return found;\n }, [editor]);\n\n // dispatch an attribute update targeted precisely at this node by nodeKey.\n const updateThisNode = useCallback(\n (newAttrs) => {\n const nodePos = findNodePos();\n if (nodePos === null) return;\n const currentNode = editor.state.doc.nodeAt(nodePos);\n if (!currentNode) return;\n editor.view.dispatch(editor.state.tr.setNodeMarkup(nodePos, undefined, { ...currentNode.attrs, ...newAttrs }));\n },\n [editor, findNodePos],\n );\n\n const applySizeData = useCallback(() => {\n if (!node.attrs.width || !imgRef.current || !imgRef.current.naturalWidth) return;\n const resizePercent = getPercentFromWidth(node.attrs.width);\n if (node.attrs.resizePercent === resizePercent) return;\n updateThisNode({ resizePercent });\n }, [node.attrs.width, node.attrs.resizePercent, getPercentFromWidth, updateThisNode]);\n\n // keep ref in sync with latest node\n useEffect(() => {\n latestNodeRef.current = { ...node, pos };\n }, [node, pos]);\n\n useEffect(() => {\n if (selected) {\n if (onlyThisNodeSelected && editor.isEditable) {\n // Only open the upload UI for a fresh placeholder. Remounting after tab switch\n // would otherwise call insertImageRequested again and reopen the file modal.\n const hasImageSrc = String(node.attrs?.src ?? '').trim();\n\n if (!hasImageSrc && options.imageHandling?.insertImageRequested) {\n options.imageHandling.insertImageRequested(\n editor,\n [node, pos],\n (finish) => new InsertImageHandler(editor, [node, pos], finish),\n );\n }\n\n setShowToolbar(selected);\n }\n } else {\n setShowToolbar(selected);\n }\n }, [onlyThisNodeSelected, selected, editor.isEditable]);\n\n useEffect(() => {\n applySizeData();\n\n const resizeHandle = resizeRef?.current;\n\n if (resizeHandle && editor.isEditable) {\n resizeHandle.addEventListener('mousedown', initResize, false);\n }\n\n return () => {\n if (resizeHandle) {\n resizeHandle.removeEventListener('mousedown', initResize, false);\n }\n };\n }, []);\n\n useEffect(() => {\n applySizeData();\n });\n\n const loadImage = useCallback(() => {\n const box = imgRef.current;\n if (!box) return;\n\n if (!box.style.width || box.style.width === 'calc(20px)') {\n const w = Math.min(box.naturalWidth, maxImageWidth);\n const h = Math.min(box.naturalHeight, maxImageHeight);\n\n box.style.width = `${w}px`;\n box.style.height = `${h}px`;\n\n const update = { width: w, height: h };\n if (!isEqual(update, { width: node.attrs.width, height: node.attrs.height })) {\n updateThisNode(update);\n }\n }\n }, [node.attrs.width, node.attrs.height, maxImageWidth, maxImageHeight, updateThisNode]);\n\n const updateAspect = (initial, next, keepAspect = true, resizeType) => {\n if (keepAspect) {\n const ratio = initial.width / initial.height;\n if (resizeType === 'height') return { width: next.height * ratio, height: next.height };\n return { width: next.width, height: next.width / ratio };\n }\n return next;\n };\n\n const startResize = useCallback(\n (e) => {\n const box = imgRef.current;\n if (!box) return;\n\n const bounds = e.target.getBoundingClientRect();\n const initial = { width: box.naturalWidth, height: box.naturalHeight };\n\n const next = updateAspect(initial, {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top,\n });\n\n if (next.width > 50 && next.height > 50 && next.width <= 700 && next.height <= 900) {\n box.style.width = `${next.width}px`;\n box.style.height = `${next.height}px`;\n\n updateThisNode({ width: next.width, height: next.height });\n }\n },\n [editor, updateThisNode],\n );\n\n const onChange = useCallback(\n (newValues) => {\n updateThisNode(newValues);\n },\n [editor, updateThisNode],\n );\n\n const stopResize = useCallback(() => {\n window.removeEventListener('mousemove', startResize);\n window.removeEventListener('mouseup', stopResize);\n }, [startResize]);\n\n const initResize = useCallback(() => {\n window.addEventListener('mousemove', startResize);\n window.addEventListener('mouseup', stopResize);\n }, [startResize, stopResize]);\n\n const style = {\n width: sizePx(node.attrs.width),\n height: sizePx(node.attrs.height),\n objectFit: 'contain',\n };\n\n const flexAlign = { left: 'flex-start', center: 'center', right: 'flex-end' }[node.attrs.alignment] || 'flex-start';\n\n return (\n <NodeViewWrapper>\n <StyledRoot\n onFocus={onFocus}\n loading={!node.attrs.loaded}\n pendingDelete={node.attrs.deleteStatus === 'pending'}\n style={{ justifyContent: flexAlign }}\n >\n <StyledProgress mode=\"determinate\" value={node.attrs.percent || 0} hideProgress={node.attrs.loaded} />\n\n <StyledImageContainer onDragStart={(e) => e.preventDefault()}>\n <StyledImage\n {...attributes}\n active={selected && node.attrs.loaded}\n draggable={false}\n ref={imgRef}\n src={node.attrs.src}\n style={style}\n onLoad={loadImage}\n alt={node.attrs.alt}\n />\n <StyledResize ref={resizeRef} className=\"resize\" style={{ display: editor.isEditable ? undefined : 'none' }} />\n </StyledImageContainer>\n </StyledRoot>\n\n {showToolbar &&\n editor._tiptapContainerEl &&\n ReactDOM.createPortal(\n <div\n ref={toolbarRef}\n style={{\n zIndex: 20,\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n width: '100%',\n }}\n >\n <CustomToolbarWrapper\n showDone\n deletable\n toolbarOpts={options.toolbarOpts || {}}\n onDelete={() => {\n const nodePos = findNodePos();\n if (nodePos === null) return;\n\n options.imageHandling?.onDelete?.(latestNodeRef.current);\n\n editor.view.dispatch(\n editor.state.tr.delete(nodePos, nodePos + editor.state.doc.nodeAt(nodePos).nodeSize),\n );\n setShowToolbar(false);\n editor.commands.focus();\n }}\n onDone={() => {\n setShowToolbar(false);\n options.imageHandling?.onDone?.(editor);\n editor.commands.focus('end');\n }}\n >\n <ImageToolbar\n disableImageAlignmentButtons={options.imageHandling?.disableImageAlignmentButtons}\n alt={node.attrs.alt}\n imageLoaded={node.attrs.loaded}\n alignment={node.attrs.alignment || 'left'}\n onChange={onChange}\n />\n </CustomToolbarWrapper>\n </div>,\n editor._tiptapContainerEl,\n )}\n </NodeViewWrapper>\n );\n}\n\nImageComponent.propTypes = {\n node: PropTypes.object.isRequired,\n editor: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n};\n\nexport default ImageComponent;\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,QAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,MAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,eAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,SAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,mBAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,aAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,qBAAA,GAAAT,sBAAA,CAAAF,OAAA;AAA4D,SAAAD,wBAAAa,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAf,uBAAA,YAAAA,wBAAAa,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA;AAE5D,IAAMkC,GAAG,GAAG,IAAAC,iBAAK,EAAC,gDAAgD,CAAC;AAEnE,IAAMC,cAAc,GAAG,IAAAC,cAAM,EAACC,0BAAc,EAAE;EAC5CC,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAKA,IAAI,KAAK,cAAc;EAAA;AACtD,CAAC,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,YAAY,GAAAD,IAAA,CAAZC,YAAY;EAAA,OAAAf,aAAA;IAChBgB,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,GAAG;IACTC,KAAK,EAAE,aAAa;IACpBC,GAAG,EAAE,IAAI;IACTC,UAAU,EAAE;EAAsB,GAC9BL,YAAY,IAAI;IAClBM,OAAO,EAAE;EACX,CAAC;AAAA,CACD,CAAC;AAEH,IAAMC,UAAU,GAAG,IAAAZ,cAAM,EAAC,KAAK,EAAE;EAC/BE,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAK,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAACU,QAAQ,CAACV,IAAI,CAAC;EAAA;AACrF,CAAC,CAAC,CAAC,UAAAW,KAAA;EAAA,IAAGC,OAAO,GAAAD,KAAA,CAAPC,OAAO;IAAEC,aAAa,GAAAF,KAAA,CAAbE,aAAa;EAAA,OAAA1B,aAAA,CAAAA,aAAA;IAC1BgB,QAAQ,EAAE,UAAU;IACpBW,OAAO,EAAE,MAAM;IACfP,UAAU,EAAE;EAAsB,GAC9BK,OAAO,IAAI;IACbJ,OAAO,EAAE;EACX,CAAC,GACGK,aAAa,IAAI;IACnBL,OAAO,EAAE;EACX,CAAC;AAAA,CACD,CAAC;AAEH,IAAMO,oBAAoB,GAAG,IAAAlB,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAmB,KAAA;EAAA,IAAGC,KAAK,GAAAD,KAAA,CAALC,KAAK;EAAA,OAAQ;IACzDd,QAAQ,EAAE,UAAU;IACpBE,KAAK,EAAE,aAAa;IACpBS,OAAO,EAAE,MAAM;IACfI,UAAU,EAAE,QAAQ;IACpB,oBAAoB,EAAE;MACpBJ,OAAO,EAAE;IACX;EACF,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMK,WAAW,GAAG,IAAAtB,cAAM,EAAC,KAAK,EAAE;EAChCE,iBAAiB,EAAE,SAAnBA,iBAAiBA,CAAGC,IAAI;IAAA,OAAKA,IAAI,KAAK,QAAQ;EAAA;AAChD,CAAC,CAAC,CAAC,UAAAoB,KAAA;EAAA,IAAGH,KAAK,GAAAG,KAAA,CAALH,KAAK;IAAEI,MAAM,GAAAD,KAAA,CAANC,MAAM;EAAA,OAAQ;IACzBC,MAAM,EAAED,MAAM,gBAAAE,MAAA,CAAgBN,KAAK,CAACO,OAAO,CAACC,OAAO,CAACC,IAAI,IAAK;EAC/D,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,YAAY,GAAG,IAAA9B,cAAM,EAAC,KAAK,CAAC,CAAC,UAAA+B,KAAA;EAAA,IAAGX,KAAK,GAAAW,KAAA,CAALX,KAAK;EAAA,OAAQ;IACjDY,eAAe,EAAEZ,KAAK,CAACO,OAAO,CAACC,OAAO,CAACC,IAAI;IAC3CI,MAAM,EAAE,YAAY;IACpBC,MAAM,EAAE,MAAM;IACd1B,KAAK,EAAE,KAAK;IACZ2B,YAAY,EAAE,CAAC;IACfC,UAAU,EAAE,KAAK;IACjBC,WAAW,EAAE,MAAM;IACnBpB,OAAO,EAAE;EACX,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMqB,MAAM,GAAG,SAATA,MAAMA,CAAIC,CAAC;EAAA,OAAMA,CAAC,MAAAb,MAAA,CAAMa,CAAC,UAAO,YAAY;AAAA,CAAC;AAEnD,SAASC,cAAcA,CAACC,KAAK,EAAE;EAAA,IAAAC,sBAAA;EAC7B,IACEC,IAAI,GASFF,KAAK,CATPE,IAAI;IACJC,MAAM,GAQJH,KAAK,CARPG,MAAM;IACNC,UAAU,GAORJ,KAAK,CAPPI,UAAU;IACVC,OAAO,GAMLL,KAAK,CANPK,OAAO;IACPC,MAAM,GAKJN,KAAK,CALPM,MAAM;IACNC,QAAQ,GAINP,KAAK,CAJPO,QAAQ;IACRC,OAAO,GAGLR,KAAK,CAHPQ,OAAO;IAAAC,oBAAA,GAGLT,KAAK,CAFPU,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAG,GAAG,GAAAA,oBAAA;IAAAE,qBAAA,GAEjBX,KAAK,CADPY,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAG,GAAG,GAAAA,qBAAA;EAEtB,IAAQE,GAAG,GAAKX,IAAI,CAACY,KAAK,CAAlBD,GAAG;EACX,IAAME,GAAG,GAAGT,MAAM,CAAC,CAAC;EAEpB,IAAMU,OAAO,GAAGb,MAAM,CAACc,KAAK,CAACC,SAAS,CAACC,IAAI;EAC3C,IAAMC,KAAK,GAAGjB,MAAM,CAACc,KAAK,CAACC,SAAS,CAACG,EAAE;EACvC,IAAMC,oBAAoB,GAAG,IAAAC,cAAO,EAAC;IAAA,OAAMP,OAAO,GAAGd,IAAI,CAACsB,QAAQ,KAAKJ,KAAK;EAAA,GAAE,CAACJ,OAAO,EAAEI,KAAK,EAAElB,IAAI,CAACsB,QAAQ,CAAC,CAAC;EAE9G,IAAAC,SAAA,GAAsC,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA9CI,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAElC,IAAMI,aAAa,GAAG,IAAAC,aAAM,EAAC9B,IAAI,CAAC;EAClC,IAAM+B,MAAM,GAAG,IAAAD,aAAM,EAAC,IAAI,CAAC;EAC3B,IAAME,SAAS,GAAG,IAAAF,aAAM,EAAC,IAAI,CAAC;EAC9B,IAAMG,UAAU,GAAG,IAAAH,aAAM,EAAC,IAAI,CAAC;EAE/B,IAAMI,mBAAmB,GAAG,IAAAC,kBAAW,EAAC,UAACtE,KAAK,EAAK;IACjD,IAAMuE,OAAO,GAAIvE,KAAK,GAAGkE,MAAM,CAACM,OAAO,CAACC,YAAY,GAAI,CAAC;IACzD,OAAOC,QAAQ,CAACH,OAAO,CAACI,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;EAC9C,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,WAAW,GAAG,IAAAN,kBAAW,EAAC,YAAM;IACpC,IAAMO,GAAG,GAAGb,aAAa,CAACQ,OAAO,CAACzB,KAAK,CAAC+B,OAAO;IAC/C,IAAIC,KAAK,GAAG,IAAI;IAChB3C,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACC,WAAW,CAAC,UAAC1H,CAAC,EAAEyF,GAAG,EAAK;MACvC,IAAI+B,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK;MAChC,IAAIxH,CAAC,CAAC2H,IAAI,CAACC,IAAI,KAAK,iBAAiB,IAAI5H,CAAC,CAACwF,KAAK,CAAC+B,OAAO,KAAKD,GAAG,EAAE;QAChEE,KAAK,GAAG/B,GAAG;QACX,OAAO,KAAK;MACd;IACF,CAAC,CAAC;IACF,OAAO+B,KAAK;EACd,CAAC,EAAE,CAAC3C,MAAM,CAAC,CAAC;;EAEZ;EACA,IAAMgD,cAAc,GAAG,IAAAd,kBAAW,EAChC,UAACe,QAAQ,EAAK;IACZ,IAAMC,OAAO,GAAGV,WAAW,CAAC,CAAC;IAC7B,IAAIU,OAAO,KAAK,IAAI,EAAE;IACtB,IAAMC,WAAW,GAAGnD,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACQ,MAAM,CAACF,OAAO,CAAC;IACpD,IAAI,CAACC,WAAW,EAAE;IAClBnD,MAAM,CAACqD,IAAI,CAACC,QAAQ,CAACtD,MAAM,CAACc,KAAK,CAACyC,EAAE,CAACC,aAAa,CAACN,OAAO,EAAEO,SAAS,EAAA/G,aAAA,CAAAA,aAAA,KAAOyG,WAAW,CAACxC,KAAK,GAAKsC,QAAQ,CAAE,CAAC,CAAC;EAChH,CAAC,EACD,CAACjD,MAAM,EAAEwC,WAAW,CACtB,CAAC;EAED,IAAMkB,aAAa,GAAG,IAAAxB,kBAAW,EAAC,YAAM;IACtC,IAAI,CAACnC,IAAI,CAACY,KAAK,CAAC/C,KAAK,IAAI,CAACkE,MAAM,CAACM,OAAO,IAAI,CAACN,MAAM,CAACM,OAAO,CAACC,YAAY,EAAE;IAC1E,IAAMsB,aAAa,GAAG1B,mBAAmB,CAAClC,IAAI,CAACY,KAAK,CAAC/C,KAAK,CAAC;IAC3D,IAAImC,IAAI,CAACY,KAAK,CAACgD,aAAa,KAAKA,aAAa,EAAE;IAChDX,cAAc,CAAC;MAAEW,aAAa,EAAbA;IAAc,CAAC,CAAC;EACnC,CAAC,EAAE,CAAC5D,IAAI,CAACY,KAAK,CAAC/C,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAACgD,aAAa,EAAE1B,mBAAmB,EAAEe,cAAc,CAAC,CAAC;;EAErF;EACA,IAAAY,gBAAS,EAAC,YAAM;IACdhC,aAAa,CAACQ,OAAO,GAAA1F,aAAA,CAAAA,aAAA,KAAQqD,IAAI;MAAEa,GAAG,EAAHA;IAAG,EAAE;EAC1C,CAAC,EAAE,CAACb,IAAI,EAAEa,GAAG,CAAC,CAAC;EAEf,IAAAgD,gBAAS,EAAC,YAAM;IACd,IAAIxD,QAAQ,EAAE;MACZ,IAAIe,oBAAoB,IAAInB,MAAM,CAAC6D,UAAU,EAAE;QAAA,IAAAC,eAAA,EAAAC,WAAA,EAAAC,qBAAA;QAC7C;QACA;QACA,IAAMC,WAAW,GAAGC,MAAM,EAAAJ,eAAA,IAAAC,WAAA,GAAChE,IAAI,CAACY,KAAK,cAAAoD,WAAA,uBAAVA,WAAA,CAAYI,GAAG,cAAAL,eAAA,cAAAA,eAAA,GAAI,EAAE,CAAC,CAACM,IAAI,CAAC,CAAC;QAExD,IAAI,CAACH,WAAW,KAAAD,qBAAA,GAAI3D,OAAO,CAACgE,aAAa,cAAAL,qBAAA,eAArBA,qBAAA,CAAuBM,oBAAoB,EAAE;UAC/DjE,OAAO,CAACgE,aAAa,CAACC,oBAAoB,CACxCtE,MAAM,EACN,CAACD,IAAI,EAAEa,GAAG,CAAC,EACX,UAAC2D,MAAM;YAAA,OAAK,IAAIC,8BAAkB,CAACxE,MAAM,EAAE,CAACD,IAAI,EAAEa,GAAG,CAAC,EAAE2D,MAAM,CAAC;UAAA,CACjE,CAAC;QACH;QAEA5C,cAAc,CAACvB,QAAQ,CAAC;MAC1B;IACF,CAAC,MAAM;MACLuB,cAAc,CAACvB,QAAQ,CAAC;IAC1B;EACF,CAAC,EAAE,CAACe,oBAAoB,EAAEf,QAAQ,EAAEJ,MAAM,CAAC6D,UAAU,CAAC,CAAC;EAEvD,IAAAD,gBAAS,EAAC,YAAM;IACdF,aAAa,CAAC,CAAC;IAEf,IAAMe,YAAY,GAAG1C,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEK,OAAO;IAEvC,IAAIqC,YAAY,IAAIzE,MAAM,CAAC6D,UAAU,EAAE;MACrCY,YAAY,CAACC,gBAAgB,CAAC,WAAW,EAAEC,UAAU,EAAE,KAAK,CAAC;IAC/D;IAEA,OAAO,YAAM;MACX,IAAIF,YAAY,EAAE;QAChBA,YAAY,CAACG,mBAAmB,CAAC,WAAW,EAAED,UAAU,EAAE,KAAK,CAAC;MAClE;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAf,gBAAS,EAAC,YAAM;IACdF,aAAa,CAAC,CAAC;EACjB,CAAC,CAAC;EAEF,IAAMmB,SAAS,GAAG,IAAA3C,kBAAW,EAAC,YAAM;IAClC,IAAM4C,GAAG,GAAGhD,MAAM,CAACM,OAAO;IAC1B,IAAI,CAAC0C,GAAG,EAAE;IAEV,IAAI,CAACA,GAAG,CAACC,KAAK,CAACnH,KAAK,IAAIkH,GAAG,CAACC,KAAK,CAACnH,KAAK,KAAK,YAAY,EAAE;MACxD,IAAMoH,CAAC,GAAGC,IAAI,CAACC,GAAG,CAACJ,GAAG,CAACzC,YAAY,EAAE9B,aAAa,CAAC;MACnD,IAAM4E,CAAC,GAAGF,IAAI,CAACC,GAAG,CAACJ,GAAG,CAACM,aAAa,EAAE3E,cAAc,CAAC;MAErDqE,GAAG,CAACC,KAAK,CAACnH,KAAK,MAAAkB,MAAA,CAAMkG,CAAC,OAAI;MAC1BF,GAAG,CAACC,KAAK,CAACzF,MAAM,MAAAR,MAAA,CAAMqG,CAAC,OAAI;MAE3B,IAAME,MAAM,GAAG;QAAEzH,KAAK,EAAEoH,CAAC;QAAE1F,MAAM,EAAE6F;MAAE,CAAC;MACtC,IAAI,CAAC,IAAAG,mBAAO,EAACD,MAAM,EAAE;QAAEzH,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAAC/C,KAAK;QAAE0B,MAAM,EAAES,IAAI,CAACY,KAAK,CAACrB;MAAO,CAAC,CAAC,EAAE;QAC5E0D,cAAc,CAACqC,MAAM,CAAC;MACxB;IACF;EACF,CAAC,EAAE,CAACtF,IAAI,CAACY,KAAK,CAAC/C,KAAK,EAAEmC,IAAI,CAACY,KAAK,CAACrB,MAAM,EAAEiB,aAAa,EAAEE,cAAc,EAAEuC,cAAc,CAAC,CAAC;EAExF,IAAMuC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,OAAO,EAAEC,IAAI,EAAoC;IAAA,IAAlCC,UAAU,GAAA/I,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA8G,SAAA,GAAA9G,SAAA,MAAG,IAAI;IAAA,IAAEgJ,UAAU,GAAAhJ,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA8G,SAAA;IAChE,IAAIiC,UAAU,EAAE;MACd,IAAME,KAAK,GAAGJ,OAAO,CAAC5H,KAAK,GAAG4H,OAAO,CAAClG,MAAM;MAC5C,IAAIqG,UAAU,KAAK,QAAQ,EAAE,OAAO;QAAE/H,KAAK,EAAE6H,IAAI,CAACnG,MAAM,GAAGsG,KAAK;QAAEtG,MAAM,EAAEmG,IAAI,CAACnG;MAAO,CAAC;MACvF,OAAO;QAAE1B,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;QAAE0B,MAAM,EAAEmG,IAAI,CAAC7H,KAAK,GAAGgI;MAAM,CAAC;IAC1D;IACA,OAAOH,IAAI;EACb,CAAC;EAED,IAAMI,WAAW,GAAG,IAAA3D,kBAAW,EAC7B,UAACnH,CAAC,EAAK;IACL,IAAM+J,GAAG,GAAGhD,MAAM,CAACM,OAAO;IAC1B,IAAI,CAAC0C,GAAG,EAAE;IAEV,IAAMgB,MAAM,GAAG/K,CAAC,CAACgL,MAAM,CAACC,qBAAqB,CAAC,CAAC;IAC/C,IAAMR,OAAO,GAAG;MAAE5H,KAAK,EAAEkH,GAAG,CAACzC,YAAY;MAAE/C,MAAM,EAAEwF,GAAG,CAACM;IAAc,CAAC;IAEtE,IAAMK,IAAI,GAAGF,YAAY,CAACC,OAAO,EAAE;MACjC5H,KAAK,EAAE7C,CAAC,CAACkL,OAAO,GAAGH,MAAM,CAACnI,IAAI;MAC9B2B,MAAM,EAAEvE,CAAC,CAACmL,OAAO,GAAGJ,MAAM,CAACjI;IAC7B,CAAC,CAAC;IAEF,IAAI4H,IAAI,CAAC7H,KAAK,GAAG,EAAE,IAAI6H,IAAI,CAACnG,MAAM,GAAG,EAAE,IAAImG,IAAI,CAAC7H,KAAK,IAAI,GAAG,IAAI6H,IAAI,CAACnG,MAAM,IAAI,GAAG,EAAE;MAClFwF,GAAG,CAACC,KAAK,CAACnH,KAAK,MAAAkB,MAAA,CAAM2G,IAAI,CAAC7H,KAAK,OAAI;MACnCkH,GAAG,CAACC,KAAK,CAACzF,MAAM,MAAAR,MAAA,CAAM2G,IAAI,CAACnG,MAAM,OAAI;MAErC0D,cAAc,CAAC;QAAEpF,KAAK,EAAE6H,IAAI,CAAC7H,KAAK;QAAE0B,MAAM,EAAEmG,IAAI,CAACnG;MAAO,CAAC,CAAC;IAC5D;EACF,CAAC,EACD,CAACU,MAAM,EAAEgD,cAAc,CACzB,CAAC;EAED,IAAMmD,QAAQ,GAAG,IAAAjE,kBAAW,EAC1B,UAACkE,SAAS,EAAK;IACbpD,cAAc,CAACoD,SAAS,CAAC;EAC3B,CAAC,EACD,CAACpG,MAAM,EAAEgD,cAAc,CACzB,CAAC;EAED,IAAMqD,UAAU,GAAG,IAAAnE,kBAAW,EAAC,YAAM;IACnCoE,MAAM,CAAC1B,mBAAmB,CAAC,WAAW,EAAEiB,WAAW,CAAC;IACpDS,MAAM,CAAC1B,mBAAmB,CAAC,SAAS,EAAEyB,UAAU,CAAC;EACnD,CAAC,EAAE,CAACR,WAAW,CAAC,CAAC;EAEjB,IAAMlB,UAAU,GAAG,IAAAzC,kBAAW,EAAC,YAAM;IACnCoE,MAAM,CAAC5B,gBAAgB,CAAC,WAAW,EAAEmB,WAAW,CAAC;IACjDS,MAAM,CAAC5B,gBAAgB,CAAC,SAAS,EAAE2B,UAAU,CAAC;EAChD,CAAC,EAAE,CAACR,WAAW,EAAEQ,UAAU,CAAC,CAAC;EAE7B,IAAMtB,KAAK,GAAG;IACZnH,KAAK,EAAE8B,MAAM,CAACK,IAAI,CAACY,KAAK,CAAC/C,KAAK,CAAC;IAC/B0B,MAAM,EAAEI,MAAM,CAACK,IAAI,CAACY,KAAK,CAACrB,MAAM,CAAC;IACjCiH,SAAS,EAAE;EACb,CAAC;EAED,IAAMC,SAAS,GAAG;IAAE7I,IAAI,EAAE,YAAY;IAAE8I,MAAM,EAAE,QAAQ;IAAEC,KAAK,EAAE;EAAW,CAAC,CAAC3G,IAAI,CAACY,KAAK,CAACgG,SAAS,CAAC,IAAI,YAAY;EAEnH,oBACE1M,MAAA,YAAA2M,aAAA,CAAClM,OAAA,CAAAmM,eAAe,qBACd5M,MAAA,YAAA2M,aAAA,CAAC5I,UAAU;IACTkC,OAAO,EAAEA,OAAQ;IACjB/B,OAAO,EAAE,CAAC4B,IAAI,CAACY,KAAK,CAACmG,MAAO;IAC5B1I,aAAa,EAAE2B,IAAI,CAACY,KAAK,CAACoG,YAAY,KAAK,SAAU;IACrDhC,KAAK,EAAE;MAAEiC,cAAc,EAAER;IAAU;EAAE,gBAErCvM,MAAA,YAAA2M,aAAA,CAACzJ,cAAc;IAAC8J,IAAI,EAAC,aAAa;IAACC,KAAK,EAAEnH,IAAI,CAACY,KAAK,CAACwG,OAAO,IAAI,CAAE;IAAC1J,YAAY,EAAEsC,IAAI,CAACY,KAAK,CAACmG;EAAO,CAAE,CAAC,eAEtG7M,MAAA,YAAA2M,aAAA,CAACtI,oBAAoB;IAAC8I,WAAW,EAAE,SAAbA,WAAWA,CAAGrM,CAAC;MAAA,OAAKA,CAAC,CAACsM,cAAc,CAAC,CAAC;IAAA;EAAC,gBAC3DpN,MAAA,YAAA2M,aAAA,CAAClI,WAAW,MAAA4I,SAAA,iBACNrH,UAAU;IACdrB,MAAM,EAAEwB,QAAQ,IAAIL,IAAI,CAACY,KAAK,CAACmG,MAAO;IACtCS,SAAS,EAAE,KAAM;IACjBC,GAAG,EAAE1F,MAAO;IACZqC,GAAG,EAAEpE,IAAI,CAACY,KAAK,CAACwD,GAAI;IACpBY,KAAK,EAAEA,KAAM;IACb0C,MAAM,EAAE5C,SAAU;IAClBnE,GAAG,EAAEX,IAAI,CAACY,KAAK,CAACD;EAAI,EACrB,CAAC,eACFzG,MAAA,YAAA2M,aAAA,CAAC1H,YAAY;IAACsI,GAAG,EAAEzF,SAAU;IAAC2F,SAAS,EAAC,QAAQ;IAAC3C,KAAK,EAAE;MAAE1G,OAAO,EAAE2B,MAAM,CAAC6D,UAAU,GAAGJ,SAAS,GAAG;IAAO;EAAE,CAAE,CAC1F,CACZ,CAAC,EAEZ/B,WAAW,IACV1B,MAAM,CAAC2H,kBAAkB,iBACzBC,oBAAQ,CAACC,YAAY,cACnB5N,MAAA,YAAA2M,aAAA;IACEY,GAAG,EAAExF,UAAW;IAChB+C,KAAK,EAAE;MACL+C,MAAM,EAAE,EAAE;MACVC,UAAU,EAAE,0CAA0C;MACtDC,SAAS,EACP,+GAA+G;MACjHpK,KAAK,EAAE;IACT;EAAE,gBAEF3D,MAAA,YAAA2M,aAAA,CAAC9L,qBAAA,WAAoB;IACnBmN,QAAQ;IACRC,SAAS;IACTC,WAAW,EAAE9H,OAAO,CAAC8H,WAAW,IAAI,CAAC,CAAE;IACvCC,QAAQ,EAAE,SAAVA,QAAQA,CAAA,EAAQ;MAAA,IAAAC,sBAAA,EAAAC,sBAAA;MACd,IAAMpF,OAAO,GAAGV,WAAW,CAAC,CAAC;MAC7B,IAAIU,OAAO,KAAK,IAAI,EAAE;MAEtB,CAAAmF,sBAAA,GAAAhI,OAAO,CAACgE,aAAa,cAAAgE,sBAAA,gBAAAC,sBAAA,GAArBD,sBAAA,CAAuBD,QAAQ,cAAAE,sBAAA,eAA/BA,sBAAA,CAAAvM,IAAA,CAAAsM,sBAAA,EAAkCzG,aAAa,CAACQ,OAAO,CAAC;MAExDpC,MAAM,CAACqD,IAAI,CAACC,QAAQ,CAClBtD,MAAM,CAACc,KAAK,CAACyC,EAAE,UAAO,CAACL,OAAO,EAAEA,OAAO,GAAGlD,MAAM,CAACc,KAAK,CAAC8B,GAAG,CAACQ,MAAM,CAACF,OAAO,CAAC,CAAC7B,QAAQ,CACrF,CAAC;MACDM,cAAc,CAAC,KAAK,CAAC;MACrB3B,MAAM,CAACuI,QAAQ,CAACC,KAAK,CAAC,CAAC;IACzB,CAAE;IACFC,MAAM,EAAE,SAARA,MAAMA,CAAA,EAAQ;MAAA,IAAAC,sBAAA,EAAAC,sBAAA;MACZhH,cAAc,CAAC,KAAK,CAAC;MACrB,CAAA+G,sBAAA,GAAArI,OAAO,CAACgE,aAAa,cAAAqE,sBAAA,gBAAAC,sBAAA,GAArBD,sBAAA,CAAuBD,MAAM,cAAAE,sBAAA,eAA7BA,sBAAA,CAAA5M,IAAA,CAAA2M,sBAAA,EAAgC1I,MAAM,CAAC;MACvCA,MAAM,CAACuI,QAAQ,CAACC,KAAK,CAAC,KAAK,CAAC;IAC9B;EAAE,gBAEFvO,MAAA,YAAA2M,aAAA,CAAC/L,aAAA,WAAY;IACX+N,4BAA4B,GAAA9I,sBAAA,GAAEO,OAAO,CAACgE,aAAa,cAAAvE,sBAAA,uBAArBA,sBAAA,CAAuB8I,4BAA6B;IAClFlI,GAAG,EAAEX,IAAI,CAACY,KAAK,CAACD,GAAI;IACpBmI,WAAW,EAAE9I,IAAI,CAACY,KAAK,CAACmG,MAAO;IAC/BH,SAAS,EAAE5G,IAAI,CAACY,KAAK,CAACgG,SAAS,IAAI,MAAO;IAC1CR,QAAQ,EAAEA;EAAS,CACpB,CACmB,CACnB,CAAC,EACNnG,MAAM,CAAC2H,kBACT,CACa,CAAC;AAEtB;AAEA/H,cAAc,CAACkJ,SAAS,GAAG;EACzB/I,IAAI,EAAEgJ,qBAAS,CAACC,MAAM,CAACC,UAAU;EACjCjJ,MAAM,EAAE+I,qBAAS,CAACC,MAAM,CAACC,UAAU;EACnChJ,UAAU,EAAE8I,qBAAS,CAACC,MAAM;EAC5B9I,OAAO,EAAE6I,qBAAS,CAACG,IAAI;EACvB3I,aAAa,EAAEwI,qBAAS,CAACI,MAAM;EAC/B1I,cAAc,EAAEsI,qBAAS,CAACI;AAC5B,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,cAEazJ,cAAc","ignoreList":[]}
@@ -197,7 +197,13 @@ var ResponseAreaExtension = exports.ResponseAreaExtension = _core.Extension.crea
197
197
  // tr.setSelection(NodeSelection.create(tr.doc, usedPos))
198
198
 
199
199
  // --- Cursor move behavior for certain types (Slate: moveFocusTo next text) ---
200
- if (['math_templated', 'inline_dropdown', 'explicit_constructed_response'].includes(typeName)) {
200
+ // Only types whose node view opens its own toolbar on selection
201
+ // (inline_dropdown, explicit_constructed_response) benefit from a
202
+ // NodeSelection here — the toolbar is the visual feedback that it's
203
+ // selected. math_templated has no such UI, so a NodeSelection there
204
+ // just looks unfocused (a highlighted node, no blinking caret);
205
+ // moving the cursor to just after it gives a real, visible caret.
206
+ if (['inline_dropdown', 'explicit_constructed_response'].includes(typeName)) {
201
207
  tr.setSelection(_prosemirrorState.NodeSelection.create(tr.doc, usedPos));
202
208
  } else {
203
209
  var after = usedPos + newInline.nodeSize;
@@ -1 +1 @@
1
- {"version":3,"file":"responseArea.js","names":["_react","_interopRequireDefault","require","_prosemirrorState","_core","_react2","_ExplicitConstructedResponse","_DragInTheBlank","_InlineDropdown","_MathTemplated","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","lastIndexMap","normalizeType","type","String","replace","getAttrIndex","node","attrs","index","collectNodesOfType","doc","typeName","results","descendants","pos","name","countNodesOfType","count","getDefaultNode","_ref","schema","nodeType","nodes","create","id","value","selectionAfterPos","$pos","resolve","Math","min","content","size","TextSelection","near","ResponseAreaExtension","exports","Extension","addOptions","maxResponseAreas","error","options","respAreaToolbar","onHandleAreaChange","addProseMirrorPlugins","_this","key","PluginKey","concat","Plugin","view","undefined","state","idx","n","parseInt","Number","isNaN","update","prevState","eq","currentList","oldList","toolbar","disabled","currentIndexSet","Set","map","x","removed","has","addCommands","_this2","insertResponseArea","_ref2","tr","dispatch","commands","currentCount","prevIndex","newIndex","newInline","selection","insertPos","from","tryInsertAt","insert","usedPos","includes","setSelection","NodeSelection","after","nodeSize","focus","refreshResponseArea","_ref3","$from","nodeAfter","nodePos","setNodeMarkup","updated","Date","now","ExplicitConstructedResponseNode","Node","group","inline","atom","addAttributes","parseHTML","tag","getAttrs","el","dataset","renderHTML","_ref4","HTMLAttributes","addNodeView","_this3","ReactNodeViewRenderer","props","createElement","MathTemplatedNode","_ref5","_this4","DragInTheBlankNode","inTable","_ref6","_this5","InlineDropdownNode","_ref7","_this6"],"sources":["../../src/extensions/responseArea.js"],"sourcesContent":["import React from 'react';\nimport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { Extension } from '@tiptap/core';\nimport { Node, ReactNodeViewRenderer } from '@tiptap/react';\nimport ExplicitConstructedResponse from '../components/respArea/ExplicitConstructedResponse';\nimport DragInTheBlank from '../components/respArea/DragInTheBlank/DragInTheBlank';\nimport InlineDropdown from '../components/respArea/InlineDropdown';\nimport MathTemplated from '../components/respArea/MathTemplated';\n\nconst lastIndexMap = {};\n\nconst normalizeType = (type) => String(type || '').replace(/-/g, '_');\n\nconst getAttrIndex = (node) => (node && node.attrs && node.attrs.index != null ? String(node.attrs.index) : null);\n\nconst collectNodesOfType = (doc, typeName) => {\n const results = [];\n\n doc.descendants((node, pos) => {\n if (node.type && node.type.name === typeName) {\n const index = getAttrIndex(node);\n if (index != null) results.push({ index, pos, node });\n }\n return true;\n });\n\n return results;\n};\n\nconst countNodesOfType = (doc, typeName) => {\n let count = 0;\n doc.descendants((node) => {\n if (node.type && node.type.name === typeName) count += 1;\n return true;\n });\n return count;\n};\n\nconst getDefaultNode = ({ schema, typeName, index }) => {\n const nodeType = schema.nodes[typeName];\n if (!nodeType) return null;\n\n // mirror your Slate \"getDefaultElement(opts, newIndex)\"\n // customize attrs as needed:\n return nodeType.create({\n index: String(index),\n id: String(index),\n value: '',\n });\n};\n\n// Find a good cursor position *after* an inserted node.\nconst selectionAfterPos = (doc, pos) => {\n const $pos = doc.resolve(Math.min(pos, doc.content.size));\n return TextSelection.near($pos, 1);\n};\n\nexport const ResponseAreaExtension = Extension.create({\n name: 'responseArea',\n\n addOptions() {\n return {\n maxResponseAreas: null,\n error: null,\n options: null,\n respAreaToolbar: null,\n onHandleAreaChange: null,\n };\n },\n\n addProseMirrorPlugins() {\n if (!this.options.type) {\n return [];\n }\n\n const typeName = normalizeType(this.options.type);\n const key = new PluginKey(`response-area-watcher:${typeName}`);\n\n return [\n new Plugin({\n key,\n\n view: (view) => {\n // Lazy init lastIndexMap[typeName]\n if (lastIndexMap[typeName] === undefined) {\n lastIndexMap[typeName] = 0;\n\n view.state.doc.descendants((node) => {\n if (node.type && node.type.name === typeName) {\n const idx = getAttrIndex(node);\n if (idx != null) {\n const n = parseInt(idx, 10);\n if (!Number.isNaN(n) && n > lastIndexMap[typeName]) {\n lastIndexMap[typeName] = n;\n }\n }\n }\n return true;\n });\n }\n\n return {\n update: (view, prevState) => {\n const state = view.state;\n if (prevState.doc.eq(state.doc)) return;\n\n const currentList = collectNodesOfType(state.doc, typeName);\n const oldList = collectNodesOfType(prevState.doc, typeName);\n\n if (this.options.toolbar) {\n this.options.toolbar.disabled = currentList.length >= this.options.maxResponseAreas;\n }\n\n // Removed elements (same logic as Slate)\n if (oldList.length > currentList.length) {\n const currentIndexSet = new Set(currentList.map((x) => x.index));\n\n const removed = oldList.filter((x) => !currentIndexSet.has(x.index));\n\n if (removed.length && typeof this.options.onHandleAreaChange === 'function') {\n this.options.onHandleAreaChange(removed);\n }\n }\n },\n };\n },\n }),\n ];\n },\n\n addCommands() {\n return {\n insertResponseArea:\n (type) =>\n ({ tr, state, dispatch, commands }) => {\n const typeName = normalizeType(type);\n\n // --- Slate: currentRespAreaList + max check ---\n const currentCount = countNodesOfType(state.doc, typeName);\n if (currentCount >= this.options.maxResponseAreas) {\n return false;\n }\n\n // --- Slate: indexing logic (kept identical) ---\n if (lastIndexMap[typeName] === undefined) {\n lastIndexMap[typeName] = 0;\n }\n\n const prevIndex = lastIndexMap[typeName];\n const newIndex = prevIndex + 1;\n\n // Slate increments map even if newIndex === 0\n lastIndexMap[typeName] += 1;\n\n const newInline = getDefaultNode({\n schema: state.schema,\n typeName,\n index: newIndex,\n });\n\n if (!newInline) {\n return false;\n }\n\n // --- Insert logic ---\n const { selection } = state;\n let insertPos = selection.from;\n\n // If we're in a NodeSelection, insert before/after is ambiguous;\n // We'll insert at its \"from\" (like your current code).\n // If insertion fails, we fallback to end of doc.\n const tryInsertAt = (pos) => {\n try {\n tr.insert(pos, newInline);\n return pos;\n } catch (e) {\n return null;\n }\n };\n\n let usedPos = tryInsertAt(insertPos);\n\n // Slate branch: \"markup empty and there's no focus\"\n // ProseMirror doesn't expose \"no focus\" the same way, so the closest\n // equivalent fallback is inserting at end of document.\n if (usedPos == null) {\n usedPos = tryInsertAt(tr.doc.content.size);\n }\n\n if (usedPos == null) {\n return false;\n }\n\n // Optionally select the node you just inserted (like your original command)\n // tr.setSelection(NodeSelection.create(tr.doc, usedPos))\n\n // --- Cursor move behavior for certain types (Slate: moveFocusTo next text) ---\n if (['math_templated', 'inline_dropdown', 'explicit_constructed_response'].includes(typeName)) {\n tr.setSelection(NodeSelection.create(tr.doc, usedPos));\n } else {\n const after = usedPos + newInline.nodeSize;\n tr.setSelection(selectionAfterPos(tr.doc, after));\n }\n\n if (dispatch) {\n commands.focus();\n dispatch(tr);\n }\n\n return true;\n },\n refreshResponseArea:\n () =>\n ({ tr, state, commands, dispatch }) => {\n const { selection } = state;\n const node = selection.$from.nodeAfter;\n const nodePos = selection.from;\n\n tr.setNodeMarkup(nodePos, undefined, { ...node?.attrs, updated: `${Date.now()}` });\n tr.setSelection(NodeSelection.create(tr.doc, nodePos));\n\n if (dispatch) {\n commands.focus();\n dispatch(tr);\n }\n\n return true;\n },\n };\n },\n});\n\n/**\n * ExplicitConstructedResponse Node\n */\nexport const ExplicitConstructedResponseNode = Node.create({\n name: 'explicit_constructed_response',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"explicit_constructed_response\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'explicit_constructed_response',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <ExplicitConstructedResponse {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * MathTemplated Node\n */\nexport const MathTemplatedNode = Node.create({\n name: 'math_templated',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"math_templated\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'math_templated',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MathTemplated {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * DragInTheBlank Node\n */\nexport const DragInTheBlankNode = Node.create({\n name: 'drag_in_the_blank',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n id: { default: null },\n value: { default: '' },\n inTable: { default: null },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"drag_in_the_blank\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'drag_in_the_blank',\n 'data-index': HTMLAttributes.index,\n 'data-id': HTMLAttributes.id,\n 'data-value': HTMLAttributes.value,\n 'data-in-table': HTMLAttributes.inTable,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <DragInTheBlank {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * InlineDropdown Node\n */\nexport const InlineDropdownNode = Node.create({\n name: 'inline_dropdown',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"inline_dropdown\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'inline_dropdown',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <InlineDropdown {...{ ...props, options: this.options }} />);\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"responseArea.js","names":["_react","_interopRequireDefault","require","_prosemirrorState","_core","_react2","_ExplicitConstructedResponse","_DragInTheBlank","_InlineDropdown","_MathTemplated","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","lastIndexMap","normalizeType","type","String","replace","getAttrIndex","node","attrs","index","collectNodesOfType","doc","typeName","results","descendants","pos","name","countNodesOfType","count","getDefaultNode","_ref","schema","nodeType","nodes","create","id","value","selectionAfterPos","$pos","resolve","Math","min","content","size","TextSelection","near","ResponseAreaExtension","exports","Extension","addOptions","maxResponseAreas","error","options","respAreaToolbar","onHandleAreaChange","addProseMirrorPlugins","_this","key","PluginKey","concat","Plugin","view","undefined","state","idx","n","parseInt","Number","isNaN","update","prevState","eq","currentList","oldList","toolbar","disabled","currentIndexSet","Set","map","x","removed","has","addCommands","_this2","insertResponseArea","_ref2","tr","dispatch","commands","currentCount","prevIndex","newIndex","newInline","selection","insertPos","from","tryInsertAt","insert","usedPos","includes","setSelection","NodeSelection","after","nodeSize","focus","refreshResponseArea","_ref3","$from","nodeAfter","nodePos","setNodeMarkup","updated","Date","now","ExplicitConstructedResponseNode","Node","group","inline","atom","addAttributes","parseHTML","tag","getAttrs","el","dataset","renderHTML","_ref4","HTMLAttributes","addNodeView","_this3","ReactNodeViewRenderer","props","createElement","MathTemplatedNode","_ref5","_this4","DragInTheBlankNode","inTable","_ref6","_this5","InlineDropdownNode","_ref7","_this6"],"sources":["../../src/extensions/responseArea.js"],"sourcesContent":["import React from 'react';\nimport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { Extension } from '@tiptap/core';\nimport { Node, ReactNodeViewRenderer } from '@tiptap/react';\nimport ExplicitConstructedResponse from '../components/respArea/ExplicitConstructedResponse';\nimport DragInTheBlank from '../components/respArea/DragInTheBlank/DragInTheBlank';\nimport InlineDropdown from '../components/respArea/InlineDropdown';\nimport MathTemplated from '../components/respArea/MathTemplated';\n\nconst lastIndexMap = {};\n\nconst normalizeType = (type) => String(type || '').replace(/-/g, '_');\n\nconst getAttrIndex = (node) => (node && node.attrs && node.attrs.index != null ? String(node.attrs.index) : null);\n\nconst collectNodesOfType = (doc, typeName) => {\n const results = [];\n\n doc.descendants((node, pos) => {\n if (node.type && node.type.name === typeName) {\n const index = getAttrIndex(node);\n if (index != null) results.push({ index, pos, node });\n }\n return true;\n });\n\n return results;\n};\n\nconst countNodesOfType = (doc, typeName) => {\n let count = 0;\n doc.descendants((node) => {\n if (node.type && node.type.name === typeName) count += 1;\n return true;\n });\n return count;\n};\n\nconst getDefaultNode = ({ schema, typeName, index }) => {\n const nodeType = schema.nodes[typeName];\n if (!nodeType) return null;\n\n // mirror your Slate \"getDefaultElement(opts, newIndex)\"\n // customize attrs as needed:\n return nodeType.create({\n index: String(index),\n id: String(index),\n value: '',\n });\n};\n\n// Find a good cursor position *after* an inserted node.\nconst selectionAfterPos = (doc, pos) => {\n const $pos = doc.resolve(Math.min(pos, doc.content.size));\n return TextSelection.near($pos, 1);\n};\n\nexport const ResponseAreaExtension = Extension.create({\n name: 'responseArea',\n\n addOptions() {\n return {\n maxResponseAreas: null,\n error: null,\n options: null,\n respAreaToolbar: null,\n onHandleAreaChange: null,\n };\n },\n\n addProseMirrorPlugins() {\n if (!this.options.type) {\n return [];\n }\n\n const typeName = normalizeType(this.options.type);\n const key = new PluginKey(`response-area-watcher:${typeName}`);\n\n return [\n new Plugin({\n key,\n\n view: (view) => {\n // Lazy init lastIndexMap[typeName]\n if (lastIndexMap[typeName] === undefined) {\n lastIndexMap[typeName] = 0;\n\n view.state.doc.descendants((node) => {\n if (node.type && node.type.name === typeName) {\n const idx = getAttrIndex(node);\n if (idx != null) {\n const n = parseInt(idx, 10);\n if (!Number.isNaN(n) && n > lastIndexMap[typeName]) {\n lastIndexMap[typeName] = n;\n }\n }\n }\n return true;\n });\n }\n\n return {\n update: (view, prevState) => {\n const state = view.state;\n if (prevState.doc.eq(state.doc)) return;\n\n const currentList = collectNodesOfType(state.doc, typeName);\n const oldList = collectNodesOfType(prevState.doc, typeName);\n\n if (this.options.toolbar) {\n this.options.toolbar.disabled = currentList.length >= this.options.maxResponseAreas;\n }\n\n // Removed elements (same logic as Slate)\n if (oldList.length > currentList.length) {\n const currentIndexSet = new Set(currentList.map((x) => x.index));\n\n const removed = oldList.filter((x) => !currentIndexSet.has(x.index));\n\n if (removed.length && typeof this.options.onHandleAreaChange === 'function') {\n this.options.onHandleAreaChange(removed);\n }\n }\n },\n };\n },\n }),\n ];\n },\n\n addCommands() {\n return {\n insertResponseArea:\n (type) =>\n ({ tr, state, dispatch, commands }) => {\n const typeName = normalizeType(type);\n\n // --- Slate: currentRespAreaList + max check ---\n const currentCount = countNodesOfType(state.doc, typeName);\n if (currentCount >= this.options.maxResponseAreas) {\n return false;\n }\n\n // --- Slate: indexing logic (kept identical) ---\n if (lastIndexMap[typeName] === undefined) {\n lastIndexMap[typeName] = 0;\n }\n\n const prevIndex = lastIndexMap[typeName];\n const newIndex = prevIndex + 1;\n\n // Slate increments map even if newIndex === 0\n lastIndexMap[typeName] += 1;\n\n const newInline = getDefaultNode({\n schema: state.schema,\n typeName,\n index: newIndex,\n });\n\n if (!newInline) {\n return false;\n }\n\n // --- Insert logic ---\n const { selection } = state;\n let insertPos = selection.from;\n\n // If we're in a NodeSelection, insert before/after is ambiguous;\n // We'll insert at its \"from\" (like your current code).\n // If insertion fails, we fallback to end of doc.\n const tryInsertAt = (pos) => {\n try {\n tr.insert(pos, newInline);\n return pos;\n } catch (e) {\n return null;\n }\n };\n\n let usedPos = tryInsertAt(insertPos);\n\n // Slate branch: \"markup empty and there's no focus\"\n // ProseMirror doesn't expose \"no focus\" the same way, so the closest\n // equivalent fallback is inserting at end of document.\n if (usedPos == null) {\n usedPos = tryInsertAt(tr.doc.content.size);\n }\n\n if (usedPos == null) {\n return false;\n }\n\n // Optionally select the node you just inserted (like your original command)\n // tr.setSelection(NodeSelection.create(tr.doc, usedPos))\n\n // --- Cursor move behavior for certain types (Slate: moveFocusTo next text) ---\n // Only types whose node view opens its own toolbar on selection\n // (inline_dropdown, explicit_constructed_response) benefit from a\n // NodeSelection here — the toolbar is the visual feedback that it's\n // selected. math_templated has no such UI, so a NodeSelection there\n // just looks unfocused (a highlighted node, no blinking caret);\n // moving the cursor to just after it gives a real, visible caret.\n if (['inline_dropdown', 'explicit_constructed_response'].includes(typeName)) {\n tr.setSelection(NodeSelection.create(tr.doc, usedPos));\n } else {\n const after = usedPos + newInline.nodeSize;\n tr.setSelection(selectionAfterPos(tr.doc, after));\n }\n\n if (dispatch) {\n commands.focus();\n dispatch(tr);\n }\n\n return true;\n },\n refreshResponseArea:\n () =>\n ({ tr, state, commands, dispatch }) => {\n const { selection } = state;\n const node = selection.$from.nodeAfter;\n const nodePos = selection.from;\n\n tr.setNodeMarkup(nodePos, undefined, { ...node?.attrs, updated: `${Date.now()}` });\n tr.setSelection(NodeSelection.create(tr.doc, nodePos));\n\n if (dispatch) {\n commands.focus();\n dispatch(tr);\n }\n\n return true;\n },\n };\n },\n});\n\n/**\n * ExplicitConstructedResponse Node\n */\nexport const ExplicitConstructedResponseNode = Node.create({\n name: 'explicit_constructed_response',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"explicit_constructed_response\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'explicit_constructed_response',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <ExplicitConstructedResponse {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * MathTemplated Node\n */\nexport const MathTemplatedNode = Node.create({\n name: 'math_templated',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"math_templated\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'math_templated',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MathTemplated {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * DragInTheBlank Node\n */\nexport const DragInTheBlankNode = Node.create({\n name: 'drag_in_the_blank',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n id: { default: null },\n value: { default: '' },\n inTable: { default: null },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"drag_in_the_blank\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'drag_in_the_blank',\n 'data-index': HTMLAttributes.index,\n 'data-id': HTMLAttributes.id,\n 'data-value': HTMLAttributes.value,\n 'data-in-table': HTMLAttributes.inTable,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <DragInTheBlank {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * InlineDropdown Node\n */\nexport const InlineDropdownNode = Node.create({\n name: 'inline_dropdown',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n updated: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"inline_dropdown\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'inline_dropdown',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <InlineDropdown {...{ ...props, options: this.options }} />);\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ var _helper = require("../helper");
4
+ describe('normalizeInitialMarkup', function () {
5
+ describe('basic normalization', function () {
6
+ it('returns empty div for empty string', function () {
7
+ expect((0, _helper.normalizeInitialMarkup)('')).toBe('<div></div>');
8
+ });
9
+ it('returns empty div for null', function () {
10
+ expect((0, _helper.normalizeInitialMarkup)(null)).toBe('<div></div>');
11
+ });
12
+ it('returns empty div for undefined', function () {
13
+ expect((0, _helper.normalizeInitialMarkup)(undefined)).toBe('<div></div>');
14
+ });
15
+ it('wraps plain text in div', function () {
16
+ expect((0, _helper.normalizeInitialMarkup)('Hello')).toBe('<div>Hello</div>');
17
+ });
18
+ it('returns HTML tags as-is when detected as HTML', function () {
19
+ // Since '<script>' matches the HTML pattern, it's returned as-is
20
+ // To be escaped, it would need to not match the HTML pattern
21
+ expect((0, _helper.normalizeInitialMarkup)('<script>')).toBe('<script>');
22
+ });
23
+ it('escapes HTML entities in plain text', function () {
24
+ // Plain text without angle brackets gets escaped
25
+ expect((0, _helper.normalizeInitialMarkup)('Hello & World')).toBe('<div>Hello &amp; World</div>');
26
+ });
27
+ it('returns single div as-is', function () {
28
+ var html = '<div>Hello</div>';
29
+ expect((0, _helper.normalizeInitialMarkup)(html)).toBe(html);
30
+ });
31
+ it('returns paragraph as-is', function () {
32
+ var html = '<p>Hello</p>';
33
+ expect((0, _helper.normalizeInitialMarkup)(html)).toBe(html);
34
+ });
35
+ });
36
+ describe('consecutive divs to paragraph conversion', function () {
37
+ it('converts two consecutive divs to paragraph with br', function () {
38
+ var input = '<div>A</div><div>B</div>';
39
+ var expected = '<p>A<br>B</p>';
40
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
41
+ });
42
+ it('converts three consecutive divs to paragraph with br tags', function () {
43
+ var input = '<div>A</div><div>B</div><div>C</div>';
44
+ var expected = '<p>A<br>B<br>C</p>';
45
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
46
+ });
47
+ it('handles divs with whitespace', function () {
48
+ var input = '<div> A </div><div> B </div>';
49
+ var expected = '<p> A <br> B </p>';
50
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
51
+ });
52
+ it('handles divs with inline elements', function () {
53
+ var input = '<div><strong>A</strong></div><div><em>B</em></div>';
54
+ var expected = '<p><strong>A</strong><br><em>B</em></p>';
55
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
56
+ });
57
+ it('handles empty divs', function () {
58
+ var input = '<div></div><div>B</div>';
59
+ var expected = '<p><br>B</p>';
60
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
61
+ });
62
+ it('preserves existing br tags within divs', function () {
63
+ var input = '<div>A<br>A2</div><div>B</div>';
64
+ var expected = '<p>A<br>A2<br>B</p>';
65
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
66
+ });
67
+ });
68
+ describe('cases that should NOT convert', function () {
69
+ it('does not convert single div', function () {
70
+ var input = '<div>Hello</div>';
71
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
72
+ });
73
+ it('does not convert divs with nested block elements', function () {
74
+ var input = '<div><div>Nested</div></div><div>B</div>';
75
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
76
+ });
77
+ it('does not convert divs containing tables', function () {
78
+ var input = '<div><table><tr><td>A</td></tr></table></div><div>B</div>';
79
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
80
+ });
81
+ it('does not convert divs containing lists', function () {
82
+ var input = '<div><ul><li>Item</li></ul></div><div>B</div>';
83
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
84
+ });
85
+ it('does not convert mixed element types', function () {
86
+ var input = '<div>A</div><p>B</p>';
87
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
88
+ });
89
+ it('does not convert paragraphs', function () {
90
+ var input = '<p>A</p><p>B</p>';
91
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
92
+ });
93
+ });
94
+ describe('edge cases', function () {
95
+ it('handles divs with attributes', function () {
96
+ var input = '<div class="test">A</div><div>B</div>';
97
+ // Should not convert since we only want simple divs
98
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(input);
99
+ });
100
+ it('handles complex inline formatting', function () {
101
+ var input = '<div><strong><em>A</em></strong></div><div><u>B</u></div>';
102
+ var expected = '<p><strong><em>A</em></strong><br><u>B</u></p>';
103
+ expect((0, _helper.normalizeInitialMarkup)(input)).toBe(expected);
104
+ });
105
+ });
106
+ });
107
+ //# sourceMappingURL=helper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.test.js","names":["_helper","require","describe","it","expect","normalizeInitialMarkup","toBe","undefined","html","input","expected"],"sources":["../../../src/utils/__tests__/helper.test.js"],"sourcesContent":["import { normalizeInitialMarkup } from '../helper';\n\ndescribe('normalizeInitialMarkup', () => {\n describe('basic normalization', () => {\n it('returns empty div for empty string', () => {\n expect(normalizeInitialMarkup('')).toBe('<div></div>');\n });\n\n it('returns empty div for null', () => {\n expect(normalizeInitialMarkup(null)).toBe('<div></div>');\n });\n\n it('returns empty div for undefined', () => {\n expect(normalizeInitialMarkup(undefined)).toBe('<div></div>');\n });\n\n it('wraps plain text in div', () => {\n expect(normalizeInitialMarkup('Hello')).toBe('<div>Hello</div>');\n });\n\n it('returns HTML tags as-is when detected as HTML', () => {\n // Since '<script>' matches the HTML pattern, it's returned as-is\n // To be escaped, it would need to not match the HTML pattern\n expect(normalizeInitialMarkup('<script>')).toBe('<script>');\n });\n\n it('escapes HTML entities in plain text', () => {\n // Plain text without angle brackets gets escaped\n expect(normalizeInitialMarkup('Hello & World')).toBe('<div>Hello &amp; World</div>');\n });\n\n it('returns single div as-is', () => {\n const html = '<div>Hello</div>';\n expect(normalizeInitialMarkup(html)).toBe(html);\n });\n\n it('returns paragraph as-is', () => {\n const html = '<p>Hello</p>';\n expect(normalizeInitialMarkup(html)).toBe(html);\n });\n });\n\n describe('consecutive divs to paragraph conversion', () => {\n it('converts two consecutive divs to paragraph with br', () => {\n const input = '<div>A</div><div>B</div>';\n const expected = '<p>A<br>B</p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n\n it('converts three consecutive divs to paragraph with br tags', () => {\n const input = '<div>A</div><div>B</div><div>C</div>';\n const expected = '<p>A<br>B<br>C</p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n\n it('handles divs with whitespace', () => {\n const input = '<div> A </div><div> B </div>';\n const expected = '<p> A <br> B </p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n\n it('handles divs with inline elements', () => {\n const input = '<div><strong>A</strong></div><div><em>B</em></div>';\n const expected = '<p><strong>A</strong><br><em>B</em></p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n\n it('handles empty divs', () => {\n const input = '<div></div><div>B</div>';\n const expected = '<p><br>B</p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n\n it('preserves existing br tags within divs', () => {\n const input = '<div>A<br>A2</div><div>B</div>';\n const expected = '<p>A<br>A2<br>B</p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n });\n\n describe('cases that should NOT convert', () => {\n it('does not convert single div', () => {\n const input = '<div>Hello</div>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('does not convert divs with nested block elements', () => {\n const input = '<div><div>Nested</div></div><div>B</div>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('does not convert divs containing tables', () => {\n const input = '<div><table><tr><td>A</td></tr></table></div><div>B</div>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('does not convert divs containing lists', () => {\n const input = '<div><ul><li>Item</li></ul></div><div>B</div>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('does not convert mixed element types', () => {\n const input = '<div>A</div><p>B</p>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('does not convert paragraphs', () => {\n const input = '<p>A</p><p>B</p>';\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n });\n\n describe('edge cases', () => {\n it('handles divs with attributes', () => {\n const input = '<div class=\"test\">A</div><div>B</div>';\n // Should not convert since we only want simple divs\n expect(normalizeInitialMarkup(input)).toBe(input);\n });\n\n it('handles complex inline formatting', () => {\n const input = '<div><strong><em>A</em></strong></div><div><u>B</u></div>';\n const expected = '<p><strong><em>A</em></strong><br><u>B</u></p>';\n expect(normalizeInitialMarkup(input)).toBe(expected);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}