@axdspub/axiom-ui-forms 0.3.3-experimental.1 → 0.3.3

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.
@@ -1,4 +1,4 @@
1
- var applicator = {};
1
+ var validation = {};
2
2
 
3
- export { applicator as __exports };
3
+ export { validation as __exports };
4
4
  //# sourceMappingURL=index11.js.map
@@ -1,4 +1,4 @@
1
- var core = {};
1
+ var applicator = {};
2
2
 
3
- export { core as __exports };
3
+ export { applicator as __exports };
4
4
  //# sourceMappingURL=index12.js.map
@@ -1,4 +1,4 @@
1
- var codegen = {};
1
+ var validate = {};
2
2
 
3
- export { codegen as __exports };
3
+ export { validate as __exports };
4
4
  //# sourceMappingURL=index4.js.map
@@ -1,4 +1,4 @@
1
- var validate = {};
1
+ var codegen = {};
2
2
 
3
- export { validate as __exports };
3
+ export { codegen as __exports };
4
4
  //# sourceMappingURL=index5.js.map
@@ -1,4 +1,4 @@
1
- var validation = {};
1
+ var core = {};
2
2
 
3
- export { validation as __exports };
3
+ export { core as __exports };
4
4
  //# sourceMappingURL=index9.js.map
@@ -1,4 +1,4 @@
1
- import { __exports as codegen } from '../../../../../_virtual/index4.js';
1
+ import { __exports as codegen } from '../../../../../_virtual/index5.js';
2
2
  import { __require as requireCode } from './code.js';
3
3
  import { __require as requireScope } from './scope.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __exports as validate } from '../../../../../_virtual/index5.js';
1
+ import { __exports as validate } from '../../../../../_virtual/index4.js';
2
2
  import { __require as requireBoolSchema } from './boolSchema.js';
3
3
  import { __require as requireDataType } from './dataType.js';
4
4
  import { __require as requireApplicability } from './applicability.js';
@@ -1,4 +1,4 @@
1
- import { __exports as applicator } from '../../../../../_virtual/index11.js';
1
+ import { __exports as applicator } from '../../../../../_virtual/index12.js';
2
2
  import { __require as requireAdditionalItems } from './additionalItems.js';
3
3
  import { __require as requirePrefixItems } from './prefixItems.js';
4
4
  import { __require as requireItems } from './items.js';
@@ -1,4 +1,4 @@
1
- import { __exports as core } from '../../../../../_virtual/index12.js';
1
+ import { __exports as core } from '../../../../../_virtual/index9.js';
2
2
  import { __require as requireId } from './id.js';
3
3
  import { __require as requireRef } from './ref.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { __exports as validation } from '../../../../../_virtual/index9.js';
1
+ import { __exports as validation } from '../../../../../_virtual/index11.js';
2
2
  import { __require as requireLimitNumber } from './limitNumber.js';
3
3
  import { __require as requireMultipleOf } from './multipleOf.js';
4
4
  import { __require as requireLimitLength } from './limitLength.js';
@@ -155,7 +155,7 @@ var JsonYamlEditor = function (_a) {
155
155
  ? JSON.stringify(JSON.parse(workingValue), null, 2)
156
156
  : jsYaml.dump(workingValue)
157
157
  : workingValue, className: 'white z-40' })),
