@narrative.io/jsonforms-provider-protocols 1.1.0-beta.12 → 1.1.0-beta.14

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.
@@ -14,7 +14,7 @@ export declare const providerRenderers: {
14
14
  path: string;
15
15
  }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
16
  }[];
17
- export { primevueRenderers } from "./primevue";
17
+ export { primevueRenderers, registerPrimevueRenderers } from "./primevue";
18
18
  export { ProviderAutocomplete, ProviderSelect, ProviderMultiSelect };
19
19
  export { useProvider } from "./composables/useProvider";
20
20
  export * from "./testers";
@@ -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;AAC7D,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAgDvE,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAI7B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,cAAc,WAAW,CAAC;AAG1B,OAAO,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,GACV,MAAM,YAAY,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;AAC7D,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AAgDvE,eAAO,MAAM,iBAAiB;;;;;;;;;;;GAI7B,CAAC;AAGF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,cAAc,WAAW,CAAC;AAG1B,OAAO,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,GACV,MAAM,YAAY,CAAC"}
package/dist/vue/index.js CHANGED
@@ -2,7 +2,7 @@ import { rankWith, and, or, isStringControl, isNumberControl, isIntegerControl }
2
2
  import _sfc_main from "./components/ProviderAutocomplete.vue.js";
3
3
  import ProviderSelect from "./components/ProviderSelect.vue.js";
4
4
  import ProviderMultiSelect from "./components/ProviderMultiSelect.vue.js";
5
- import { primevueRenderers } from "./primevue/index.js";
5
+ import { primevueRenderers, registerPrimevueRenderers } from "./primevue/index.js";
6
6
  import { useProvider } from "./composables/useProvider.js";
7
7
  import { providerTester } from "./testers.js";
8
8
  import { default as default2 } from "./primevue/JfText.vue.js";
@@ -65,6 +65,7 @@ export {
65
65
  primevueRenderers,
66
66
  providerRenderers,
67
67
  providerTester,
68
+ registerPrimevueRenderers,
68
69
  useProvider
69
70
  };
70
71
  //# sourceMappingURL=index.js.map
