@rebasepro/admin 0.12.0 → 0.12.1-canary.gdfba2a1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-CklalUUk.js","names":[],"sources":["../src/editor/schema.ts","../src/editor/markdown.ts"],"sourcesContent":["import { Schema, NodeSpec, MarkSpec } from \"prosemirror-model\";\nimport { tableNodes } from \"prosemirror-tables\";\n\nconst marks: { [key: string]: MarkSpec } = {\n link: {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: \"_blank\" }\n },\n inclusive: false,\n parseDOM: [\n {\n tag: \"a[href]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return {\n href: dom.getAttribute(\"href\"),\n title: dom.getAttribute(\"title\"),\n target: dom.getAttribute(\"target\") || \"_blank\"\n };\n }\n }\n ],\n toDOM(node) {\n const {\n href,\n title,\n target\n } = node.attrs;\n return [\"a\", {\n href,\n title,\n target,\n class: \"text-surface-700 dark:text-surface-accent-200 underline underline-offset-[3px] hover:text-primary transition-colors cursor-pointer\"\n }, 0];\n }\n },\n bold: {\n parseDOM: [\n { tag: \"strong\" },\n {\n tag: \"b\",\n getAttrs: (node: HTMLElement | string) => typeof node !== \"string\" && node.style.fontWeight !== \"normal\" && null\n },\n {\n style: \"font-weight=400\",\n clearMark: m => m.type.name === \"bold\"\n },\n {\n style: \"font-weight\",\n getAttrs: (value: string | HTMLElement) => typeof value === \"string\" && /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n }\n ],\n toDOM() {\n return [\"strong\", 0];\n }\n },\n italic: {\n parseDOM: [{ tag: \"i\" }, { tag: \"em\" }, { style: \"font-style=italic\" }],\n toDOM() {\n return [\"em\", 0];\n }\n },\n strike: {\n parseDOM: [{ tag: \"s\" }, { tag: \"del\" }, { tag: \"strike\" }, { style: \"text-decoration=line-through\" }],\n toDOM() {\n return [\"s\", 0];\n }\n },\n underline: {\n parseDOM: [{ tag: \"u\" }, { style: \"text-decoration=underline\" }],\n toDOM() {\n return [\"u\", 0];\n }\n },\n code: {\n parseDOM: [{ tag: \"code\" }],\n toDOM() {\n return [\"code\", {\n class: \"rounded-md bg-surface-accent-50 dark:bg-surface-700 px-1.5 py-1 font-mono font-medium\",\n spellcheck: \"false\"\n }, 0];\n }\n },\n textStyle: {\n attrs: { color: { default: null } },\n parseDOM: [\n {\n style: \"color\",\n getAttrs: (value: string | HTMLElement) => {\n if (typeof value === \"string\") return { color: value };\n return false;\n }\n }\n ],\n toDOM(mark) {\n let style = \"\";\n if (mark.attrs.color) style += `color: ${mark.attrs.color};`;\n return [\"span\", { style }, 0];\n }\n },\n highlight: {\n attrs: { color: { default: null } },\n parseDOM: [\n {\n tag: \"mark\",\n getAttrs: (dom: HTMLElement | string) => {\n if (typeof dom === \"string\") return false;\n return { color: dom.style.backgroundColor || dom.getAttribute(\"data-color\") };\n }\n }\n ],\n toDOM(mark) {\n return [\"mark\", mark.attrs.color ? {\n style: `background-color: ${mark.attrs.color}; color: inherit;`,\n \"data-color\": mark.attrs.color\n } : {}, 0];\n }\n }\n};\n\nconst nodes: { [key: string]: NodeSpec } = {\n doc: {\n content: \"block+\"\n },\n paragraph: {\n content: \"inline*\",\n group: \"block\",\n parseDOM: [{ tag: \"p\" }],\n toDOM() {\n return [\"p\", 0];\n }\n },\n text: {\n group: \"inline\"\n },\n blockquote: {\n content: \"block+\",\n group: \"block\",\n defining: true,\n parseDOM: [{ tag: \"blockquote\" }],\n toDOM() {\n return [\"blockquote\", { class: \"border-l-4 border-primary\" }, 0];\n }\n },\n heading: {\n attrs: { level: { default: 1 } },\n content: \"inline*\",\n group: \"block\",\n defining: true,\n parseDOM: [\n {\n tag: \"h1\",\n attrs: { level: 1 }\n },\n {\n tag: \"h2\",\n attrs: { level: 2 }\n },\n {\n tag: \"h3\",\n attrs: { level: 3 }\n },\n {\n tag: \"h4\",\n attrs: { level: 4 }\n },\n {\n tag: \"h5\",\n attrs: { level: 5 }\n },\n {\n tag: \"h6\",\n attrs: { level: 6 }\n }\n ],\n toDOM(node) {\n return [\"h\" + node.attrs.level, 0];\n }\n },\n horizontal_rule: {\n group: \"block\",\n parseDOM: [{ tag: \"hr\" }],\n toDOM() {\n return [\"hr\", { class: \"mt-4 mb-6 border-t border-solid border-gray-200 dark:border-gray-800\" }];\n }\n },\n code_block: {\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n attrs: { language: { default: null } },\n parseDOM: [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\"\n }\n ],\n toDOM(node) {\n return [\"pre\", { class: \"rounded bg-blue-50 dark:bg-surface-700 border border-solid border-gray-200 dark:border-gray-800 p-5 font-mono font-medium text-gray-800 dark:text-gray-200\" }, [\"code\", 0]];\n }\n },\n image: {\n inline: false,\n group: \"block\",\n attrs: {\n src: {},\n alt: { default: null },\n title: { default: null }\n },\n draggable: true,\n parseDOM: [\n {\n tag: \"img[src]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return {\n src: dom.getAttribute(\"src\"),\n title: dom.getAttribute(\"title\"),\n alt: dom.getAttribute(\"alt\")\n };\n }\n }\n ],\n toDOM(node) {\n const {\n src,\n alt,\n title\n } = node.attrs;\n return [\"img\", {\n src,\n alt,\n title,\n class: \"rounded-lg max-w-full !m-0\"\n }];\n }\n },\n bullet_list: {\n content: \"list_item+\",\n group: \"block\",\n parseDOM: [{ tag: \"ul\" }],\n toDOM() {\n return [\"ul\", { class: \"list-disc list-outside leading-3 -mt-2\" }, 0];\n }\n },\n ordered_list: {\n content: \"list_item+\",\n group: \"block\",\n attrs: { order: { default: 1 } },\n parseDOM: [\n {\n tag: \"ol\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\")! : 1 };\n }\n }\n ],\n toDOM(node) {\n return node.attrs.order === 1 ? [\"ol\", { class: \"list-decimal list-outside leading-3 -mt-2\" }, 0] : [\"ol\", {\n start: node.attrs.order,\n class: \"list-decimal list-outside leading-3 -mt-2\"\n }, 0];\n }\n },\n list_item: {\n content: \"paragraph block*\",\n parseDOM: [{ tag: \"li\" }],\n toDOM() {\n return [\"li\", { class: \"leading-normal -mb-2\" }, 0];\n },\n defining: true\n },\n task_list: {\n group: \"block\",\n content: \"task_item+\",\n parseDOM: [{ tag: \"ul[data-type=\\\"taskList\\\"]\" }],\n toDOM() {\n return [\"ul\", {\n \"data-type\": \"taskList\",\n class: \"not-prose\"\n }, 0];\n }\n },\n task_item: {\n content: \"paragraph block*\",\n defining: true,\n attrs: { checked: { default: false } },\n parseDOM: [\n {\n tag: \"li[data-type=\\\"taskItem\\\"]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return { checked: dom.getAttribute(\"data-checked\") === \"true\" };\n }\n }\n ],\n toDOM(node) {\n return [\"li\", {\n \"data-type\": \"taskItem\",\n \"data-checked\": node.attrs.checked ? \"true\" : \"false\",\n class: \"flex items-start my-4\"\n }, 0];\n }\n },\n hard_break: {\n inline: true,\n group: \"inline\",\n selectable: false,\n parseDOM: [{ tag: \"br\" }],\n toDOM() {\n return [\"br\"];\n }\n },\n ...tableNodes({\n tableGroup: \"block\",\n cellContent: \"block+\",\n cellAttributes: {\n background: {\n default: null,\n getFromDOM(dom: HTMLElement) {\n return dom.style.backgroundColor || null\n },\n setDOMAttr(value: unknown, attrs: any) {\n if (value && typeof value === \"string\") attrs.style = (attrs.style || \"\") + `background-color: ${value};`\n }\n }\n }\n })\n};\n\nexport const schema = new Schema({\n nodes,\n marks\n});\n","/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// <reference path=\"./markdown-it-plugins.d.ts\" />\nimport {\n MarkdownParser,\n MarkdownSerializer,\n defaultMarkdownParser,\n defaultMarkdownSerializer\n} from \"prosemirror-markdown\";\nimport markdownIt from \"markdown-it\";\nimport markdownItTaskLists from \"markdown-it-task-lists\";\nimport markdownItMark from \"markdown-it-mark\";\nimport markdownItIns from \"markdown-it-ins\";\n\nimport { schema } from \"./schema\";\n\n/**\n * ProseMirror's MarkdownSerializerState exposes an `out` string property\n * that accumulates the serialised output. The published typings do not\n * include it, so we extend the type locally to avoid `as any` casts.\n */\ninterface MarkdownSerializerStateWithOutput {\n out: string;\n}\n\nconst parserTokens: any = {\n ...defaultMarkdownParser.tokens,\n em: { mark: \"italic\" },\n strong: { mark: \"bold\" },\n html_inline: { ignore: true,\nnoCloseToken: true },\n html_block: { ignore: true,\nnoCloseToken: true },\n s: {\n mark: \"strike\"\n },\n task_list: {\n block: \"task_list\"\n },\n task_item: {\n block: \"task_item\",\n getAttrs: (tok: any) => ({ checked: tok.attrGet(\"checked\") === \"true\" })\n },\n mark: {\n mark: \"highlight\"\n },\n ins: {\n mark: \"underline\"\n },\n table: { block: \"table\" },\n thead: { ignore: true },\n tbody: { ignore: true },\n tr: { block: \"table_row\" },\n th: { block: \"table_header\" },\n td: { block: \"table_cell\" }\n};\n\nconst md = markdownIt({ html: false })\n .use(markdownItTaskLists)\n .use(markdownItMark)\n .use(markdownItIns);\n\n// Unwrap images from paragraphs so they can be parsed as block nodes by ProseMirror\nmd.core.ruler.after(\"inline\", \"image-to-block\", (state: any) => {\n const tokens = state.tokens;\n for (let i = tokens.length - 2; i >= 1; i--) {\n if (\n tokens[i - 1] && tokens[i - 1].type === \"paragraph_open\" &&\n tokens[i] && tokens[i].type === \"inline\" &&\n tokens[i + 1] && tokens[i + 1].type === \"paragraph_close\"\n ) {\n const inlineTokens = tokens[i].children || [];\n if (inlineTokens.length === 1 && inlineTokens[0].type === \"image\") {\n state.tokens.splice(i - 1, 3, inlineTokens[0]);\n // No need to adjust index when looping backward!\n }\n }\n }\n});\n\n// Wrap inline tokens inside table cells into paragraphs to satisfy ProseMirror table cell schema (block+)\nmd.core.ruler.after(\"inline\", \"tables-wrap-paragraphs\", (state: any) => {\n const tokens = state.tokens;\n for (let i = tokens.length - 1; i >= 0; i--) {\n if (tokens[i].type === \"td_open\" || tokens[i].type === \"th_open\") {\n let closeIndex = i + 1;\n while (closeIndex < tokens.length && tokens[closeIndex].type !== \"td_close\" && tokens[closeIndex].type !== \"th_close\") {\n closeIndex++;\n }\n if (closeIndex < tokens.length) {\n const pOpen = new state.Token(\"paragraph_open\", \"p\", 1);\n pOpen.block = true;\n const pClose = new state.Token(\"paragraph_close\", \"p\", -1);\n pClose.block = true;\n\n state.tokens.splice(closeIndex, 0, pClose);\n state.tokens.splice(i + 1, 0, pOpen);\n }\n }\n }\n});\n\nexport const markdownParser = new MarkdownParser(schema, md, parserTokens);\n\n\nexport const markdownSerializer = new MarkdownSerializer(\n {\n ...defaultMarkdownSerializer.nodes,\n // Use \"-\" as bullet character to match markdown-it output and prevent\n // serialization round-trip from changing \"- \" to \"* \" and dirtying the form.\n bullet_list(state, node) {\n state.renderList(node, \" \", () => \"- \");\n },\n // Add custom serialization for task lists\n task_list(state, node) {\n state.renderList(node, \" \", () => \"- \");\n },\n task_item(state, node) {\n state.write(`[${node.attrs.checked ? \"x\" : \" \"}] `);\n state.renderContent(node);\n },\n horizontal_rule(state, node) {\n state.write(node.attrs.markup || \"---\");\n state.closeBlock(node);\n },\n image(state, node) {\n const rawSrc = node.attrs.src || \"\";\n const src = rawSrc.replace(/ /g, \"%20\");\n state.write(\"![\" + state.esc(node.attrs.alt || \"\") + \"](\" + src.replace(/[\\(\\)]/g, \"\\\\$&\") +\n (node.attrs.title ? ' \"' + node.attrs.title.replace(/\"/g, '\\\\\"') + '\"' : \"\") + \")\");\n state.closeBlock(node);\n },\n table(state, node) {\n // Access the internal `.out` accumulator with a typed cast (see MarkdownSerializerStateWithOutput).\n const stateInternal = state as unknown as MarkdownSerializerStateWithOutput;\n node.forEach((row, _, i) => {\n row.forEach((cell, _, j) => {\n if (j === 0) state.write(\"| \");\n else state.write(\" \");\n\n // Capture cell content by tracking state.out length.\n // This avoids monkey-patching state.write which loses\n // flushClose/delim handling and can produce \"undefined\" text.\n const startLen = stateInternal.out.length;\n let first = true;\n cell.forEach((block) => {\n if (!first) stateInternal.out += \"<br>\";\n state.renderInline(block);\n first = false;\n });\n const cellContent = stateInternal.out.slice(startLen);\n // Remove the rendered content from state.out; we'll re-add it escaped\n stateInternal.out = stateInternal.out.slice(0, startLen);\n state.write(cellContent.replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \"));\n state.write(\" |\");\n });\n state.write(\"\\n\");\n if (i === 0) {\n row.forEach((cell, _, j) => {\n state.write(j === 0 ? \"|---|\" : \"---|\");\n });\n state.write(\"\\n\");\n }\n });\n state.closeBlock(node);\n },\n table_row() {},\n table_cell() {},\n table_header() {}\n },\n {\n ...defaultMarkdownSerializer.marks,\n bold: defaultMarkdownSerializer.marks.strong,\n italic: defaultMarkdownSerializer.marks.em,\n strike: { open: \"~~\",\nclose: \"~~\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n highlight: { open: \"==\",\nclose: \"==\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n underline: { open: \"++\",\nclose: \"++\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n link: {\n ...defaultMarkdownSerializer.marks.link,\n close(state: any, mark, parent, index) {\n const inAutolink = state.inAutolink;\n state.inAutolink = undefined;\n const href = mark.attrs.href.replace(/ /g, \"%20\");\n return inAutolink ? \">\"\n : \"](\" + href.replace(/[\\(\\)\"]/g, \"\\\\$&\") + (mark.attrs.title ? ` \"${mark.attrs.title.replace(/\"/g, '\\\\\"')}\"` : \"\") + \")\";\n }\n },\n // textStyle (colored text from HTML) has no markdown equivalent — emit content as-is\n textStyle: { open: \"\",\nclose: \"\",\nmixable: true,\nexpelEnclosingWhitespace: true }\n }\n);\nexport const parser = markdownParser;\nexport const serializer = markdownSerializer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"markdown-CklalUUk.js","names":[],"sources":["../src/editor/schema.ts","../src/editor/markdown.ts"],"sourcesContent":["import { Schema, NodeSpec, MarkSpec } from \"prosemirror-model\";\nimport { tableNodes } from \"prosemirror-tables\";\n\nconst marks: { [key: string]: MarkSpec } = {\n link: {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: \"_blank\" }\n },\n inclusive: false,\n parseDOM: [\n {\n tag: \"a[href]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return {\n href: dom.getAttribute(\"href\"),\n title: dom.getAttribute(\"title\"),\n target: dom.getAttribute(\"target\") || \"_blank\"\n };\n }\n }\n ],\n toDOM(node) {\n const {\n href,\n title,\n target\n } = node.attrs;\n return [\"a\", {\n href,\n title,\n target,\n class: \"text-surface-700 dark:text-surface-accent-200 underline underline-offset-[3px] hover:text-primary transition-colors cursor-pointer\"\n }, 0];\n }\n },\n bold: {\n parseDOM: [\n { tag: \"strong\" },\n {\n tag: \"b\",\n getAttrs: (node: HTMLElement | string) => typeof node !== \"string\" && node.style.fontWeight !== \"normal\" && null\n },\n {\n style: \"font-weight=400\",\n clearMark: m => m.type.name === \"bold\"\n },\n {\n style: \"font-weight\",\n getAttrs: (value: string | HTMLElement) => typeof value === \"string\" && /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null\n }\n ],\n toDOM() {\n return [\"strong\", 0];\n }\n },\n italic: {\n parseDOM: [{ tag: \"i\" }, { tag: \"em\" }, { style: \"font-style=italic\" }],\n toDOM() {\n return [\"em\", 0];\n }\n },\n strike: {\n parseDOM: [{ tag: \"s\" }, { tag: \"del\" }, { tag: \"strike\" }, { style: \"text-decoration=line-through\" }],\n toDOM() {\n return [\"s\", 0];\n }\n },\n underline: {\n parseDOM: [{ tag: \"u\" }, { style: \"text-decoration=underline\" }],\n toDOM() {\n return [\"u\", 0];\n }\n },\n code: {\n parseDOM: [{ tag: \"code\" }],\n toDOM() {\n return [\"code\", {\n class: \"rounded-md bg-surface-accent-50 dark:bg-surface-700 px-1.5 py-1 font-mono font-medium\",\n spellcheck: \"false\"\n }, 0];\n }\n },\n textStyle: {\n attrs: { color: { default: null } },\n parseDOM: [\n {\n style: \"color\",\n getAttrs: (value: string | HTMLElement) => {\n if (typeof value === \"string\") return { color: value };\n return false;\n }\n }\n ],\n toDOM(mark) {\n let style = \"\";\n if (mark.attrs.color) style += `color: ${mark.attrs.color};`;\n return [\"span\", { style }, 0];\n }\n },\n highlight: {\n attrs: { color: { default: null } },\n parseDOM: [\n {\n tag: \"mark\",\n getAttrs: (dom: HTMLElement | string) => {\n if (typeof dom === \"string\") return false;\n return { color: dom.style.backgroundColor || dom.getAttribute(\"data-color\") };\n }\n }\n ],\n toDOM(mark) {\n return [\"mark\", mark.attrs.color ? {\n style: `background-color: ${mark.attrs.color}; color: inherit;`,\n \"data-color\": mark.attrs.color\n } : {}, 0];\n }\n }\n};\n\nconst nodes: { [key: string]: NodeSpec } = {\n doc: {\n content: \"block+\"\n },\n paragraph: {\n content: \"inline*\",\n group: \"block\",\n parseDOM: [{ tag: \"p\" }],\n toDOM() {\n return [\"p\", 0];\n }\n },\n text: {\n group: \"inline\"\n },\n blockquote: {\n content: \"block+\",\n group: \"block\",\n defining: true,\n parseDOM: [{ tag: \"blockquote\" }],\n toDOM() {\n return [\"blockquote\", { class: \"border-l-4 border-primary\" }, 0];\n }\n },\n heading: {\n attrs: { level: { default: 1 } },\n content: \"inline*\",\n group: \"block\",\n defining: true,\n parseDOM: [\n {\n tag: \"h1\",\n attrs: { level: 1 }\n },\n {\n tag: \"h2\",\n attrs: { level: 2 }\n },\n {\n tag: \"h3\",\n attrs: { level: 3 }\n },\n {\n tag: \"h4\",\n attrs: { level: 4 }\n },\n {\n tag: \"h5\",\n attrs: { level: 5 }\n },\n {\n tag: \"h6\",\n attrs: { level: 6 }\n }\n ],\n toDOM(node) {\n return [\"h\" + node.attrs.level, 0];\n }\n },\n horizontal_rule: {\n group: \"block\",\n parseDOM: [{ tag: \"hr\" }],\n toDOM() {\n return [\"hr\", { class: \"mt-4 mb-6 border-t border-solid border-gray-200 dark:border-gray-800\" }];\n }\n },\n code_block: {\n content: \"text*\",\n marks: \"\",\n group: \"block\",\n code: true,\n defining: true,\n attrs: { language: { default: null } },\n parseDOM: [\n {\n tag: \"pre\",\n preserveWhitespace: \"full\"\n }\n ],\n toDOM(node) {\n return [\"pre\", { class: \"rounded bg-blue-50 dark:bg-surface-700 border border-solid border-gray-200 dark:border-gray-800 p-5 font-mono font-medium text-gray-800 dark:text-gray-200\" }, [\"code\", 0]];\n }\n },\n image: {\n inline: false,\n group: \"block\",\n attrs: {\n src: {},\n alt: { default: null },\n title: { default: null }\n },\n draggable: true,\n parseDOM: [\n {\n tag: \"img[src]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return {\n src: dom.getAttribute(\"src\"),\n title: dom.getAttribute(\"title\"),\n alt: dom.getAttribute(\"alt\")\n };\n }\n }\n ],\n toDOM(node) {\n const {\n src,\n alt,\n title\n } = node.attrs;\n return [\"img\", {\n src,\n alt,\n title,\n class: \"rounded-lg max-w-full !m-0\"\n }];\n }\n },\n bullet_list: {\n content: \"list_item+\",\n group: \"block\",\n parseDOM: [{ tag: \"ul\" }],\n toDOM() {\n return [\"ul\", { class: \"list-disc list-outside leading-3 -mt-2\" }, 0];\n }\n },\n ordered_list: {\n content: \"list_item+\",\n group: \"block\",\n attrs: { order: { default: 1 } },\n parseDOM: [\n {\n tag: \"ol\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\")! : 1 };\n }\n }\n ],\n toDOM(node) {\n return node.attrs.order === 1 ? [\"ol\", { class: \"list-decimal list-outside leading-3 -mt-2\" }, 0] : [\"ol\", {\n start: node.attrs.order,\n class: \"list-decimal list-outside leading-3 -mt-2\"\n }, 0];\n }\n },\n list_item: {\n content: \"paragraph block*\",\n parseDOM: [{ tag: \"li\" }],\n toDOM() {\n return [\"li\", { class: \"leading-normal -mb-2\" }, 0];\n },\n defining: true\n },\n task_list: {\n group: \"block\",\n content: \"task_item+\",\n parseDOM: [{ tag: \"ul[data-type=\\\"taskList\\\"]\" }],\n toDOM() {\n return [\"ul\", {\n \"data-type\": \"taskList\",\n class: \"not-prose\"\n }, 0];\n }\n },\n task_item: {\n content: \"paragraph block*\",\n defining: true,\n attrs: { checked: { default: false } },\n parseDOM: [\n {\n tag: \"li[data-type=\\\"taskItem\\\"]\",\n getAttrs(dom: HTMLElement | string) {\n if (typeof dom === \"string\") return false;\n return { checked: dom.getAttribute(\"data-checked\") === \"true\" };\n }\n }\n ],\n toDOM(node) {\n return [\"li\", {\n \"data-type\": \"taskItem\",\n \"data-checked\": node.attrs.checked ? \"true\" : \"false\",\n class: \"flex items-start my-4\"\n }, 0];\n }\n },\n hard_break: {\n inline: true,\n group: \"inline\",\n selectable: false,\n parseDOM: [{ tag: \"br\" }],\n toDOM() {\n return [\"br\"];\n }\n },\n ...tableNodes({\n tableGroup: \"block\",\n cellContent: \"block+\",\n cellAttributes: {\n background: {\n default: null,\n getFromDOM(dom: HTMLElement) {\n return dom.style.backgroundColor || null\n },\n setDOMAttr(value: unknown, attrs: any) {\n if (value && typeof value === \"string\") attrs.style = (attrs.style || \"\") + `background-color: ${value};`\n }\n }\n }\n })\n};\n\nexport const schema = new Schema({\n nodes,\n marks\n});\n","/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// <reference path=\"./markdown-it-plugins.d.ts\" />\nimport {\n MarkdownParser,\n MarkdownSerializer,\n defaultMarkdownParser,\n defaultMarkdownSerializer\n} from \"prosemirror-markdown\";\nimport markdownIt from \"markdown-it\";\nimport markdownItTaskLists from \"markdown-it-task-lists\";\nimport markdownItMark from \"markdown-it-mark\";\nimport markdownItIns from \"markdown-it-ins\";\n\nimport { schema } from \"./schema\";\n\n/**\n * ProseMirror's MarkdownSerializerState exposes an `out` string property\n * that accumulates the serialised output. The published typings do not\n * include it, so we extend the type locally to avoid `as any` casts.\n */\ninterface MarkdownSerializerStateWithOutput {\n out: string;\n}\n\nconst parserTokens: any = {\n ...defaultMarkdownParser.tokens,\n em: { mark: \"italic\" },\n strong: { mark: \"bold\" },\n html_inline: { ignore: true,\nnoCloseToken: true },\n html_block: { ignore: true,\nnoCloseToken: true },\n s: {\n mark: \"strike\"\n },\n task_list: {\n block: \"task_list\"\n },\n task_item: {\n block: \"task_item\",\n getAttrs: (tok: any) => ({ checked: tok.attrGet(\"checked\") === \"true\" })\n },\n mark: {\n mark: \"highlight\"\n },\n ins: {\n mark: \"underline\"\n },\n table: { block: \"table\" },\n thead: { ignore: true },\n tbody: { ignore: true },\n tr: { block: \"table_row\" },\n th: { block: \"table_header\" },\n td: { block: \"table_cell\" }\n};\n\nconst md = markdownIt({ html: false })\n .use(markdownItTaskLists)\n .use(markdownItMark)\n .use(markdownItIns);\n\n// Unwrap images from paragraphs so they can be parsed as block nodes by ProseMirror\nmd.core.ruler.after(\"inline\", \"image-to-block\", (state: any) => {\n const tokens = state.tokens;\n for (let i = tokens.length - 2; i >= 1; i--) {\n if (\n tokens[i - 1] && tokens[i - 1].type === \"paragraph_open\" &&\n tokens[i] && tokens[i].type === \"inline\" &&\n tokens[i + 1] && tokens[i + 1].type === \"paragraph_close\"\n ) {\n const inlineTokens = tokens[i].children || [];\n if (inlineTokens.length === 1 && inlineTokens[0].type === \"image\") {\n state.tokens.splice(i - 1, 3, inlineTokens[0]);\n // No need to adjust index when looping backward!\n }\n }\n }\n});\n\n// Wrap inline tokens inside table cells into paragraphs to satisfy ProseMirror table cell schema (block+)\nmd.core.ruler.after(\"inline\", \"tables-wrap-paragraphs\", (state: any) => {\n const tokens = state.tokens;\n for (let i = tokens.length - 1; i >= 0; i--) {\n if (tokens[i].type === \"td_open\" || tokens[i].type === \"th_open\") {\n let closeIndex = i + 1;\n while (closeIndex < tokens.length && tokens[closeIndex].type !== \"td_close\" && tokens[closeIndex].type !== \"th_close\") {\n closeIndex++;\n }\n if (closeIndex < tokens.length) {\n const pOpen = new state.Token(\"paragraph_open\", \"p\", 1);\n pOpen.block = true;\n const pClose = new state.Token(\"paragraph_close\", \"p\", -1);\n pClose.block = true;\n\n state.tokens.splice(closeIndex, 0, pClose);\n state.tokens.splice(i + 1, 0, pOpen);\n }\n }\n }\n});\n\nexport const markdownParser = new MarkdownParser(schema, md, parserTokens);\n\n\nexport const markdownSerializer = new MarkdownSerializer(\n {\n ...defaultMarkdownSerializer.nodes,\n // Use \"-\" as bullet character to match markdown-it output and prevent\n // serialization round-trip from changing \"- \" to \"* \" and dirtying the form.\n bullet_list(state, node) {\n state.renderList(node, \" \", () => \"- \");\n },\n // Add custom serialization for task lists\n task_list(state, node) {\n state.renderList(node, \" \", () => \"- \");\n },\n task_item(state, node) {\n state.write(`[${node.attrs.checked ? \"x\" : \" \"}] `);\n state.renderContent(node);\n },\n horizontal_rule(state, node) {\n state.write(node.attrs.markup || \"---\");\n state.closeBlock(node);\n },\n image(state, node) {\n const rawSrc = node.attrs.src || \"\";\n const src = rawSrc.replace(/ /g, \"%20\");\n state.write(\"![\" + state.esc(node.attrs.alt || \"\") + \"](\" + src.replace(/[\\(\\)]/g, \"\\\\$&\") +\n (node.attrs.title ? ' \"' + node.attrs.title.replace(/\"/g, '\\\\\"') + '\"' : \"\") + \")\");\n state.closeBlock(node);\n },\n table(state, node) {\n // Access the internal `.out` accumulator with a typed cast (see MarkdownSerializerStateWithOutput).\n const stateInternal = state as unknown as MarkdownSerializerStateWithOutput;\n node.forEach((row, _, i) => {\n row.forEach((cell, _, j) => {\n if (j === 0) state.write(\"| \");\n else state.write(\" \");\n\n // Capture cell content by tracking state.out length.\n // This avoids monkey-patching state.write which loses\n // flushClose/delim handling and can produce \"undefined\" text.\n const startLen = stateInternal.out.length;\n let first = true;\n cell.forEach((block) => {\n if (!first) stateInternal.out += \"<br>\";\n state.renderInline(block);\n first = false;\n });\n const cellContent = stateInternal.out.slice(startLen);\n // Remove the rendered content from state.out; we'll re-add it escaped\n stateInternal.out = stateInternal.out.slice(0, startLen);\n state.write(cellContent.replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \"));\n state.write(\" |\");\n });\n state.write(\"\\n\");\n if (i === 0) {\n row.forEach((cell, _, j) => {\n state.write(j === 0 ? \"|---|\" : \"---|\");\n });\n state.write(\"\\n\");\n }\n });\n state.closeBlock(node);\n },\n table_row() {},\n table_cell() {},\n table_header() {}\n },\n {\n ...defaultMarkdownSerializer.marks,\n bold: defaultMarkdownSerializer.marks.strong,\n italic: defaultMarkdownSerializer.marks.em,\n strike: { open: \"~~\",\nclose: \"~~\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n highlight: { open: \"==\",\nclose: \"==\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n underline: { open: \"++\",\nclose: \"++\",\nmixable: true,\nexpelEnclosingWhitespace: true },\n link: {\n ...defaultMarkdownSerializer.marks.link,\n close(state: any, mark, parent, index) {\n const inAutolink = state.inAutolink;\n state.inAutolink = undefined;\n const href = mark.attrs.href.replace(/ /g, \"%20\");\n return inAutolink ? \">\"\n : \"](\" + href.replace(/[\\(\\)\"]/g, \"\\\\$&\") + (mark.attrs.title ? ` \"${mark.attrs.title.replace(/\"/g, '\\\\\"')}\"` : \"\") + \")\";\n }\n },\n // textStyle (colored text from HTML) has no markdown equivalent — emit content as-is\n textStyle: { open: \"\",\nclose: \"\",\nmixable: true,\nexpelEnclosingWhitespace: true }\n }\n);\nexport const parser = markdownParser;\nexport const serializer = markdownSerializer;\n"],"mappings":"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"}
@@ -2265,8 +2265,10 @@ function VirtualTableSelect(props) {
2265
2265
  if (ref.current && focused) ref.current?.focus({ preventScroll: true });
2266
2266
  }, [focused, ref]);
