diff --git a/UPGRADE.md b/UPGRADE.md
new file mode 100644
index 0000000..f6afa77
--- /dev/null
+++ b/UPGRADE.md
@@ -0,0 +1,32 @@
+# Upgrade from 1.1.* to 1.2.0
+
+## lucent.php config file
+
+There is now an array of commands, accepting more than one.
+
+from
+```php
+"generateCommand" => env("LUCENT_GENERATE_COMMAND", "generate:static"),
+```
+
+to
+```php
+"commands" => [
+ "generate:static" => "Build Website",
+],
+```
+## config/filesystems.php
+
+Lucent has its own filesystem.
+
+You should now add:
+
+```
+'lucent' => [
+ 'driver' => 'local',
+ 'root' => storage_path('app/public'),
+ 'url' => env('APP_URL').'/storage',
+ 'visibility' => 'public',
+ 'throw' => false,
+],
+```
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 7d1347a..3482734 100644
--- a/composer.json
+++ b/composer.json
@@ -8,14 +8,14 @@
"ext-zip": "*",
"ext-sqlite3": "*",
"ext-imagick": "*",
+ "ext-pdo": "*",
"php": "^8.3",
"guzzlehttp/guzzle": "^7.2",
"intervention/image": "^2.7",
"phpoption/phpoption": "^1.9",
"spatie/image-optimizer": "^1.6",
- "staudenmeir/laravel-cte": "^1.0",
- "ext-pdo": "*",
- "mustache/mustache": "^2.14"
+ "staudenmeir/laravel-cte": "^1.0"
+
},
"require-dev": {
"phpstan/phpstan": "^1.8",
diff --git a/front/js/svelte/records/elements/ReferenceInlineButtons.svelte b/front/js/svelte/records/elements/ReferenceInlineButtons.svelte
index 5dc4aa6..80911d8 100644
--- a/front/js/svelte/records/elements/ReferenceInlineButtons.svelte
+++ b/front/js/svelte/records/elements/ReferenceInlineButtons.svelte
@@ -43,6 +43,7 @@
function createInlineReference(e, schemaUId) {
e.preventDefault();
+ inLineCreateRecord = null;
axios
.get(channel.lucentUrl + "/records/newInline?schema=" + schemaUId)
.then((response) => {
@@ -59,27 +60,29 @@
- {#each schemas as schema}
-
-
- {schema.label}
-
+
+ New
+ {#each schemas as schema}
+ {/each}
+
+
+
+
+ {#each schemas as schema}
-
- {/each}
+ >{schema.name}
+
+ {/each}
+
+
{:else}
diff --git a/front/js/svelte/records/elements/RichEditor.svelte b/front/js/svelte/records/elements/RichEditor.svelte
index 4224a1a..fc577bf 100644
--- a/front/js/svelte/records/elements/RichEditor.svelte
+++ b/front/js/svelte/records/elements/RichEditor.svelte
@@ -2,7 +2,6 @@
import Tinymce from "../../libs/Tinymce.svelte";
import RichEditorFiles from "./RichEditorFiles.svelte";
import {getErrorMessage} from "./errorMessage";
- import TipTap from "../../libs/TipTap.svelte";
import Trix from "../../libs/Trix.svelte";
export let value;
diff --git a/front/package-lock.json b/front/package-lock.json
index 9a7c8cc..b01d1c5 100644
--- a/front/package-lock.json
+++ b/front/package-lock.json
@@ -10,29 +10,6 @@
"@codemirror/lang-markdown": "^6.2.5",
"@codemirror/state": "^6.4.1",
"@sveltejs/vite-plugin-svelte": "^3.1.1",
- "@tiptap/core": "^2.6.6",
- "@tiptap/extension-blockquote": "^2.6.6",
- "@tiptap/extension-bold": "^2.6.6",
- "@tiptap/extension-bullet-list": "^2.6.6",
- "@tiptap/extension-code": "^2.6.6",
- "@tiptap/extension-code-block": "^2.6.6",
- "@tiptap/extension-document": "^2.6.6",
- "@tiptap/extension-dropcursor": "^2.6.6",
- "@tiptap/extension-hard-break": "^2.6.6",
- "@tiptap/extension-heading": "^2.6.6",
- "@tiptap/extension-history": "^2.6.6",
- "@tiptap/extension-image": "^2.6.6",
- "@tiptap/extension-italic": "^2.6.6",
- "@tiptap/extension-list-item": "^2.6.6",
- "@tiptap/extension-ordered-list": "^2.6.6",
- "@tiptap/extension-paragraph": "^2.6.6",
- "@tiptap/extension-strike": "^2.6.6",
- "@tiptap/extension-table": "^2.6.6",
- "@tiptap/extension-table-cell": "^2.6.6",
- "@tiptap/extension-table-header": "^2.6.6",
- "@tiptap/extension-table-row": "^2.6.6",
- "@tiptap/extension-text": "^2.6.6",
- "@tiptap/extension-underline": "^2.6.6",
"axios": "^1.7.4",
"codemirror": "^6.0.1",
"date-fns": "^3.6.0",
@@ -714,13 +691,6 @@
"@lezer/highlight": "^1.0.0"
}
},
- "node_modules/@remirror/core-constants": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-2.0.2.tgz",
- "integrity": "sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==",
- "dev": true,
- "peer": true
- },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.20.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz",
@@ -968,340 +938,6 @@
"vite": "^5.0.0"
}
},
- "node_modules/@tiptap/core": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.6.6.tgz",
- "integrity": "sha512-VO5qTsjt6rwworkuo0s5AqYMfDA0ZwiTiH6FHKFSu2G/6sS7HKcc/LjPq+5Legzps4QYdBDl3W28wGsGuS1GdQ==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/pm": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-blockquote": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.6.6.tgz",
- "integrity": "sha512-hAdsNlMfzzxld154hJqPqtWqO5i4/7HoDfuxmyqBxdMJ+e2UMaIGBGwoLRXG0V9UoRwJusjqlpyD7pIorxNlgA==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-bold": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.6.6.tgz",
- "integrity": "sha512-CD6gBhdQtCoqYSmx8oAV8gvKtVOGZSyyvuNYo7by9eZ56DqLYnd7kbUj0RH7o9Ymf/iJTOUJ6XcvrsWwo4lubg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-bullet-list": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.6.6.tgz",
- "integrity": "sha512-WEKxbVSYuvmX2wkHWP8HXk5nzA7stYwtdaubwWH/R17kGI3IGScJuMQ9sEN82uzJU8bfgL9yCbH2bY8Fj/Q4Ow==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-code": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.6.6.tgz",
- "integrity": "sha512-JrEFKsZiLvfvOFhOnnrpA0TzCuJjDeysfbMeuKUZNV4+DhYOL28d39H1++rEtJAX0LcbBU60oC5/PrlU9SpvRQ==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-code-block": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.6.6.tgz",
- "integrity": "sha512-1YLp/zHMHSkE2xzht8nPR6T4sQJJ3ket798czxWuQEbetFv/l0U/mpiPpYSLObj6oTAoqYZ0kWXZj5eQSpPB8Q==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6",
- "@tiptap/pm": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-document": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.6.6.tgz",
- "integrity": "sha512-6qlH5VWzLHHRVeeciRC6C4ZHpMsAGPNG16EF53z0GeMSaaFD/zU3B239QlmqXmLsAl8bpf8Bn93N0t2ABUvScw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-dropcursor": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.6.6.tgz",
- "integrity": "sha512-O6CeKriA9uyHsg7Ui4z5ZjEWXQxrIL+1zDekffW0wenGC3G4LUsCzAiFS4LSrR9a3u7tnwqGApW10rdkmCGF4w==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6",
- "@tiptap/pm": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-hard-break": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.6.6.tgz",
- "integrity": "sha512-bsUuyYBrMDEiudx1dOQSr9MzKv13m0xHWrOK+DYxuIDYJb5g+c9un5cK7Js+et/HEYYSPOoH/iTW6h+4I5YeUg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-heading": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.6.6.tgz",
- "integrity": "sha512-bgx9vptVFi5yFkIw1OI53J7+xJ71Or3SOe/Q8eSpZv53DlaKpL/TzKw8Z54t1PrI2rJ6H9vrLtkvixJvBZH1Ug==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-history": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.6.6.tgz",
- "integrity": "sha512-tPTzAmPGqMX5Bd5H8lzRpmsaMvB9DvI5Dy2za/VQuFtxgXmDiFVgHRkRXIuluSkPTuANu84XBOQ0cBijqY8x4w==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6",
- "@tiptap/pm": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-image": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.6.6.tgz",
- "integrity": "sha512-dwJKvoqsr72B4tcTH8hXhfBJzUMs/jXUEE9MnfzYnSXf+CYALLjF8r/IkGYbxce62GP/bMDoj8BgpF8saeHtqA==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-italic": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.6.6.tgz",
- "integrity": "sha512-t7ZPsXqa8nJZZ/6D0rQyZ/KsvzLaSihC6hBTjUQ77CeDGV9PhDWjIcBW4OrvwraJDBd12ETBeQ2CkULJOgH+lQ==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-list-item": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.6.6.tgz",
- "integrity": "sha512-k+oEzZu2cgVKqPqOP1HzASOKLpTEV9m7mRVPAbuaaX8mSyvIgD6f+JUx9PvgYv//D918wk98LMoRBFX53tDJ4w==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-ordered-list": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.6.6.tgz",
- "integrity": "sha512-AJwyfLXIi7iUGnK5twJbwdVVpQyh7fU6OK75h1AwDztzsOcoPcxtffDlZvUOd4ZtwuyhkzYqVkeI0f+abTWZTw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-paragraph": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.6.6.tgz",
- "integrity": "sha512-fD/onCr16UQWx+/xEmuFC2MccZZ7J5u4YaENh8LMnAnBXf78iwU7CAcmuc9rfAEO3qiLoYGXgLKiHlh2ZfD4wA==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-strike": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.6.6.tgz",
- "integrity": "sha512-Ze8KhGk+wzSJSJRl5fbhTI6AvPu2LmcHYeO3pMEH8u4gV5WTXfmKJVStEIAzkoqvwEQVWzXvy8nDgsFQHiojPg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-table": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.6.6.tgz",
- "integrity": "sha512-Ay/IClmB9R8MjnLobGnA9tI0+7ev4GUwvNf/JA2razI8CeaMCJ7CcAzG6pnIp4d7I6ELWYmAt3vwxoRlsAZcEw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6",
- "@tiptap/pm": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-table-cell": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.6.6.tgz",
- "integrity": "sha512-XakU9qnlYAf/ux4q7zgiJs2pvkjOl9mVzQw5j55aQHYLiw0gXomEgUbrkn7jhA7N6WP9PlngS3quwIDfyoqLvw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-table-header": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.6.6.tgz",
- "integrity": "sha512-BX2cVTrOZzIQAAWrNjD2Dzk/RpCJWUqgdW2bh27x0nJwKfMWfqLPoplTTuCZ+J9yK7rlNj3jEhKewe/yR1Tudw==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-table-row": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.6.6.tgz",
- "integrity": "sha512-VN8MwrEbq2hs/BE3cizbasFMLfh0F9I9MF7cmU8V1j1Zju0ONUIEXOscO4TNFfCB8lf5tTwIp1sr+fxYUUprhg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-text": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.6.6.tgz",
- "integrity": "sha512-e84uILnRzNzcwK1DVQNpXVmBG1Cq3BJipTOIDl1LHifOok7MBjhI/X+/NR0bd3N2t6gmDTWi63+4GuJ5EeDmsg==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/extension-underline": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.6.6.tgz",
- "integrity": "sha512-3A4HqsDM/AFb2VaeWACpGexjgI257kz0yU4jNV8uyydDR2KhqeinuEnoSoOmx9T3pL006TWfPg4vaQYPO3qvrQ==",
- "dev": true,
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- },
- "peerDependencies": {
- "@tiptap/core": "^2.6.6"
- }
- },
- "node_modules/@tiptap/pm": {
- "version": "2.6.6",
- "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.6.6.tgz",
- "integrity": "sha512-56FGLPn3fwwUlIbLs+BO21bYfyqP9fKyZQbQyY0zWwA/AG2kOwoXaRn7FOVbjP6CylyWpFJnpRRmgn694QKHEg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-changeset": "^2.2.1",
- "prosemirror-collab": "^1.3.1",
- "prosemirror-commands": "^1.5.2",
- "prosemirror-dropcursor": "^1.8.1",
- "prosemirror-gapcursor": "^1.3.2",
- "prosemirror-history": "^1.4.1",
- "prosemirror-inputrules": "^1.4.0",
- "prosemirror-keymap": "^1.2.2",
- "prosemirror-markdown": "^1.13.0",
- "prosemirror-menu": "^1.2.4",
- "prosemirror-model": "^1.22.2",
- "prosemirror-schema-basic": "^1.2.3",
- "prosemirror-schema-list": "^1.4.1",
- "prosemirror-state": "^1.4.3",
- "prosemirror-tables": "^1.4.0",
- "prosemirror-trailing-node": "^2.0.9",
- "prosemirror-transform": "^1.9.0",
- "prosemirror-view": "^1.33.9"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/ueberdosis"
- }
- },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
@@ -1333,13 +969,6 @@
"node": ">= 8"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "peer": true
- },
"node_modules/aria-query": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
@@ -1536,19 +1165,6 @@
"node": ">=6"
}
},
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
"node_modules/esbuild": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
@@ -1587,19 +1203,6 @@
"@esbuild/win32-x64": "0.20.2"
}
},
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -1796,16 +1399,6 @@
"vite": "^5.0.0"
}
},
- "node_modules/linkify-it": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "uc.micro": "^2.0.0"
- }
- },
"node_modules/locate-character": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
@@ -1827,37 +1420,12 @@
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
- "node_modules/markdown-it": {
- "version": "14.1.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
- "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "^4.4.0",
- "linkify-it": "^5.0.0",
- "mdurl": "^2.0.0",
- "punycode.js": "^2.3.1",
- "uc.micro": "^2.1.0"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.mjs"
- }
- },
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
"dev": true
},
- "node_modules/mdurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
- "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
- "dev": true,
- "peer": true
- },
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -4473,13 +4041,6 @@
"inBundle": true,
"license": "ISC"
},
- "node_modules/orderedmap": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
- "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==",
- "dev": true,
- "peer": true
- },
"node_modules/periscopic": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
@@ -4537,234 +4098,12 @@
"node": "^10 || ^12 || >=14"
}
},
- "node_modules/prosemirror-changeset": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz",
- "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-collab": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz",
- "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0"
- }
- },
- "node_modules/prosemirror-commands": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.0.tgz",
- "integrity": "sha512-xn1U/g36OqXn2tn5nGmvnnimAj/g1pUx2ypJJIe8WkVX83WyJVC5LTARaxZa2AtQRwntu9Jc5zXs9gL9svp/mg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-dropcursor": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz",
- "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0",
- "prosemirror-view": "^1.1.0"
- }
- },
- "node_modules/prosemirror-gapcursor": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz",
- "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-keymap": "^1.0.0",
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-view": "^1.0.0"
- }
- },
- "node_modules/prosemirror-history": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz",
- "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-state": "^1.2.2",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.31.0",
- "rope-sequence": "^1.3.0"
- }
- },
- "node_modules/prosemirror-inputrules": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",
- "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-keymap": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",
- "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "w3c-keyname": "^2.2.0"
- }
- },
- "node_modules/prosemirror-markdown": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.0.tgz",
- "integrity": "sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "markdown-it": "^14.0.0",
- "prosemirror-model": "^1.20.0"
- }
- },
- "node_modules/prosemirror-menu": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz",
- "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "crelt": "^1.0.0",
- "prosemirror-commands": "^1.0.0",
- "prosemirror-history": "^1.0.0",
- "prosemirror-state": "^1.0.0"
- }
- },
- "node_modules/prosemirror-model": {
- "version": "1.22.3",
- "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.22.3.tgz",
- "integrity": "sha512-V4XCysitErI+i0rKFILGt/xClnFJaohe/wrrlT2NSZ+zk8ggQfDH4x2wNK7Gm0Hp4CIoWizvXFP7L9KMaCuI0Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "orderedmap": "^2.0.0"
- }
- },
- "node_modules/prosemirror-schema-basic": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz",
- "integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.19.0"
- }
- },
- "node_modules/prosemirror-schema-list": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.4.1.tgz",
- "integrity": "sha512-jbDyaP/6AFfDfu70VzySsD75Om2t3sXTOdl5+31Wlxlg62td1haUpty/ybajSfJ1pkGadlOfwQq9kgW5IMo1Rg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.7.3"
- }
- },
- "node_modules/prosemirror-state": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
- "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.27.0"
- }
- },
- "node_modules/prosemirror-tables": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.4.0.tgz",
- "integrity": "sha512-fxryZZkQG12fSCNuZDrYx6Xvo2rLYZTbKLRd8rglOPgNJGMKIS8uvTt6gGC38m7UCu/ENnXIP9pEz5uDaPc+cA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-keymap": "^1.1.2",
- "prosemirror-model": "^1.8.1",
- "prosemirror-state": "^1.3.1",
- "prosemirror-transform": "^1.2.1",
- "prosemirror-view": "^1.13.3"
- }
- },
- "node_modules/prosemirror-trailing-node": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.9.tgz",
- "integrity": "sha512-YvyIn3/UaLFlFKrlJB6cObvUhmwFNZVhy1Q8OpW/avoTbD/Y7H5EcjK4AZFKhmuS6/N6WkGgt7gWtBWDnmFvHg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@remirror/core-constants": "^2.0.2",
- "escape-string-regexp": "^4.0.0"
- },
- "peerDependencies": {
- "prosemirror-model": "^1.22.1",
- "prosemirror-state": "^1.4.2",
- "prosemirror-view": "^1.33.8"
- }
- },
- "node_modules/prosemirror-transform": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.0.tgz",
- "integrity": "sha512-9UOgFSgN6Gj2ekQH5CTDJ8Rp/fnKR2IkYfGdzzp5zQMFsS4zDllLVx/+jGcX86YlACpG7UR5fwAXiWzxqWtBTg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.21.0"
- }
- },
- "node_modules/prosemirror-view": {
- "version": "1.33.10",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.10.tgz",
- "integrity": "sha512-wsKg9JeQkWlkXG8DDcloI/tbB9r3CysziubigoC8wTuE6zobN/9cl8bGRk1J1XjkUp7rxGBziOSxrhoILL84hg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "prosemirror-model": "^1.20.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0"
- }
- },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
- "node_modules/punycode.js": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -4812,13 +4151,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/rope-sequence": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
- "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==",
- "dev": true,
- "peer": true
- },
"node_modules/sass": {
"version": "1.77.8",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
@@ -4918,13 +4250,6 @@
"integrity": "sha512-5pC4olCp7BwxTC8Joy1Kv33kDvSOApi9Tqf6c8wygqCgeCx9xPP5cxkZEhvKpMV+kjd9gszingd5fZo834+ktw==",
"dev": true
},
- "node_modules/uc.micro": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
- "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
- "dev": true,
- "peer": true
- },
"node_modules/uuid": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
diff --git a/src/Commands/CompileSchemas.php b/src/Commands/CompileSchemas.php
index ceece05..652f48d 100644
--- a/src/Commands/CompileSchemas.php
+++ b/src/Commands/CompileSchemas.php
@@ -16,19 +16,13 @@ class CompileSchemas extends Command
protected $description = 'Compiles schemas';
- public function __construct(
- public SchemaService $schemaService
- )
+ public function handle(SchemaService $schemaService)
{
- parent::__construct();
- }
-
- public function handle()
- {
$configDir = base_path(config('lucent.schemas_path'));
$schemasDirIterator = new DirectoryIterator($configDir);
$schemas = [];
+
foreach ($schemasDirIterator as $file) {
if ($file->getExtension() !== "json") {
continue;
@@ -46,7 +40,7 @@ class CompileSchemas extends Command
$schemas = collect($schemas)->sortBy("label")->values();
$roles = $schemas
- ->map([$this->schemaService, 'fromArray'])
+ ->map([$schemaService, 'fromArray'])
->whereIn("type", [Type::COLLECTION, Type::FILES])
->reduce(fn($carry, Schema $schema) => array_merge(
$carry,
diff --git a/src/Config/main.php b/src/Config/main.php
index d307376..ddd2302 100644
--- a/src/Config/main.php
+++ b/src/Config/main.php
@@ -31,4 +31,19 @@ return [
"canInvite" => ["admin"],
"canBuild" => ["admin"],
"systemUserId" => "",
+ "schemaFields" => [
+ \Lucent\Schema\Ui\Checkbox::class,
+ \Lucent\Schema\Ui\Color::class,
+ \Lucent\Schema\Ui\Date::class,
+ \Lucent\Schema\Ui\Datetime::class,
+ \Lucent\Schema\Ui\File::class,
+ \Lucent\Schema\Ui\Json::class,
+ \Lucent\Schema\Ui\Markdown::class,
+ \Lucent\Schema\Ui\Number::class,
+ \Lucent\Schema\Ui\Reference::class,
+ \Lucent\Schema\Ui\Rich::class,
+ \Lucent\Schema\Ui\Slug::class,
+ \Lucent\Schema\Ui\Text::class,
+ \Lucent\Schema\Ui\Textarea::class
+ ]
];
diff --git a/src/Database/migrations/2014_10_12_000000_create_users_table.php b/src/Database/migrations/2014_10_12_000000_create_users_table.php
index c0c44d5..1508f94 100644
--- a/src/Database/migrations/2014_10_12_000000_create_users_table.php
+++ b/src/Database/migrations/2014_10_12_000000_create_users_table.php
@@ -5,6 +5,9 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
+
+ protected $connection = 'lucentDb';
+
/**
* Run the migrations.
*
diff --git a/src/Database/migrations/2022_11_16_192907_create_sessions_table.php b/src/Database/migrations/2022_11_16_192907_create_sessions_table.php
index 06c3e45..ed8c04b 100644
--- a/src/Database/migrations/2022_11_16_192907_create_sessions_table.php
+++ b/src/Database/migrations/2022_11_16_192907_create_sessions_table.php
@@ -6,6 +6,8 @@ use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
+ protected $connection = 'lucentDb';
+
/**
* Run the migrations.
*
diff --git a/src/Database/migrations/2023_01_20_162322_records.php b/src/Database/migrations/2023_01_20_162322_records.php
index 8f57648..e70a613 100644
--- a/src/Database/migrations/2023_01_20_162322_records.php
+++ b/src/Database/migrations/2023_01_20_162322_records.php
@@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
+
+ protected $connection = 'lucentDb';
/**
* Run the migrations.
*
diff --git a/src/Database/migrations/2023_03_02_152122_revisions.php b/src/Database/migrations/2023_03_02_152122_revisions.php
index 392ae4b..e5982f3 100644
--- a/src/Database/migrations/2023_03_02_152122_revisions.php
+++ b/src/Database/migrations/2023_03_02_152122_revisions.php
@@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
+
+ protected $connection = 'lucentDb';
/**
* Run the migrations.
*
diff --git a/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php b/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php
index f3a5a48..02fe933 100644
--- a/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php
+++ b/src/Database/migrations/2023_10_22_152122_generatedIndexColumn.php
@@ -5,6 +5,8 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
+
+ protected $connection = 'lucentDb';
/**
* Run the migrations.
*
diff --git a/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php b/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php
index 37e3af5..6f7c23f 100644
--- a/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php
+++ b/src/Database/migrations/2023_10_23_152122_RecordsUpdatedIndex.php
@@ -5,6 +5,9 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
+
+ protected $connection = 'lucentDb';
+
/**
* Run the migrations.
*
@@ -14,7 +17,7 @@ return new class extends Migration {
{
Schema::table('records', function (Blueprint $table) {
$table->dropIndex(['schema', 'status']);
- $table->index(['schema', '_sys->updatedAt','status']);
+ $table->index(['schema', '_sys->updatedAt', 'status']);
});
}
@@ -27,7 +30,7 @@ return new class extends Migration {
{
Schema::table('records', function (Blueprint $table) {
- $table->dropIndex(['schema', '_sys->updatedAt','status']);
+ $table->dropIndex(['schema', '_sys->updatedAt', 'status']);
$table->index(['schema', 'status']);
});
}
diff --git a/src/Http/Controller/RecordController.php b/src/Http/Controller/RecordController.php
index 60a6178..00b8900 100644
--- a/src/Http/Controller/RecordController.php
+++ b/src/Http/Controller/RecordController.php
@@ -165,7 +165,7 @@ class RecordController extends Controller
$schema = $this->channelService->channel->schemas->where("name", $request->input("schema"))->first();
$recordHistory = $this->recordManager->fromSession($request->session())->getRecords();
- $record = $this->recordService->createEmpty($schema, $this->authService->currentUserId());
+ $record = $this->recordService->createEmpty($schema);
$queryRecord = QueryRecord::fromRecord($record);
return $this->svelte->render(
layout: "channel",
@@ -200,6 +200,7 @@ class RecordController extends Controller
"schema" => $schema,
"record" => $queryRecord,
"isCreateMode" => true,
+ "isWritable" => in_array($record->schema, $this->accountService->currentWritableSchemas())
];
}
diff --git a/src/Schema/BlockUi/File.php b/src/Schema/BlockUi/File.php
deleted file mode 100644
index cee53fd..0000000
--- a/src/Schema/BlockUi/File.php
+++ /dev/null
@@ -1,54 +0,0 @@
-info = new FieldInfo("file", "File", FieldType::FILE);
- }
-
- public function format(array $input, array $output): array
- {
- return $output;
- }
-
- public function failMin(mixed $value): bool
- {
- if (is_null($value)) {
- return false;
- }
-
- return count($value) < $this->min;
- }
-
- public function failMax(mixed $value): bool
- {
- if (is_null($value)) {
- return false;
- }
-
- return count($value) < $this->min;
- }
-
-}
-
diff --git a/src/Schema/BlockUi/Heading.php b/src/Schema/BlockUi/Heading.php
deleted file mode 100644
index c7ea69f..0000000
--- a/src/Schema/BlockUi/Heading.php
+++ /dev/null
@@ -1,33 +0,0 @@
-info = new FieldInfo("heading", "Heading", FieldType::STRING);
- }
-
- public function format(array $input, array $output): array
- {
- $output[$this->name] = $input[$this->name] ?? "";
- return $output;
- }
-
-}
-
diff --git a/src/Schema/BlockUi/Markdown.php b/src/Schema/BlockUi/Markdown.php
deleted file mode 100644
index 0accf56..0000000
--- a/src/Schema/BlockUi/Markdown.php
+++ /dev/null
@@ -1,33 +0,0 @@
-info = new FieldInfo("markdown", "Markdown Editor", FieldType::STRING);
- }
-
- public function format(array $input, array $output): array
- {
- $output[$this->name] = $input[$this->name] ?? "";
- return $output;
- }
-
-}
-
diff --git a/src/Schema/BlockUi/Reference.php b/src/Schema/BlockUi/Reference.php
deleted file mode 100644
index bf082cd..0000000
--- a/src/Schema/BlockUi/Reference.php
+++ /dev/null
@@ -1,54 +0,0 @@
-info = new FieldInfo("reference", "Reference", FieldType::REFERENCE);
- }
-
- public function format(array $input, array $output): array
- {
- return $output;
- }
-
- public function failMin(mixed $value): bool
- {
- if (is_null($value)) {
- return false;
- }
-
- return count($value) < $this->min;
- }
-
- public function failMax(mixed $value): bool
- {
- if (is_null($value)) {
- return false;
- }
-
- return count($value) < $this->min;
- }
-
-}
-
diff --git a/src/Schema/BlockUi/Rich.php b/src/Schema/BlockUi/Rich.php
deleted file mode 100644
index 6744ba9..0000000
--- a/src/Schema/BlockUi/Rich.php
+++ /dev/null
@@ -1,33 +0,0 @@
-info = new FieldInfo("rich", "Rich Editor", FieldType::STRING);
- }
-
- public function format(array $input, array $output): array
- {
- $output[$this->name] = $input[$this->name] ?? "";
- return $output;
- }
-
-}
-
diff --git a/src/Schema/BlockUi/Textarea.php b/src/Schema/BlockUi/Textarea.php
deleted file mode 100644
index 03754d6..0000000
--- a/src/Schema/BlockUi/Textarea.php
+++ /dev/null
@@ -1,33 +0,0 @@
-info = new FieldInfo("textarea", "Textarea", FieldType::STRING);
- }
-
- public function format(array $input, array $output): array
- {
- $output[$this->name] = $input[$this->name] ?? "";
- return $output;
- }
-
-}
-
diff --git a/src/Schema/SchemaService.php b/src/Schema/SchemaService.php
index 2e8c089..390825c 100644
--- a/src/Schema/SchemaService.php
+++ b/src/Schema/SchemaService.php
@@ -2,6 +2,7 @@
namespace Lucent\Schema;
+use Lucent\LucentException;
use Lucent\Primitive\Collection;
class SchemaService
@@ -52,16 +53,32 @@ class SchemaService
public function mapFields(array $field): FieldInterface
{
- $className = "\\Lucent\Schema\Ui\\" . ucfirst($field["ui"]);
- unset($field["ui"]);
- return new $className(...$field);
+ $schemaFields = [
+ \Lucent\Schema\Ui\Checkbox::class,
+ \Lucent\Schema\Ui\Color::class,
+ \Lucent\Schema\Ui\Date::class,
+ \Lucent\Schema\Ui\Datetime::class,
+ \Lucent\Schema\Ui\File::class,
+ \Lucent\Schema\Ui\Json::class,
+ \Lucent\Schema\Ui\Markdown::class,
+ \Lucent\Schema\Ui\Number::class,
+ \Lucent\Schema\Ui\Reference::class,
+ \Lucent\Schema\Ui\Rich::class,
+ \Lucent\Schema\Ui\Slug::class,
+ \Lucent\Schema\Ui\Text::class,
+ \Lucent\Schema\Ui\Textarea::class,
+ ];
+ $ui = collect($schemaFields)->filter(function ($className) use ($field) {
+ return str_ends_with(strtolower($className), "\\" . strtolower($field["ui"]));
+ })->first();
+
+ if (empty($ui)) {
+ throw new LucentException("Field UI " . $field["ui"] . " not found");
+ }
+
+ unset($field["ui"]);
+ return new $ui(...$field);
}
- public function mapBlockFields(array $field): FieldInterface
- {
- $className = "\\Lucent\Schema\BlockUi\\" . ucfirst($field["ui"]);
- unset($field["ui"]);
- return new $className(...$field);
- }
}
diff --git a/src/Schema/Ui/Block.php b/src/Schema/Ui/Block.php
deleted file mode 100644
index 1e0a86c..0000000
--- a/src/Schema/Ui/Block.php
+++ /dev/null
@@ -1,46 +0,0 @@
-info = new FieldInfo("block", "Block editor", FieldType::JSON);
- }
-
- public function format(array $input, array $output): array
- {
- $value = $input[$this->name] ?? null;
-
- if (is_string($value)) {
- $value = json_decode($value, true);
- }
-
- $output[$this->name] = (new Nullable($this->nullable, $value, []))->value();
- return $output;
- }
-
- public function failRequired(mixed $value): bool
- {
- return empty($value);
- }
-}
diff --git a/src/Schema/Ui/Checkbox.php b/src/Schema/Ui/Checkbox.php
index 6554556..faa2ad8 100644
--- a/src/Schema/Ui/Checkbox.php
+++ b/src/Schema/Ui/Checkbox.php
@@ -25,7 +25,7 @@ class Checkbox implements FieldInterface, RequiredInterface
public string $group = "",
)
{
- $this->info = new FieldInfo("checkbox", "Block Checkbox", FieldType::BOOLEAN);
+ $this->info = new FieldInfo("checkbox", "Checkbox", FieldType::BOOLEAN);
}
public function format(array $input, array $output): array