@@ -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\";\nimport ProviderMultiSelect from \"./components/ProviderMultiSelect.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\n// Custom array tester - check both uischema control type and schema type\nconst isArrayControl = (uischema: UISchemaElement, schema: unknown) => {\n const controlSchema = uischema as { type: string; scope?: string };\n if (controlSchema.type !== \"Control\" || !controlSchema.scope) {\n return false;\n }\n\n // Extract the property schema from the root schema\n const rootSchema = schema as { properties?: Record<string, unknown> };\n const propertyPath = controlSchema.scope.replace(\"#/properties/\", \"\");\n const propertySchema = rootSchema?.properties?.[propertyPath] as {\n type?: string;\n };\n\n return propertySchema?.type === \"array\";\n};\n\nconst providerMultiSelectTester = rankWith(\n 108, // Highest priority for array controls with providers\n and(isArrayControl, hasProvider),\n);\n\nexport const providerRenderers = [\n { tester: providerMultiSelectTester, renderer: ProviderMultiSelect },\n { tester: providerAutocompleteTester, renderer: ProviderAutocomplete },\n { tester: providerSelectTester, renderer: ProviderSelect },\n];\n\n// Export PrimeVue renderers (styles are auto-injected)\nexport { primevueRenderers } from \"./primevue\";\n\n// Export individual components\nexport { ProviderAutocomplete, ProviderSelect, ProviderMultiSelect };\nexport { useProvider } from \"./composables/useProvider\";\nexport * from \"./testers\";\n\n// Export individual PrimeVue components using lazy evaluation to avoid circular deps\nexport {\n JfText,\n JfTextArea,\n JfNumber,\n JfEnum,\n JfEnumArray,\n JfBoolean,\n} from \"./primevue\";\n"],"names":["ProviderAutocomplete"],"mappings":";;;;;;;;;;;;;AAcA,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;AAGA,MAAM,iBAAiB,CAAC,UAA2B,WAAoB;AACrE,QAAM,gBAAgB;AACtB,MAAI,cAAc,SAAS,aAAa,CAAC,cAAc,OAAO;AAC5D,WAAO;AAAA,EACT;AAGA,QAAM,aAAa;AACnB,QAAM,eAAe,cAAc,MAAM,QAAQ,iBAAiB,EAAE;AACpE,QAAM,iBAAiB,YAAY,aAAa,YAAY;AAI5D,SAAO,gBAAgB,SAAS;AAClC;AAEA,MAAM,4BAA4B;AAAA,EAChC;AAAA;AAAA,EACA,IAAI,gBAAgB,WAAW;AACjC;AAEO,MAAM,oBAAoB;AAAA,EAC/B,EAAE,QAAQ,2BAA2B,UAAU,oBAAA;AAAA,EAC/C,EAAE,QAAQ,4BAA4B,UAAUA,UAAA;AAAA,EAChD,EAAE,QAAQ,sBAAsB,UAAU,eAAA;AAC5C;"}
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\";\nimport ProviderMultiSelect from \"./components/ProviderMultiSelect.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\n// Custom array tester - check both uischema control type and schema type\nconst isArrayControl = (uischema: UISchemaElement, schema: unknown) => {\n const controlSchema = uischema as { type: string; scope?: string };\n if (controlSchema.type !== \"Control\" || !controlSchema.scope) {\n return false;\n }\n\n // Extract the property schema from the root schema\n const rootSchema = schema as { properties?: Record<string, unknown> };\n const propertyPath = controlSchema.scope.replace(\"#/properties/\", \"\");\n const propertySchema = rootSchema?.properties?.[propertyPath] as {\n type?: string;\n };\n\n return propertySchema?.type === \"array\";\n};\n\nconst providerMultiSelectTester = rankWith(\n 108, // Highest priority for array controls with providers\n and(isArrayControl, hasProvider),\n);\n\nexport const providerRenderers = [\n { tester: providerMultiSelectTester, renderer: ProviderMultiSelect },\n { tester: providerAutocompleteTester, renderer: ProviderAutocomplete },\n { tester: providerSelectTester, renderer: ProviderSelect },\n];\n\n// Export PrimeVue renderers (styles are auto-injected)\nexport { primevueRenderers, registerPrimevueRenderers } from \"./primevue\";\n\n// Export individual components\nexport { ProviderAutocomplete, ProviderSelect, ProviderMultiSelect };\nexport { useProvider } from \"./composables/useProvider\";\nexport * from \"./testers\";\n\n// Export individual PrimeVue components using lazy evaluation to avoid circular deps\nexport {\n JfText,\n JfTextArea,\n JfNumber,\n JfEnum,\n JfEnumArray,\n JfBoolean,\n} from \"./primevue\";\n"],"names":["ProviderAutocomplete"],"mappings":";;;;;;;;;;;;;AAcA,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;AAGA,MAAM,iBAAiB,CAAC,UAA2B,WAAoB;AACrE,QAAM,gBAAgB;AACtB,MAAI,cAAc,SAAS,aAAa,CAAC,cAAc,OAAO;AAC5D,WAAO;AAAA,EACT;AAGA,QAAM,aAAa;AACnB,QAAM,eAAe,cAAc,MAAM,QAAQ,iBAAiB,EAAE;AACpE,QAAM,iBAAiB,YAAY,aAAa,YAAY;AAI5D,SAAO,gBAAgB,SAAS;AAClC;AAEA,MAAM,4BAA4B;AAAA,EAChC;AAAA;AAAA,EACA,IAAI,gBAAgB,WAAW;AACjC;AAEO,MAAM,oBAAoB;AAAA,EAC/B,EAAE,QAAQ,2BAA2B,UAAU,oBAAA;AAAA,EAC/C,EAAE,QAAQ,4BAA4B,UAAUA,UAAA;AAAA,EAChD,EAAE,QAAQ,sBAAsB,UAAU,eAAA;AAC5C;"}
@@ -4,8 +4,7 @@ import JfNumber from "./JfNumber.vue";
4
4
  import JfEnum from "./JfEnum.vue";
5
5
  import JfEnumArray from "./JfEnumArray.vue";
6
6
  import JfBoolean from "./JfBoolean.vue";
7
- import type { JsonFormsRendererRegistryEntry } from "@jsonforms/core";
8
- export declare function createPrimevueRenderers(): JsonFormsRendererRegistryEntry[];
9
- export declare const primevueRenderers: JsonFormsRendererRegistryEntry[];
7
+ export declare const primevueRenderers: unknown[];
8
+ export declare function registerPrimevueRenderers(jsonformsCore: any): unknown[];
10
9
  export { JfText, JfTextArea, JfNumber, JfEnum, JfEnumArray, JfBoolean };