158
- React__default.createElement("div", { className: 'h-full flex-grow overflow-auto' },
158
+ React__default.createElement("div", { className: 'h-full flex-grow overflow-auto min-h-[300px]' },
159
159
  React__default.createElement(ReactCodeMirror, { value: format === 'yaml' && workingValue === '{}' ? '' : workingValue, extensions: [
160
160
  format === 'json' ? json() : yaml(),
161
161
  autocompletion(),
@@ -1 +1 @@
1
- {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel {...field} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto'>\r\n <CodeMirror\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={handleChange}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":"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"}
1
+ {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel {...field} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto min-h-[300px]'>\r\n <CodeMirror\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={handleChange}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":";;;;;;;;;;;;;AAaA,IAAM,YAAY,GAAG,UAAC,GAAW,EAAE,GAAW,EAAA;AAC5C,IAAA,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;SACrC;QACL,IAAM,UAAU,GAAGA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAA,OAAOA,MAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;AAEtC,CAAC;AAED,IAAM,eAAe,GAAG,UAAC,GAAW,EAAE,GAAW,EAAA;AAC/C,IAAA,IAAI;AACF,QAAA,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;;IAC7B,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,GAAG;;AAEd,CAAC;AAEK,IAAA,cAAc,GAAG,UAAC,EAA4C,EAAA;;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC9C,IAAM,SAAS,GAAG,KAAmB;AACrC,IAAA,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,MAAA,GAAA,MAAA,GAAA,SAAS,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;AACnE,IAAA,IAAM,UAAU,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,MAAA,GAAA,MAAA,GAAA,SAAS,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK;IACrD,IAAA,EAAA,GAAsB,QAAQ,CAAkB,MAAM,CAAC,EAAtD,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAqC;IACvD,IAAA,EAAA,GAAkC,QAAQ,CAAS,EAAE,CAAC,EAArD,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAwB;IACtD,IAAA,EAAA,GAAoB,QAAQ,CAAgB,IAAI,CAAC,EAAhD,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAiC;IACjD,IAAA,EAAA,GAA0B,QAAQ,CAAC,KAAK,CAAC,EAAxC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAmB;AAE/C,IAAA,SAAS,CAAC,YAAA;QACR,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,eAAe,CACb,OAAO,KAAK,KAAK;kBACb,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;mBAC5B,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK;sBAC9B,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM;AACvC,sBAAE;AACA,0BAAE;AACF,0BAAE,IAAI,CACT,CACN;;AAEL,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;IAGX,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;AAC/B,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC;AACd,gBAAA,OAAO,IAAI;;AAEb,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACf,YAAA,QAAQ,CAAC,IAAI,CAAC,CAAA;AACd,YAAA,OAAO,IAAI;;QACX,OAAO,GAAG,EAAE;AACZ,YAAA,QAAQ,CAAC,gBAAgB,GAAI,GAAa,CAAC,OAAO,CAAC;AACnD,YAAA,OAAO,KAAK;;AAEhB,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;AAC/B,QAAA,IAAI;AACF,YAAA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC;AACd,gBAAA,OAAO,IAAI;;AAEb,YAAAA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;AACd,YAAA,OAAO,IAAI;;QACX,OAAO,GAAG,EAAE;AACZ,YAAA,QAAQ,CAAC,gBAAgB,GAAI,GAAa,CAAC,OAAO,CAAC;AACnD,YAAA,OAAO,KAAK;;AAEhB,KAAC;;IAGD,IAAM,YAAY,GAAG,UAAC,GAAW,EAAA;QAC/B,eAAe,CAAC,GAAG,CAAC;AACpB,QAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACrB,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBACpC,GAAG,GAAG,IAAI;;AAEZ,gBAAA,QAAQ,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;AAE7C,aAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AAC5B,YAAA,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AACrB,gBAAA,IAAM,MAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAGA,MAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7F,gBAAA,IAAI,YAAY,CAAC,MAAI,CAAC,EAAE;AACtB,oBAAA,QAAQ,CAAC,cAAc,GAAG,MAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAI,CAAC,CAAC;;;;AAI1D,KAAC;;AAGD,IAAA,IAAM,YAAY,GAAG,YAAA;AACnB,QAAA,IAAI;YACF,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC;;QACd,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC,kCAAkC,CAAC;;AAEhD,KAAC;IAED,IAAM,YAAY,GAAG,UAAC,SAA0B,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,gBAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC9B,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAC3C,eAAe,CAACA,MAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;gBAE9C,SAAS,CAAC,MAAM,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC;;iBACT;AACL,gBAAA,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC9B,IAAM,UAAU,GAAGA,MAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,oBAAA,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtD,eAAe,CAAC,UAAU,CAAC;oBAC3B,YAAY,CAAC,UAAU,CAAC;;gBAE1B,SAAS,CAAC,MAAM,CAAC;;;QAEnB,OAAO,KAAK,EAAE;YACd,QAAQ,CAAC,yCAAyC,CAAC;;AAEvD,KAAC;IAED,IAAM,QAAQ,GAAG,uBAAuB;AAExC,IAAA,QACEC,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA;QAC5CA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA;QACzBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,eAAe,EAAA;AAC5B,YAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,UAAG,QAAQ,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,MAAM,KAAK,MAAM,GAAG,aAAa,GAAG,yBAAyB,CAAE,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAA,EAAE,EAAe,EAAA,MAAA,CAAA;AAC7L,YAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,KAAK,KAAK,IAAI,EAAE,SAAS,EAAE,UAAG,QAAQ,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,MAAM,KAAK,MAAM,GAAG,aAAa,GAAG,yBAAyB,CAAE,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,CAAC,MAAM,CAAC,CAAA,EAAE,EAAe,EAAA,MAAA,CAAA;YAC7LA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA;AACxB,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,IAAI,EAAC,IAAI,EAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAA,EAAQ,YAAY,EAAE,CAAA,EAAE,EAAA;;oBAASA,cAAC,CAAA,aAAA,CAAA,UAAU,IAAC,SAAS,EAAC,2BAA2B,EAAG,CAAA,CAAS,CACxI,CACF;AAEL,QAAA,KAAK,IAAIA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wFAAwF,EAAA;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAA,EAAC,SAAS,EAAC,2BAA2B,EAAG,CAAA;;AAAE,YAAA,KAAK,CAAK;QAC7LA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,oDAAoD,EAAA;YAClEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAC,EAAA,MAAM,EAChB,KAAK,KAAK,IAAI,IAAI,YAAY,KAAK;sBAC/B,MAAM,KAAK;AACX,0BAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;AAClD,0BAAED,MAAU,CAAC,IAAI,CAAC,YAAY;AAChC,sBAAE,YAAY,EAChB,SAAS,EAAC,YAAY,GAAG,CACpB;QACTC,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,8CAA8C,EAAA;YAC7DA,cAAC,CAAA,aAAA,CAAAC,eAAU,IACT,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,YAAY,EACrE,UAAU,EAAE;oBACV,MAAM,KAAK,MAAM,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE;AACnC,oBAAA,cAAc,EAAE;AAChB,oBAAA,UAAU,CAAC;AACZ,iBAAA,EACD,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,YAAA;AACP,oBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBACpB,WAAW,CAAC,IAAI,CAAC;iBAClB,EACD,MAAM,EAAE,YAAA;AACN,oBAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBACnB,WAAW,CAAC,KAAK,CAAC;AACpB,iBAAC,EACD,CAAA,CACI,CACA;AAGZ;;;;"}
package/package.json CHANGED
@@ -1,12 +1,18 @@
1
1
  {
2
2
  "name": "@axdspub/axiom-ui-forms",
3
- "version": "0.3.3-experimental.1",
3
+ "version": "0.3.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Axiom UI Forms",
7
7
  "main": "./library/umd/library.js",
8
8
  "module": "./library/esm/src/library.js",
9
9
  "types": "./library/axiom-ui-forms.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": "./library/esm/src/library.js",
13
+ "require": "./library/umd/library.js"
14
+ }
15
+ },
10
16
  "files": [
11
17
  "library/**"
12
18
  ],