2267
2267
  const onChange = useCallback((updatedValue) => {
2268
- if (valueType === "number") if (multiple) updateValue(updatedValue.map((v) => parseFloat(v)));
2269
- else updateValue(parseFloat(updatedValue));
2268
+ if (valueType === "number") if (multiple) {
2269
+ const newValue = updatedValue.map((v) => parseFloat(v));
2270
+ updateValue(newValue);
2271
+ } else updateValue(parseFloat(updatedValue));
2270
2272
  else if (valueType === "string") if (!updatedValue) updateValue(null);
2271
2273
  else updateValue(updatedValue);
2272
2274
  else throw Error("Missing mapping in TableSelect");
@@ -4974,7 +4976,8 @@ function StringNumberFilterField({ name, value, setValue, type, isArray, enumVal
4974
4976
  disabled: isNullOperation,
4975
4977
  placeholder: isNullOperation ? "null" : void 0,
4976
4978
  onChange: (evt) => {
4977
- updateFilter(operation, type === "number" ? parseFloat(evt.target.value) : evt.target.value);
4979
+ const val = type === "number" ? parseFloat(evt.target.value) : evt.target.value;
4980
+ updateFilter(operation, val);
4978
4981
  },
4979
4982
  endAdornment: internalValue !== void 0 && internalValue != null && /* @__PURE__ */ jsx(IconButton, {
4980
4983
  onClick: (e) => updateFilter(operation, void 0),
@@ -5842,6 +5845,13 @@ var CollectionTableBinding = function CollectionTableBinding({ className, style,
5842
5845
  }), {}) : entity;
5843
5846
  const Builder = additionalField.Builder;
5844
5847
  if (!Builder && !additionalField.value) throw new Error("When using additional fields you need to provide a Builder or a value");
5848
+ const child = Builder ? /* @__PURE__ */ jsx(Builder, {
5849
+ entity,
5850
+ context
5851
+ }) : /* @__PURE__ */ jsx(Fragment, { children: additionalField.value?.({
5852
+ entity,
5853
+ context
5854
+ })?.toString() });
5845
5855
  return /* @__PURE__ */ jsx(EntityTableCell, {
5846
5856
  width,
5847
5857
  size,
@@ -5858,13 +5868,7 @@ var CollectionTableBinding = function CollectionTableBinding({ className, style,
5858
5868
  isDragging,
5859
5869
  isDraggable,
5860
5870
  frozen,
5861
- children: /* @__PURE__ */ jsx(ErrorBoundary, { children: Builder ? /* @__PURE__ */ jsx(Builder, {
5862
- entity,
5863
- context
5864
- }) : /* @__PURE__ */ jsx(Fragment, { children: additionalField.value?.({
5865
- entity,
5866
- context
5867
- })?.toString() }) })
5871
+ children: /* @__PURE__ */ jsx(ErrorBoundary, { children: child })
5868
5872
  }, `additional_table_cell_${entity.id}_${column.key}`);
5869
5873
  }, [size]);
5870
5874
  const engine = useCollectionScope()?.engine;
@@ -6315,7 +6319,10 @@ function SearchIconsView({ selectedIcon = "", onIconSelected }) {
6315
6319
  const [query, setQuery] = React.useState("");
6316
6320
  const updateSearchResults = React.useMemo(() => debounce((value) => {
6317
6321
  if (!value || value === "") setKeys(null);
6318
- else setKeys(iconsSearch.search(value).slice(0, 50).map((e) => e.item.key));
6322
+ else {
6323
+ const limited = iconsSearch.search(value).slice(0, 50);
6324
+ setKeys(limited.map((e) => e.item.key));
6325
+ }
6319
6326
  }, UPDATE_SEARCH_INDEX_WAIT_MS), []);
6320
6327
  React.useEffect(() => {
6321
6328
  updateSearchResults(query);
@@ -6516,15 +6523,18 @@ function ArrayContainer({ droppableId, addLabel, value, disabled = false, buildE
6516
6523
  }, []);
6517
6524
  const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }), useSensor(KeyboardSensor, {}));
6518
6525
  useEffect(() => {
6519
- if (hasValue && value && value.length !== internalIds.length) setInternalIds(value.map((v, index) => {
6520
- const hashValue = (getHashValue(v) ?? String(index)) + index;
6521
- if (hashValue in internalIdsRef.current) return internalIdsRef.current[hashValue];
6522
- else {
6523
- const newInternalId = getRandomId$1();
6524
- internalIdsRef.current[hashValue] = newInternalId;
6525
- return newInternalId;
6526
- }
6527
- }));
6526
+ if (hasValue && value && value.length !== internalIds.length) {
6527
+ const newInternalIds = value.map((v, index) => {
6528
+ const hashValue = (getHashValue(v) ?? String(index)) + index;
6529
+ if (hashValue in internalIdsRef.current) return internalIdsRef.current[hashValue];
6530
+ else {
6531
+ const newInternalId = getRandomId$1();
6532
+ internalIdsRef.current[hashValue] = newInternalId;
6533
+ return newInternalId;
6534
+ }
6535
+ });
6536
+ setInternalIds(newInternalIds);
6537
+ }
6528
6538
  }, [
6529
6539
  hasValue,
6530
6540
  internalIds.length,
@@ -6585,7 +6595,8 @@ function ArrayContainer({ droppableId, addLabel, value, disabled = false, buildE
6585
6595
  const oldIndex = internalIds.indexOf(active.id);
6586
6596
  const newIndex = internalIds.indexOf(over.id);
6587
6597
  if (oldIndex === -1 || newIndex === -1) return;
6588
- setInternalIds(arrayMove$1(internalIds, oldIndex, newIndex));
6598
+ const newIds = arrayMove$1(internalIds, oldIndex, newIndex);
6599
+ setInternalIds(newIds);
6589
6600
  onValueChange(arrayMove$1(value ?? [], oldIndex, newIndex));
6590
6601
  };
6591
6602
  return sortable ? /* @__PURE__ */ jsx(DndContext, {
@@ -7308,8 +7319,9 @@ var ConfigControllerProvider = React.memo(function ConfigControllerProvider({ ch
7308
7319
  editedCollectionId
7309
7320
  });
7310
7321
  const namespace = propertyKey && propertyKey.includes(".") ? propertyKey.substring(0, propertyKey.lastIndexOf(".")) : void 0;
7322
+ const propertyKeyWithoutNamespace = propertyKey && propertyKey.includes(".") ? propertyKey.substring(propertyKey.lastIndexOf(".") + 1) : propertyKey;
7311
7323
  setCurrentPropertyDialog({
7312
- propertyKey: propertyKey && propertyKey.includes(".") ? propertyKey.substring(propertyKey.lastIndexOf(".") + 1) : propertyKey,
7324
+ propertyKey: propertyKeyWithoutNamespace,
7313
7325
  property,
7314
7326
  namespace,
7315
7327
  currentPropertiesOrder,
@@ -7365,7 +7377,10 @@ var ConfigControllerProvider = React.memo(function ConfigControllerProvider({ ch
7365
7377
  onFetchTableMetadata,
7366
7378
  handleClose: (collection) => {
7367
7379
  if (currentDialog?.redirect) {
7368
- if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionSlugs.length) navigate(urlController.buildUrlCollectionPath(collection.slug));
7380
+ if (collection && currentDialog?.isNewCollection && !currentDialog.parentCollectionSlugs.length) {
7381
+ const url = urlController.buildUrlCollectionPath(collection.slug);
7382
+ navigate(url);
7383
+ }
7369
7384
  }
7370
7385
  setCurrentDialog(void 0);
7371
7386
  }
@@ -7532,8 +7547,8 @@ function EditorCollectionAction({ path, parentCollectionSlugs, parentEntityIds,
7532
7547
  }
7533
7548
  //#endregion
7534
7549
  //#region src/components/CollectionViewBinding/CollectionViewActions.tsx
7535
- var ImportCollectionAction = lazy(() => import("./import-BjUG-cIY.js").then((n) => n.t).then((m) => ({ default: m.ImportCollectionAction })));
7536
- var ExportCollectionAction = lazy(() => import("./export-BzIpUdSK.js").then((n) => n.t).then((m) => ({ default: m.ExportCollectionAction })));
7550
+ var ImportCollectionAction = lazy(() => import("./import-Ci32nU0G.js").then((n) => n.t).then((m) => ({ default: m.ImportCollectionAction })));
7551
+ var ExportCollectionAction = lazy(() => import("./export-CrDJOGKn.js").then((n) => n.t).then((m) => ({ default: m.ExportCollectionAction })));
7537
7552
  function CollectionViewActions({ collection, relativePath, parentCollectionSlugs, parentEntityIds, onNewClick, onAddExistingClick, onMultipleDeleteClick, selectionEnabled, path, selectionController, tableController, collectionEntitiesCount, compact, children, openNewDocument }) {
7538
7553
  const context = useAdminContext();
7539
7554
  const { canCreate, canDelete } = usePermissions();
@@ -7723,7 +7738,7 @@ function resolveCollectionSlotKeys(collection, authController, propertyConfigs)
7723
7738
  if (!hasExplicitOrder) {
7724
7739
  for (const [key, prop] of Object.entries(collection.properties)) if (prop.type === "relation") relationKeys.push(key);
7725
7740
  }
7726
- const excludeKeys = new Set([
7741
+ const excludeKeys = /* @__PURE__ */ new Set([
7727
7742
  titleKey,
7728
7743
  imageKey,
7729
7744
  statusKey,
@@ -8356,7 +8371,7 @@ function CollectionListViewBinding({ collection, tableController, onEntityClick,
8356
8371
  const showStatus = statusPropertyKey && size !== "xs" && size !== "s";
8357
8372
  const subtitleKey = previewKeys.length > 0 ? previewKeys[0] : void 0;
8358
8373
  const allKeys = resolvedCollection.propertiesOrder || Object.keys(resolvedCollection.properties);
8359
- const usedKeys = new Set([
8374
+ const usedKeys = /* @__PURE__ */ new Set([
8360
8375
  titlePropertyKey,
8361
8376
  imagePropertyKey,
8362
8377
  statusPropertyKey,
@@ -9026,7 +9041,7 @@ var MAIN_TAB_VALUE = "__main_##Q$SC^#S6";
9026
9041
  var JSON_TAB_VALUE = "__json";
9027
9042
  //#endregion
9028
9043
  //#region src/components/DetailViewBinding.tsx
9029
- var EntityHistoryView$1 = lazy(() => import("./history-g9688IaK.js").then((m) => ({ default: m.EntityHistoryView })));
9044
+ var EntityHistoryView$1 = lazy(() => import("./history-s6Nzt7RF.js").then((m) => ({ default: m.EntityHistoryView })));
9030
9045
  function DetailViewBinding({ entityId, ...props }) {
9031
9046
  const { entity, dataLoading, dataLoadingError } = useFetch({
9032
9047
  path: props.path,
@@ -9096,7 +9111,7 @@ function DetailViewBindingInner({ path, entityId, selectedTab: selectedTabProp,
9096
9111
  const hasAdditionalViews = customViewsCount > 0 || subcollectionsCount > 0 || includeJsonView || includeHistoryView;
9097
9112
  const { resolvedEntityViews } = resolvedSelectedEntityView(customViews, customizationController, void 0, canEdit);
9098
9113
  const activeTab = useMemo(() => {
9099
- return new Set([
9114
+ return /* @__PURE__ */ new Set([
9100
9115
  "__main_##Q$SC^#S6",
9101
9116
  ...includeJsonView ? ["__json"] : [],
9102
9117
  ...includeHistoryView ? ["__rebase_history"] : [],
@@ -9321,7 +9336,8 @@ function DetailViewBindingInner({ path, entityId, selectedTab: selectedTabProp,
9321
9336
  children: /* @__PURE__ */ jsx(IconButton, {
9322
9337
  size: "small",
9323
9338
  onClick: () => {
9324
- navigate(`${urlController.buildUrlCollectionPath(`${path}/${entityId}`)}#full`);
9339
+ const entityUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}`);
9340
+ navigate(`${entityUrl}#full`);
9325
9341
  },
9326
9342
  children: /* @__PURE__ */ jsx(Maximize2Icon, { size: iconSize.smallest })
9327
9343
  })
@@ -10203,7 +10219,8 @@ function useBoardDataController({ fullPath, collection, columnProperty, columns,
10203
10219
  const timeoutId = setTimeout(() => {
10204
10220
  if (isCleaningUpRef.current) return;
10205
10221
  currentColumns.forEach((column) => {
10206
- subscribeToColumn(column, currentColumnItemCounts[column] ?? pageSize);
10222
+ const itemCount = currentColumnItemCounts[column] ?? pageSize;
10223
+ subscribeToColumn(column, itemCount);
10207
10224
  if (isColumnExcludedByFilter(column, currentFilterValues, currentColumnProperty)) return;
10208
10225
  const accessor = currentDataClient.collection(currentResolvedPath);
10209
10226
  if (accessor.count) {
@@ -11786,7 +11803,8 @@ function PopupFormFieldInternal({ tableKey, entityId, customFieldValidator, prop
11786
11803
  const updatePopupLocation = useCallback((newPositionCandidate) => {
11787
11804
  const draggableBoundingRect = draggableRef.current?.getBoundingClientRect();
11788
11805
  if (!cellRect || !draggableBoundingRect || draggableBoundingRect.width === 0 || draggableBoundingRect.height === 0) return;
11789
- const newNormalizedPosition = normalizePosition(newPositionCandidate ?? getInitialLocation(), draggableBoundingRect, windowSize);
11806
+ const basePosition = newPositionCandidate ?? getInitialLocation();
11807
+ const newNormalizedPosition = normalizePosition(basePosition, draggableBoundingRect, windowSize);
11790
11808
  if (!popupLocation || newNormalizedPosition.x !== popupLocation.x || newNormalizedPosition.y !== popupLocation.y) setPopupLocation(newNormalizedPosition);
11791
11809
  }, [
11792
11810
  cellRect,
@@ -12587,7 +12605,10 @@ var CollectionViewBindingInner = React.memo(function CollectionViewBindingInner(
12587
12605
  }, [defaultViewMode, setSearchParams]);
12588
12606
  useEffect(() => {
12589
12607
  if (urlView) setViewModeState(urlView);
12590
- else setViewModeState(getSavedView() ?? defaultViewMode);
12608
+ else {
12609
+ const savedView = getSavedView();
12610
+ setViewModeState(savedView ?? defaultViewMode);
12611
+ }
12591
12612
  }, [
12592
12613
  urlView,
12593
12614
  getSavedView,
@@ -12619,9 +12640,10 @@ var CollectionViewBindingInner = React.memo(function CollectionViewBindingInner(
12619
12640
  entityId: clickedEntity.id
12620
12641
  });
12621
12642
  if (collection) addRecentId(collection.slug, clickedEntity.id);
12643
+ const entityPath = path ?? clickedEntity.path;
12622
12644
  navigateToEntity({
12623
12645
  navigation: urlController,
12624
- path: path ?? clickedEntity.path,
12646
+ path: entityPath,
12625
12647
  sidePanelController,
12626
12648
  openEntityMode,
12627
12649
  collection,
@@ -12765,7 +12787,8 @@ var CollectionViewBindingInner = React.memo(function CollectionViewBindingInner(
12765
12787
  const onColumnResize = useCallback(({ width, key }) => {
12766
12788
  const collection = collectionRef.current;
12767
12789
  if (!getPropertyInPath(collection.properties, key)) return;
12768
- onCollectionModifiedForUser(path, buildPropertyWidthOverwrite(key, width));
12790
+ const localCollection = buildPropertyWidthOverwrite(key, width);
12791
+ onCollectionModifiedForUser(path, localCollection);
12769
12792
  }, [onCollectionModifiedForUser, path]);
12770
12793
  const onListSizeChanged = useCallback((size) => {
12771
12794
  setListSize(size);
@@ -12947,21 +12970,24 @@ var CollectionViewBindingInner = React.memo(function CollectionViewBindingInner(
12947
12970
  return (largeLayout ? 80 + actionsWidth : 70 + actionsWidth) + (collapsedActions.length > 0 ? largeLayout ? 40 : 30 : 0);
12948
12971
  }, [getActionsForEntity, largeLayout]);
12949
12972
  const tableRowActionsBuilder = useCallback(({ entity, size, width, frozen }) => {
12973
+ const isSelected = Boolean(usedSelectionController.selectedEntities.find((e) => e.id == entity.id && e.path == entity.path));
12974
+ const customEntityActions = (collection.entityActions ?? EMPTY_ARRAY).map((action) => resolveEntityAction(action, customizationController.entityActions)).filter(Boolean);
12975
+ const actions = getActionsForEntity({
12976
+ entity,
12977
+ customEntityActions
12978
+ });
12950
12979
  return /* @__PURE__ */ jsx(CollectionRowActions, {
12951
12980
  entity,
12952
12981
  width,
12953
12982
  frozen,
12954
- isSelected: Boolean(usedSelectionController.selectedEntities.find((e) => e.id == entity.id && e.path == entity.path)),
12983
+ isSelected,
12955
12984
  selectionEnabled: activeSelectionEnabled,
12956
12985
  size,
12957
12986
  highlightEntity: setHighlightedEntity,
12958
12987
  unhighlightEntity: unselectNavigatedEntity,
12959
12988
  collection,
12960
12989
  path,
12961
- actions: getActionsForEntity({
12962
- entity,
12963
- customEntityActions: (collection.entityActions ?? EMPTY_ARRAY).map((action) => resolveEntityAction(action, customizationController.entityActions)).filter(Boolean)
12964
- }),
12990
+ actions,
12965
12991
  hideId: collection?.hideIdFromCollection,
12966
12992
  onCollectionChange: updateLastDeleteTimestamp,
12967
12993
  selectionController: usedSelectionController,
@@ -12983,12 +13009,13 @@ var CollectionViewBindingInner = React.memo(function CollectionViewBindingInner(
12983
13009
  const { resolvedSlots } = customizationController;
12984
13010
  const headerActionContributions = useMemo(() => resolvedSlots.filter((s) => s.slot === "collection.header.action").sort((a, b) => (a.order ?? 50) - (b.order ?? 50)), [resolvedSlots]);
12985
13011
  const buildAdditionalHeaderWidget = useCallback(({ property, propertyKey, onHover }) => {
13012
+ const collection = collectionRef.current;
12986
13013
  const headerSlotProps = {
12987
13014
  property,
12988
13015
  propertyKey,
12989
13016
  onHover,
12990
13017
  path,
12991
- collection: collectionRef.current,
13018
+ collection,
12992
13019
  tableController,
12993
13020
  parentCollectionSlugs: parentCollectionSlugs ?? EMPTY_ARRAY,
12994
13021
  parentEntityIds: parentEntityIds ?? EMPTY_ARRAY
@@ -13729,7 +13756,7 @@ function EntityActionButton({ action, enabled, props }) {
13729
13756
  }
13730
13757
  //#endregion
13731
13758
  //#region src/components/EditViewBinding.tsx
13732
- var EntityHistoryView = lazy(() => import("./history-g9688IaK.js").then((m) => ({ default: m.EntityHistoryView })));
13759
+ var EntityHistoryView = lazy(() => import("./history-s6Nzt7RF.js").then((m) => ({ default: m.EntityHistoryView })));
13733
13760
  /**
13734
13761
  * This is the default view that is used as the content of a side panel when
13735
13762
  * a record is opened.
@@ -13843,7 +13870,7 @@ function EditViewBindingInner({ path, entityId, selectedTab: selectedTabProp, co
13843
13870
  const hasAdditionalViews = customViewsCount > 0 || subcollectionsCount > 0 || includeJsonView || includeHistoryView;
13844
13871
  const { resolvedEntityViews } = resolvedSelectedEntityView(customViews, customizationController, void 0, canEdit);
13845
13872
  const activeTab = useMemo(() => {
13846
- return new Set([
13873
+ return /* @__PURE__ */ new Set([
13847
13874
  "__main_##Q$SC^#S6",
13848
13875
  ...includeJsonView ? ["__json"] : [],
13849
13876
  ...includeHistoryView ? ["__rebase_history"] : [],
@@ -14107,7 +14134,8 @@ function EditViewBindingInner({ path, entityId, selectedTab: selectedTabProp, co
14107
14134
  size: "small",
14108
14135
  onClick: () => {
14109
14136
  const editSuffix = collection.defaultEntityAction === "view" ? "/edit" : "";
14110
- navigate(`${urlController.buildUrlCollectionPath(`${path}/${entityId}${editSuffix}`)}#full`);
14137
+ const entityUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}${editSuffix}`);
14138
+ navigate(`${entityUrl}#full`);
14111
14139
  },
14112
14140
  children: /* @__PURE__ */ jsx(Maximize2Icon, { size: iconSize.smallest })
14113
14141
  })
@@ -14408,7 +14436,10 @@ function SidePanelBinding(props) {
14408
14436
  className: "self-center",
14409
14437
  size: "small",
14410
14438
  onClick: () => {
14411
- if (entityId) navigate(urlController.buildUrlCollectionPath(`${path}/${entityId}`), { state: null });
14439
+ if (entityId) {
14440
+ const fullScreenUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}`);
14441
+ navigate(fullScreenUrl, { state: null });
14442
+ }
14412
14443
  },
14413
14444
  children: /* @__PURE__ */ jsx(Maximize2Icon, {})
14414
14445
  })]
@@ -14446,8 +14477,13 @@ function SidePanelBinding(props) {
14446
14477
  saveEntityToMemoryCache(status === "new" || status === "copy" ? path + "#new" : path + "/" + entityId, values);
14447
14478
  setBlocked(false);
14448
14479
  setBlockedNavigationMessage(void 0);
14449
- if (entityId) navigate(urlController.buildUrlCollectionPath(`${path}/${entityId}`), { state: null });
14450
- else navigate(urlController.buildUrlCollectionPath(path) + "#new", { state: null });
14480
+ if (entityId) {
14481
+ const fullScreenUrl = urlController.buildUrlCollectionPath(`${path}/${entityId}`);
14482
+ navigate(fullScreenUrl, { state: null });
14483
+ } else {
14484
+ const fullScreenUrl = urlController.buildUrlCollectionPath(path);
14485
+ navigate(fullScreenUrl + "#new", { state: null });
14486
+ }
14451
14487
  },
14452
14488
  children: /* @__PURE__ */ jsx(Maximize2Icon, {})
14453
14489
  })]
@@ -17143,11 +17179,12 @@ function MultiSelectFieldBinding({ propertyKey, value, setValue, error, showErro
17143
17179
  });
17144
17180
  const validValue = !!value && Array.isArray(value);
17145
17181
  const renderValue = useCallback((enumKey, list) => {
17182
+ const enumValue = enumKey !== void 0 ? getLabelOrConfigFrom(enumValues, enumKey) : void 0;
17146
17183
  return /* @__PURE__ */ jsxs(EnumValuesChip, {
17147
17184
  enumKey,
17148
17185
  enumValues,
17149
17186
  size: "medium",
17150
- children: [(enumKey !== void 0 ? getLabelOrConfigFrom(enumValues, enumKey) : void 0)?.label ?? enumKey, !list && /* @__PURE__ */ jsx("button", {
17187
+ children: [enumValue?.label ?? enumKey, !list && /* @__PURE__ */ jsx("button", {
17151
17188
  className: "ml-1 ring-offset-background rounded-full outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
17152
17189
  onMouseDown: (e) => {
17153
17190
  e.preventDefault();
@@ -19520,7 +19557,7 @@ function getChanges(source, comparison) {
19520
19557
  const changes = {};
19521
19558
  if (!source) return {};
19522
19559
  if (!comparison) return source;
19523
- const allKeys = Array.from(new Set([...Object.keys(source), ...Object.keys(comparison)]));
19560
+ const allKeys = Array.from(/* @__PURE__ */ new Set([...Object.keys(source), ...Object.keys(comparison)]));
19524
19561
  for (const key of allKeys) {
19525
19562
  const sourceValue = source[key];
19526
19563
  const comparisonValue = comparison[key];
@@ -21100,4 +21137,4 @@ function getFullIdPath(propertyKey, propertyNamespace) {
21100
21137
  //#endregion
21101
21138
  export { useBuildCollectionRegistryController as $, StorageThumbnailInternal as $n, CollectionTableBinding as $t, getFieldId as A, ArrayOfReferencesPreview as An, convertFileToJson as At, MapFieldBinding as B, getBracketNotation as Bn, getCollectionBySlugWithin as Bt, removeEmptyContainers as C, MapPropertyPreview as Cn, convertDataToEntity as Ct, getDefaultFieldConfig as D, ArrayEnumPreview as Dn, useImportConfig as Dt, DEFAULT_FIELD_CONFIGS as E, ArrayPropertyEnumPreview as En, getInferenceType as Et, SelectFieldBinding as F, CollectionRegistryContext as Fn, FieldCaption as Ft, useSelectionDialog as G, getPropertyInPath as Gn, removeTrailingSlash$1 as Gt, DateTimeFieldBinding as H, getIconForProperty as Hn, getLastSegment$1 as Ht, RepeatFieldBinding as I, useCollectionRegistryController as In, useBreadcrumbsController as It, useBuildUrlController as J, isRelationProperty as Jn, resolveViewMode as Jt, SelectionTableBinding as K, getResolvedPropertyInPath as Kn, resolveCollectionPathIds$1 as Kt, ReferenceFieldBinding as L, getEntityPreviewKeys as Ln, BreadcrumbsProvider as Lt, TextFieldBinding as M, EntityPreviewBinding as Mn, ArrayContainer as Mt, SwitchFieldBinding as N, SidePanelControllerContext as Nn, PropertyConfigBadge as Nt, getDefaultFieldId as O, ArrayOfStorageComponentsPreview as On, ImportSaveInProgress as Ot, StorageUploadFieldBinding as P, useSidePanel as Pn, SearchIconsView as Pt, useResolvedCollections as Q, StorageThumbnail as Qn, VirtualTableInput$1 as Qt, MultiSelectFieldBinding as R, getEntityTitlePropertyKey as Rn, mergeEntityActions as Rt, getInitialEntityValues as S, KeyValuePreview as Sn, DataNewPropertiesMapping as St, PropertyFieldBinding as T, ArrayOfStringsPreview as Tn, processValueMapping as Tt, BlockFieldBinding as U, getIconForWidget as Un, removeInitialAndTrailingSlashes$1 as Ut, KeyValueFieldBinding as V, getDefaultPropertiesOrder as Vn, getCollectionPathsCombinations as Vt, ArrayOfReferencesFieldBinding as W, getPropertiesWithPropertiesOrder as Wn, removeInitialSlash as Wt, useTopLevelNavigation as X, StringPropertyPreview as Xn, resolveEntityView as Xt, useBuildNavigationStateController as Y, ArrayPropertyPreview as Yn, resolveEntityAction as Yt, useResolvedViews as Z, EnumValuesChip as Zn, useSelectionController as Zt, useCollectionsConfigController as _, getUserLabel as _n, CollectionViewActions as _t, namespaceToPropertiesPath as a, NavigationStateContext as an, UrlComponentPreview as ar, useBuildSidePanel as at, extractTouchedValues as b, BooleanPreview as bn, useCollectionEditorDialogsState as bt, buildCollectionGenerationCallback as c, SideDialogsControllerContext as cn, EmptyValue as cr, copyEntityAction as ct, fromSerializableCollectionConfigs as d, useClearRestoreValue as dn, LabelWithIcon as dr, resetPasswordAction as dt, SelectableTable as en, SkeletonPropertyComponent as er, useHistory as et, fromSerializableProperties as f, ReadOnlyFieldBinding as fn, FormLayout as fr, CreationResultDialog as ft, toSerializableProperty as g, UserPreview as gn, EntityCardBinding as gt, toSerializableProperties as h, PropertyPreview as hn, CollectionCardViewBinding as ht, namespaceToPropertiesOrderPath as i, useUrlController as in, renderSkeletonText as ir, getEntityViewWidth as it, VectorFieldBinding as j, ReferencePreview as jn, unflattenObject as jt, getFieldConfig as k, RelationPreview as kn, ImportFileUpload as kt, validateCollectionJson as l, SelectableTableContext as ln, LabelWithIconAndTooltip as lr, deleteEntityAction as lt, toSerializableCollectionConfig as m, ArrayOfMapsPreview as mn, EntityViewBinding as mt, getFullIdPath as n, useAdminContext as nn, renderSkeletonIcon as nr, useResolvedNavigationFrom as nt, CollectionGenerationApiError as o, useNavigationStateController as on, ImagePreview as or, EditViewBinding as ot, fromSerializableProperty as p, FieldHelperText as pn, FormEntry as pr, DetailViewBinding as pt, SideDialogs as q, isReferenceProperty as qn, resolveOpenEntityMode as qt, idToPropertiesPath as r, UrlContext as rn, renderSkeletonImageThumbnail as rr, buildSidePanelsFromUrl as rt, DEFAULT_COLLECTION_GENERATION_ENDPOINT as s, useSideDialogsController as sn, sanitizeUrl as sr, CollectionViewBinding as st, getFullId as t, CollectionRowActions as tn, renderSkeletonCaptionText as tr, resolveNavigationFrom as tt, fromSerializableCollectionConfig as u, ArrayCustomShapedFieldBinding as un, PropertyIdCopyTooltip as ur, editEntityAction as ut, EntityFormBinding as v, useResolvedUser as vn, useCollectionEditorController as vt, zodToFormErrors as w, ArrayOneOfPreview as wn, flattenEntry as wt, getChanges as x, DatePreview as xn, ImportNewPropertyFieldPreview as xt, EntityForm as y, NumberPropertyPreview as yn, ConfigControllerProvider as yt, MarkdownEditorFieldBinding as z, getEntityTitlePropertyKeyForEntity as zn, addInitialSlash as zt };
21102
21139
 
21103
- //# sourceMappingURL=util-B5fJm1FA.js.map
21140
+ //# sourceMappingURL=util-BwZuV81o.js.map