11
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vue/primevue/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,SAAS,MAAM,iBAAiB,CAAC;AA+BxC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAMtE,wBAAgB,uBAAuB,IAAI,8BAA8B,EAAE,CAqF1E;AAKD,eAAO,MAAM,iBAAiB,EAAE,8BAA8B,EA4B7D,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vue/primevue/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAiCxC,eAAO,MAAM,iBAAiB,EAAE,OAAO,EAAO,CAAC;AAK/C,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,EAAE,CA0EvE;AAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
@@ -28,98 +28,57 @@ const injectLayoutStyles = () => {
28
28
  }
29
29
  };
30
30
  injectLayoutStyles();
31
- const PRIME = 100;
32
- function createPrimevueRenderers() {
33
- try {
34
- const jsonformsCore = require("@jsonforms/core");
35
- const {
36
- rankWith,
37
- isStringControl,
38
- or,
39
- isNumberControl,
40
- isIntegerControl,
41
- and,
42
- isControl,
43
- schemaMatches,
44
- isBooleanControl
45
- } = jsonformsCore;
46
- const isScalarEnum = (s) => {
47
- const schema = s;
48
- return schema && schema.type !== "array" && (Array.isArray(schema.enum) || Array.isArray(schema.oneOf));
49
- };
50
- const isEnumArray = (s) => {
51
- const schema = s;
52
- return schema?.type === "array" && (Array.isArray(schema.items?.enum) || Array.isArray(schema.items?.oneOf));
53
- };
54
- const isMultilineString = (uischema, schema) => {
55
- const controlUischema = uischema;
56
- return and(
57
- isStringControl,
58
- () => controlUischema?.options?.multi === true
59
- )(
60
- uischema,
61
- schema,
62
- {}
63
- );
64
- };
65
- return [
66
- // Multiline text has higher priority than regular text
67
- { tester: rankWith(PRIME + 4, isMultilineString), renderer: _sfc_main },
68
- { tester: rankWith(PRIME + 3, isStringControl), renderer: _sfc_main$1 },
69
- {
70
- tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),
71
- renderer: _sfc_main$2
72
- },
73
- {
74
- tester: rankWith(
75
- PRIME + 5,
76
- and(isControl, schemaMatches(isScalarEnum))
77
- ),
78
- renderer: _sfc_main$3
79
- },
80
- {
81
- tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),
82
- renderer: _sfc_main$4
83
- },
84
- { tester: rankWith(PRIME + 3, isBooleanControl), renderer: _sfc_main$5 }
85
- ];
86
- } catch {
87
- console.warn(
88
- "@jsonforms/core not available, returning empty renderers array"
31
+ const primevueRenderers = [];
32
+ function registerPrimevueRenderers(jsonformsCore) {
33
+ const {
34
+ rankWith,
35
+ isStringControl,
36
+ or,
37
+ isNumberControl,
38
+ isIntegerControl,
39
+ and,
40
+ isControl,
41
+ schemaMatches,
42
+ isBooleanControl
43
+ } = jsonformsCore;
44
+ const PRIME = 100;
45
+ const isScalarEnum = (s) => {
46
+ const schema = s;
47
+ return schema && schema.type !== "array" && (Array.isArray(schema.enum) || Array.isArray(schema.oneOf));
48
+ };
49
+ const isEnumArray = (s) => {
50
+ const schema = s;
51
+ return schema?.type === "array" && (Array.isArray(schema.items?.enum) || Array.isArray(schema.items?.oneOf));
52
+ };
53
+ const isMultilineString = (uischema, schema) => {
54
+ const controlUischema = uischema;
55
+ return and(isStringControl, () => controlUischema?.options?.multi === true)(
56
+ uischema,
57
+ schema,
58
+ {}
89
59
  );
90
- return [];
91
- }
92
- }
93
- let _cachedRenderers = null;
94
- const primevueRenderers = new Proxy(
95
- [],
96
- {
97
- get(target, prop) {
98
- if (_cachedRenderers === null) {
99
- _cachedRenderers = createPrimevueRenderers();
100
- }
101
- return Reflect.get(_cachedRenderers, prop);
60
+ };
61
+ const renderers = [
62
+ // Multiline text has higher priority than regular text
63
+ { tester: rankWith(PRIME + 4, isMultilineString), renderer: _sfc_main },
64
+ { tester: rankWith(PRIME + 3, isStringControl), renderer: _sfc_main$1 },
65
+ {
66
+ tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),
67
+ renderer: _sfc_main$2
102
68
  },
103
- has(target, prop) {
104
- if (_cachedRenderers === null) {
105
- _cachedRenderers = createPrimevueRenderers();
106
- }
107
- return Reflect.has(_cachedRenderers, prop);
69
+ {
70
+ tester: rankWith(PRIME + 5, and(isControl, schemaMatches(isScalarEnum))),
71
+ renderer: _sfc_main$3
108
72
  },
109
- ownKeys() {
110
- if (_cachedRenderers === null) {
111
- _cachedRenderers = createPrimevueRenderers();
112
- }
113
- return Reflect.ownKeys(_cachedRenderers);
73
+ {
74
+ tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),
75
+ renderer: _sfc_main$4
114
76
  },
115
- getOwnPropertyDescriptor(_, prop) {
116
- if (_cachedRenderers === null) {
117
- _cachedRenderers = createPrimevueRenderers();
118
- }
119
- return Reflect.getOwnPropertyDescriptor(_cachedRenderers, prop);
120
- }
121
- }
122
- );
77
+ { tester: rankWith(PRIME + 3, isBooleanControl), renderer: _sfc_main$5 }
78
+ ];
79
+ primevueRenderers.splice(0, primevueRenderers.length, ...renderers);
80
+ return renderers;
81
+ }
123
82
  export {
124
83
  _sfc_main$5 as JfBoolean,
125
84
  _sfc_main$3 as JfEnum,
@@ -127,7 +86,7 @@ export {
127
86
  _sfc_main$2 as JfNumber,
128
87
  _sfc_main$1 as JfText,
129
88
  _sfc_main as JfTextArea,
130
- createPrimevueRenderers,
131
- primevueRenderers
89
+ primevueRenderers,
90
+ registerPrimevueRenderers
132
91
  };
133
92
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/vue/primevue/index.ts"],"sourcesContent":["import JfText from \"./JfText.vue\";\nimport JfTextArea from \"./JfTextArea.vue\";\nimport JfNumber from \"./JfNumber.vue\";\nimport JfEnum from \"./JfEnum.vue\";\nimport JfEnumArray from \"./JfEnumArray.vue\";\nimport JfBoolean from \"./JfBoolean.vue\";\n\n// Auto-inject layout styles\nconst injectLayoutStyles = () => {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n if (!document.getElementById(\"jsonforms-primevue-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"jsonforms-primevue-styles\";\n style.textContent = `\n/* JSONForms PrimeVue Provider Protocols Layout Styles */\n.vertical-layout {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 1rem;\n width: 100%;\n}\n\n.vertical-layout-item {\n width: 100%;\n}\n `;\n document.head.appendChild(style);\n }\n }\n};\n\n// Inject styles when this module is imported\ninjectLayoutStyles();\n\n// Import types only to avoid circular dependencies\nimport type { JsonFormsRendererRegistryEntry } from \"@jsonforms/core\";\n\n// Give PrimeVue renderers a high base rank; vanilla commonly uses small ranks (2–5)\nconst PRIME = 100;\n\n// Function to create renderers - called lazily when needed\nexport function createPrimevueRenderers(): JsonFormsRendererRegistryEntry[] {\n // This will only work if @jsonforms/core is already loaded by the consuming application\n // which should be the case since they need it to use JSONForms\n try {\n // Use require.resolve to check if module is available, then use regular import\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const jsonformsCore = require(\"@jsonforms/core\");\n const {\n rankWith,\n isStringControl,\n or,\n isNumberControl,\n isIntegerControl,\n and,\n isControl,\n schemaMatches,\n isBooleanControl,\n } = jsonformsCore;\n\n // helpers for enum detection\n const isScalarEnum = (s?: object) => {\n const schema = s as {\n type?: string;\n enum?: unknown[];\n oneOf?: unknown[];\n };\n return (\n schema &&\n schema.type !== \"array\" &&\n (Array.isArray(schema.enum) || Array.isArray(schema.oneOf))\n );\n };\n\n const isEnumArray = (s?: object) => {\n const schema = s as {\n type?: string;\n items?: { enum?: unknown[]; oneOf?: unknown[] };\n };\n return (\n schema?.type === \"array\" &&\n (Array.isArray(schema.items?.enum) ||\n Array.isArray(schema.items?.oneOf))\n );\n };\n\n // helper for multiline detection\n const isMultilineString = (uischema: unknown, schema: unknown) => {\n const controlUischema = uischema as { options?: { multi?: boolean } };\n return and(\n isStringControl,\n () => controlUischema?.options?.multi === true,\n )(\n uischema as Parameters<typeof isStringControl>[0],\n schema as Parameters<typeof isStringControl>[1],\n {} as Parameters<typeof isStringControl>[2],\n );\n };\n\n return [\n // Multiline text has higher priority than regular text\n { tester: rankWith(PRIME + 4, isMultilineString), renderer: JfTextArea },\n { tester: rankWith(PRIME + 3, isStringControl), renderer: JfText },\n {\n tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),\n renderer: JfNumber,\n },\n {\n tester: rankWith(\n PRIME + 5,\n and(isControl, schemaMatches(isScalarEnum)),\n ),\n renderer: JfEnum,\n },\n {\n tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),\n renderer: JfEnumArray,\n },\n { tester: rankWith(PRIME + 3, isBooleanControl), renderer: JfBoolean },\n ];\n } catch {\n console.warn(\n \"@jsonforms/core not available, returning empty renderers array\",\n );\n return [];\n }\n}\n\n// For backward compatibility - export a lazy-initialized array\nlet _cachedRenderers: JsonFormsRendererRegistryEntry[] | null = null;\n\nexport const primevueRenderers: JsonFormsRendererRegistryEntry[] = new Proxy(\n [],\n {\n get(target, prop) {\n if (_cachedRenderers === null) {\n _cachedRenderers = createPrimevueRenderers();\n }\n return Reflect.get(_cachedRenderers, prop);\n },\n has(target, prop) {\n if (_cachedRenderers === null) {\n _cachedRenderers = createPrimevueRenderers();\n }\n return Reflect.has(_cachedRenderers, prop);\n },\n ownKeys() {\n if (_cachedRenderers === null) {\n _cachedRenderers = createPrimevueRenderers();\n }\n return Reflect.ownKeys(_cachedRenderers);\n },\n getOwnPropertyDescriptor(_, prop) {\n if (_cachedRenderers === null) {\n _cachedRenderers = createPrimevueRenderers();\n }\n return Reflect.getOwnPropertyDescriptor(_cachedRenderers, prop);\n },\n },\n);\n\nexport { JfText, JfTextArea, JfNumber, JfEnum, JfEnumArray, JfBoolean };\n"],"names":["JfTextArea","JfText","JfNumber","JfEnum","JfEnumArray","JfBoolean"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/vue/primevue/index.ts"],"sourcesContent":["import JfText from \"./JfText.vue\";\nimport JfTextArea from \"./JfTextArea.vue\";\nimport JfNumber from \"./JfNumber.vue\";\nimport JfEnum from \"./JfEnum.vue\";\nimport JfEnumArray from \"./JfEnumArray.vue\";\nimport JfBoolean from \"./JfBoolean.vue\";\n\n// Auto-inject layout styles\nconst injectLayoutStyles = () => {\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n if (!document.getElementById(\"jsonforms-primevue-styles\")) {\n const style = document.createElement(\"style\");\n style.id = \"jsonforms-primevue-styles\";\n style.textContent = `\n/* JSONForms PrimeVue Provider Protocols Layout Styles */\n.vertical-layout {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 1rem;\n width: 100%;\n}\n\n.vertical-layout-item {\n width: 100%;\n}\n `;\n document.head.appendChild(style);\n }\n }\n};\n\n// Inject styles when this module is imported\ninjectLayoutStyles();\n\n// Return empty renderers array - let the consuming application handle renderer registration\n// This avoids all circular dependency and AJV schema compilation issues\n\nexport const primevueRenderers: unknown[] = [];\n\n// Export a function that can be called by the consumer to register renderers\n// This puts the burden on the consuming application to call this after JSONForms is fully loaded\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function registerPrimevueRenderers(jsonformsCore: any): unknown[] {\n const {\n rankWith,\n isStringControl,\n or,\n isNumberControl,\n isIntegerControl,\n and,\n isControl,\n schemaMatches,\n isBooleanControl,\n } = jsonformsCore;\n\n // Give PrimeVue renderers a high base rank; vanilla commonly uses small ranks (2–5)\n const PRIME = 100;\n\n // helpers for enum detection\n const isScalarEnum = (s?: object) => {\n const schema = s as {\n type?: string;\n enum?: unknown[];\n oneOf?: unknown[];\n };\n return (\n schema &&\n schema.type !== \"array\" &&\n (Array.isArray(schema.enum) || Array.isArray(schema.oneOf))\n );\n };\n\n const isEnumArray = (s?: object) => {\n const schema = s as {\n type?: string;\n items?: { enum?: unknown[]; oneOf?: unknown[] };\n };\n return (\n schema?.type === \"array\" &&\n (Array.isArray(schema.items?.enum) || Array.isArray(schema.items?.oneOf))\n );\n };\n\n // helper for multiline detection\n const isMultilineString = (uischema: unknown, schema: unknown) => {\n const controlUischema = uischema as { options?: { multi?: boolean } };\n return and(isStringControl, () => controlUischema?.options?.multi === true)(\n uischema as Parameters<typeof isStringControl>[0],\n schema as Parameters<typeof isStringControl>[1],\n {} as Parameters<typeof isStringControl>[2],\n );\n };\n\n const renderers = [\n // Multiline text has higher priority than regular text\n { tester: rankWith(PRIME + 4, isMultilineString), renderer: JfTextArea },\n { tester: rankWith(PRIME + 3, isStringControl), renderer: JfText },\n {\n tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),\n renderer: JfNumber,\n },\n {\n tester: rankWith(PRIME + 5, and(isControl, schemaMatches(isScalarEnum))),\n renderer: JfEnum,\n },\n {\n tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),\n renderer: JfEnumArray,\n },\n { tester: rankWith(PRIME + 3, isBooleanControl), renderer: JfBoolean },\n ];\n\n // Update the exported array\n primevueRenderers.splice(0, primevueRenderers.length, ...renderers);\n\n return renderers;\n}\n\nexport { JfText, JfTextArea, JfNumber, JfEnum, JfEnumArray, JfBoolean };\n"],"names":["JfTextArea","JfText","JfNumber","JfEnum","JfEnumArray","JfBoolean"],"mappings":";;;;;;AAQA,MAAM,qBAAqB,MAAM;AAC/B,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aAAa;AACpE,QAAI,CAAC,SAAS,eAAe,2BAA2B,GAAG;AACzD,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,KAAK;AACX,YAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcpB,eAAS,KAAK,YAAY,KAAK;AAAA,IACjC;AAAA,EACF;AACF;AAGA,mBAAA;AAKO,MAAM,oBAA+B,CAAA;AAKrC,SAAS,0BAA0B,eAA+B;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAGJ,QAAM,QAAQ;AAGd,QAAM,eAAe,CAAC,MAAe;AACnC,UAAM,SAAS;AAKf,WACE,UACA,OAAO,SAAS,YACf,MAAM,QAAQ,OAAO,IAAI,KAAK,MAAM,QAAQ,OAAO,KAAK;AAAA,EAE7D;AAEA,QAAM,cAAc,CAAC,MAAe;AAClC,UAAM,SAAS;AAIf,WACE,QAAQ,SAAS,YAChB,MAAM,QAAQ,OAAO,OAAO,IAAI,KAAK,MAAM,QAAQ,OAAO,OAAO,KAAK;AAAA,EAE3E;AAGA,QAAM,oBAAoB,CAAC,UAAmB,WAAoB;AAChE,UAAM,kBAAkB;AACxB,WAAO,IAAI,iBAAiB,MAAM,iBAAiB,SAAS,UAAU,IAAI;AAAA,MACxE;AAAA,MACA;AAAA,MACA,CAAA;AAAA,IAAC;AAAA,EAEL;AAEA,QAAM,YAAY;AAAA;AAAA,IAEhB,EAAE,QAAQ,SAAS,QAAQ,GAAG,iBAAiB,GAAG,UAAUA,UAAA;AAAA,IAC5D,EAAE,QAAQ,SAAS,QAAQ,GAAG,eAAe,GAAG,UAAUC,YAAA;AAAA,IAC1D;AAAA,MACE,QAAQ,SAAS,QAAQ,GAAG,GAAG,iBAAiB,gBAAgB,CAAC;AAAA,MACjE,UAAUC;AAAAA,IAAA;AAAA,IAEZ;AAAA,MACE,QAAQ,SAAS,QAAQ,GAAG,IAAI,WAAW,cAAc,YAAY,CAAC,CAAC;AAAA,MACvE,UAAUC;AAAAA,IAAA;AAAA,IAEZ;AAAA,MACE,QAAQ,SAAS,QAAQ,GAAG,IAAI,WAAW,cAAc,WAAW,CAAC,CAAC;AAAA,MACtE,UAAUC;AAAAA,IAAA;AAAA,IAEZ,EAAE,QAAQ,SAAS,QAAQ,GAAG,gBAAgB,GAAG,UAAUC,YAAA;AAAA,EAAU;AAIvE,oBAAkB,OAAO,GAAG,kBAAkB,QAAQ,GAAG,SAAS;AAElE,SAAO;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@narrative.io/jsonforms-provider-protocols",
3
- "version": "1.1.0-beta.12",
3
+ "version": "1.1.0-beta.14",
4
4
  "description": "Dynamic data provider capabilities for JSONForms with Vue 3 integration",
5
5
  "type": "module",
6
6
  "author": "Narrative I/O",
package/src/vue/index.ts CHANGED
@@ -64,7 +64,7 @@ export const providerRenderers = [
64
64
  ];
65
65
 
66
66
  // Export PrimeVue renderers (styles are auto-injected)
67
- export { primevueRenderers } from "./primevue";
67
+ export { primevueRenderers, registerPrimevueRenderers } from "./primevue";
68
68
 
69
69
  // Export individual components
70
70
  export { ProviderAutocomplete, ProviderSelect, ProviderMultiSelect };
@@ -33,131 +33,88 @@ const injectLayoutStyles = () => {
33
33
  // Inject styles when this module is imported
34
34
  injectLayoutStyles();
35
35
 
36
- // Import types only to avoid circular dependencies
37
- import type { JsonFormsRendererRegistryEntry } from "@jsonforms/core";
36
+ // Return empty renderers array - let the consuming application handle renderer registration
37
+ // This avoids all circular dependency and AJV schema compilation issues
38
38
 
39
- // Give PrimeVue renderers a high base rank; vanilla commonly uses small ranks (2–5)
40
- const PRIME = 100;
39
+ export const primevueRenderers: unknown[] = [];
41
40
 
42
- // Function to create renderers - called lazily when needed
43
- export function createPrimevueRenderers(): JsonFormsRendererRegistryEntry[] {
44
- // This will only work if @jsonforms/core is already loaded by the consuming application
45
- // which should be the case since they need it to use JSONForms
46
- try {
47
- // Use require.resolve to check if module is available, then use regular import
48
- // eslint-disable-next-line @typescript-eslint/no-require-imports
49
- const jsonformsCore = require("@jsonforms/core");
50
- const {
51
- rankWith,
52
- isStringControl,
53
- or,
54
- isNumberControl,
55
- isIntegerControl,
56
- and,
57
- isControl,
58
- schemaMatches,
59
- isBooleanControl,
60
- } = jsonformsCore;
41
+ // Export a function that can be called by the consumer to register renderers
42
+ // This puts the burden on the consuming application to call this after JSONForms is fully loaded
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ export function registerPrimevueRenderers(jsonformsCore: any): unknown[] {
45
+ const {
46
+ rankWith,
47
+ isStringControl,
48
+ or,
49
+ isNumberControl,
50
+ isIntegerControl,
51
+ and,
52
+ isControl,
53
+ schemaMatches,
54
+ isBooleanControl,
55
+ } = jsonformsCore;
61
56
 
62
- // helpers for enum detection
63
- const isScalarEnum = (s?: object) => {
64
- const schema = s as {
65
- type?: string;
66
- enum?: unknown[];
67
- oneOf?: unknown[];
68
- };
69
- return (
70
- schema &&
71
- schema.type !== "array" &&
72
- (Array.isArray(schema.enum) || Array.isArray(schema.oneOf))
73
- );
74
- };
57
+ // Give PrimeVue renderers a high base rank; vanilla commonly uses small ranks (2–5)
58
+ const PRIME = 100;
75
59
 
76
- const isEnumArray = (s?: object) => {
77
- const schema = s as {
78
- type?: string;
79
- items?: { enum?: unknown[]; oneOf?: unknown[] };
80
- };
81
- return (
82
- schema?.type === "array" &&
83
- (Array.isArray(schema.items?.enum) ||
84
- Array.isArray(schema.items?.oneOf))
85
- );
60
+ // helpers for enum detection
61
+ const isScalarEnum = (s?: object) => {
62
+ const schema = s as {
63
+ type?: string;
64
+ enum?: unknown[];
65
+ oneOf?: unknown[];
86
66
  };
67
+ return (
68
+ schema &&
69
+ schema.type !== "array" &&
70
+ (Array.isArray(schema.enum) || Array.isArray(schema.oneOf))
71
+ );
72
+ };
87
73
 
88
- // helper for multiline detection
89
- const isMultilineString = (uischema: unknown, schema: unknown) => {
90
- const controlUischema = uischema as { options?: { multi?: boolean } };
91
- return and(
92
- isStringControl,
93
- () => controlUischema?.options?.multi === true,
94
- )(
95
- uischema as Parameters<typeof isStringControl>[0],
96
- schema as Parameters<typeof isStringControl>[1],
97
- {} as Parameters<typeof isStringControl>[2],
98
- );
74
+ const isEnumArray = (s?: object) => {
75
+ const schema = s as {
76
+ type?: string;
77
+ items?: { enum?: unknown[]; oneOf?: unknown[] };
99
78
  };
100
-
101
- return [
102
- // Multiline text has higher priority than regular text
103
- { tester: rankWith(PRIME + 4, isMultilineString), renderer: JfTextArea },
104
- { tester: rankWith(PRIME + 3, isStringControl), renderer: JfText },
105
- {
106
- tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),
107
- renderer: JfNumber,
108
- },
109
- {
110
- tester: rankWith(
111
- PRIME + 5,
112
- and(isControl, schemaMatches(isScalarEnum)),
113
- ),
114
- renderer: JfEnum,
115
- },
116
- {
117
- tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),
118
- renderer: JfEnumArray,
119
- },
120
- { tester: rankWith(PRIME + 3, isBooleanControl), renderer: JfBoolean },
121
- ];
122
- } catch {
123
- console.warn(
124
- "@jsonforms/core not available, returning empty renderers array",
79
+ return (
80
+ schema?.type === "array" &&
81
+ (Array.isArray(schema.items?.enum) || Array.isArray(schema.items?.oneOf))
125
82
  );
126
- return [];
127
- }
128
- }
83
+ };
129
84
 
130
- // For backward compatibility - export a lazy-initialized array
131
- let _cachedRenderers: JsonFormsRendererRegistryEntry[] | null = null;
85
+ // helper for multiline detection
86
+ const isMultilineString = (uischema: unknown, schema: unknown) => {
87
+ const controlUischema = uischema as { options?: { multi?: boolean } };
88
+ return and(isStringControl, () => controlUischema?.options?.multi === true)(
89
+ uischema as Parameters<typeof isStringControl>[0],
90
+ schema as Parameters<typeof isStringControl>[1],
91
+ {} as Parameters<typeof isStringControl>[2],
92
+ );
93
+ };
132
94
 
133
- export const primevueRenderers: JsonFormsRendererRegistryEntry[] = new Proxy(
134
- [],
135
- {
136
- get(target, prop) {
137
- if (_cachedRenderers === null) {
138
- _cachedRenderers = createPrimevueRenderers();
139
- }
140
- return Reflect.get(_cachedRenderers, prop);
141
- },
142
- has(target, prop) {
143
- if (_cachedRenderers === null) {
144
- _cachedRenderers = createPrimevueRenderers();
145
- }
146
- return Reflect.has(_cachedRenderers, prop);
95
+ const renderers = [
96
+ // Multiline text has higher priority than regular text
97
+ { tester: rankWith(PRIME + 4, isMultilineString), renderer: JfTextArea },
98
+ { tester: rankWith(PRIME + 3, isStringControl), renderer: JfText },
99
+ {
100
+ tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),
101
+ renderer: JfNumber,
147
102
  },
148
- ownKeys() {
149
- if (_cachedRenderers === null) {
150
- _cachedRenderers = createPrimevueRenderers();
151
- }
152
- return Reflect.ownKeys(_cachedRenderers);
103
+ {
104
+ tester: rankWith(PRIME + 5, and(isControl, schemaMatches(isScalarEnum))),
105
+ renderer: JfEnum,
153
106
  },
154
- getOwnPropertyDescriptor(_, prop) {
155
- if (_cachedRenderers === null) {
156
- _cachedRenderers = createPrimevueRenderers();
157
- }
158
- return Reflect.getOwnPropertyDescriptor(_cachedRenderers, prop);
107
+ {
108
+ tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),
109
+ renderer: JfEnumArray,
159
110
  },
160
- },
161
- );
111
+ { tester: rankWith(PRIME + 3, isBooleanControl), renderer: JfBoolean },
112
+ ];
113
+
114
+ // Update the exported array
115
+ primevueRenderers.splice(0, primevueRenderers.length, ...renderers);
116
+
117
+ return renderers;
118
+ }
162
119
 
163
120
  export { JfText, JfTextArea, JfNumber, JfEnum, JfEnumArray, JfBoolean };