sveltekit-ui 1.0.75 → 1.0.76

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,12 @@
45
45
  {#if manager?.table_description}
46
46
  <p>{manager?.table_description}</p>
47
47
  {/if}
48
+
49
+ <div>
50
+ <h4 class="label">JSON Schema</h4>
51
+ <Button manager={manager?.settings_copy_row_json_schema_button_manager} />
52
+ <Button manager={manager?.settings_copy_rows_json_schema_button_manager} />
53
+ </div>
48
54
  {#if manager?.is_data_editable}
49
55
  <Button manager={manager?.settings_preempt_delete_table_popover_button_manager} />
50
56
  <Popover manager={manager?.settings_delete_table_popover_manager}>
@@ -20,6 +20,7 @@ import {
20
20
  } from "../../client/index.js"
21
21
  import { tick } from "svelte"
22
22
  import { browser } from "$app/environment"
23
+ import { literal_types } from "../../client/types/index.js"
23
24
 
24
25
  export function create_table_advanced_manager(config) {
25
26
  const id = create_unique_id(null, 20)
@@ -45,6 +46,8 @@ export function create_table_advanced_manager(config) {
45
46
  let settings_update_table_name_text_input_manager = $state(null)
46
47
  let settings_update_table_description_button_manager = $state(null)
47
48
  let settings_update_table_description_text_input_manager = $state(null)
49
+ let settings_copy_row_json_schema_button_manager = $state(null)
50
+ let settings_copy_rows_json_schema_button_manager = $state(null)
48
51
  let settings_preempt_delete_table_popover_button_manager = $state(null)
49
52
  let settings_delete_table_popover_manager = $state(null)
50
53
  let settings_delete_table_cancel_button_manager = $state(null)
@@ -109,6 +112,50 @@ export function create_table_advanced_manager(config) {
109
112
  let rows_data = $derived(get_def_from_variable_path(rows_data_from_variable_path, definition_stack))
110
113
  let row_indexes_display_order = $derived(get_available_row_indexes())
111
114
  let row_indexes_display_order_shown = $derived(get_row_indexes_shown())
115
+ let row_json_schema = $derived(get_row_json_schema(columns_prepped))
116
+
117
+ function get_row_json_schema(input) {
118
+ let properties = {}
119
+ if (Object.keys(input || {}).length > 0) {
120
+ for (let key of Object.keys(input)) {
121
+ if (input?.[key]?.is_db_column && !input?.[key]?.is_autogenerated) {
122
+ properties[key] = get_json_schema_from_db_type(input?.[key]?.db_data_type)
123
+ }
124
+ }
125
+ } else {
126
+ return null
127
+ }
128
+ return JSON.stringify({
129
+ type: "object",
130
+ properties: properties,
131
+ required: Object.keys(properties),
132
+ additionalProperties: false,
133
+ })
134
+ }
135
+
136
+ function get_json_schema_from_db_type(input) {
137
+ if (input?.type == "array_uniform_literal") {
138
+ return {
139
+ type: "array",
140
+ items: get_json_schema_from_db_type(input?.items),
141
+ }
142
+ } else if (input?.type == "object_literal") {
143
+ let properties = {}
144
+ for (let key of Object.keys(input?.properties)) {
145
+ properties[key] = get_json_schema_from_db_type(input?.properties?.[key])
146
+ }
147
+ return { type: "object", properties: properties, required: Object.keys(properties), additionalProperties: false }
148
+ }
149
+ let default_json_schema = literal_types?.[input?.type]?.json_schema
150
+ if (default_json_schema?.type == "object") {
151
+ default_json_schema = {
152
+ ...default_json_schema,
153
+ required: Object.keys(default_json_schema?.properties),
154
+ additionalProperties: false,
155
+ }
156
+ }
157
+ return default_json_schema
158
+ }
112
159
 
113
160
  let cur_page_to_use = $derived(
114
161
  !Array.isArray(row_indexes_display_order) || row_indexes_display_order.length < rows_per_page_dropdown_manager?.val
@@ -319,6 +366,7 @@ export function create_table_advanced_manager(config) {
319
366
  }
320
367
  }
321
368
  columns_prepped = columns_prepped_loc
369
+ console.log("columns_prepped", deep_copy(columns_prepped))
322
370
  return columns_prepped
323
371
  }
324
372
 
@@ -1031,7 +1079,7 @@ export function create_table_advanced_manager(config) {
1031
1079
  })
1032
1080
  settings_popover_manager = create_popover_manager({
1033
1081
  type: "dropdown",
1034
- target_width: 250,
1082
+ target_width: 260,
1035
1083
  target_height: 300,
1036
1084
  anchor_id: () => `button_${settings_popover_toggle_button_manager?.id}`,
1037
1085
  })
@@ -1134,6 +1182,25 @@ export function create_table_advanced_manager(config) {
1134
1182
  min_height: 2.4,
1135
1183
  popover_target: () => `popover_${settings_update_table_description_text_input_manager?.popover_manager?.id}`,
1136
1184
  })
1185
+ settings_copy_row_json_schema_button_manager = create_button_manager({
1186
+ type: "outlined",
1187
+ text: "Copy Row JSON Schema",
1188
+ is_success_animation: true,
1189
+ support_icon: "clipboard",
1190
+ mb: 1,
1191
+ on_click: () => copy_to_clipboard(row_json_schema),
1192
+ })
1193
+ settings_copy_rows_json_schema_button_manager = create_button_manager({
1194
+ type: "outlined",
1195
+ text: "Copy Rows JSON Schema",
1196
+ is_success_animation: true,
1197
+ support_icon: "clipboard",
1198
+ on_click: () =>
1199
+ copy_to_clipboard({
1200
+ type: "array",
1201
+ items: row_json_schema,
1202
+ }),
1203
+ })
1137
1204
  let delete_table_is_loading = $state(false)
1138
1205
  settings_delete_table_popover_manager = create_popover_manager({
1139
1206
  type: "center",
@@ -1457,6 +1524,12 @@ export function create_table_advanced_manager(config) {
1457
1524
  get settings_update_table_description_text_input_manager() {
1458
1525
  return settings_update_table_description_text_input_manager
1459
1526
  },
1527
+ get settings_copy_row_json_schema_button_manager() {
1528
+ return settings_copy_row_json_schema_button_manager
1529
+ },
1530
+ get settings_copy_rows_json_schema_button_manager() {
1531
+ return settings_copy_rows_json_schema_button_manager
1532
+ },
1460
1533
  get settings_preempt_delete_table_popover_button_manager() {
1461
1534
  return settings_preempt_delete_table_popover_button_manager
1462
1535
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sveltekit-ui",
3
- "version": "1.0.75",
3
+ "version": "1.0.76",
4
4
  "description": "A SvelteKit UI component library for building modern web applications",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -19,14 +19,14 @@
19
19
  "dependencies": {
20
20
  "context-filter-polyfill": "^0.3.23",
21
21
  "qr-code-styling": "^1.9.2",
22
- "svelte": "^5.39.9"
22
+ "svelte": "^5.39.10"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "@sveltejs/kit": "^2.22.2"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@sveltejs/adapter-vercel": "^5.10.3",
29
- "@sveltejs/kit": "^2.44.0",
29
+ "@sveltejs/kit": "^2.46.2",
30
30
  "@sveltejs/package": "^2.5.4",
31
31
  "@sveltejs/vite-plugin-svelte": "^6.2.1",
32
32
  "@vercel/analytics": "^1.5.0",
@@ -45,6 +45,12 @@
45
45
  {#if manager?.table_description}
46
46
  <p>{manager?.table_description}</p>
47
47
  {/if}
48
+
49
+ <div>
50
+ <h4 class="label">JSON Schema</h4>
51
+ <Button manager={manager?.settings_copy_row_json_schema_button_manager} />
52
+ <Button manager={manager?.settings_copy_rows_json_schema_button_manager} />
53
+ </div>
48
54
  {#if manager?.is_data_editable}
49
55
  <Button manager={manager?.settings_preempt_delete_table_popover_button_manager} />
50
56
  <Popover manager={manager?.settings_delete_table_popover_manager}>
@@ -20,6 +20,7 @@ import {
20
20
  } from "$lib/client/index.js"
21
21
  import { tick } from "svelte"
22
22
  import { browser } from "$app/environment"
23
+ import { literal_types } from "$lib/client/types/index.js"
23
24
 
24
25
  export function create_table_advanced_manager(config) {
25
26
  const id = create_unique_id(null, 20)
@@ -45,6 +46,8 @@ export function create_table_advanced_manager(config) {
45
46
  let settings_update_table_name_text_input_manager = $state(null)
46
47
  let settings_update_table_description_button_manager = $state(null)
47
48
  let settings_update_table_description_text_input_manager = $state(null)
49
+ let settings_copy_row_json_schema_button_manager = $state(null)
50
+ let settings_copy_rows_json_schema_button_manager = $state(null)
48
51
  let settings_preempt_delete_table_popover_button_manager = $state(null)
49
52
  let settings_delete_table_popover_manager = $state(null)
50
53
  let settings_delete_table_cancel_button_manager = $state(null)
@@ -109,6 +112,50 @@ export function create_table_advanced_manager(config) {
109
112
  let rows_data = $derived(get_def_from_variable_path(rows_data_from_variable_path, definition_stack))
110
113
  let row_indexes_display_order = $derived(get_available_row_indexes())
111
114
  let row_indexes_display_order_shown = $derived(get_row_indexes_shown())
115
+ let row_json_schema = $derived(get_row_json_schema(columns_prepped))
116
+
117
+ function get_row_json_schema(input) {
118
+ let properties = {}
119
+ if (Object.keys(input || {}).length > 0) {
120
+ for (let key of Object.keys(input)) {
121
+ if (input?.[key]?.is_db_column && !input?.[key]?.is_autogenerated) {
122
+ properties[key] = get_json_schema_from_db_type(input?.[key]?.db_data_type)
123
+ }
124
+ }
125
+ } else {
126
+ return null
127
+ }
128
+ return JSON.stringify({
129
+ type: "object",
130
+ properties: properties,
131
+ required: Object.keys(properties),
132
+ additionalProperties: false,
133
+ })
134
+ }
135
+
136
+ function get_json_schema_from_db_type(input) {
137
+ if (input?.type == "array_uniform_literal") {
138
+ return {
139
+ type: "array",
140
+ items: get_json_schema_from_db_type(input?.items),
141
+ }
142
+ } else if (input?.type == "object_literal") {
143
+ let properties = {}
144
+ for (let key of Object.keys(input?.properties)) {
145
+ properties[key] = get_json_schema_from_db_type(input?.properties?.[key])
146
+ }
147
+ return { type: "object", properties: properties, required: Object.keys(properties), additionalProperties: false }
148
+ }
149
+ let default_json_schema = literal_types?.[input?.type]?.json_schema
150
+ if (default_json_schema?.type == "object") {
151
+ default_json_schema = {
152
+ ...default_json_schema,
153
+ required: Object.keys(default_json_schema?.properties),
154
+ additionalProperties: false,
155
+ }
156
+ }
157
+ return default_json_schema
158
+ }
112
159
 
113
160
  let cur_page_to_use = $derived(
114
161
  !Array.isArray(row_indexes_display_order) || row_indexes_display_order.length < rows_per_page_dropdown_manager?.val
@@ -319,6 +366,7 @@ export function create_table_advanced_manager(config) {
319
366
  }
320
367
  }
321
368
  columns_prepped = columns_prepped_loc
369
+ console.log("columns_prepped", deep_copy(columns_prepped))
322
370
  return columns_prepped
323
371
  }
324
372
 
@@ -1031,7 +1079,7 @@ export function create_table_advanced_manager(config) {
1031
1079
  })
1032
1080
  settings_popover_manager = create_popover_manager({
1033
1081
  type: "dropdown",
1034
- target_width: 250,
1082
+ target_width: 260,
1035
1083
  target_height: 300,
1036
1084
  anchor_id: () => `button_${settings_popover_toggle_button_manager?.id}`,
1037
1085
  })
@@ -1134,6 +1182,25 @@ export function create_table_advanced_manager(config) {
1134
1182
  min_height: 2.4,
1135
1183
  popover_target: () => `popover_${settings_update_table_description_text_input_manager?.popover_manager?.id}`,
1136
1184
  })
1185
+ settings_copy_row_json_schema_button_manager = create_button_manager({
1186
+ type: "outlined",
1187
+ text: "Copy Row JSON Schema",
1188
+ is_success_animation: true,
1189
+ support_icon: "clipboard",
1190
+ mb: 1,
1191
+ on_click: () => copy_to_clipboard(row_json_schema),
1192
+ })
1193
+ settings_copy_rows_json_schema_button_manager = create_button_manager({
1194
+ type: "outlined",
1195
+ text: "Copy Rows JSON Schema",
1196
+ is_success_animation: true,
1197
+ support_icon: "clipboard",
1198
+ on_click: () =>
1199
+ copy_to_clipboard({
1200
+ type: "array",
1201
+ items: row_json_schema,
1202
+ }),
1203
+ })
1137
1204
  let delete_table_is_loading = $state(false)
1138
1205
  settings_delete_table_popover_manager = create_popover_manager({
1139
1206
  type: "center",
@@ -1457,6 +1524,12 @@ export function create_table_advanced_manager(config) {
1457
1524
  get settings_update_table_description_text_input_manager() {
1458
1525
  return settings_update_table_description_text_input_manager
1459
1526
  },
1527
+ get settings_copy_row_json_schema_button_manager() {
1528
+ return settings_copy_row_json_schema_button_manager
1529
+ },
1530
+ get settings_copy_rows_json_schema_button_manager() {
1531
+ return settings_copy_rows_json_schema_button_manager
1532
+ },
1460
1533
  get settings_preempt_delete_table_popover_button_manager() {
1461
1534
  return settings_preempt_delete_table_popover_button_manager
1462
1535
  },