@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.
- package/library/esm/_virtual/index11.js +2 -2
- package/library/esm/_virtual/index12.js +2 -2
- package/library/esm/_virtual/index4.js +2 -2
- package/library/esm/_virtual/index5.js +2 -2
- package/library/esm/_virtual/index9.js +2 -2
- package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
- package/library/esm/src/Form/Components/Inputs/JSON.js +1 -1
- package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
- package/package.json +7 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import { __exports as validate } from '../../../../../_virtual/
|
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/
|
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 validation } from '../../../../../_virtual/
|
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
|
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
|
],
|