@narrative.io/jsonforms-provider-protocols 1.0.3 → 1.1.0-beta.0
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.
- package/dist/jsonforms-provider-protocols.css +6 -2
- package/dist/protocols/rest_api.d.ts.map +1 -1
- package/dist/protocols/rest_api.js +5 -1
- package/dist/protocols/rest_api.js.map +1 -1
- package/dist/vue/components/ProviderAutocomplete.vue.d.ts.map +1 -1
- package/dist/vue/components/ProviderAutocomplete.vue.js +36 -23
- package/dist/vue/components/ProviderAutocomplete.vue.js.map +1 -1
- package/dist/vue/components/ProviderSelect.vue.d.ts.map +1 -1
- package/dist/vue/components/ProviderSelect.vue.js +1 -1
- package/dist/vue/components/ProviderSelect.vue2.js +34 -28
- package/dist/vue/components/ProviderSelect.vue2.js.map +1 -1
- package/dist/vue/composables/useProvider.d.ts +10 -2
- package/dist/vue/composables/useProvider.d.ts.map +1 -1
- package/dist/vue/composables/useProvider.js +4 -2
- package/dist/vue/composables/useProvider.js.map +1 -1
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +18 -2
- package/dist/vue/index.js.map +1 -1
- package/dist/vue/primevue/JfBoolean.vue.d.ts +75 -0
- package/dist/vue/primevue/JfBoolean.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfBoolean.vue.js +36 -0
- package/dist/vue/primevue/JfBoolean.vue.js.map +1 -0
- package/dist/vue/primevue/JfBoolean.vue2.js +5 -0
- package/dist/vue/primevue/JfBoolean.vue2.js.map +1 -0
- package/dist/vue/primevue/JfEnum.vue.d.ts +75 -0
- package/dist/vue/primevue/JfEnum.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfEnum.vue.js +8 -0
- package/dist/vue/primevue/JfEnum.vue.js.map +1 -0
- package/dist/vue/primevue/JfEnum.vue2.js +65 -0
- package/dist/vue/primevue/JfEnum.vue2.js.map +1 -0
- package/dist/vue/primevue/JfEnumArray.vue.d.ts +75 -0
- package/dist/vue/primevue/JfEnumArray.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfEnumArray.vue.js +84 -0
- package/dist/vue/primevue/JfEnumArray.vue.js.map +1 -0
- package/dist/vue/primevue/JfEnumArray.vue2.js +5 -0
- package/dist/vue/primevue/JfEnumArray.vue2.js.map +1 -0
- package/dist/vue/primevue/JfNumber.vue.d.ts +75 -0
- package/dist/vue/primevue/JfNumber.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfNumber.vue.js +50 -0
- package/dist/vue/primevue/JfNumber.vue.js.map +1 -0
- package/dist/vue/primevue/JfNumber.vue2.js +5 -0
- package/dist/vue/primevue/JfNumber.vue2.js.map +1 -0
- package/dist/vue/primevue/JfText.vue.d.ts +75 -0
- package/dist/vue/primevue/JfText.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfText.vue.js +56 -0
- package/dist/vue/primevue/JfText.vue.js.map +1 -0
- package/dist/vue/primevue/JfText.vue2.js +5 -0
- package/dist/vue/primevue/JfText.vue2.js.map +1 -0
- package/dist/vue/primevue/JfTextArea.vue.d.ts +75 -0
- package/dist/vue/primevue/JfTextArea.vue.d.ts.map +1 -0
- package/dist/vue/primevue/JfTextArea.vue.js +55 -0
- package/dist/vue/primevue/JfTextArea.vue.js.map +1 -0
- package/dist/vue/primevue/JfTextArea.vue2.js +5 -0
- package/dist/vue/primevue/JfTextArea.vue2.js.map +1 -0
- package/dist/vue/primevue/index.d.ts +83 -0
- package/dist/vue/primevue/index.d.ts.map +1 -0
- package/dist/vue/primevue/index.js +71 -0
- package/dist/vue/primevue/index.js.map +1 -0
- package/package.json +7 -2
- package/src/protocols/rest_api.ts +8 -1
- package/src/vue/components/ProviderAutocomplete.vue +31 -12
- package/src/vue/components/ProviderSelect.vue +40 -21
- package/src/vue/composables/useProvider.ts +3 -2
- package/src/vue/index.ts +7 -2
- package/src/vue/primevue/JfBoolean.vue +26 -0
- package/src/vue/primevue/JfEnum.vue +67 -0
- package/src/vue/primevue/JfEnumArray.vue +85 -0
- package/src/vue/primevue/JfNumber.vue +42 -0
- package/src/vue/primevue/JfText.vue +47 -0
- package/src/vue/primevue/JfTextArea.vue +46 -0
- package/src/vue/primevue/index.ts +99 -0
- package/src/vue/styles.css +15 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest_api.d.ts","sourceRoot":"","sources":["../../src/protocols/rest_api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAGR,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AA0DF,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"rest_api.d.ts","sourceRoot":"","sources":["../../src/protocols/rest_api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,QAAQ,EAGR,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AA0DF,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC,UAAU,CAiEpD,CAAC"}
|
|
@@ -43,7 +43,11 @@ const RestApiProtocol = () => ({
|
|
|
43
43
|
let cursor = null;
|
|
44
44
|
let page = 0;
|
|
45
45
|
do {
|
|
46
|
-
const
|
|
46
|
+
const renderedUrl = renderTpl(cfg.url, { data: ctx.data, ui: ctx.ui });
|
|
47
|
+
if (cfg.url.includes("{{") && renderedUrl.endsWith("/")) {
|
|
48
|
+
return { items: [], ttl: 0 };
|
|
49
|
+
}
|
|
50
|
+
const url = new URL(renderedUrl);
|
|
47
51
|
const q = renderObj(cfg.query ?? {}, {
|
|
48
52
|
data: ctx.data,
|
|
49
53
|
ui: ctx.ui
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest_api.js","sources":["../../src/protocols/rest_api.ts"],"sourcesContent":["import { jp } from \"../core/jsonpath\";\nimport { renderObj, renderTpl } from \"../core/templating\";\nimport type {\n Protocol,\n ProviderItem,\n ProviderOutput,\n AuthConfig,\n} from \"../core/types\";\n\nexport type RestApiCfg = {\n url: string;\n method?: \"GET\" | \"POST\";\n headers?: Record<string, string>;\n query?: Record<string, unknown>;\n body?: unknown;\n items: string; // JSONPath to array; e.g. \"$.items[*]\"\n map: { label: string; value: string; meta?: Record<string, string> }; // relative to each item\n paginate?: { cursorPath: string; param: string; maxPages?: number };\n auth?: AuthConfig;\n};\n\nfunction buildAuthHeaders(\n auth?: AuthConfig,\n globalAuth?: Record<string, unknown>,\n): Record<string, string> {\n const headers: Record<string, string> = {};\n\n if (!auth) return headers;\n\n // Handle \"use\" reference to global auth\n if (auth.use && globalAuth?.[auth.use]) {\n const globalValue = globalAuth[auth.use];\n const value =\n typeof globalValue === \"function\" ? globalValue() : globalValue;\n\n if (auth.use === \"apiKey\") {\n headers[\"X-API-Key\"] = String(value);\n } else if (auth.use === \"bearer\") {\n headers[\"Authorization\"] = `Bearer ${value}`;\n } else if (auth.use === \"token\") {\n headers[\"Authorization\"] = `Token ${value}`;\n }\n return headers;\n }\n\n // Handle direct auth values\n if (auth.apiKey) {\n const value =\n typeof auth.apiKey === \"function\" ? auth.apiKey() : auth.apiKey;\n headers[\"X-API-Key\"] = String(value);\n }\n\n if (auth.bearer) {\n const value =\n typeof auth.bearer === \"function\" ? auth.bearer() : auth.bearer;\n headers[\"Authorization\"] = `Bearer ${value}`;\n }\n\n if (auth.token) {\n const value = typeof auth.token === \"function\" ? auth.token() : auth.token;\n headers[\"Authorization\"] = `Token ${value}`;\n }\n\n // Handle custom auth fields\n for (const [key, value] of Object.entries(auth)) {\n if (\n ![\"use\", \"apiKey\", \"bearer\", \"token\"].includes(key) &&\n value !== undefined\n ) {\n const authValue = typeof value === \"function\" ? value() : value;\n headers[key] = String(authValue);\n }\n }\n\n return headers;\n}\n\nexport const RestApiProtocol = (): Protocol<RestApiCfg> => ({\n protocol: \"rest_api\",\n async resolve(cfg, ctx): Promise<ProviderOutput> {\n const ac = ctx.signal;\n const out: ProviderItem[] = [];\n let cursor: unknown = null;\n let page = 0;\n do {\n const
|
|
1
|
+
{"version":3,"file":"rest_api.js","sources":["../../src/protocols/rest_api.ts"],"sourcesContent":["import { jp } from \"../core/jsonpath\";\nimport { renderObj, renderTpl } from \"../core/templating\";\nimport type {\n Protocol,\n ProviderItem,\n ProviderOutput,\n AuthConfig,\n} from \"../core/types\";\n\nexport type RestApiCfg = {\n url: string;\n method?: \"GET\" | \"POST\";\n headers?: Record<string, string>;\n query?: Record<string, unknown>;\n body?: unknown;\n items: string; // JSONPath to array; e.g. \"$.items[*]\"\n map: { label: string; value: string; meta?: Record<string, string> }; // relative to each item\n paginate?: { cursorPath: string; param: string; maxPages?: number };\n auth?: AuthConfig;\n};\n\nfunction buildAuthHeaders(\n auth?: AuthConfig,\n globalAuth?: Record<string, unknown>,\n): Record<string, string> {\n const headers: Record<string, string> = {};\n\n if (!auth) return headers;\n\n // Handle \"use\" reference to global auth\n if (auth.use && globalAuth?.[auth.use]) {\n const globalValue = globalAuth[auth.use];\n const value =\n typeof globalValue === \"function\" ? globalValue() : globalValue;\n\n if (auth.use === \"apiKey\") {\n headers[\"X-API-Key\"] = String(value);\n } else if (auth.use === \"bearer\") {\n headers[\"Authorization\"] = `Bearer ${value}`;\n } else if (auth.use === \"token\") {\n headers[\"Authorization\"] = `Token ${value}`;\n }\n return headers;\n }\n\n // Handle direct auth values\n if (auth.apiKey) {\n const value =\n typeof auth.apiKey === \"function\" ? auth.apiKey() : auth.apiKey;\n headers[\"X-API-Key\"] = String(value);\n }\n\n if (auth.bearer) {\n const value =\n typeof auth.bearer === \"function\" ? auth.bearer() : auth.bearer;\n headers[\"Authorization\"] = `Bearer ${value}`;\n }\n\n if (auth.token) {\n const value = typeof auth.token === \"function\" ? auth.token() : auth.token;\n headers[\"Authorization\"] = `Token ${value}`;\n }\n\n // Handle custom auth fields\n for (const [key, value] of Object.entries(auth)) {\n if (\n ![\"use\", \"apiKey\", \"bearer\", \"token\"].includes(key) &&\n value !== undefined\n ) {\n const authValue = typeof value === \"function\" ? value() : value;\n headers[key] = String(authValue);\n }\n }\n\n return headers;\n}\n\nexport const RestApiProtocol = (): Protocol<RestApiCfg> => ({\n protocol: \"rest_api\",\n async resolve(cfg, ctx): Promise<ProviderOutput> {\n const ac = ctx.signal;\n const out: ProviderItem[] = [];\n let cursor: unknown = null;\n let page = 0;\n do {\n const renderedUrl = renderTpl(cfg.url, { data: ctx.data, ui: ctx.ui });\n\n // Check if URL has unresolved template variables (empty string after template rendering)\n if (cfg.url.includes(\"{{\") && renderedUrl.endsWith(\"/\")) {\n return { items: [], ttl: 0 };\n }\n\n const url = new URL(renderedUrl);\n const q = renderObj(cfg.query ?? {}, {\n data: ctx.data,\n ui: ctx.ui,\n }) as Record<string, unknown>;\n for (const [k, v] of Object.entries(q))\n if (v !== undefined && v !== \"\") url.searchParams.set(k, String(v));\n if (cursor && cfg.paginate)\n url.searchParams.set(cfg.paginate.param, String(cursor));\n\n // Build headers with auth\n const baseHeaders = renderObj(cfg.headers ?? {}, {\n data: ctx.data,\n }) as Record<string, string>;\n const authHeaders = buildAuthHeaders(cfg.auth, ctx.auth);\n const headers = { ...baseHeaders, ...authHeaders };\n\n const method = cfg.method ?? \"GET\";\n const requestInit: RequestInit = {\n method,\n headers,\n signal: ac,\n };\n\n // Only include body for non-GET requests\n if (method !== \"GET\" && cfg.body) {\n requestInit.body = JSON.stringify(\n renderObj(cfg.body, { data: ctx.data }),\n );\n }\n\n const res = await fetch(url.toString(), requestInit);\n if (!res.ok) throw new Error(`REST ${res.status}`);\n const json = await res.json();\n const items = jp(json, cfg.items);\n for (const it of items) {\n const label = jp(it, cfg.map.label)[0];\n const value = jp(it, cfg.map.value)[0];\n const meta = cfg.map.meta\n ? Object.fromEntries(\n Object.entries(cfg.map.meta).map(([k, p]) => [k, jp(it, p)[0]]),\n )\n : undefined;\n out.push({ label: String(label ?? \"\"), value, meta });\n }\n cursor = cfg.paginate ? jp(json, cfg.paginate.cursorPath)[0] : null;\n page += 1;\n } while (cfg.paginate && cursor && page < (cfg.paginate.maxPages ?? 5));\n return { items: out, ttl: 300 };\n },\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderAutocomplete.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/ProviderAutocomplete.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderAutocomplete.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/ProviderAutocomplete.vue"],"names":[],"mappings":"AA2EA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlE,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;;AA2JF,wBAEG"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { defineComponent, computed, ref, watch, createElementBlock, openBlock,
|
|
1
|
+
import { defineComponent, computed, ref, watch, createElementBlock, openBlock, createCommentVNode, createVNode, unref, toDisplayString } from "vue";
|
|
2
2
|
import { useJsonFormsControl } from "@jsonforms/vue";
|
|
3
3
|
import { useProvider } from "../composables/useProvider.js";
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import AutoComplete from "primevue/autocomplete";
|
|
5
|
+
const _hoisted_1 = { class: "flex flex-column gap-1" };
|
|
6
|
+
const _hoisted_2 = {
|
|
7
|
+
key: 0,
|
|
8
|
+
class: "text-color text-left"
|
|
9
|
+
};
|
|
10
|
+
const _hoisted_3 = {
|
|
9
11
|
key: 1,
|
|
12
|
+
class: "text-color-secondary text-left"
|
|
13
|
+
};
|
|
14
|
+
const _hoisted_4 = {
|
|
15
|
+
key: 2,
|
|
16
|
+
class: "p-error",
|
|
10
17
|
role: "alert"
|
|
11
18
|
};
|
|
12
19
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -39,25 +46,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
46
|
get: () => control.value.data,
|
|
40
47
|
set: (v) => handleChange(control.value.path, v)
|
|
41
48
|
});
|
|
49
|
+
const placeholder = computed(
|
|
50
|
+
() => loading.value ? "Loading…" : "Type to search…"
|
|
51
|
+
);
|
|
52
|
+
const onComplete = (event) => {
|
|
53
|
+
query.value = event.query;
|
|
54
|
+
};
|
|
55
|
+
const onSelect = (event) => {
|
|
56
|
+
value.value = event.value?.value ?? event.value;
|
|
57
|
+
};
|
|
42
58
|
return (_ctx, _cache) => {
|
|
43
59
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}), 128))
|
|
59
|
-
])) : createCommentVNode("", true),
|
|
60
|
-
unref(error) ? (openBlock(), createElementBlock("small", _hoisted_5, "Failed: " + toDisplayString(unref(error)), 1)) : createCommentVNode("", true)
|
|
60
|
+
unref(control).schema.title ? (openBlock(), createElementBlock("label", _hoisted_2, toDisplayString(unref(control).schema.title), 1)) : createCommentVNode("", true),
|
|
61
|
+
unref(control).description ? (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(unref(control).description), 1)) : createCommentVNode("", true),
|
|
62
|
+
createVNode(unref(AutoComplete), {
|
|
63
|
+
modelValue: value.value,
|
|
64
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
65
|
+
class: "w-full",
|
|
66
|
+
suggestions: unref(items),
|
|
67
|
+
"option-label": "label",
|
|
68
|
+
placeholder: placeholder.value,
|
|
69
|
+
disabled: !unref(control).enabled,
|
|
70
|
+
onComplete,
|
|
71
|
+
onItemSelect: onSelect
|
|
72
|
+
}, null, 8, ["modelValue", "suggestions", "placeholder", "disabled"]),
|
|
73
|
+
unref(error) ? (openBlock(), createElementBlock("small", _hoisted_4, "Failed: " + toDisplayString(unref(error)), 1)) : createCommentVNode("", true)
|
|
61
74
|
]);
|
|
62
75
|
};
|
|
63
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderAutocomplete.vue.js","sources":["../../../src/vue/components/ProviderAutocomplete.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ControlElement, JsonSchema } from \"@jsonforms/core\";\nimport { useJsonFormsControl } from \"@jsonforms/vue\";\nimport { computed, ref, watch } from \"vue\";\nimport { useProvider } from \"../composables/useProvider\";\n\nconst props = defineProps<{\n uischema: ControlElement;\n schema: JsonSchema;\n path: string;\n}>();\nconst { control, handleChange } = useJsonFormsControl(props);\n\nconst binding = computed(() => {\n const provider = control.value.uischema?.options?.provider;\n // Ensure load property is set to 'query' by default for autocomplete\n if (provider && typeof provider === \"object\" && !provider.load) {\n return { ...provider, load: \"query\" };\n }\n return provider;\n});\nconst query = ref(\"\");\nconst { items, loading, error, reload } = useProvider(binding, {\n data: control.value.data,\n path: control.value.path,\n uiQuery: query.value,\n});\n\nwatch(query, () => {\n if (binding.value?.load === \"query\") reload();\n});\n\nconst value = computed({\n get: () => control.value.data,\n set: (v) => handleChange(control.value.path, v),\n});\n</script>\n\n<template>\n <div class=\"
|
|
1
|
+
{"version":3,"file":"ProviderAutocomplete.vue.js","sources":["../../../src/vue/components/ProviderAutocomplete.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ControlElement, JsonSchema } from \"@jsonforms/core\";\nimport { useJsonFormsControl } from \"@jsonforms/vue\";\nimport { computed, ref, watch } from \"vue\";\nimport { useProvider } from \"../composables/useProvider\";\nimport AutoComplete from \"primevue/autocomplete\";\n\nconst props = defineProps<{\n uischema: ControlElement;\n schema: JsonSchema;\n path: string;\n}>();\nconst { control, handleChange } = useJsonFormsControl(props);\n\nconst binding = computed(() => {\n const provider = control.value.uischema?.options?.provider;\n // Ensure load property is set to 'query' by default for autocomplete\n if (provider && typeof provider === \"object\" && !provider.load) {\n return { ...provider, load: \"query\" };\n }\n return provider;\n});\n\nconst query = ref(\"\");\nconst { items, loading, error, reload } = useProvider(binding, {\n data: control.value.data,\n path: control.value.path,\n uiQuery: query.value,\n});\n\nwatch(query, () => {\n if (binding.value?.load === \"query\") reload();\n});\n\nconst value = computed({\n get: () => control.value.data,\n set: (v) => handleChange(control.value.path, v),\n});\n\nconst placeholder = computed(() =>\n loading.value ? \"Loading…\" : \"Type to search…\",\n);\n\nconst onComplete = (event: { query: string }) => {\n query.value = event.query;\n};\n\nconst onSelect = (event: { value?: { value?: unknown } | unknown }) => {\n value.value = (event.value as { value?: unknown })?.value ?? event.value;\n};\n</script>\n\n<template>\n <div class=\"flex flex-column gap-1\">\n <label v-if=\"control.schema.title\" class=\"text-color text-left\">{{\n control.schema.title\n }}</label>\n <div v-if=\"control.description\" class=\"text-color-secondary text-left\">\n {{ control.description }}\n </div>\n <AutoComplete\n v-model=\"value\"\n class=\"w-full\"\n :suggestions=\"items\"\n option-label=\"label\"\n :placeholder=\"placeholder\"\n :disabled=\"!control.enabled\"\n @complete=\"onComplete\"\n @item-select=\"onSelect\"\n />\n <small v-if=\"error\" class=\"p-error\" role=\"alert\">Failed: {{ error }}</small>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_unref","_toDisplayString","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AAKd,UAAM,EAAE,SAAS,iBAAiB,oBAAoB,KAAK;AAE3D,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,WAAW,QAAQ,MAAM,UAAU,SAAS;AAElD,UAAI,YAAY,OAAO,aAAa,YAAY,CAAC,SAAS,MAAM;AAC9D,eAAO,EAAE,GAAG,UAAU,MAAM,QAAA;AAAA,MAC9B;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,QAAQ,IAAI,EAAE;AACpB,UAAM,EAAE,OAAO,SAAS,OAAO,OAAA,IAAW,YAAY,SAAS;AAAA,MAC7D,MAAM,QAAQ,MAAM;AAAA,MACpB,MAAM,QAAQ,MAAM;AAAA,MACpB,SAAS,MAAM;AAAA,IAAA,CAChB;AAED,UAAM,OAAO,MAAM;AACjB,UAAI,QAAQ,OAAO,SAAS,QAAS,QAAA;AAAA,IACvC,CAAC;AAED,UAAM,QAAQ,SAAS;AAAA,MACrB,KAAK,MAAM,QAAQ,MAAM;AAAA,MACzB,KAAK,CAAC,MAAM,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,IAAA,CAC/C;AAED,UAAM,cAAc;AAAA,MAAS,MAC3B,QAAQ,QAAQ,aAAa;AAAA,IAAA;AAG/B,UAAM,aAAa,CAAC,UAA6B;AAC/C,YAAM,QAAQ,MAAM;AAAA,IACtB;AAEA,UAAM,WAAW,CAAC,UAAqD;AACrE,YAAM,QAAS,MAAM,OAA+B,SAAS,MAAM;AAAA,IACrE;;AAIE,aAAAA,UAAA,GAAAC,mBAkBM,OAlBN,YAkBM;AAAA,QAjBSC,MAAA,OAAA,EAAQ,OAAO,SAA5BF,aAAAC,mBAEU,SAFV,YAEUE,gBADRD,eAAQ,OAAO,KAAK,GAAA,CAAA;QAEXA,MAAA,OAAA,EAAQ,eAAnBF,UAAA,GAAAC,mBAEM,OAFN,YAEME,gBADDD,MAAA,OAAA,EAAQ,WAAW,GAAA,CAAA;QAExBE,YASEF,MAAA,YAAA,GAAA;AAAA,sBARS,MAAA;AAAA,uEAAA,MAAK,QAAA;AAAA,UACd,OAAM;AAAA,UACL,aAAaA,MAAA,KAAA;AAAA,UACd,gBAAa;AAAA,UACZ,aAAa,YAAA;AAAA,UACb,UAAQ,CAAGA,MAAA,OAAA,EAAQ;AAAA,UACnB;AAAA,UACA,cAAa;AAAA,QAAA;QAEHA,MAAA,KAAA,KAAbF,aAAAC,mBAA4E,SAA5E,YAAiD,6BAAWC,MAAA,KAAA,CAAK,GAAA,CAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderSelect.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/ProviderSelect.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderSelect.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/ProviderSelect.vue"],"names":[],"mappings":"AA2FA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlE,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;;AA6JF,wBAEG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./ProviderSelect.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const ProviderSelect = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const ProviderSelect = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-197643bf"]]);
|
|
5
5
|
export {
|
|
6
6
|
ProviderSelect as default
|
|
7
7
|
};
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import { defineComponent, computed,
|
|
1
|
+
import { defineComponent, computed, inject, createElementBlock, openBlock, createCommentVNode, createVNode, unref, toDisplayString } from "vue";
|
|
2
2
|
import { useJsonFormsControl } from "@jsonforms/vue";
|
|
3
3
|
import { useProvider } from "../composables/useProvider.js";
|
|
4
|
-
|
|
4
|
+
import Dropdown from "primevue/dropdown";
|
|
5
|
+
const _hoisted_1 = { class: "flex flex-column gap-2" };
|
|
5
6
|
const _hoisted_2 = {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
key: 0,
|
|
8
|
+
class: "text-color text-left"
|
|
9
|
+
};
|
|
10
|
+
const _hoisted_3 = {
|
|
11
|
+
key: 1,
|
|
12
|
+
class: "text-color-secondary text-left"
|
|
8
13
|
};
|
|
9
|
-
const _hoisted_3 = ["value"];
|
|
10
14
|
const _hoisted_4 = {
|
|
11
|
-
key:
|
|
15
|
+
key: 2,
|
|
16
|
+
class: "p-error",
|
|
12
17
|
role: "alert"
|
|
13
18
|
};
|
|
14
19
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -32,37 +37,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
32
37
|
() => control.value.schema?.["x-provider"]?.dependsOn ?? []
|
|
33
38
|
);
|
|
34
39
|
const depValues = computed(() => deps.value.map(() => null));
|
|
35
|
-
const
|
|
36
|
-
|
|
40
|
+
const injectedFormData = inject("formData", { value: {} });
|
|
41
|
+
const rootData = computed(() => injectedFormData.value || {});
|
|
42
|
+
const { items, loading, error } = useProvider(binding, {
|
|
43
|
+
data: rootData,
|
|
44
|
+
// Pass the reactive reference
|
|
37
45
|
path: control.value.path,
|
|
38
46
|
dependsOnValues: depValues.value
|
|
39
47
|
});
|
|
40
|
-
watch(
|
|
41
|
-
() => control.value.data,
|
|
42
|
-
() => {
|
|
43
|
-
reload();
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
48
|
const value = computed({
|
|
47
49
|
get: () => control.value.data,
|
|
48
50
|
set: (v) => handleChange(control.value.path, v)
|
|
49
51
|
});
|
|
52
|
+
const placeholder = computed(() => {
|
|
53
|
+
if (loading.value) return "Loading…";
|
|
54
|
+
const uischemaPlaceholder = control.value.uischema?.options?.placeholder;
|
|
55
|
+
return uischemaPlaceholder || "Select…";
|
|
56
|
+
});
|
|
50
57
|
return (_ctx, _cache) => {
|
|
51
58
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]),
|
|
59
|
+
unref(control).schema.title ? (openBlock(), createElementBlock("label", _hoisted_2, toDisplayString(unref(control).schema.title), 1)) : createCommentVNode("", true),
|
|
60
|
+
unref(control).description ? (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(unref(control).description), 1)) : createCommentVNode("", true),
|
|
61
|
+
createVNode(unref(Dropdown), {
|
|
62
|
+
modelValue: value.value,
|
|
63
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => value.value = $event),
|
|
64
|
+
class: "w-full",
|
|
65
|
+
options: unref(items),
|
|
66
|
+
"option-label": "label",
|
|
67
|
+
"option-value": "value",
|
|
68
|
+
placeholder: placeholder.value,
|
|
69
|
+
disabled: !unref(control).enabled || unref(loading),
|
|
70
|
+
"show-clear": true
|
|
71
|
+
}, null, 8, ["modelValue", "options", "placeholder", "disabled"]),
|
|
66
72
|
unref(error) ? (openBlock(), createElementBlock("small", _hoisted_4, "Failed to load: " + toDisplayString(unref(error)), 1)) : createCommentVNode("", true)
|
|
67
73
|
]);
|
|
68
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderSelect.vue2.js","sources":["../../../src/vue/components/ProviderSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ControlElement, JsonSchema } from \"@jsonforms/core\";\nimport { useJsonFormsControl } from \"@jsonforms/vue\";\nimport { computed,
|
|
1
|
+
{"version":3,"file":"ProviderSelect.vue2.js","sources":["../../../src/vue/components/ProviderSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ControlElement, JsonSchema } from \"@jsonforms/core\";\nimport { useJsonFormsControl } from \"@jsonforms/vue\";\nimport { computed, inject } from \"vue\";\nimport { useProvider } from \"../composables/useProvider\";\nimport Dropdown from \"primevue/dropdown\";\n\nconst props = defineProps<{\n uischema: ControlElement;\n schema: JsonSchema;\n path: string;\n}>();\nconst { control, handleChange } = useJsonFormsControl(props);\n\nconst binding = computed(() => {\n const provider = control.value.uischema?.options?.provider;\n // Ensure load property is set to 'mount' by default\n if (provider && typeof provider === \"object\" && !provider.load) {\n return { ...provider, load: \"mount\" };\n }\n return provider;\n});\n\nconst deps = computed(\n () =>\n ((\n (control.value.schema as Record<string, unknown>)?.[\n \"x-provider\"\n ] as Record<string, unknown>\n )?.dependsOn as string[]) ?? [],\n);\nconst depValues = computed(() => deps.value.map(() => null)); // you can resolve actual values via control.value.data & pointers\n\n// Get the root form data from JSONForms context for template URL resolution\nconst injectedFormData = inject<{ value: unknown }>(\"formData\", { value: {} });\nconst rootData = computed(() => injectedFormData.value || {});\n\nconst { items, loading, error } = useProvider(binding, {\n data: rootData, // Pass the reactive reference\n path: control.value.path,\n dependsOnValues: depValues.value,\n});\n\n// Provider will automatically reload when rootData changes due to reactive cache key\n\nconst value = computed({\n get: () => control.value.data,\n set: (v) => handleChange(control.value.path, v),\n});\n\nconst placeholder = computed(() => {\n if (loading.value) return \"Loading…\";\n // Check for placeholder in uischema options\n const uischemaPlaceholder = (\n control.value.uischema as { options?: { placeholder?: string } }\n )?.options?.placeholder;\n return uischemaPlaceholder || \"Select…\";\n});\n</script>\n\n<template>\n <div class=\"flex flex-column gap-2\">\n <label v-if=\"control.schema.title\" class=\"text-color text-left\">{{\n control.schema.title\n }}</label>\n <div v-if=\"control.description\" class=\"text-color-secondary text-left\">\n {{ control.description }}\n </div>\n <Dropdown\n v-model=\"value\"\n class=\"w-full\"\n :options=\"items\"\n option-label=\"label\"\n option-value=\"value\"\n :placeholder=\"placeholder\"\n :disabled=\"!control.enabled || loading\"\n :show-clear=\"true\"\n />\n <small v-if=\"error\" class=\"p-error\" role=\"alert\"\n >Failed to load: {{ error }}</small\n >\n </div>\n</template>\n\n<style scoped>\n:deep(.p-dropdown-label) {\n text-align: left;\n}\n</style>\n"],"names":["_openBlock","_createElementBlock","_unref","_toDisplayString","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AAKd,UAAM,EAAE,SAAS,iBAAiB,oBAAoB,KAAK;AAE3D,UAAM,UAAU,SAAS,MAAM;AAC7B,YAAM,WAAW,QAAQ,MAAM,UAAU,SAAS;AAElD,UAAI,YAAY,OAAO,aAAa,YAAY,CAAC,SAAS,MAAM;AAC9D,eAAO,EAAE,GAAG,UAAU,MAAM,QAAA;AAAA,MAC9B;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,OAAO;AAAA,MACX,MAEK,QAAQ,MAAM,SACb,YACF,GACC,aAA0B,CAAA;AAAA,IAAC;AAElC,UAAM,YAAY,SAAS,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,CAAC;AAG3D,UAAM,mBAAmB,OAA2B,YAAY,EAAE,OAAO,CAAA,GAAI;AAC7E,UAAM,WAAW,SAAS,MAAM,iBAAiB,SAAS,CAAA,CAAE;AAE5D,UAAM,EAAE,OAAO,SAAS,MAAA,IAAU,YAAY,SAAS;AAAA,MACrD,MAAM;AAAA;AAAA,MACN,MAAM,QAAQ,MAAM;AAAA,MACpB,iBAAiB,UAAU;AAAA,IAAA,CAC5B;AAID,UAAM,QAAQ,SAAS;AAAA,MACrB,KAAK,MAAM,QAAQ,MAAM;AAAA,MACzB,KAAK,CAAC,MAAM,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,IAAA,CAC/C;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,QAAQ,MAAO,QAAO;AAE1B,YAAM,sBACJ,QAAQ,MAAM,UACb,SAAS;AACZ,aAAO,uBAAuB;AAAA,IAChC,CAAC;;AAIC,aAAAA,UAAA,GAAAC,mBAoBM,OApBN,YAoBM;AAAA,QAnBSC,MAAA,OAAA,EAAQ,OAAO,SAA5BF,aAAAC,mBAEU,SAFV,YAEUE,gBADRD,eAAQ,OAAO,KAAK,GAAA,CAAA;QAEXA,MAAA,OAAA,EAAQ,eAAnBF,UAAA,GAAAC,mBAEM,OAFN,YAEME,gBADDD,MAAA,OAAA,EAAQ,WAAW,GAAA,CAAA;QAExBE,YASEF,MAAA,QAAA,GAAA;AAAA,sBARS,MAAA;AAAA,uEAAA,MAAK,QAAA;AAAA,UACd,OAAM;AAAA,UACL,SAASA,MAAA,KAAA;AAAA,UACV,gBAAa;AAAA,UACb,gBAAa;AAAA,UACZ,aAAa,YAAA;AAAA,UACb,UAAQ,CAAGA,MAAA,OAAA,EAAQ,WAAWA,MAAA,OAAA;AAAA,UAC9B,cAAY;AAAA,QAAA;QAEFA,MAAA,KAAA,KAAbF,aAAAC,mBAEC,SAFD,YACG,qCAAmBC,MAAA,KAAA,CAAK,GAAA,CAAA;;;;;"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import { type ComputedRef, type Ref } from "vue";
|
|
2
2
|
import type { ProviderBinding, ProviderItem } from "../../core/types";
|
|
3
3
|
export declare function useProvider(binding: ProviderBinding | Ref<ProviderBinding> | ComputedRef<ProviderBinding>, ctxBits: {
|
|
4
|
-
data: unknown
|
|
4
|
+
data: unknown | Ref<unknown> | ComputedRef<unknown>;
|
|
5
5
|
path: string;
|
|
6
6
|
dependsOnValues?: unknown[];
|
|
7
7
|
uiQuery?: string;
|
|
8
8
|
}): {
|
|
9
|
-
items: Ref<
|
|
9
|
+
items: Ref<{
|
|
10
|
+
label: string;
|
|
11
|
+
value: unknown;
|
|
12
|
+
meta?: Record<string, unknown> | undefined;
|
|
13
|
+
}[], ProviderItem[] | {
|
|
14
|
+
label: string;
|
|
15
|
+
value: unknown;
|
|
16
|
+
meta?: Record<string, unknown> | undefined;
|
|
17
|
+
}[]>;
|
|
10
18
|
loading: Ref<boolean, boolean>;
|
|
11
19
|
error: Ref<string | undefined, string | undefined>;
|
|
12
20
|
reload: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProvider.d.ts","sourceRoot":"","sources":["../../../src/vue/composables/useProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAIhB,KAAK,GAAG,EAIT,MAAM,KAAK,CAAC;AAGb,OAAO,KAAK,EAEV,eAAe,EACf,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,WAAW,CACzB,OAAO,EACH,eAAe,GACf,GAAG,CAAC,eAAe,CAAC,GACpB,WAAW,CAAC,eAAe,CAAC,EAChC,OAAO,EAAE;IACP,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useProvider.d.ts","sourceRoot":"","sources":["../../../src/vue/composables/useProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAIhB,KAAK,GAAG,EAIT,MAAM,KAAK,CAAC;AAGb,OAAO,KAAK,EAEV,eAAe,EACf,YAAY,EAEb,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,WAAW,CACzB,OAAO,EACH,eAAe,GACf,GAAG,CAAC,eAAe,CAAC,GACpB,WAAW,CAAC,eAAe,CAAC,EAChC,OAAO,EAAE;IACP,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;EAsEF"}
|
|
@@ -13,7 +13,9 @@ function useProvider(binding, ctxBits) {
|
|
|
13
13
|
() => JSON.stringify({
|
|
14
14
|
b: unref(binding),
|
|
15
15
|
d: ctxBits.dependsOnValues ?? [],
|
|
16
|
-
q: ctxBits.uiQuery ?? ""
|
|
16
|
+
q: ctxBits.uiQuery ?? "",
|
|
17
|
+
data: unref(ctxBits.data)
|
|
18
|
+
// Include data in cache key for reactivity
|
|
17
19
|
})
|
|
18
20
|
);
|
|
19
21
|
async function load() {
|
|
@@ -35,7 +37,7 @@ function useProvider(binding, ctxBits) {
|
|
|
35
37
|
);
|
|
36
38
|
}
|
|
37
39
|
const out = await driver.resolve(bindingValue.config ?? {}, {
|
|
38
|
-
data: ctxBits.data,
|
|
40
|
+
data: unref(ctxBits.data),
|
|
39
41
|
path: ctxBits.path,
|
|
40
42
|
ui: { query: ctxBits.uiQuery },
|
|
41
43
|
signal: ac.signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProvider.js","sources":["../../../src/vue/composables/useProvider.ts"],"sourcesContent":["import {\n type ComputedRef,\n computed,\n inject,\n onBeforeUnmount,\n type Ref,\n ref,\n unref,\n watch,\n} from \"vue\";\nimport { cache as globalCache } from \"../../core/cache\";\nimport { registry as globalRegistry } from \"../../core/registry\";\nimport type {\n AuthConfig,\n ProviderBinding,\n ProviderItem,\n ProviderOutput,\n} from \"../../core/types\";\n\nexport function useProvider(\n binding:\n | ProviderBinding\n | Ref<ProviderBinding>\n | ComputedRef<ProviderBinding>,\n ctxBits: {\n data: unknown
|
|
1
|
+
{"version":3,"file":"useProvider.js","sources":["../../../src/vue/composables/useProvider.ts"],"sourcesContent":["import {\n type ComputedRef,\n computed,\n inject,\n onBeforeUnmount,\n type Ref,\n ref,\n unref,\n watch,\n} from \"vue\";\nimport { cache as globalCache } from \"../../core/cache\";\nimport { registry as globalRegistry } from \"../../core/registry\";\nimport type {\n AuthConfig,\n ProviderBinding,\n ProviderItem,\n ProviderOutput,\n} from \"../../core/types\";\n\nexport function useProvider(\n binding:\n | ProviderBinding\n | Ref<ProviderBinding>\n | ComputedRef<ProviderBinding>,\n ctxBits: {\n data: unknown | Ref<unknown> | ComputedRef<unknown>;\n path: string;\n dependsOnValues?: unknown[];\n uiQuery?: string;\n },\n) {\n const registry = inject(\"providerRegistry\", globalRegistry);\n const cache = inject(\"providerCache\", globalCache);\n const auth = inject(\"providerAuth\", {}) as Record<\n string,\n (() => string) | string\n >;\n\n const items = ref<ProviderItem[]>([]);\n const loading = ref(false);\n const error = ref<string | undefined>(undefined);\n const ac = new AbortController();\n\n const cacheKey = computed(() =>\n JSON.stringify({\n b: unref(binding),\n d: ctxBits.dependsOnValues ?? [],\n q: ctxBits.uiQuery ?? \"\",\n data: unref(ctxBits.data), // Include data in cache key for reactivity\n }),\n );\n\n async function load() {\n const bindingValue = unref(binding);\n if (!bindingValue) return;\n loading.value = true;\n error.value = undefined;\n const hit = cache.get(cacheKey.value) as ProviderOutput | undefined;\n if (hit) {\n items.value = hit.items;\n loading.value = false;\n return;\n }\n try {\n const driver = registry.get(bindingValue.protocol);\n if (!driver) {\n throw new Error(\n `No provider registered for protocol: ${bindingValue.protocol}`,\n );\n }\n const out = await driver.resolve(bindingValue.config ?? {}, {\n data: unref(ctxBits.data),\n path: ctxBits.path,\n ui: { query: ctxBits.uiQuery },\n signal: ac.signal,\n auth: resolveAuth(bindingValue.auth, auth),\n });\n items.value = out.items;\n cache.set(cacheKey.value, out, bindingValue.cacheTTL ?? out.ttl ?? 0);\n } catch (e) {\n error.value = (e as Error)?.message ?? String(e);\n items.value = [];\n } finally {\n loading.value = false;\n }\n }\n\n onBeforeUnmount(() => ac.abort());\n watch(\n [cacheKey],\n () => {\n const bindingValue = unref(binding);\n if (bindingValue?.load === \"mount\" || bindingValue?.load === \"query\")\n load();\n },\n { immediate: unref(binding)?.load === \"mount\" },\n );\n\n return { items, loading, error, reload: load };\n}\n\nfunction resolveAuth(\n spec: AuthConfig | undefined,\n authBag: Record<string, (() => string) | string>,\n): AuthConfig {\n if (!spec) return {};\n if (spec.use && typeof authBag[spec.use] === \"function\") {\n const authFunc = authBag[spec.use] as () => string;\n return { [spec.use]: authFunc() };\n }\n return spec;\n}\n"],"names":["registry","globalRegistry","cache","globalCache"],"mappings":";;;AAmBO,SAAS,YACd,SAIA,SAMA;AACA,QAAMA,aAAW,OAAO,oBAAoBC,QAAc;AAC1D,QAAMC,UAAQ,OAAO,iBAAiBC,KAAW;AACjD,QAAM,OAAO,OAAO,gBAAgB,EAAE;AAKtC,QAAM,QAAQ,IAAoB,EAAE;AACpC,QAAM,UAAU,IAAI,KAAK;AACzB,QAAM,QAAQ,IAAwB,MAAS;AAC/C,QAAM,KAAK,IAAI,gBAAA;AAEf,QAAM,WAAW;AAAA,IAAS,MACxB,KAAK,UAAU;AAAA,MACb,GAAG,MAAM,OAAO;AAAA,MAChB,GAAG,QAAQ,mBAAmB,CAAA;AAAA,MAC9B,GAAG,QAAQ,WAAW;AAAA,MACtB,MAAM,MAAM,QAAQ,IAAI;AAAA;AAAA,IAAA,CACzB;AAAA,EAAA;AAGH,iBAAe,OAAO;AACpB,UAAM,eAAe,MAAM,OAAO;AAClC,QAAI,CAAC,aAAc;AACnB,YAAQ,QAAQ;AAChB,UAAM,QAAQ;AACd,UAAM,MAAMD,QAAM,IAAI,SAAS,KAAK;AACpC,QAAI,KAAK;AACP,YAAM,QAAQ,IAAI;AAClB,cAAQ,QAAQ;AAChB;AAAA,IACF;AACA,QAAI;AACF,YAAM,SAASF,WAAS,IAAI,aAAa,QAAQ;AACjD,UAAI,CAAC,QAAQ;AACX,cAAM,IAAI;AAAA,UACR,wCAAwC,aAAa,QAAQ;AAAA,QAAA;AAAA,MAEjE;AACA,YAAM,MAAM,MAAM,OAAO,QAAQ,aAAa,UAAU,IAAI;AAAA,QAC1D,MAAM,MAAM,QAAQ,IAAI;AAAA,QACxB,MAAM,QAAQ;AAAA,QACd,IAAI,EAAE,OAAO,QAAQ,QAAA;AAAA,QACrB,QAAQ,GAAG;AAAA,QACX,MAAM,YAAY,aAAa,MAAM,IAAI;AAAA,MAAA,CAC1C;AACD,YAAM,QAAQ,IAAI;AAClBE,cAAM,IAAI,SAAS,OAAO,KAAK,aAAa,YAAY,IAAI,OAAO,CAAC;AAAA,IACtE,SAAS,GAAG;AACV,YAAM,QAAS,GAAa,WAAW,OAAO,CAAC;AAC/C,YAAM,QAAQ,CAAA;AAAA,IAChB,UAAA;AACE,cAAQ,QAAQ;AAAA,IAClB;AAAA,EACF;AAEA,kBAAgB,MAAM,GAAG,OAAO;AAChC;AAAA,IACE,CAAC,QAAQ;AAAA,IACT,MAAM;AACJ,YAAM,eAAe,MAAM,OAAO;AAClC,UAAI,cAAc,SAAS,WAAW,cAAc,SAAS;AAC3D,aAAA;AAAA,IACJ;AAAA,IACA,EAAE,WAAW,MAAM,OAAO,GAAG,SAAS,QAAA;AAAA,EAAQ;AAGhD,SAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,KAAA;AAC1C;AAEA,SAAS,YACP,MACA,SACY;AACZ,MAAI,CAAC,KAAM,QAAO,CAAA;AAClB,MAAI,KAAK,OAAO,OAAO,QAAQ,KAAK,GAAG,MAAM,YAAY;AACvD,UAAM,WAAW,QAAQ,KAAK,GAAG;AACjC,WAAO,EAAE,CAAC,KAAK,GAAG,GAAG,WAAS;AAAA,EAChC;AACA,SAAO;AACT;"}
|
package/dist/vue/index.d.ts
CHANGED
|
@@ -13,7 +13,9 @@ export declare const providerRenderers: {
|
|
|
13
13
|
path: string;
|
|
14
14
|
}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
15
|
}[];
|
|
16
|
+
export { primevueRenderers } from "./primevue";
|
|
16
17
|
export { ProviderAutocomplete, ProviderSelect };
|
|
17
18
|
export { useProvider } from "./composables/useProvider";
|
|
18
19
|
export * from "./testers";
|
|
20
|
+
export * from "./primevue";
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/vue/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASvD,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AACzE,OAAO,cAAc,MAAM,iCAAiC,CAAC;AA0B7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAG7B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASvD,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AACzE,OAAO,cAAc,MAAM,iCAAiC,CAAC;AA0B7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAG7B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
|
package/dist/vue/index.js
CHANGED
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import { rankWith, and, or, isStringControl, isNumberControl, isIntegerControl } from "@jsonforms/core";
|
|
2
2
|
import _sfc_main from "./components/ProviderAutocomplete.vue.js";
|
|
3
3
|
import ProviderSelect from "./components/ProviderSelect.vue.js";
|
|
4
|
+
import { primevueRenderers } from "./primevue/index.js";
|
|
4
5
|
import { useProvider } from "./composables/useProvider.js";
|
|
5
6
|
import { providerTester } from "./testers.js";
|
|
7
|
+
import { default as default2 } from "./primevue/JfText.vue.js";
|
|
8
|
+
import { default as default3 } from "./primevue/JfTextArea.vue.js";
|
|
9
|
+
import { default as default4 } from "./primevue/JfNumber.vue.js";
|
|
10
|
+
import { default as default5 } from "./primevue/JfEnumArray.vue.js";
|
|
11
|
+
import { default as default6 } from "./primevue/JfBoolean.vue.js";
|
|
12
|
+
import { default as default7 } from "./primevue/JfEnum.vue.js";
|
|
6
13
|
const hasProvider = (uischema) => {
|
|
7
14
|
return uischema?.options?.provider !== void 0;
|
|
8
15
|
};
|
|
9
16
|
const providerSelectTester = rankWith(
|
|
10
|
-
|
|
17
|
+
106,
|
|
18
|
+
// Higher than PrimeVue base (100) to ensure providers take precedence
|
|
11
19
|
and(
|
|
12
20
|
or(isStringControl, isNumberControl, isIntegerControl),
|
|
13
21
|
hasProvider,
|
|
@@ -15,7 +23,8 @@ const providerSelectTester = rankWith(
|
|
|
15
23
|
)
|
|
16
24
|
);
|
|
17
25
|
const providerAutocompleteTester = rankWith(
|
|
18
|
-
|
|
26
|
+
107,
|
|
27
|
+
// Higher than PrimeVue base (100) to ensure providers take precedence
|
|
19
28
|
and(
|
|
20
29
|
or(isStringControl, isNumberControl, isIntegerControl),
|
|
21
30
|
hasProvider,
|
|
@@ -27,8 +36,15 @@ const providerRenderers = [
|
|
|
27
36
|
{ tester: providerAutocompleteTester, renderer: _sfc_main }
|
|
28
37
|
];
|
|
29
38
|
export {
|
|
39
|
+
default6 as JfBoolean,
|
|
40
|
+
default7 as JfEnum,
|
|
41
|
+
default5 as JfEnumArray,
|
|
42
|
+
default4 as JfNumber,
|
|
43
|
+
default2 as JfText,
|
|
44
|
+
default3 as JfTextArea,
|
|
30
45
|
_sfc_main as ProviderAutocomplete,
|
|
31
46
|
ProviderSelect,
|
|
47
|
+
primevueRenderers,
|
|
32
48
|
providerRenderers,
|
|
33
49
|
providerTester,
|
|
34
50
|
useProvider
|
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/vue/index.ts"],"sourcesContent":["import type { UISchemaElement } from \"@jsonforms/core\";\nimport {\n and,\n isIntegerControl,\n isNumberControl,\n isStringControl,\n or,\n rankWith,\n} from \"@jsonforms/core\";\nimport ProviderAutocomplete from \"./components/ProviderAutocomplete.vue\";\nimport ProviderSelect from \"./components/ProviderSelect.vue\";\n\n// Custom tester that checks if provider option exists (as object or boolean)\nconst hasProvider = (uischema: UISchemaElement) => {\n return uischema?.options?.provider !== undefined;\n};\n\n// Create specific testers for each component type\nconst providerSelectTester = rankWith(\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/vue/index.ts"],"sourcesContent":["import type { UISchemaElement } from \"@jsonforms/core\";\nimport {\n and,\n isIntegerControl,\n isNumberControl,\n isStringControl,\n or,\n rankWith,\n} from \"@jsonforms/core\";\nimport ProviderAutocomplete from \"./components/ProviderAutocomplete.vue\";\nimport ProviderSelect from \"./components/ProviderSelect.vue\";\n\n// Custom tester that checks if provider option exists (as object or boolean)\nconst hasProvider = (uischema: UISchemaElement) => {\n return uischema?.options?.provider !== undefined;\n};\n\n// Create specific testers for each component type\nconst providerSelectTester = rankWith(\n 106, // Higher than PrimeVue base (100) to ensure providers take precedence\n and(\n or(isStringControl, isNumberControl, isIntegerControl),\n hasProvider,\n (uischema) => !uischema?.options?.autocomplete,\n ),\n);\n\nconst providerAutocompleteTester = rankWith(\n 107, // Higher than PrimeVue base (100) to ensure providers take precedence\n and(\n or(isStringControl, isNumberControl, isIntegerControl),\n hasProvider,\n (uischema) => uischema?.options?.autocomplete === true,\n ),\n);\n\nexport const providerRenderers = [\n { tester: providerSelectTester, renderer: ProviderSelect },\n { tester: providerAutocompleteTester, renderer: ProviderAutocomplete },\n];\n\n// Export PrimeVue renderers (styles are auto-injected)\nexport { primevueRenderers } from \"./primevue\";\n\n// Export individual components\nexport { ProviderAutocomplete, ProviderSelect };\nexport { useProvider } from \"./composables/useProvider\";\nexport * from \"./testers\";\nexport * from \"./primevue\";\n"],"names":["ProviderAutocomplete"],"mappings":";;;;;;;;;;;;AAaA,MAAM,cAAc,CAAC,aAA8B;AACjD,SAAO,UAAU,SAAS,aAAa;AACzC;AAGA,MAAM,uBAAuB;AAAA,EAC3B;AAAA;AAAA,EACA;AAAA,IACE,GAAG,iBAAiB,iBAAiB,gBAAgB;AAAA,IACrD;AAAA,IACA,CAAC,aAAa,CAAC,UAAU,SAAS;AAAA,EAAA;AAEtC;AAEA,MAAM,6BAA6B;AAAA,EACjC;AAAA;AAAA,EACA;AAAA,IACE,GAAG,iBAAiB,iBAAiB,gBAAgB;AAAA,IACrD;AAAA,IACA,CAAC,aAAa,UAAU,SAAS,iBAAiB;AAAA,EAAA;AAEtD;AAEO,MAAM,oBAAoB;AAAA,EAC/B,EAAE,QAAQ,sBAAsB,UAAU,eAAA;AAAA,EAC1C,EAAE,QAAQ,4BAA4B,UAAUA,UAAA;AAClD;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ControlElement } from "@jsonforms/core";
|
|
2
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
schema: {
|
|
4
|
+
required: true;
|
|
5
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonSchema>;
|
|
6
|
+
};
|
|
7
|
+
uischema: {
|
|
8
|
+
required: true;
|
|
9
|
+
type: import("vue").PropType<ControlElement>;
|
|
10
|
+
};
|
|
11
|
+
path: {
|
|
12
|
+
required: true;
|
|
13
|
+
type: StringConstructor;
|
|
14
|
+
};
|
|
15
|
+
enabled: {
|
|
16
|
+
required: false;
|
|
17
|
+
type: BooleanConstructor;
|
|
18
|
+
default: undefined;
|
|
19
|
+
};
|
|
20
|
+
renderers: {
|
|
21
|
+
required: boolean;
|
|
22
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonFormsRendererRegistryEntry[]>;
|
|
23
|
+
default: undefined;
|
|
24
|
+
};
|
|
25
|
+
cells: {
|
|
26
|
+
required: boolean;
|
|
27
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonFormsCellRendererRegistryEntry[]>;
|
|
28
|
+
default: undefined;
|
|
29
|
+
};
|
|
30
|
+
config: {
|
|
31
|
+
required: boolean;
|
|
32
|
+
type: ObjectConstructor;
|
|
33
|
+
default: undefined;
|
|
34
|
+
};
|
|
35
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
36
|
+
schema: {
|
|
37
|
+
required: true;
|
|
38
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonSchema>;
|
|
39
|
+
};
|
|
40
|
+
uischema: {
|
|
41
|
+
required: true;
|
|
42
|
+
type: import("vue").PropType<ControlElement>;
|
|
43
|
+
};
|
|
44
|
+
path: {
|
|
45
|
+
required: true;
|
|
46
|
+
type: StringConstructor;
|
|
47
|
+
};
|
|
48
|
+
enabled: {
|
|
49
|
+
required: false;
|
|
50
|
+
type: BooleanConstructor;
|
|
51
|
+
default: undefined;
|
|
52
|
+
};
|
|
53
|
+
renderers: {
|
|
54
|
+
required: boolean;
|
|
55
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonFormsRendererRegistryEntry[]>;
|
|
56
|
+
default: undefined;
|
|
57
|
+
};
|
|
58
|
+
cells: {
|
|
59
|
+
required: boolean;
|
|
60
|
+
type: import("vue").PropType<import("@jsonforms/core").JsonFormsCellRendererRegistryEntry[]>;
|
|
61
|
+
default: undefined;
|
|
62
|
+
};
|
|
63
|
+
config: {
|
|
64
|
+
required: boolean;
|
|
65
|
+
type: ObjectConstructor;
|
|
66
|
+
default: undefined;
|
|
67
|
+
};
|
|
68
|
+
}>> & Readonly<{}>, {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
renderers: import("@jsonforms/core").JsonFormsRendererRegistryEntry[];
|
|
71
|
+
cells: import("@jsonforms/core").JsonFormsCellRendererRegistryEntry[];
|
|
72
|
+
config: Record<string, any>;
|
|
73
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
74
|
+
export default _default;
|
|
75
|
+
//# sourceMappingURL=JfBoolean.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JfBoolean.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/primevue/JfBoolean.vue"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4FtD,wBAEG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { defineComponent, createElementBlock, openBlock, createVNode, createCommentVNode, unref, toDisplayString } from "vue";
|
|
2
|
+
import { rendererProps, useJsonFormsControl } from "@jsonforms/vue";
|
|
3
|
+
import Checkbox from "primevue/checkbox";
|
|
4
|
+
const _hoisted_1 = { class: "flex items-center gap-2" };
|
|
5
|
+
const _hoisted_2 = { key: 0 };
|
|
6
|
+
const _hoisted_3 = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "p-error"
|
|
9
|
+
};
|
|
10
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
11
|
+
...{ name: "JfBoolean" },
|
|
12
|
+
__name: "JfBoolean",
|
|
13
|
+
props: rendererProps(),
|
|
14
|
+
setup(__props) {
|
|
15
|
+
const props = __props;
|
|
16
|
+
const { control, handleChange } = useJsonFormsControl(props);
|
|
17
|
+
const onToggle = (val) => handleChange(control.value.path, val);
|
|
18
|
+
return (_ctx, _cache) => {
|
|
19
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
20
|
+
createVNode(unref(Checkbox), {
|
|
21
|
+
binary: true,
|
|
22
|
+
"model-value": !!unref(control).data,
|
|
23
|
+
disabled: !unref(control).enabled,
|
|
24
|
+
"aria-invalid": !!unref(control).errors || void 0,
|
|
25
|
+
"onUpdate:modelValue": onToggle
|
|
26
|
+
}, null, 8, ["model-value", "disabled", "aria-invalid"]),
|
|
27
|
+
unref(control).label ? (openBlock(), createElementBlock("label", _hoisted_2, toDisplayString(unref(control).label), 1)) : createCommentVNode("", true),
|
|
28
|
+
unref(control).errors ? (openBlock(), createElementBlock("small", _hoisted_3, toDisplayString(unref(control).errors), 1)) : createCommentVNode("", true)
|
|
29
|
+
]);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
export {
|
|
34
|
+
_sfc_main as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=JfBoolean.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JfBoolean.vue.js","sources":["../../../src/vue/primevue/JfBoolean.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ControlElement } from \"@jsonforms/core\";\nimport { rendererProps, useJsonFormsControl } from \"@jsonforms/vue\";\nimport Checkbox from \"primevue/checkbox\";\n\ndefineOptions({ name: \"JfBoolean\" });\n\nconst props = defineProps(rendererProps<ControlElement>());\nconst { control, handleChange } = useJsonFormsControl(props);\n\nconst onToggle = (val: boolean) => handleChange(control.value.path, val);\n</script>\n\n<template>\n <div class=\"flex items-center gap-2\">\n <Checkbox\n :binary=\"true\"\n :model-value=\"!!control.data\"\n :disabled=\"!control.enabled\"\n :aria-invalid=\"!!control.errors || undefined\"\n @update:model-value=\"onToggle\"\n />\n <label v-if=\"control.label\">{{ control.label }}</label>\n <small v-if=\"control.errors\" class=\"p-error\">{{ control.errors }}</small>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","_unref","_toDisplayString"],"mappings":";;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AACd,UAAM,EAAE,SAAS,iBAAiB,oBAAoB,KAAK;AAE3D,UAAM,WAAW,CAAC,QAAiB,aAAa,QAAQ,MAAM,MAAM,GAAG;;AAIrE,aAAAA,UAAA,GAAAC,mBAUM,OAVN,YAUM;AAAA,QATJC,YAMEC,MAAA,QAAA,GAAA;AAAA,UALC,QAAQ;AAAA,UACR,eAAW,CAAA,CAAIA,MAAA,OAAA,EAAQ;AAAA,UACvB,UAAQ,CAAGA,MAAA,OAAA,EAAQ;AAAA,UACnB,gBAAY,CAAA,CAAIA,MAAA,OAAA,EAAQ,UAAU;AAAA,UAClC,uBAAoB;AAAA,QAAA;QAEVA,MAAA,OAAA,EAAQ,sBAArBF,mBAAuD,SAAA,YAAAG,gBAAxBD,MAAA,OAAA,EAAQ,KAAK,GAAA,CAAA;QAC/BA,MAAA,OAAA,EAAQ,UAArBH,UAAA,GAAAC,mBAAyE,SAAzE,YAAyEG,gBAAzBD,MAAA,OAAA,EAAQ,MAAM,GAAA,CAAA;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JfBoolean.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|