@payloadcms/richtext-lexical 3.24.0 → 3.25.0-canary.9728d80

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.
@@ -45,6 +45,8 @@ function handleValue(propsString, startIndex) {
45
45
  const char = propsString[startIndex];
46
46
  if (char === '"') {
47
47
  return handleQuotedString(propsString, startIndex);
48
+ } else if (char === "'") {
49
+ return handleQuotedString(propsString, startIndex, true);
48
50
  } else if (char === '{') {
49
51
  return handleObject(propsString, startIndex);
50
52
  } else if (char === '[') {
@@ -73,10 +75,10 @@ function handleArray(propsString, startIndex) {
73
75
  value: JSOX.parse(`[${value}]`)
74
76
  };
75
77
  }
76
- function handleQuotedString(propsString, startIndex) {
78
+ function handleQuotedString(propsString, startIndex, isSingleQuoted = false) {
77
79
  let value = '';
78
80
  let i = startIndex + 1;
79
- while (i < propsString.length && (propsString[i] !== '"' || propsString[i - 1] === '\\')) {
81
+ while (i < propsString.length && (propsString[i] !== (isSingleQuoted ? "'" : '"') || propsString[i - 1] === '\\')) {
80
82
  value += propsString[i];
81
83
  i++;
82
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractPropsFromJSXPropsString.js","names":["JSOX","extractPropsFromJSXPropsString","propsString","props","key","collectingKey","i","length","char","result","handleValue","value","newIndex","startIndex","handleQuotedString","handleObject","handleArray","handleUnquotedString","bracketCount","parse","parseObject","objString","replace"],"sources":["../../../src/utilities/jsx/extractPropsFromJSXPropsString.ts"],"sourcesContent":["import { JSOX } from 'jsox'\n\n/**\n * Turns a JSX props string into an object.\n *\n * @example\n *\n * Input: type=\"info\" hello={{heyyy: 'test', someNumber: 2}}\n * Output: { type: 'info', hello: { heyyy: 'test', someNumber: 2 } }\n */\nexport function extractPropsFromJSXPropsString({\n propsString,\n}: {\n propsString: string\n}): Record<string, any> {\n const props: Record<string, any> = {}\n let key = ''\n let collectingKey = true\n\n for (let i = 0; i < propsString.length; i++) {\n const char = propsString[i]\n\n if (collectingKey) {\n if (char === '=' || char === ' ') {\n if (key) {\n if (char === ' ') {\n props[key] = true\n key = ''\n } else {\n collectingKey = false\n }\n }\n } else {\n key += char\n }\n } else {\n const result = handleValue(propsString, i)\n props[key] = result.value\n i = result.newIndex\n key = ''\n collectingKey = true\n }\n }\n\n if (key) {\n props[key] = true\n }\n\n return props\n}\n\nfunction handleValue(propsString: string, startIndex: number): { newIndex: number; value: any } {\n const char = propsString[startIndex]\n\n if (char === '\"') {\n return handleQuotedString(propsString, startIndex)\n } else if (char === '{') {\n return handleObject(propsString, startIndex)\n } else if (char === '[') {\n return handleArray(propsString, startIndex)\n } else {\n return handleUnquotedString(propsString, startIndex)\n }\n}\n\nfunction handleArray(propsString: string, startIndex: number): { newIndex: number; value: any } {\n let bracketCount = 1\n let value = ''\n let i = startIndex + 1\n\n while (i < propsString.length && bracketCount > 0) {\n if (propsString[i] === '[') {\n bracketCount++\n } else if (propsString[i] === ']') {\n bracketCount--\n }\n if (bracketCount > 0) {\n value += propsString[i]\n }\n i++\n }\n\n return { newIndex: i, value: JSOX.parse(`[${value}]`) }\n}\n\nfunction handleQuotedString(\n propsString: string,\n startIndex: number,\n): { newIndex: number; value: string } {\n let value = ''\n let i = startIndex + 1\n while (i < propsString.length && (propsString[i] !== '\"' || propsString[i - 1] === '\\\\')) {\n value += propsString[i]\n i++\n }\n return { newIndex: i, value }\n}\n\nfunction handleObject(propsString: string, startIndex: number): { newIndex: number; value: any } {\n let bracketCount = 1\n let value = ''\n let i = startIndex + 1\n\n while (i < propsString.length && bracketCount > 0) {\n if (propsString[i] === '{') {\n bracketCount++\n } else if (propsString[i] === '}') {\n bracketCount--\n }\n if (bracketCount > 0) {\n value += propsString[i]\n }\n i++\n }\n\n return { newIndex: i, value: parseObject(value) }\n}\n\nfunction parseObject(objString: string): Record<string, any> {\n if (objString[0] !== '{') {\n return JSOX.parse(objString)\n }\n\n const result = JSOX.parse(objString.replace(/(\\w+):/g, '\"$1\":'))\n\n return result\n}\n\nfunction handleUnquotedString(\n propsString: string,\n startIndex: number,\n): { newIndex: number; value: string } {\n let value = ''\n let i = startIndex\n while (i < propsString.length && propsString[i] !== ' ') {\n value += propsString[i]\n i++\n }\n return { newIndex: i - 1, value }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"extractPropsFromJSXPropsString.js","names":["JSOX","extractPropsFromJSXPropsString","propsString","props","key","collectingKey","i","length","char","result","handleValue","value","newIndex","startIndex","handleQuotedString","handleObject","handleArray","handleUnquotedString","bracketCount","parse","isSingleQuoted","parseObject","objString","replace"],"sources":["../../../src/utilities/jsx/extractPropsFromJSXPropsString.ts"],"sourcesContent":["import { JSOX } from 'jsox'\n\n/**\n * Turns a JSX props string into an object.\n *\n * @example\n *\n * Input: type=\"info\" hello={{heyyy: 'test', someNumber: 2}}\n * Output: { type: 'info', hello: { heyyy: 'test', someNumber: 2 } }\n */\nexport function extractPropsFromJSXPropsString({\n propsString,\n}: {\n propsString: string\n}): Record<string, any> {\n const props: Record<string, any> = {}\n let key = ''\n let collectingKey = true\n\n for (let i = 0; i < propsString.length; i++) {\n const char = propsString[i]\n\n if (collectingKey) {\n if (char === '=' || char === ' ') {\n if (key) {\n if (char === ' ') {\n props[key] = true\n key = ''\n } else {\n collectingKey = false\n }\n }\n } else {\n key += char\n }\n } else {\n const result = handleValue(propsString, i)\n props[key] = result.value\n i = result.newIndex\n key = ''\n collectingKey = true\n }\n }\n\n if (key) {\n props[key] = true\n }\n\n return props\n}\n\nfunction handleValue(propsString: string, startIndex: number): { newIndex: number; value: any } {\n const char = propsString[startIndex]\n\n if (char === '\"') {\n return handleQuotedString(propsString, startIndex)\n } else if (char === \"'\") {\n return handleQuotedString(propsString, startIndex, true)\n } else if (char === '{') {\n return handleObject(propsString, startIndex)\n } else if (char === '[') {\n return handleArray(propsString, startIndex)\n } else {\n return handleUnquotedString(propsString, startIndex)\n }\n}\n\nfunction handleArray(propsString: string, startIndex: number): { newIndex: number; value: any } {\n let bracketCount = 1\n let value = ''\n let i = startIndex + 1\n\n while (i < propsString.length && bracketCount > 0) {\n if (propsString[i] === '[') {\n bracketCount++\n } else if (propsString[i] === ']') {\n bracketCount--\n }\n if (bracketCount > 0) {\n value += propsString[i]\n }\n i++\n }\n\n return { newIndex: i, value: JSOX.parse(`[${value}]`) }\n}\n\nfunction handleQuotedString(\n propsString: string,\n startIndex: number,\n isSingleQuoted = false,\n): { newIndex: number; value: string } {\n let value = ''\n let i = startIndex + 1\n while (\n i < propsString.length &&\n (propsString[i] !== (isSingleQuoted ? \"'\" : '\"') || propsString[i - 1] === '\\\\')\n ) {\n value += propsString[i]\n i++\n }\n return { newIndex: i, value }\n}\n\nfunction handleObject(propsString: string, startIndex: number): { newIndex: number; value: any } {\n let bracketCount = 1\n let value = ''\n let i = startIndex + 1\n\n while (i < propsString.length && bracketCount > 0) {\n if (propsString[i] === '{') {\n bracketCount++\n } else if (propsString[i] === '}') {\n bracketCount--\n }\n if (bracketCount > 0) {\n value += propsString[i]\n }\n i++\n }\n\n return { newIndex: i, value: parseObject(value) }\n}\n\nfunction parseObject(objString: string): Record<string, any> {\n if (objString[0] !== '{') {\n return JSOX.parse(objString)\n }\n\n const result = JSOX.parse(objString.replace(/(\\w+):/g, '\"$1\":'))\n\n return result\n}\n\nfunction handleUnquotedString(\n propsString: string,\n startIndex: number,\n): { newIndex: number; value: string } {\n let value = ''\n let i = startIndex\n while (i < propsString.length && propsString[i] !== ' ') {\n value += propsString[i]\n i++\n }\n return { newIndex: i - 1, value }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,12 @@ describe('jsx', () => {
7
7
  output: {
8
8
  key: 'value'
9
9
  }
10
+ }, {
11
+ input: "key='value'",
12
+ output: {
13
+ key: 'value'
14
+ },
15
+ inputFromOutput: 'key="value"'
10
16
  }, {
11
17
  input: 'key={[1, 2, 3]}',
12
18
  output: {
@@ -1 +1 @@
1
- {"version":3,"file":"jsx.spec.js","names":["extractPropsFromJSXPropsString","propsToJSXString","describe","INPUT_AND_OUTPUT","input","output","key","object","test","inputFromOutput","global","packageId","uniqueId","update","hello","something","nested","it","replace","propsObject","propsString","console","log","expect","toStrictEqual","originalInput","props","replaceAll","toBe"],"sources":["../../../src/utilities/jsx/jsx.spec.ts"],"sourcesContent":["import { extractPropsFromJSXPropsString } from './extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from './jsx.js'\n\ndescribe('jsx', () => {\n describe('prop string to object', () => {\n const INPUT_AND_OUTPUT: {\n input: string\n inputFromOutput?: string\n output: Record<string, any>\n }[] = [\n {\n input: 'key=\"value\"',\n output: {\n key: 'value',\n },\n },\n {\n input: 'key={[1, 2, 3]}',\n output: {\n key: [1, 2, 3],\n },\n },\n {\n input: 'key={[1, 2, 3, [1, 2]]}',\n output: {\n key: [1, 2, 3, [1, 2]],\n },\n },\n {\n input: 'object={4}',\n output: {\n object: 4,\n },\n },\n {\n input: 'object={{\"test\": 1}}',\n output: {\n object: { test: 1 },\n },\n },\n {\n input: 'object={[1, 2, 3, [1, 2]]}',\n output: {\n object: [1, 2, 3, [1, 2]],\n },\n },\n {\n input: 'object={[1, 2]}',\n output: {\n object: [1, 2],\n },\n },\n {\n input: 'key=\"value\" object={{key: \"value\"}}',\n inputFromOutput: 'key=\"value\" object={{\"key\": \"value\"}}',\n output: {\n key: 'value',\n object: { key: 'value' },\n },\n },\n {\n input: 'global packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n input:\n 'global key=\"value\" object={{key: \"value\", something: \"test\", hello: 1}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n inputFromOutput:\n 'global key=\"value\" object={{\"hello\": 1, \"key\": \"value\", \"something\": \"test\"}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n key: 'value',\n object: { hello: 1, key: 'value', something: 'test' },\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n input:\n 'object={{hello: 1, key: \"value\", nested: { key: \"value\" }, something: \"test\", test: [1, 2, 3]}}',\n inputFromOutput:\n 'object={{\"hello\": 1, \"key\": \"value\", \"nested\": {\"key\": \"value\"}, \"something\": \"test\", \"test\": [1, 2, 3]}}',\n output: {\n object: {\n hello: 1,\n key: 'value',\n nested: { key: 'value' },\n something: 'test',\n test: [1, 2, 3],\n },\n },\n },\n {\n input:\n 'global key=\"value\" object={{hello: 1, key: \"value\", nested: { key: \"value\" }, something: \"test\", test: [1, 2, 3]}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n inputFromOutput:\n 'global key=\"value\" object={{\"hello\": 1, \"key\": \"value\", \"nested\": { \"key\": \"value\" }, \"something\": \"test\", \"test\": [1, 2, 3]}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n key: 'value',\n object: {\n hello: 1,\n key: 'value',\n nested: { key: 'value' },\n something: 'test',\n test: [1, 2, 3],\n },\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n // Test if unquoted property keys in objects within arrays are supprted. This is\n // supported through the more lenient JSOX parser, instead of using JSON.parse()\n input: 'key={[1, 2, { hello: \"there\" }]}',\n inputFromOutput: 'key={[1, 2, { \"hello\": \"there\" }]}',\n output: {\n key: [1, 2, { hello: 'there' }],\n },\n },\n {\n // Test if ` strings work\n input: `key={[1, 2, { hello: \\`there\\` }]}`,\n inputFromOutput: 'key={[1, 2, { \"hello\": \"there\" }]}',\n output: {\n key: [1, 2, { hello: 'there' }],\n },\n },\n {\n // Test if multiline ` strings work\n input: `key={[1, 2, { hello: \\`Hello\nthere\\` }]}`,\n inputFromOutput: 'key={[1, 2, { \"hello\": \"Hello\\\\nthere\" }]}',\n output: {\n key: [1, 2, { hello: 'Hello\\nthere' }],\n },\n },\n ]\n\n for (const { input, output } of INPUT_AND_OUTPUT) {\n it(`can correctly convert to object: \"${input.replace(/\\n/g, '\\\\n')}\"`, () => {\n const propsObject = extractPropsFromJSXPropsString({ propsString: input })\n console.log({ output, propsObject })\n\n expect(propsObject).toStrictEqual(output)\n })\n }\n\n for (const { input: originalInput, inputFromOutput, output } of INPUT_AND_OUTPUT) {\n const input = inputFromOutput || originalInput\n it(`can correctly convert from object: \"${input.replace(/\\n/g, '\\\\n')}\"`, () => {\n const propsString = propsToJSXString({ props: output })\n console.log({ input, propsString })\n\n expect(propsString.replaceAll(' ', '')).toBe(input.replaceAll(' ', ''))\n })\n }\n })\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"jsx.spec.js","names":["extractPropsFromJSXPropsString","propsToJSXString","describe","INPUT_AND_OUTPUT","input","output","key","inputFromOutput","object","test","global","packageId","uniqueId","update","hello","something","nested","it","replace","propsObject","propsString","console","log","expect","toStrictEqual","originalInput","props","replaceAll","toBe"],"sources":["../../../src/utilities/jsx/jsx.spec.ts"],"sourcesContent":["import { extractPropsFromJSXPropsString } from './extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from './jsx.js'\n\ndescribe('jsx', () => {\n describe('prop string to object', () => {\n const INPUT_AND_OUTPUT: {\n input: string\n inputFromOutput?: string\n output: Record<string, any>\n }[] = [\n {\n input: 'key=\"value\"',\n output: {\n key: 'value',\n },\n },\n {\n input: \"key='value'\",\n output: {\n key: 'value',\n },\n inputFromOutput: 'key=\"value\"',\n },\n {\n input: 'key={[1, 2, 3]}',\n output: {\n key: [1, 2, 3],\n },\n },\n {\n input: 'key={[1, 2, 3, [1, 2]]}',\n output: {\n key: [1, 2, 3, [1, 2]],\n },\n },\n {\n input: 'object={4}',\n output: {\n object: 4,\n },\n },\n {\n input: 'object={{\"test\": 1}}',\n output: {\n object: { test: 1 },\n },\n },\n {\n input: 'object={[1, 2, 3, [1, 2]]}',\n output: {\n object: [1, 2, 3, [1, 2]],\n },\n },\n {\n input: 'object={[1, 2]}',\n output: {\n object: [1, 2],\n },\n },\n {\n input: 'key=\"value\" object={{key: \"value\"}}',\n inputFromOutput: 'key=\"value\" object={{\"key\": \"value\"}}',\n output: {\n key: 'value',\n object: { key: 'value' },\n },\n },\n {\n input: 'global packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n input:\n 'global key=\"value\" object={{key: \"value\", something: \"test\", hello: 1}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n inputFromOutput:\n 'global key=\"value\" object={{\"hello\": 1, \"key\": \"value\", \"something\": \"test\"}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n key: 'value',\n object: { hello: 1, key: 'value', something: 'test' },\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n input:\n 'object={{hello: 1, key: \"value\", nested: { key: \"value\" }, something: \"test\", test: [1, 2, 3]}}',\n inputFromOutput:\n 'object={{\"hello\": 1, \"key\": \"value\", \"nested\": {\"key\": \"value\"}, \"something\": \"test\", \"test\": [1, 2, 3]}}',\n output: {\n object: {\n hello: 1,\n key: 'value',\n nested: { key: 'value' },\n something: 'test',\n test: [1, 2, 3],\n },\n },\n },\n {\n input:\n 'global key=\"value\" object={{hello: 1, key: \"value\", nested: { key: \"value\" }, something: \"test\", test: [1, 2, 3]}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n inputFromOutput:\n 'global key=\"value\" object={{\"hello\": 1, \"key\": \"value\", \"nested\": { \"key\": \"value\" }, \"something\": \"test\", \"test\": [1, 2, 3]}} packageId=\"myId\" uniqueId=\"some unique id!\" update',\n output: {\n global: true,\n key: 'value',\n object: {\n hello: 1,\n key: 'value',\n nested: { key: 'value' },\n something: 'test',\n test: [1, 2, 3],\n },\n packageId: 'myId',\n uniqueId: 'some unique id!',\n update: true,\n },\n },\n {\n // Test if unquoted property keys in objects within arrays are supprted. This is\n // supported through the more lenient JSOX parser, instead of using JSON.parse()\n input: 'key={[1, 2, { hello: \"there\" }]}',\n inputFromOutput: 'key={[1, 2, { \"hello\": \"there\" }]}',\n output: {\n key: [1, 2, { hello: 'there' }],\n },\n },\n {\n // Test if ` strings work\n input: `key={[1, 2, { hello: \\`there\\` }]}`,\n inputFromOutput: 'key={[1, 2, { \"hello\": \"there\" }]}',\n output: {\n key: [1, 2, { hello: 'there' }],\n },\n },\n {\n // Test if multiline ` strings work\n input: `key={[1, 2, { hello: \\`Hello\nthere\\` }]}`,\n inputFromOutput: 'key={[1, 2, { \"hello\": \"Hello\\\\nthere\" }]}',\n output: {\n key: [1, 2, { hello: 'Hello\\nthere' }],\n },\n },\n ]\n\n for (const { input, output } of INPUT_AND_OUTPUT) {\n it(`can correctly convert to object: \"${input.replace(/\\n/g, '\\\\n')}\"`, () => {\n const propsObject = extractPropsFromJSXPropsString({ propsString: input })\n console.log({ output, propsObject })\n\n expect(propsObject).toStrictEqual(output)\n })\n }\n\n for (const { input: originalInput, inputFromOutput, output } of INPUT_AND_OUTPUT) {\n const input = inputFromOutput || originalInput\n it(`can correctly convert from object: \"${input.replace(/\\n/g, '\\\\n')}\"`, () => {\n const propsString = propsToJSXString({ props: output })\n console.log({ input, propsString })\n\n expect(propsString.replaceAll(' ', '')).toBe(input.replaceAll(' ', ''))\n })\n }\n })\n})\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/richtext-lexical",
3
- "version": "3.24.0",
3
+ "version": "3.25.0-canary.9728d80",
4
4
  "description": "The officially supported Lexical richtext adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -353,8 +353,8 @@
353
353
  "react-error-boundary": "4.1.2",
354
354
  "ts-essentials": "10.0.3",
355
355
  "uuid": "10.0.0",
356
- "@payloadcms/translations": "3.24.0",
357
- "@payloadcms/ui": "3.24.0"
356
+ "@payloadcms/translations": "3.25.0-canary.9728d80",
357
+ "@payloadcms/ui": "3.25.0-canary.9728d80"
358
358
  },
359
359
  "devDependencies": {
360
360
  "@babel/cli": "7.26.4",
@@ -374,16 +374,16 @@
374
374
  "esbuild-sass-plugin": "3.3.1",
375
375
  "eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
376
376
  "swc-plugin-transform-remove-imports": "3.1.0",
377
- "@payloadcms/eslint-config": "3.9.0",
378
- "payload": "3.24.0"
377
+ "payload": "3.25.0-canary.9728d80",
378
+ "@payloadcms/eslint-config": "3.9.0"
379
379
  },
380
380
  "peerDependencies": {
381
381
  "@faceless-ui/modal": "3.0.0-beta.2",
382
382
  "@faceless-ui/scroll-info": "2.0.0",
383
383
  "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
384
384
  "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
385
- "@payloadcms/next": "3.24.0",
386
- "payload": "3.24.0"
385
+ "@payloadcms/next": "3.25.0-canary.9728d80",
386
+ "payload": "3.25.0-canary.9728d80"
387
387
  },
388
388
  "engines": {
389
389
  "node": "^18.20.2 || >=20.9.0"