@axdspub/axiom-ui-forms 0.2.9 → 0.3.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/README.md +272 -272
- package/library/axiom-ui-forms.d.ts +213 -77
- package/library/esm/_virtual/_commonjsHelpers.js +26 -1
- package/library/esm/_virtual/_commonjsHelpers.js.map +1 -1
- package/library/esm/_virtual/_freeGlobal.js +7 -0
- package/library/esm/_virtual/_freeGlobal.js.map +1 -0
- package/library/esm/_virtual/get.js +8 -0
- package/library/esm/_virtual/get.js.map +1 -0
- package/library/esm/_virtual/index10.js +2 -2
- package/library/esm/_virtual/index11.js +2 -2
- package/library/esm/_virtual/index12.js +2 -6
- package/library/esm/_virtual/index12.js.map +1 -1
- package/library/esm/_virtual/index13.js +2 -6
- package/library/esm/_virtual/index13.js.map +1 -1
- package/library/esm/_virtual/index3.js +2 -2
- package/library/esm/_virtual/index3.js.map +1 -1
- package/library/esm/_virtual/index5.js +2 -2
- package/library/esm/_virtual/index6.js +2 -2
- package/library/esm/_virtual/index6.js.map +1 -1
- package/library/esm/_virtual/index7.js +6 -2
- package/library/esm/_virtual/index7.js.map +1 -1
- package/library/esm/_virtual/index8.js +6 -2
- package/library/esm/_virtual/index8.js.map +1 -1
- package/library/esm/_virtual/index9.js +2 -2
- package/library/esm/_virtual/set.js +8 -0
- package/library/esm/_virtual/set.js.map +1 -0
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +1 -1
- package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
- package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
- package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
- package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/compile/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/format/index.js +1 -1
- package/library/esm/node_modules/ajv/dist/vocabularies/validation/index.js +1 -1
- package/library/esm/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
- package/library/esm/node_modules/jotai/esm/react.js +135 -0
- package/library/esm/node_modules/jotai/esm/react.js.map +1 -0
- package/library/esm/node_modules/jotai/esm/vanilla/internals.js +551 -0
- package/library/esm/node_modules/jotai/esm/vanilla/internals.js.map +1 -0
- package/library/esm/node_modules/jotai/esm/vanilla.js +111 -0
- package/library/esm/node_modules/jotai/esm/vanilla.js.map +1 -0
- package/library/esm/node_modules/lodash/_Hash.js +49 -0
- package/library/esm/node_modules/lodash/_Hash.js.map +1 -0
- package/library/esm/node_modules/lodash/_ListCache.js +49 -0
- package/library/esm/node_modules/lodash/_ListCache.js.map +1 -0
- package/library/esm/node_modules/lodash/_Map.js +21 -0
- package/library/esm/node_modules/lodash/_Map.js.map +1 -0
- package/library/esm/node_modules/lodash/_MapCache.js +49 -0
- package/library/esm/node_modules/lodash/_MapCache.js.map +1 -0
- package/library/esm/node_modules/lodash/_Symbol.js +19 -0
- package/library/esm/node_modules/lodash/_Symbol.js.map +1 -0
- package/library/esm/node_modules/lodash/_arrayMap.js +33 -0
- package/library/esm/node_modules/lodash/_arrayMap.js.map +1 -0
- package/library/esm/node_modules/lodash/_assignValue.js +42 -0
- package/library/esm/node_modules/lodash/_assignValue.js.map +1 -0
- package/library/esm/node_modules/lodash/_assocIndexOf.js +34 -0
- package/library/esm/node_modules/lodash/_assocIndexOf.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseAssignValue.js +38 -0
- package/library/esm/node_modules/lodash/_baseAssignValue.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseGet.js +38 -0
- package/library/esm/node_modules/lodash/_baseGet.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseGetTag.js +43 -0
- package/library/esm/node_modules/lodash/_baseGetTag.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseIsNative.js +63 -0
- package/library/esm/node_modules/lodash/_baseIsNative.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseSet.js +68 -0
- package/library/esm/node_modules/lodash/_baseSet.js.map +1 -0
- package/library/esm/node_modules/lodash/_baseToString.js +50 -0
- package/library/esm/node_modules/lodash/_baseToString.js.map +1 -0
- package/library/esm/node_modules/lodash/_castPath.js +37 -0
- package/library/esm/node_modules/lodash/_castPath.js.map +1 -0
- package/library/esm/node_modules/lodash/_coreJsData.js +19 -0
- package/library/esm/node_modules/lodash/_coreJsData.js.map +1 -0
- package/library/esm/node_modules/lodash/_defineProperty.js +24 -0
- package/library/esm/node_modules/lodash/_defineProperty.js.map +1 -0
- package/library/esm/node_modules/lodash/_freeGlobal.js +7 -0
- package/library/esm/node_modules/lodash/_freeGlobal.js.map +1 -0
- package/library/esm/node_modules/lodash/_getMapData.js +31 -0
- package/library/esm/node_modules/lodash/_getMapData.js.map +1 -0
- package/library/esm/node_modules/lodash/_getNative.js +31 -0
- package/library/esm/node_modules/lodash/_getNative.js.map +1 -0
- package/library/esm/node_modules/lodash/_getRawTag.js +59 -0
- package/library/esm/node_modules/lodash/_getRawTag.js.map +1 -0
- package/library/esm/node_modules/lodash/_getValue.js +25 -0
- package/library/esm/node_modules/lodash/_getValue.js.map +1 -0
- package/library/esm/node_modules/lodash/_hashClear.js +28 -0
- package/library/esm/node_modules/lodash/_hashClear.js.map +1 -0
- package/library/esm/node_modules/lodash/_hashDelete.js +29 -0
- package/library/esm/node_modules/lodash/_hashDelete.js.map +1 -0
- package/library/esm/node_modules/lodash/_hashGet.js +43 -0
- package/library/esm/node_modules/lodash/_hashGet.js.map +1 -0
- package/library/esm/node_modules/lodash/_hashHas.js +36 -0
- package/library/esm/node_modules/lodash/_hashHas.js.map +1 -0
- package/library/esm/node_modules/lodash/_hashSet.js +36 -0
- package/library/esm/node_modules/lodash/_hashSet.js.map +1 -0
- package/library/esm/node_modules/lodash/_isIndex.js +37 -0
- package/library/esm/node_modules/lodash/_isIndex.js.map +1 -0
- package/library/esm/node_modules/lodash/_isKey.js +43 -0
- package/library/esm/node_modules/lodash/_isKey.js.map +1 -0
- package/library/esm/node_modules/lodash/_isKeyable.js +27 -0
- package/library/esm/node_modules/lodash/_isKeyable.js.map +1 -0
- package/library/esm/node_modules/lodash/_isMasked.js +33 -0
- package/library/esm/node_modules/lodash/_isMasked.js.map +1 -0
- package/library/esm/node_modules/lodash/_listCacheClear.js +25 -0
- package/library/esm/node_modules/lodash/_listCacheClear.js.map +1 -0
- package/library/esm/node_modules/lodash/_listCacheDelete.js +48 -0
- package/library/esm/node_modules/lodash/_listCacheDelete.js.map +1 -0
- package/library/esm/node_modules/lodash/_listCacheGet.js +32 -0
- package/library/esm/node_modules/lodash/_listCacheGet.js.map +1 -0
- package/library/esm/node_modules/lodash/_listCacheHas.js +29 -0
- package/library/esm/node_modules/lodash/_listCacheHas.js.map +1 -0
- package/library/esm/node_modules/lodash/_listCacheSet.js +39 -0
- package/library/esm/node_modules/lodash/_listCacheSet.js.map +1 -0
- package/library/esm/node_modules/lodash/_mapCacheClear.js +36 -0
- package/library/esm/node_modules/lodash/_mapCacheClear.js.map +1 -0
- package/library/esm/node_modules/lodash/_mapCacheDelete.js +31 -0
- package/library/esm/node_modules/lodash/_mapCacheDelete.js.map +1 -0
- package/library/esm/node_modules/lodash/_mapCacheGet.js +29 -0
- package/library/esm/node_modules/lodash/_mapCacheGet.js.map +1 -0
- package/library/esm/node_modules/lodash/_mapCacheHas.js +29 -0
- package/library/esm/node_modules/lodash/_mapCacheHas.js.map +1 -0
- package/library/esm/node_modules/lodash/_mapCacheSet.js +35 -0
- package/library/esm/node_modules/lodash/_mapCacheSet.js.map +1 -0
- package/library/esm/node_modules/lodash/_memoizeCapped.js +39 -0
- package/library/esm/node_modules/lodash/_memoizeCapped.js.map +1 -0
- package/library/esm/node_modules/lodash/_nativeCreate.js +19 -0
- package/library/esm/node_modules/lodash/_nativeCreate.js.map +1 -0
- package/library/esm/node_modules/lodash/_objectToString.js +34 -0
- package/library/esm/node_modules/lodash/_objectToString.js.map +1 -0
- package/library/esm/node_modules/lodash/_root.js +22 -0
- package/library/esm/node_modules/lodash/_root.js.map +1 -0
- package/library/esm/node_modules/lodash/_stringToPath.js +40 -0
- package/library/esm/node_modules/lodash/_stringToPath.js.map +1 -0
- package/library/esm/node_modules/lodash/_toKey.js +31 -0
- package/library/esm/node_modules/lodash/_toKey.js.map +1 -0
- package/library/esm/node_modules/lodash/_toSource.js +38 -0
- package/library/esm/node_modules/lodash/_toSource.js.map +1 -0
- package/library/esm/node_modules/lodash/eq.js +49 -0
- package/library/esm/node_modules/lodash/eq.js.map +1 -0
- package/library/esm/node_modules/lodash/get.js +46 -0
- package/library/esm/node_modules/lodash/get.js.map +1 -0
- package/library/esm/node_modules/lodash/isArray.js +38 -0
- package/library/esm/node_modules/lodash/isArray.js.map +1 -0
- package/library/esm/node_modules/lodash/isFunction.js +51 -0
- package/library/esm/node_modules/lodash/isFunction.js.map +1 -0
- package/library/esm/node_modules/lodash/isObject.js +43 -0
- package/library/esm/node_modules/lodash/isObject.js.map +1 -0
- package/library/esm/node_modules/lodash/isObjectLike.js +41 -0
- package/library/esm/node_modules/lodash/isObjectLike.js.map +1 -0
- package/library/esm/node_modules/lodash/isSymbol.js +43 -0
- package/library/esm/node_modules/lodash/isSymbol.js.map +1 -0
- package/library/esm/node_modules/lodash/memoize.js +86 -0
- package/library/esm/node_modules/lodash/memoize.js.map +1 -0
- package/library/esm/node_modules/lodash/set.js +48 -0
- package/library/esm/node_modules/lodash/set.js.map +1 -0
- package/library/esm/node_modules/lodash/toString.js +41 -0
- package/library/esm/node_modules/lodash/toString.js.map +1 -0
- package/library/esm/node_modules/react-router/dist/development/chunk-HA7DTUK3.js +1 -1
- package/library/esm/node_modules/unified/lib/index.js +1 -1
- package/library/esm/src/Form/Components/FieldCreator.js +24 -7
- package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
- package/library/esm/src/Form/Components/FieldLabel.js +1 -1
- package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
- package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/GeoJSONInputLoader.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Geometry.js +38 -32
- package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/GeometryInputLoader.js +4 -1
- package/library/esm/src/Form/Components/Inputs/GeometryInputLoader.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/JSON.js +83 -42
- package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/JSONInputLoader.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Number.js +34 -9
- package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Object.js +7 -2
- package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/OneOfInput.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -1
- package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/String.js +2 -2
- package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
- package/library/esm/src/Form/Components/Inputs/index.js +11 -0
- package/library/esm/src/Form/Components/Inputs/index.js.map +1 -0
- package/library/esm/src/Form/Components/Inputs/inputMap.js.map +1 -1
- package/library/esm/src/Form/Creator/FormContextProvider.js.map +1 -1
- package/library/esm/src/Form/Creator/FormCreator.js +20 -9
- package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
- package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
- package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
- package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
- package/library/esm/src/Form/Creator/FormSectionContextProvider.js.map +1 -1
- package/library/esm/src/Form/Creator/NavElement.js.map +1 -1
- package/library/esm/src/Form/Creator/Page.js +40 -7
- package/library/esm/src/Form/Creator/Page.js.map +1 -1
- package/library/esm/src/Form/Creator/Wizard.js +79 -22
- package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
- package/library/esm/src/Form/Manage/CopyableJSONOutput.js +3 -3
- package/library/esm/src/Form/Manage/CopyableJSONOutput.js.map +1 -1
- package/library/esm/src/library.js +11 -13
- package/library/esm/src/library.js.map +1 -1
- package/library/esm/src/utils/getters.js +135 -0
- package/library/esm/src/utils/getters.js.map +1 -0
- package/library/esm/src/utils/manipulators.js +171 -0
- package/library/esm/src/utils/manipulators.js.map +1 -0
- package/library/esm/src/utils/resolveRefs.js +44 -0
- package/library/esm/src/utils/resolveRefs.js.map +1 -0
- package/library/esm/src/utils/responsive/layoutState.js +18 -0
- package/library/esm/src/utils/responsive/layoutState.js.map +1 -0
- package/library/esm/src/{Form → utils}/schemaToFormHelpers.js +157 -38
- package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -0
- package/library/esm/src/utils/validators.js +38 -0
- package/library/esm/src/utils/validators.js.map +1 -0
- package/package.json +131 -124
- package/library/esm/src/Form/helpers.js +0 -162
- package/library/esm/src/Form/helpers.js.map +0 -1
- package/library/esm/src/Form/resolveRefs.js +0 -26
- package/library/esm/src/Form/resolveRefs.js.map +0 -1
- package/library/esm/src/Form/schemaToFormHelpers.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"memoize.js","sources":["../../../../node_modules/lodash/memoize.js"],"sourcesContent":["var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n"],"names":["require$$0"],"mappings":";;;;;;;;CAAA,IAAI,QAAQ,GAAGA,gBAAsB,EAAA;;AAErC;CACA,IAAI,eAAe,GAAG,qBAAqB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjC,GAAE,IAAI,OAAO,IAAI,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,QAAQ,IAAI,UAAU,CAAC,EAAE;AACxF,KAAI,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC;AACxC;GACE,IAAI,QAAQ,GAAG,WAAW;KACxB,IAAI,IAAI,GAAG,SAAS;AACxB,SAAQ,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7D,SAAQ,KAAK,GAAG,QAAQ,CAAC,KAAK;;AAE9B,KAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACxB,OAAM,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B;KACI,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AACvC,KAAI,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK;AACpD,KAAI,OAAO,MAAM;IACd;GACD,QAAQ,CAAC,KAAK,GAAG,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;AAClD,GAAE,OAAO,QAAQ;AACjB;;AAEA;CACA,OAAO,CAAC,KAAK,GAAG,QAAQ;;AAExB,CAAA,SAAc,GAAG,OAAO;;;;;;","x_google_ignoreList":[0]}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { __require as require_baseSet } from './_baseSet.js';
|
2
|
+
|
3
|
+
var set_1;
|
4
|
+
var hasRequiredSet;
|
5
|
+
|
6
|
+
function requireSet () {
|
7
|
+
if (hasRequiredSet) return set_1;
|
8
|
+
hasRequiredSet = 1;
|
9
|
+
var baseSet = require_baseSet();
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
|
13
|
+
* it's created. Arrays are created for missing index properties while objects
|
14
|
+
* are created for all other missing properties. Use `_.setWith` to customize
|
15
|
+
* `path` creation.
|
16
|
+
*
|
17
|
+
* **Note:** This method mutates `object`.
|
18
|
+
*
|
19
|
+
* @static
|
20
|
+
* @memberOf _
|
21
|
+
* @since 3.7.0
|
22
|
+
* @category Object
|
23
|
+
* @param {Object} object The object to modify.
|
24
|
+
* @param {Array|string} path The path of the property to set.
|
25
|
+
* @param {*} value The value to set.
|
26
|
+
* @returns {Object} Returns `object`.
|
27
|
+
* @example
|
28
|
+
*
|
29
|
+
* var object = { 'a': [{ 'b': { 'c': 3 } }] };
|
30
|
+
*
|
31
|
+
* _.set(object, 'a[0].b.c', 4);
|
32
|
+
* console.log(object.a[0].b.c);
|
33
|
+
* // => 4
|
34
|
+
*
|
35
|
+
* _.set(object, ['x', '0', 'y', 'z'], 5);
|
36
|
+
* console.log(object.x[0].y.z);
|
37
|
+
* // => 5
|
38
|
+
*/
|
39
|
+
function set(object, path, value) {
|
40
|
+
return object == null ? object : baseSet(object, path, value);
|
41
|
+
}
|
42
|
+
|
43
|
+
set_1 = set;
|
44
|
+
return set_1;
|
45
|
+
}
|
46
|
+
|
47
|
+
export { requireSet as __require };
|
48
|
+
//# sourceMappingURL=set.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"set.js","sources":["../../../../node_modules/lodash/set.js"],"sourcesContent":["var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n"],"names":["require$$0"],"mappings":";;;;;;;;CAAA,IAAI,OAAO,GAAGA,eAAqB,EAAA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAClC,GAAE,OAAO,MAAM,IAAI,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;AAC/D;;AAEA,CAAA,KAAc,GAAG,GAAG;;;;;;","x_google_ignoreList":[0]}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { __require as require_baseToString } from './_baseToString.js';
|
2
|
+
|
3
|
+
var toString_1;
|
4
|
+
var hasRequiredToString;
|
5
|
+
|
6
|
+
function requireToString () {
|
7
|
+
if (hasRequiredToString) return toString_1;
|
8
|
+
hasRequiredToString = 1;
|
9
|
+
var baseToString = require_baseToString();
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Converts `value` to a string. An empty string is returned for `null`
|
13
|
+
* and `undefined` values. The sign of `-0` is preserved.
|
14
|
+
*
|
15
|
+
* @static
|
16
|
+
* @memberOf _
|
17
|
+
* @since 4.0.0
|
18
|
+
* @category Lang
|
19
|
+
* @param {*} value The value to convert.
|
20
|
+
* @returns {string} Returns the converted string.
|
21
|
+
* @example
|
22
|
+
*
|
23
|
+
* _.toString(null);
|
24
|
+
* // => ''
|
25
|
+
*
|
26
|
+
* _.toString(-0);
|
27
|
+
* // => '-0'
|
28
|
+
*
|
29
|
+
* _.toString([1, 2, 3]);
|
30
|
+
* // => '1,2,3'
|
31
|
+
*/
|
32
|
+
function toString(value) {
|
33
|
+
return value == null ? '' : baseToString(value);
|
34
|
+
}
|
35
|
+
|
36
|
+
toString_1 = toString;
|
37
|
+
return toString_1;
|
38
|
+
}
|
39
|
+
|
40
|
+
export { requireToString as __require };
|
41
|
+
//# sourceMappingURL=toString.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"toString.js","sources":["../../../../node_modules/lodash/toString.js"],"sourcesContent":["var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n"],"names":["require$$0"],"mappings":";;;;;;;;CAAA,IAAI,YAAY,GAAGA,oBAA0B,EAAA;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,KAAK,EAAE;GACvB,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC;AACjD;;AAEA,CAAA,UAAc,GAAG,QAAQ;;;;;;","x_google_ignoreList":[0]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { bail } from '../../bail/index.js';
|
2
|
-
import extend from '../../../_virtual/
|
2
|
+
import extend from '../../../_virtual/index7.js';
|
3
3
|
import isPlainObject from '../node_modules/is-plain-obj/index.js';
|
4
4
|
import { CallableInstance } from './callable-instance.js';
|
5
5
|
import { trough } from '../../trough/lib/index.js';
|
@@ -1,7 +1,10 @@
|
|
1
1
|
import { __assign, __spreadArray } from '../../../node_modules/tslib/tslib.es6.js';
|
2
|
+
import FieldLabel from './FieldLabel.js';
|
2
3
|
import inputMap from './Inputs/inputMap.js';
|
3
4
|
import { useFormContext } from '../Creator/FormContextProvider.js';
|
4
|
-
import {
|
5
|
+
import { getFieldValue } from '../../utils/getters.js';
|
6
|
+
import { createOneOfMultipleField, cleanAndUpdateFormValuesWithFieldValue, updateFormValuesWithFieldValue } from '../../utils/manipulators.js';
|
7
|
+
import { checkCondition } from '../../utils/validators.js';
|
5
8
|
import { utils as index$1, Button } from '../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
|
6
9
|
import { ExclamationTriangleIcon, PlusIcon, CopyIcon, CheckIcon, Cross1Icon, TrashIcon } from '../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
|
7
10
|
import React__default, { useState } from 'react';
|
@@ -37,7 +40,7 @@ var OneOfMultiple = function (_a) {
|
|
37
40
|
onChange(newValues);
|
38
41
|
};
|
39
42
|
return (React__default.createElement("div", { className: 'flex flex-col gap-2' },
|
40
|
-
React__default.createElement(InputComponent, { field:
|
43
|
+
React__default.createElement(InputComponent, { field: field, value: value, onChange: function (v) {
|
41
44
|
var newValues = __spreadArray([], values, true);
|
42
45
|
newValues[index] = v;
|
43
46
|
onChange(newValues);
|
@@ -68,10 +71,19 @@ var MultipleFieldCreator = function (_a) {
|
|
68
71
|
setFormValues(formValuesCopy);
|
69
72
|
};
|
70
73
|
var initialVal = value !== undefined ? value : getFieldValue(field, formValues);
|
71
|
-
var initialValues =
|
74
|
+
var initialValues = Array.isArray(initialVal) ? initialVal : [initialVal];
|
75
|
+
if (field.type === 'object' && field.skip_path === true && field.multiple === true) {
|
76
|
+
return React__default.createElement("div", { className: 'p-4 bg-slate-100' },
|
77
|
+
React__default.createElement(FieldLabel, __assign({}, field)),
|
78
|
+
React__default.createElement("p", { className: 'text-rose-700' },
|
79
|
+
React__default.createElement(ExclamationTriangleIcon, { className: 'inline w-4 h-4 mr-2' }),
|
80
|
+
" Error with field ",
|
81
|
+
React__default.createElement("span", { className: 'font-sans p-2 text-xs bg-slate-200' }, field.id),
|
82
|
+
" Object fields with multiple true and skip_path true are not supported."));
|
83
|
+
}
|
72
84
|
var InputComponent = __assign(__assign({}, inputMap), (inputOverrides !== null && inputOverrides !== void 0 ? inputOverrides : {}))[field.type];
|
73
85
|
return React__default.createElement("div", null, initialValues === null || initialValues === void 0 ? void 0 : initialValues.map(function (value, index) {
|
74
|
-
return React__default.createElement(OneOfMultiple, { key: "".concat(field.id, "-").concat(index), InputComponent: InputComponent, field: field, value: value, index: index, onChange: onChange !== null && onChange !== void 0 ? onChange : defaultOnChange, values: initialValues });
|
86
|
+
return React__default.createElement(OneOfMultiple, { key: "".concat(field.id, "-").concat(index), InputComponent: InputComponent, field: createOneOfMultipleField(field, index), value: value, index: index, onChange: onChange !== null && onChange !== void 0 ? onChange : defaultOnChange, values: initialValues });
|
75
87
|
}));
|
76
88
|
};
|
77
89
|
var FieldCreator = function (_a) {
|
@@ -83,8 +95,13 @@ var FieldCreator = function (_a) {
|
|
83
95
|
return null;
|
84
96
|
}
|
85
97
|
var defaultOnChange = function (v) {
|
86
|
-
var
|
87
|
-
|
98
|
+
var formValuesCopyClean = cleanAndUpdateFormValuesWithFieldValue({
|
99
|
+
form: form,
|
100
|
+
field: field,
|
101
|
+
value: v,
|
102
|
+
formValues: formValues
|
103
|
+
});
|
104
|
+
setFormValues(formValuesCopyClean);
|
88
105
|
};
|
89
106
|
var onChangeFn = onChange !== null && onChange !== void 0 ? onChange : defaultOnChange;
|
90
107
|
var initialValue = value !== undefined ? value : getFieldValue(field, formValues);
|
@@ -93,7 +110,7 @@ var FieldCreator = function (_a) {
|
|
93
110
|
className: className,
|
94
111
|
defaultClassName: defaultClassName
|
95
112
|
}) }, field.multiple === true
|
96
|
-
? React__default.createElement(MultipleFieldCreator, { field: field, onChange: onChange
|
113
|
+
? React__default.createElement(MultipleFieldCreator, { field: field, onChange: onChange })
|
97
114
|
: React__default.createElement(InputComponent, { field: field, onChange: onChangeFn, value: Array.isArray(initialValue) ? initialValue[0] : initialValue }))
|
98
115
|
: React__default.createElement("div", null,
|
99
116
|
React__default.createElement("p", { className: 'font-bold mb-2' },
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FieldCreator.js","sources":["../../../../../src/Form/Components/FieldCreator.tsx"],"sourcesContent":["import inputMap from '@/Form/Components/Inputs/inputMap'\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\nimport { type IFieldInputProps, type IFormField, type IValueChangeFn, type IValueType } from '@/Form/Creator/FormCreatorTypes'\nimport { checkCondition, cleanUnusedDependenciesFromFormValues, getFieldValue, updateFormValuesWithFieldValue } from '@/Form/helpers'\nimport { Button, utils } from '@axdspub/axiom-ui-utilities'\nimport { CheckIcon, CopyIcon, Cross1Icon, ExclamationTriangleIcon, PlusIcon, TrashIcon } from '@radix-ui/react-icons'\nimport React, { useState, type ReactElement } from 'react'\n\ninterface IFieldCreator {\n field: IFormField\n onChange?: IValueChangeFn\n className?: string\n defaultClassName?: string\n value?: IValueType | IValueType[]\n}\n\nconst toolButtonClass = 'border-white hover:border-single hover:border-1 hover:border-slate-400'\n\nconst DeleteMultiple = ({\n doDelete\n}: {\n doDelete: () => void\n}): ReactElement => {\n const [confirm, setConfirm] = useState(false)\n\n return (\n <>\n {\n confirm\n ? <p className='flex flex-row gap-2 text-sm'><span className='text-slate-600'>Deleting: </span> Are you sure?\n <Button size='xs' type='submit'\n onClick={() => {\n doDelete()\n setConfirm(false)\n }}>Yes <CheckIcon className='inline ml-2' />\n </Button>\n <Button size='xs' type='alert'\n onClick={() => {\n setConfirm(false)\n }}>Cancel <Cross1Icon className='inline ml-2' />\n </Button>\n </p>\n : <Button size='xs' className={toolButtonClass} onClick={() => { setConfirm(true) }}>\n Delete <TrashIcon className='inline ml-2 fill-white' />\n </Button>\n }\n </>\n )\n}\n\nconst OneOfMultiple = ({\n InputComponent,\n field,\n value,\n index,\n onChange,\n values\n\n}: {\n InputComponent: React.FC<IFieldInputProps>\n field: IFormField\n value: IValueType\n index: number\n onChange: (v: IValueType[] | undefined) => void\n values: IValueType[]\n}): ReactElement => {\n const addValue = (v: IValueType | null): void => {\n const newValues = [...values]\n newValues.splice(index + 1, 0, v)\n onChange(newValues)\n }\n\n return (\n <div className='flex flex-col gap-2'>\n <InputComponent\n field={{\n ...field,\n required: false,\n label: index > 0 ? null : field.label,\n id: `${field.id}-${index}`\n }}\n value={value}\n onChange={(v) => {\n const newValues = [...values]\n newValues[index] = v as IValueType\n onChange(newValues)\n }}\n />\n\n <div className='flex flex-row justify-between w-full p-2'>\n {index > 0 && (\n <DeleteMultiple doDelete={() => {\n const newValues = [...values]\n newValues.splice(index, 1)\n onChange(newValues)\n }} />\n )}\n <div className='ml-auto flex gap-2'>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(null)\n }}>Add <PlusIcon className='inline ml-2' /></Button>\n <Button\n size='xs'\n className={toolButtonClass}\n onClick={() => {\n addValue(structuredClone(value))\n }}>Duplicate <CopyIcon className='inline ml-2' />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n\nconst MultipleFieldCreator = ({\n field,\n onChange,\n value\n}: IFieldCreator): ReactElement => {\n const { formValues, setFormValues, inputOverrides } = useFormContext()\n const defaultOnChange = (v: IValueType[] | undefined): void => {\n const formValuesCopy = updateFormValuesWithFieldValue(field, v, formValues)\n setFormValues(formValuesCopy)\n }\n\n const initialVal = value !== undefined ? value : getFieldValue(field, formValues)\n const initialValues = (initialVal !== undefined ? (Array.isArray(initialVal) ? initialVal : [initialVal]) : [null])\n\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n return <div>\n {\n initialValues?.map((value, index) => {\n return <OneOfMultiple\n key={`${field.id}-${index}`}\n InputComponent={InputComponent}\n field={field}\n value={value}\n index={index}\n onChange={onChange ?? defaultOnChange}\n values={initialValues}\n />\n })\n }\n </div>\n}\n\nconst FieldCreator = ({\n field,\n value,\n onChange,\n className,\n defaultClassName = 'py-2 flex flex-col gap-8'\n}: IFieldCreator): ReactElement | null => {\n const { form, inputOverrides, setFormValues, formValues } = useFormContext()\n const InputComponent = {\n ...inputMap,\n ...(inputOverrides ?? {})\n }[field.type]\n\n if (!checkCondition(field, formValues)) {\n return null\n }\n\n const defaultOnChange = (v: IValueType | IValueType[] | undefined): void => {\n const formValuesCopy = updateFormValuesWithFieldValue(field, v as IValueType, formValues)\n setFormValues(cleanUnusedDependenciesFromFormValues(form, formValuesCopy))\n }\n const onChangeFn = onChange ?? defaultOnChange\n\n const initialValue = value !== undefined ? value : getFieldValue(field, formValues)\n\n return InputComponent !== undefined\n ? <div className={utils.makeClassName({\n className,\n defaultClassName\n })}>{\n field.multiple === true\n ? <MultipleFieldCreator\n field={field}\n onChange={onChange}\n value={initialValue}\n />\n : <InputComponent\n field={field}\n onChange={onChangeFn}\n value={Array.isArray(initialValue) ? initialValue[0] : initialValue}\n />\n\n }</div>\n : <div>\n <p className='font-bold mb-2'><ExclamationTriangleIcon className='inline' /> {field.label ?? ''}</p>\n <p className='p-4 text-sm bg-slate-100'>No component definition for <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>type</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.type}</span> at <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>id</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.id}</span></p>\n </div>\n}\n\nexport default FieldCreator\n"],"names":["React","utils"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"FieldCreator.js","sources":["../../../../../src/Form/Components/FieldCreator.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport inputMap from '@/Form/Components/Inputs/inputMap'\r\nimport { useFormContext } from '@/Form/Creator/FormContextProvider'\r\nimport { type IFieldInputProps, type IFormField, type IValueChangeFn, type IValueType } from '@/Form/Creator/FormCreatorTypes'\r\nimport { getFieldValue } from '@/utils/getters'\r\nimport { cleanAndUpdateFormValuesWithFieldValue, createOneOfMultipleField, updateFormValuesWithFieldValue } from '@/utils/manipulators'\r\nimport { checkCondition } from '@/utils/validators'\r\nimport { Button, utils } from '@axdspub/axiom-ui-utilities'\r\nimport { CheckIcon, CopyIcon, Cross1Icon, ExclamationTriangleIcon, PlusIcon, TrashIcon } from '@radix-ui/react-icons'\r\nimport React, { useState, type ReactElement } from 'react'\r\n\r\ninterface IFieldCreator {\r\n field: IFormField\r\n onChange?: IValueChangeFn\r\n className?: string\r\n defaultClassName?: string\r\n value?: IValueType | IValueType[]\r\n}\r\n\r\nconst toolButtonClass = 'border-white hover:border-single hover:border-1 hover:border-slate-400'\r\n\r\nconst DeleteMultiple = ({\r\n doDelete\r\n}: {\r\n doDelete: () => void\r\n}): ReactElement => {\r\n const [confirm, setConfirm] = useState(false)\r\n\r\n return (\r\n <>\r\n {\r\n confirm\r\n ? <p className='flex flex-row gap-2 text-sm'><span className='text-slate-600'>Deleting: </span> Are you sure?\r\n <Button size='xs' type='submit'\r\n onClick={() => {\r\n doDelete()\r\n setConfirm(false)\r\n }}>Yes <CheckIcon className='inline ml-2' />\r\n </Button>\r\n <Button size='xs' type='alert'\r\n onClick={() => {\r\n setConfirm(false)\r\n }}>Cancel <Cross1Icon className='inline ml-2' />\r\n </Button>\r\n </p>\r\n : <Button size='xs' className={toolButtonClass} onClick={() => { setConfirm(true) }}>\r\n Delete <TrashIcon className='inline ml-2 fill-white' />\r\n </Button>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nconst OneOfMultiple = ({\r\n InputComponent,\r\n field,\r\n value,\r\n index,\r\n onChange,\r\n values\r\n\r\n}: {\r\n InputComponent: React.FC<IFieldInputProps>\r\n field: IFormField\r\n value: IValueType\r\n index: number\r\n onChange: (v: IValueType[] | undefined) => void\r\n values: IValueType[]\r\n}): ReactElement => {\r\n const addValue = (v: IValueType | null): void => {\r\n const newValues = [...values]\r\n newValues.splice(index + 1, 0, v)\r\n onChange(newValues)\r\n }\r\n\r\n return (\r\n <div className='flex flex-col gap-2'>\r\n <InputComponent\r\n field={field}\r\n value={value}\r\n onChange={(v) => {\r\n const newValues = [...values]\r\n newValues[index] = v as IValueType\r\n onChange(newValues)\r\n }}\r\n />\r\n\r\n <div className='flex flex-row justify-between w-full p-2'>\r\n {index > 0 && (\r\n <DeleteMultiple doDelete={() => {\r\n const newValues = [...values]\r\n newValues.splice(index, 1)\r\n onChange(newValues)\r\n }} />\r\n )}\r\n <div className='ml-auto flex gap-2'>\r\n <Button\r\n size='xs'\r\n className={toolButtonClass}\r\n onClick={() => {\r\n addValue(null)\r\n }}>Add <PlusIcon className='inline ml-2' /></Button>\r\n <Button\r\n size='xs'\r\n className={toolButtonClass}\r\n onClick={() => {\r\n addValue(structuredClone(value))\r\n }}>Duplicate <CopyIcon className='inline ml-2' />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nconst MultipleFieldCreator = ({\r\n field,\r\n onChange,\r\n value\r\n}: IFieldCreator): ReactElement => {\r\n const { formValues, setFormValues, inputOverrides } = useFormContext()\r\n const defaultOnChange = (v: IValueType[] | undefined): void => {\r\n const formValuesCopy = updateFormValuesWithFieldValue(field, v, formValues)\r\n setFormValues(formValuesCopy)\r\n }\r\n\r\n const initialVal = value !== undefined ? value : getFieldValue(field, formValues)\r\n const initialValues = Array.isArray(initialVal) ? initialVal : [initialVal]\r\n\r\n if (field.type === 'object' && field.skip_path === true && field.multiple === true) {\r\n return <div className='p-4 bg-slate-100'>\r\n <FieldLabel {...field} />\r\n <p className='text-rose-700'><ExclamationTriangleIcon className='inline w-4 h-4 mr-2' /> Error with field <span className='font-sans p-2 text-xs bg-slate-200'>{field.id}</span> Object fields with multiple true and skip_path true are not supported.</p>\r\n </div>\r\n }\r\n\r\n const InputComponent = {\r\n ...inputMap,\r\n ...(inputOverrides ?? {})\r\n }[field.type]\r\n\r\n return <div>\r\n {\r\n initialValues?.map((value, index) => {\r\n return <OneOfMultiple\r\n key={`${field.id}-${index}`}\r\n InputComponent={InputComponent}\r\n field={createOneOfMultipleField(field, index)}\r\n value={value}\r\n index={index}\r\n onChange={onChange ?? defaultOnChange}\r\n values={initialValues}\r\n />\r\n })\r\n }\r\n </div>\r\n}\r\n\r\nconst FieldCreator = ({\r\n field,\r\n value,\r\n onChange,\r\n className,\r\n defaultClassName = 'py-2 flex flex-col gap-8'\r\n}: IFieldCreator): ReactElement | null => {\r\n const { form, inputOverrides, setFormValues, formValues } = useFormContext()\r\n const InputComponent = {\r\n ...inputMap,\r\n ...(inputOverrides ?? {})\r\n }[field.type]\r\n\r\n if (!checkCondition(field, formValues)) {\r\n return null\r\n }\r\n\r\n const defaultOnChange = (v: IValueType | IValueType[] | undefined): void => {\r\n const formValuesCopyClean = cleanAndUpdateFormValuesWithFieldValue({\r\n form,\r\n field,\r\n value: v,\r\n formValues\r\n })\r\n setFormValues(formValuesCopyClean)\r\n }\r\n const onChangeFn = onChange ?? defaultOnChange\r\n\r\n const initialValue = value !== undefined ? value : getFieldValue(field, formValues)\r\n\r\n return InputComponent !== undefined\r\n ? <div className={utils.makeClassName({\r\n className,\r\n defaultClassName\r\n })}>{\r\n field.multiple === true\r\n ? <MultipleFieldCreator\r\n field={field}\r\n onChange={onChange}\r\n />\r\n : <InputComponent\r\n field={field}\r\n onChange={onChangeFn}\r\n value={Array.isArray(initialValue) ? initialValue[0] : initialValue}\r\n />\r\n\r\n }</div>\r\n : <div>\r\n <p className='font-bold mb-2'><ExclamationTriangleIcon className='inline' /> {field.label ?? ''}</p>\r\n <p className='p-4 text-sm bg-slate-100'>No component definition for <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>type</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.type}</span> at <span className='text-rose-800 font-mono text-xs bg-slate-300 p-2'>id</span><span className='p-2 bg-slate-700 text-white font-mono text-xs'>{field.id}</span></p>\r\n </div>\r\n}\r\n\r\nexport default FieldCreator\r\n"],"names":["React","utils"],"mappings":"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"}
|
@@ -6,7 +6,7 @@ import React__default from 'react';
|
|
6
6
|
|
7
7
|
var FieldDescriptionTooltip = function (field) {
|
8
8
|
return (field.description !== undefined
|
9
|
-
? React__default.createElement(RadixTooltip, { content: field.description },
|
9
|
+
? React__default.createElement(RadixTooltip, { content: field.description, contentClassName: 'max-w-[300px] leading-8', className: 'z-[1000]' },
|
10
10
|
React__default.createElement(InfoCircledIcon, null))
|
11
11
|
: React__default.createElement(React__default.Fragment, null));
|
12
12
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FieldLabel.js","sources":["../../../../../src/Form/Components/FieldLabel.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\nimport { type IFormField } from '@/Form/Creator/FormCreatorTypes'\nimport { Tooltip } from '@axdspub/axiom-ui-utilities'\nimport { InfoCircledIcon } from '@radix-ui/react-icons'\nimport React, { type ReactElement } from 'react'\n\nexport const FieldDescriptionTooltip = (field: IFormField): ReactElement => {\n return (\n field.description !== undefined\n ? <Tooltip content={field.description}><InfoCircledIcon /></Tooltip>\n : <></>\n )\n}\n\nexport const FieldLabelText = (field: IFormField): ReactElement => {\n return (\n <strong><InlineMarkdown>{field.label}</InlineMarkdown> { field.required === true ? <span className='text-red-500'>*</span> : ''}</strong>\n )\n}\n\nexport const FieldDescriptionText = (field: IFormField): ReactElement => {\n return (\n <>{\n field.description !== undefined\n ? <p className='text-xs py-2'><InlineMarkdown>{field.description}</InlineMarkdown></p>\n : ''\n }</>\n )\n}\n\nconst FieldLabel = (field: IFormField): ReactElement => {\n return <>\n <p><FieldLabelText {...field} /></p>\n <FieldDescriptionText {...field} />\n\n </>\n}\n\nexport default FieldLabel\n"],"names":["React","Tooltip"],"mappings":";;;;;;AAMO,IAAM,uBAAuB,GAAG,UAAC,KAAiB,EAAA;AACvD,IAAA,QACE,KAAK,CAAC,WAAW,KAAK;
|
1
|
+
{"version":3,"file":"FieldLabel.js","sources":["../../../../../src/Form/Components/FieldLabel.tsx"],"sourcesContent":["import InlineMarkdown from '@/Form/Components/InlineMarkdown'\r\nimport { type IFormField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Tooltip } from '@axdspub/axiom-ui-utilities'\r\nimport { InfoCircledIcon } from '@radix-ui/react-icons'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nexport const FieldDescriptionTooltip = (field: IFormField): ReactElement => {\r\n return (\r\n field.description !== undefined\r\n ? <Tooltip content={field.description} contentClassName='max-w-[300px] leading-8' className='z-[1000]'><InfoCircledIcon /></Tooltip>\r\n : <></>\r\n )\r\n}\r\n\r\nexport const FieldLabelText = (field: IFormField): ReactElement => {\r\n return (\r\n <strong><InlineMarkdown>{field.label}</InlineMarkdown> { field.required === true ? <span className='text-red-500'>*</span> : ''}</strong>\r\n )\r\n}\r\n\r\nexport const FieldDescriptionText = (field: IFormField): ReactElement => {\r\n return (\r\n <>{\r\n field.description !== undefined\r\n ? <p className='text-xs py-2'><InlineMarkdown>{field.description}</InlineMarkdown></p>\r\n : ''\r\n }</>\r\n )\r\n}\r\n\r\nconst FieldLabel = (field: IFormField): ReactElement => {\r\n return <>\r\n <p><FieldLabelText {...field} /></p>\r\n <FieldDescriptionText {...field} />\r\n\r\n </>\r\n}\r\n\r\nexport default FieldLabel\r\n"],"names":["React","Tooltip"],"mappings":";;;;;;AAMO,IAAM,uBAAuB,GAAG,UAAC,KAAiB,EAAA;AACvD,IAAA,QACE,KAAK,CAAC,WAAW,KAAK;AACpB,UAAEA,cAAC,CAAA,aAAA,CAAAC,YAAO,EAAC,EAAA,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,gBAAgB,EAAC,yBAAyB,EAAC,SAAS,EAAC,UAAU,EAAA;YAACD,cAAC,CAAA,aAAA,CAAA,eAAe,OAAG;UACxHA,cAAK,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AAEb;AAEO,IAAM,cAAc,GAAG,UAAC,KAAiB,EAAA;AAC9C,IAAA,QACEA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA;AAAQ,QAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,EAAE,KAAK,CAAC,KAAK,CAAkB;;AAAG,QAAA,KAAK,CAAC,QAAQ,KAAK,IAAI,GAAGA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,cAAc,QAAS,GAAG,EAAE,CAAU;AAE7I;AAEO,IAAM,oBAAoB,GAAG,UAAC,KAAiB,EAAA;AACpD,IAAA,QACEA,cACE,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAA,KAAK,CAAC,WAAW,KAAK;AACpB,UAAEA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,cAAc,EAAA;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAE,IAAA,EAAA,KAAK,CAAC,WAAW,CAAkB;AAClF,UAAE,EAAE,CACJ;AAER;AAEM,IAAA,UAAU,GAAG,UAAC,KAAiB,EAAA;IACnC,OAAOA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACL,QAAAA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AAAG,YAAAA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAA,CAAI,CAAI;AACpC,QAAAA,cAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAA,CAAI,CAElC;AACL;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"InlineMarkdown.js","sources":["../../../../../src/Form/Components/InlineMarkdown.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react'\nimport Markdown from 'react-markdown'\n\nconst InlineMarkdown = ({ children }: { children: string | null | undefined }): ReactElement => {\n return <Markdown components={{\n p: ({ children }) => <>{children}</>\n }}>{children}</Markdown>\n}\n\nexport default InlineMarkdown\n"],"names":["React"],"mappings":";;;AAGM,IAAA,cAAc,GAAG,UAAC,EAAqD,EAAA;AAAnD,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;AAChC,IAAA,OAAOA,cAAC,CAAA,aAAA,CAAA,QAAQ,EAAC,EAAA,UAAU,EAAE;YAC3B,CAAC,EAAE,UAAC,EAAY,EAAA;AAAV,gBAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;gBAAO,OAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAG,QAAQ,CAAI;;SACrC,EAAG,EAAA,QAAQ,CAAY;AAC1B;;;;"}
|
1
|
+
{"version":3,"file":"InlineMarkdown.js","sources":["../../../../../src/Form/Components/InlineMarkdown.tsx"],"sourcesContent":["import React, { type ReactElement } from 'react'\r\nimport Markdown from 'react-markdown'\r\n\r\nconst InlineMarkdown = ({ children }: { children: string | null | undefined }): ReactElement => {\r\n return <Markdown components={{\r\n p: ({ children }) => <>{children}</>\r\n }}>{children}</Markdown>\r\n}\r\n\r\nexport default InlineMarkdown\r\n"],"names":["React"],"mappings":";;;AAGM,IAAA,cAAc,GAAG,UAAC,EAAqD,EAAA;AAAnD,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;AAChC,IAAA,OAAOA,cAAC,CAAA,aAAA,CAAA,QAAQ,EAAC,EAAA,UAAU,EAAE;YAC3B,CAAC,EAAE,UAAC,EAAY,EAAA;AAAV,gBAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;gBAAO,OAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAG,QAAQ,CAAI;;SACrC,EAAG,EAAA,QAAQ,CAAY;AAC1B;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Boolean.js","sources":["../../../../../../src/Form/Components/Inputs/Boolean.tsx"],"sourcesContent":["import { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { Checkbox } from '@axdspub/axiom-ui-utilities'\nimport React, { type ReactElement } from 'react'\n\nconst BooleanInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n const initialValue = value !== undefined ? value : false\n return <Checkbox id={field.id} testId={field.id} label={<><FieldLabelText {...field} /> <FieldDescriptionTooltip {...field} /></>} value={Boolean(initialValue)} onChange={(e) => {\n onChange(e)\n }} />\n}\n\nexport default BooleanInput\n"],"names":["React"],"mappings":";;;;;AAKM,IAAA,YAAY,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAC5C,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,IAAA,OAAOA,6BAAC,QAAQ,EAAA,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;YAAEA,cAAC,CAAA,aAAA,CAAA,cAAc,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA;;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,CAAG,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAC,CAAC,EAAA;YAC3K,QAAQ,CAAC,CAAC,CAAC;AACb,SAAC,GAAI;AACP;;;;"}
|
1
|
+
{"version":3,"file":"Boolean.js","sources":["../../../../../../src/Form/Components/Inputs/Boolean.tsx"],"sourcesContent":["import { FieldDescriptionTooltip, FieldLabelText } from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Checkbox } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst BooleanInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : false\r\n return <Checkbox id={field.id} testId={field.id} label={<><FieldLabelText {...field} /> <FieldDescriptionTooltip {...field} /></>} value={Boolean(initialValue)} onChange={(e) => {\r\n onChange(e)\r\n }} />\r\n}\r\n\r\nexport default BooleanInput\r\n"],"names":["React"],"mappings":";;;;;AAKM,IAAA,YAAY,GAAG,UAAC,EAA4C,EAAA;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAC5C,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,IAAA,OAAOA,6BAAC,QAAQ,EAAA,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAEA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;YAAEA,cAAC,CAAA,aAAA,CAAA,cAAc,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA;;AAAC,YAAAA,cAAA,CAAA,aAAA,CAAC,uBAAuB,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA,CAAG,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,UAAC,CAAC,EAAA;YAC3K,QAAQ,CAAC,CAAC,CAAC;AACb,SAAC,GAAI;AACP;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Constant.js","sources":["../../../../../../src/Form/Components/Inputs/Constant.tsx"],"sourcesContent":["import { type IConstantField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { memoize } from 'lodash'\nimport React, { type ReactElement } from 'react'\n\nconst notify = memoize((k, v, onChange) => {\n setTimeout(() => {\n onChange(v)\n }, 50)\n})\n\nconst ConstantInput = ({ value, field, onChange }: IFieldInputProps): ReactElement => {\n const constantField = field as IConstantField\n const val = constantField.defaultValue\n notify(`${field.path ? field.path.map(f => f.id).join('.') : field.id}.${JSON.stringify(val)}`, val, onChange)\n return (\n <></>\n )\n}\n\nexport default ConstantInput\n"],"names":["React"],"mappings":";;;AAIA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAA;AACpC,IAAA,UAAU,CAAC,YAAA;QACT,QAAQ,CAAC,CAAC,CAAC;KACZ,EAAE,EAAE,CAAC;AACR,CAAC,CAAC;AAEI,IAAA,aAAa,GAAG,UAAC,EAA4C,EAAA;AAA1C,YAAK,CAAE,KAAA,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA,CAAE,QAAQ,GAAA,EAAA,CAAA;IAC7C,IAAM,aAAa,GAAG,KAAuB;AAC7C,IAAA,IAAM,GAAG,GAAG,aAAa,CAAC,YAAY;IACtC,MAAM,CAAC,UAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC9G,QACEA,cAAK,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AAET;;;;"}
|
1
|
+
{"version":3,"file":"Constant.js","sources":["../../../../../../src/Form/Components/Inputs/Constant.tsx"],"sourcesContent":["import { type IConstantField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { memoize } from 'lodash'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst notify = memoize((k, v, onChange) => {\r\n setTimeout(() => {\r\n onChange(v)\r\n }, 50)\r\n})\r\n\r\nconst ConstantInput = ({ value, field, onChange }: IFieldInputProps): ReactElement => {\r\n const constantField = field as IConstantField\r\n const val = constantField.defaultValue\r\n notify(`${field.path ? field.path.map(f => f.id).join('.') : field.id}.${JSON.stringify(val)}`, val, onChange)\r\n return (\r\n <></>\r\n )\r\n}\r\n\r\nexport default ConstantInput\r\n"],"names":["React"],"mappings":";;;AAIA,IAAM,MAAM,GAAG,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAA;AACpC,IAAA,UAAU,CAAC,YAAA;QACT,QAAQ,CAAC,CAAC,CAAC;KACZ,EAAE,EAAE,CAAC;AACR,CAAC,CAAC;AAEI,IAAA,aAAa,GAAG,UAAC,EAA4C,EAAA;AAA1C,YAAK,CAAE,KAAA,KAAK,GAAA,EAAA,CAAA,KAAA,CAAA,CAAE,QAAQ,GAAA,EAAA,CAAA;IAC7C,IAAM,aAAa,GAAG,KAAuB;AAC7C,IAAA,IAAM,GAAG,GAAG,aAAa,CAAC,YAAY;IACtC,MAAM,CAAC,UAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,EAAE,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,EAAI,GAAA,CAAA,CAAA,MAAA,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,QAAQ,CAAC;IAC9G,QACEA,cAAK,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA;AAET;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Date.js","sources":["../../../../../../src/Form/Components/Inputs/Date.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport React, { type ReactElement, useState } from 'react'\n\nconst DateInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n if (field.type !== 'date') {\n return <p>Field config for {field.id} is missing 'options'</p>\n }\n\n const [error, setError] = useState<string | null>(null)\n const { minDate, maxDate } = field.constraints ?? {}\n\n // Convert the value to the format expected by date input (YYYY-MM-DD)\n const formatValue = (val: string | undefined | null): string => {\n if (!val) return ''\n try {\n // Ensure the value is in the correct format\n const date = new Date(val)\n if (isNaN(date.getTime())) return ''\n\n // Format to YYYY-MM-DD using UTC to avoid timezone issues\n const year = date.getUTCFullYear()\n const month = String(date.getUTCMonth() + 1).padStart(2, '0')\n const day = String(date.getUTCDate()).padStart(2, '0')\n\n return `${year}-${month}-${day}`\n } catch {\n return ''\n }\n }\n\n const inputValue = formatValue(value as string)\n\n const validateDate = (dateStr: string): string | null => {\n if (!minDate && !maxDate) return null\n\n const inputDate = new Date(dateStr + 'T00:00:00Z')\n const minDateObj = minDate ? new Date(minDate) : null\n const maxDateObj = maxDate ? new Date(maxDate) : null\n\n if (minDateObj && inputDate < minDateObj) {\n return `Date must be after ${formatValue(minDate)}`\n }\n if (maxDateObj && inputDate > maxDateObj) {\n return `Date must be before ${formatValue(maxDate)}`\n }\n return null\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n const newValue = e.target.value\n // Only notify parent of change if we have a complete valid date\n if (newValue) {\n // Create date in UTC by appending T00:00:00Z to the input value\n const date = new Date(newValue + 'T00:00:00Z')\n // Check if it's a valid date and the year is reasonable (4 digits)\n if (!isNaN(date.getTime()) && date.getUTCFullYear() > 999) {\n const validationError = validateDate(newValue)\n setError(validationError)\n if (!validationError) {\n onChange(date.toISOString())\n }\n }\n } else {\n setError(null)\n onChange(undefined)\n }\n }\n\n const getConstraintMessage = (): string | null => {\n if (!minDate && !maxDate) return null\n const parts = []\n if (minDate) parts.push(`after ${formatValue(minDate)}`)\n if (maxDate) parts.push(`before ${formatValue(maxDate)}`)\n return `Must be ${parts.join(' and ')}`\n }\n\n const constraintMessage = getConstraintMessage()\n\n return (\n <div>\n <div className=\"flex flex-wrap items-baseline gap-2\">\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\n <FieldLabel {...field} />\n </label>\n {constraintMessage && (\n <span className=\"text-sm text-slate-500 italic\">\n {constraintMessage}\n </span>\n )}\n </div>\n <input\n id={field.id}\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\n data-testid={field.id}\n type=\"date\"\n value={inputValue}\n onChange={handleChange}\n min={minDate ? formatValue(minDate) : undefined}\n max={maxDate ? formatValue(maxDate) : undefined}\n />\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\n </div>\n )\n}\n\nexport default DateInput\n"],"names":["React"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"Date.js","sources":["../../../../../../src/Form/Components/Inputs/Date.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement, useState } from 'react'\r\n\r\nconst DateInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n if (field.type !== 'date') {\r\n return <p>Field config for {field.id} is missing 'options'</p>\r\n }\r\n\r\n const [error, setError] = useState<string | null>(null)\r\n const { minDate, maxDate } = field.constraints ?? {}\r\n\r\n // Convert the value to the format expected by date input (YYYY-MM-DD)\r\n const formatValue = (val: string | undefined | null): string => {\r\n if (!val) return ''\r\n try {\r\n // Ensure the value is in the correct format\r\n const date = new Date(val)\r\n if (isNaN(date.getTime())) return ''\r\n\r\n // Format to YYYY-MM-DD using UTC to avoid timezone issues\r\n const year = date.getUTCFullYear()\r\n const month = String(date.getUTCMonth() + 1).padStart(2, '0')\r\n const day = String(date.getUTCDate()).padStart(2, '0')\r\n\r\n return `${year}-${month}-${day}`\r\n } catch {\r\n return ''\r\n }\r\n }\r\n\r\n const inputValue = formatValue(value as string)\r\n\r\n const validateDate = (dateStr: string): string | null => {\r\n if (!minDate && !maxDate) return null\r\n\r\n const inputDate = new Date(dateStr + 'T00:00:00Z')\r\n const minDateObj = minDate ? new Date(minDate) : null\r\n const maxDateObj = maxDate ? new Date(maxDate) : null\r\n\r\n if (minDateObj && inputDate < minDateObj) {\r\n return `Date must be after ${formatValue(minDate)}`\r\n }\r\n if (maxDateObj && inputDate > maxDateObj) {\r\n return `Date must be before ${formatValue(maxDate)}`\r\n }\r\n return null\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const newValue = e.target.value\r\n // Only notify parent of change if we have a complete valid date\r\n if (newValue) {\r\n // Create date in UTC by appending T00:00:00Z to the input value\r\n const date = new Date(newValue + 'T00:00:00Z')\r\n // Check if it's a valid date and the year is reasonable (4 digits)\r\n if (!isNaN(date.getTime()) && date.getUTCFullYear() > 999) {\r\n const validationError = validateDate(newValue)\r\n setError(validationError)\r\n if (!validationError) {\r\n onChange(date.toISOString())\r\n }\r\n }\r\n } else {\r\n setError(null)\r\n onChange(undefined)\r\n }\r\n }\r\n\r\n const getConstraintMessage = (): string | null => {\r\n if (!minDate && !maxDate) return null\r\n const parts = []\r\n if (minDate) parts.push(`after ${formatValue(minDate)}`)\r\n if (maxDate) parts.push(`before ${formatValue(maxDate)}`)\r\n return `Must be ${parts.join(' and ')}`\r\n }\r\n\r\n const constraintMessage = getConstraintMessage()\r\n\r\n return (\r\n <div>\r\n <div className=\"flex flex-wrap items-baseline gap-2\">\r\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\r\n <FieldLabel {...field} />\r\n </label>\r\n {constraintMessage && (\r\n <span className=\"text-sm text-slate-500 italic\">\r\n {constraintMessage}\r\n </span>\r\n )}\r\n </div>\r\n <input\r\n id={field.id}\r\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\r\n data-testid={field.id}\r\n type=\"date\"\r\n value={inputValue}\r\n onChange={handleChange}\r\n min={minDate ? formatValue(minDate) : undefined}\r\n max={maxDate ? formatValue(maxDate) : undefined}\r\n />\r\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DateInput\r\n"],"names":["React"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DateTime.js","sources":["../../../../../../src/Form/Components/Inputs/DateTime.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport React, { type ReactElement, useState } from 'react'\n\nconst DateTimeInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n const [error, setError] = useState<string | null>(null)\n\n if (field.type !== 'datetime') {\n return <p>Field config for {field.id} is missing 'options'</p>\n }\n const { minDateTime, maxDateTime } = field.constraints ?? {}\n\n // Convert the value to the format expected by datetime-local input (YYYY-MM-DDThh:mm)\n const formatValue = (val: string | undefined | null): string => {\n if (!val) return ''\n try {\n // Ensure the value is in the correct format\n const date = new Date(val)\n if (isNaN(date.getTime())) return ''\n\n // Format to YYYY-MM-DDThh:mm\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n const hours = String(date.getHours()).padStart(2, '0')\n const minutes = String(date.getMinutes()).padStart(2, '0')\n\n return `${year}-${month}-${day}T${hours}:${minutes}`\n } catch {\n return ''\n }\n }\n\n const validateDateTime = (date: Date): string | null => {\n if (minDateTime && date < new Date(minDateTime)) {\n return `Date must be after ${new Date(minDateTime).toLocaleString()}`\n }\n if (maxDateTime && date > new Date(maxDateTime)) {\n return `Date must be before ${new Date(maxDateTime).toLocaleString()}`\n }\n return null\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n const inputValue = e.target.value\n\n // If we have a partial datetime (e.g., just started typing), don't update\n if (inputValue && inputValue.length < 16) { // 16 is the length of a complete datetime-local value\n return\n }\n\n if (inputValue) {\n const date = new Date(inputValue)\n if (!isNaN(date.getTime())) {\n const validationError = validateDateTime(date)\n setError(validationError)\n if (!validationError) {\n onChange(date.toISOString())\n }\n }\n } else {\n setError(null)\n onChange(undefined)\n }\n }\n\n const getConstraintMessage = (): string | null => {\n if (!minDateTime && !maxDateTime) return null\n const parts = []\n if (minDateTime) parts.push(`after ${new Date(minDateTime).toLocaleString()}`)\n if (maxDateTime) parts.push(`before ${new Date(maxDateTime).toLocaleString()}`)\n return `Must be ${parts.join(' and ')}`\n }\n\n const constraintMessage = getConstraintMessage()\n\n return (\n <div>\n <div className=\"flex flex-wrap items-baseline gap-2\">\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\n <FieldLabel {...field} />\n </label>\n {constraintMessage && (\n <span className=\"text-sm text-slate-500 italic\">\n {constraintMessage}\n </span>\n )}\n </div>\n <input\n id={field.id}\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\n data-testid={field.id}\n type=\"datetime-local\"\n value={formatValue(value as string)}\n onChange={handleChange}\n min={minDateTime ? formatValue(minDateTime) : undefined}\n max={maxDateTime ? formatValue(maxDateTime) : undefined}\n />\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\n </div>\n )\n}\n\nexport default DateTimeInput\n"],"names":["React"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DateTime.js","sources":["../../../../../../src/Form/Components/Inputs/DateTime.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport React, { type ReactElement, useState } from 'react'\r\n\r\nconst DateTimeInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const [error, setError] = useState<string | null>(null)\r\n\r\n if (field.type !== 'datetime') {\r\n return <p>Field config for {field.id} is missing 'options'</p>\r\n }\r\n const { minDateTime, maxDateTime } = field.constraints ?? {}\r\n\r\n // Convert the value to the format expected by datetime-local input (YYYY-MM-DDThh:mm)\r\n const formatValue = (val: string | undefined | null): string => {\r\n if (!val) return ''\r\n try {\r\n // Ensure the value is in the correct format\r\n const date = new Date(val)\r\n if (isNaN(date.getTime())) return ''\r\n\r\n // Format to YYYY-MM-DDThh:mm\r\n const year = date.getFullYear()\r\n const month = String(date.getMonth() + 1).padStart(2, '0')\r\n const day = String(date.getDate()).padStart(2, '0')\r\n const hours = String(date.getHours()).padStart(2, '0')\r\n const minutes = String(date.getMinutes()).padStart(2, '0')\r\n\r\n return `${year}-${month}-${day}T${hours}:${minutes}`\r\n } catch {\r\n return ''\r\n }\r\n }\r\n\r\n const validateDateTime = (date: Date): string | null => {\r\n if (minDateTime && date < new Date(minDateTime)) {\r\n return `Date must be after ${new Date(minDateTime).toLocaleString()}`\r\n }\r\n if (maxDateTime && date > new Date(maxDateTime)) {\r\n return `Date must be before ${new Date(maxDateTime).toLocaleString()}`\r\n }\r\n return null\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\r\n const inputValue = e.target.value\r\n\r\n // If we have a partial datetime (e.g., just started typing), don't update\r\n if (inputValue && inputValue.length < 16) { // 16 is the length of a complete datetime-local value\r\n return\r\n }\r\n\r\n if (inputValue) {\r\n const date = new Date(inputValue)\r\n if (!isNaN(date.getTime())) {\r\n const validationError = validateDateTime(date)\r\n setError(validationError)\r\n if (!validationError) {\r\n onChange(date.toISOString())\r\n }\r\n }\r\n } else {\r\n setError(null)\r\n onChange(undefined)\r\n }\r\n }\r\n\r\n const getConstraintMessage = (): string | null => {\r\n if (!minDateTime && !maxDateTime) return null\r\n const parts = []\r\n if (minDateTime) parts.push(`after ${new Date(minDateTime).toLocaleString()}`)\r\n if (maxDateTime) parts.push(`before ${new Date(maxDateTime).toLocaleString()}`)\r\n return `Must be ${parts.join(' and ')}`\r\n }\r\n\r\n const constraintMessage = getConstraintMessage()\r\n\r\n return (\r\n <div>\r\n <div className=\"flex flex-wrap items-baseline gap-2\">\r\n <label htmlFor={field.id} className=\"flex-1 min-w-[200px]\">\r\n <FieldLabel {...field} />\r\n </label>\r\n {constraintMessage && (\r\n <span className=\"text-sm text-slate-500 italic\">\r\n {constraintMessage}\r\n </span>\r\n )}\r\n </div>\r\n <input\r\n id={field.id}\r\n className={`border ${error ? 'border-red-500' : 'border-slate-300'} p-2 w-full`}\r\n data-testid={field.id}\r\n type=\"datetime-local\"\r\n value={formatValue(value as string)}\r\n onChange={handleChange}\r\n min={minDateTime ? formatValue(minDateTime) : undefined}\r\n max={maxDateTime ? formatValue(maxDateTime) : undefined}\r\n />\r\n {error && <p className=\"text-red-500 text-sm mt-1\">{error}</p>}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DateTimeInput\r\n"],"names":["React"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"GeoJSON.js","sources":["../../../../../../src/Form/Components/Inputs/GeoJSON.tsx"],"sourcesContent":["import { Button, TextArea } from '@axdspub/axiom-ui-utilities'\nimport FieldLabel from '@/Form/Components/FieldLabel'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\n\nimport { EMapShape, type IMap, type IMapDrawEvent, type IStyleableMapProps } from '@axdspub/axiom-maps'\nimport { OpenLayersMap as Map } from '@axdspub/axiom-maps/library/openlayers'\nimport { type GeoJSON } from 'geojson'\nimport React, { useEffect, useState, type ReactElement } from 'react'\nimport { TrashIcon, SquareIcon, BorderSolidIcon, DrawingPinFilledIcon } from '@radix-ui/react-icons'\n\n/*\nList of coordinates for testing. Around Anchorage.\n61.44480592425796, -150.3785489314675\n61.26059021199541, -150.7356022485971\n61.05235501381105, -150.61435734866856\n61.06014246374005, -149.9221328461051\n61.441517540302925, -149.16102284579276\n61.44480592425796, -150.3785489314675\n*/\n\nconst calculateCenterFromGeoJSON = (geo: GeoJSON | undefined): { lat: number, lon: number, zoom: number } => {\n if (!geo || !('features' in geo) || !Array.isArray(geo.features) || geo.features.length === 0) {\n return { lat: 61.2181, lon: -149.9003, zoom: 8 } // Default to Anchorage\n }\n\n const feature = geo.features[0]\n if (!feature?.geometry) {\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\n }\n\n const geometry = feature.geometry\n let coordinates: GeoJSON.Position[] = []\n\n switch (geometry.type) {\n case 'Polygon':\n coordinates = geometry.coordinates[0] // Get first ring (ignore holes)\n break\n case 'LineString':\n coordinates = geometry.coordinates\n break\n case 'Point':\n coordinates = [geometry.coordinates]\n break\n default:\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\n }\n\n if (!Array.isArray(coordinates) || coordinates.length === 0) {\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\n }\n\n // Calculate bounds\n let minLat = Infinity\n let maxLat = -Infinity\n let minLon = Infinity\n let maxLon = -Infinity\n let sumLat = 0\n let sumLon = 0\n let count = 0\n\n coordinates.forEach((coord: GeoJSON.Position) => {\n const [lon, lat] = coord\n minLat = Math.min(minLat, lat)\n maxLat = Math.max(maxLat, lat)\n minLon = Math.min(minLon, lon)\n maxLon = Math.max(maxLon, lon)\n sumLat += lat\n sumLon += lon\n count++\n })\n\n // Calculate center\n const centerLat = sumLat / count\n const centerLon = sumLon / count\n\n // Calculate zoom level based on bounds\n const latDiff = maxLat - minLat\n const lonDiff = maxLon - minLon\n const maxDiff = Math.max(latDiff, lonDiff)\n\n // Adjust zoom based on the size of the shape\n let zoom = 8 // default zoom\n if (maxDiff < 0.1) zoom = 12 // very small shape\n else if (maxDiff < 0.5) zoom = 10 // small shape\n else if (maxDiff < 1) zoom = 9 // medium shape\n else if (maxDiff < 2) zoom = 8 // large shape\n else if (maxDiff < 5) zoom = 7 // very large shape\n else zoom = 6 // huge shape\n\n return {\n lat: centerLat,\n lon: centerLon,\n zoom\n }\n}\n\nexport const GeoJSONInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n console.log('INITIAL VALUE', value)\n const initialGeoJSON = value as unknown as GeoJSON\n const initialMapConfig = calculateCenterFromGeoJSON(initialGeoJSON)\n const [currentDrawType, setCurrentDrawType] = useState<EMapShape>(EMapShape.polygon)\n const [isDrawing, setIsDrawing] = useState<boolean>(false)\n\n const MAP_CONFIG: IStyleableMapProps = {\n baseLayerKey: 'hybrid',\n height: '500px',\n width: '100%',\n style: {\n left: '0px',\n top: '0px',\n right: '0px',\n bottom: '0px',\n padding: '0'\n },\n center: { lat: initialMapConfig.lat, lon: initialMapConfig.lon },\n zoom: initialMapConfig.zoom,\n tools: {\n draw: {\n shape: currentDrawType,\n enabled: true\n }\n }\n }\n\n const [map, setMapState] = useState<IMap | undefined>(undefined)\n const [error, setError] = useState<string | undefined>(undefined)\n const [geojson, setGeojson] = useState<GeoJSON | undefined>(() => {\n if (!value) return undefined\n return value as unknown as GeoJSON\n })\n const [showGeoJSONInput] = useState<boolean>(false) // For debugging purposes\n const [coordinates, setCoordinates] = useState<string>(() => {\n if (!value) return ''\n const geoValue = value as unknown as GeoJSON.FeatureCollection\n if (geoValue?.type === 'FeatureCollection' && Array.isArray(geoValue.features) && geoValue.features.length > 0) {\n const feature = geoValue.features[0]\n const geometry = feature?.geometry\n if (!geometry) return ''\n\n if (geometry.type === 'Polygon') {\n const coords = geometry.coordinates[0]\n return coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\n } else if (geometry.type === 'LineString') {\n const coords = geometry.coordinates\n return coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\n } else if (geometry.type === 'Point') {\n const coords = geometry.coordinates\n return `${coords[1]}, ${coords[0]}`\n }\n }\n return ''\n })\n\n const getValue = (): string => {\n return geojson !== undefined && geojson !== null\n ? typeof geojson === 'object'\n ? JSON.stringify(geojson, null, 2)\n : String(geojson)\n : ''\n }\n\n const createGeoJSONFromCoordinates = (coordString: string, forceType?: EMapShape): GeoJSON | undefined => {\n if (!coordString.trim()) {\n setError(undefined)\n return undefined\n }\n\n try {\n const points = coordString\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0)\n .map(line => {\n const [lat, lon] = line.split(',').map(coord => parseFloat(coord.trim()))\n if (isNaN(lat) || isNaN(lon)) {\n throw new Error('Invalid coordinate format')\n }\n return [lon, lat]\n })\n\n if (points.length === 0) {\n throw new Error('No valid coordinates found')\n }\n\n // Single point\n if (points.length === 1) {\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Point',\n coordinates: points[0]\n }\n }]\n }\n }\n\n // For polygon or line, based on forceType or number of points\n if (forceType === EMapShape.polygon || (!forceType && points.length >= 3)) {\n // Close the polygon by adding the first point at the end if not already closed\n if (JSON.stringify(points[0]) !== JSON.stringify(points[points.length - 1])) {\n points.push(points[0])\n }\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Polygon',\n coordinates: [points]\n }\n }]\n }\n }\n\n // LineString\n return {\n type: 'FeatureCollection',\n features: [{\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'LineString',\n coordinates: points\n }\n }]\n }\n } catch (e) {\n setError('Invalid coordinate format. Use \"lat, lon\" format, one per line')\n return undefined\n }\n }\n\n const [showShapeTypeButtons, setShowShapeTypeButtons] = useState<boolean>(() => {\n // Show buttons if initial value has 2+ coordinates\n if (!value) return false\n const geoValue = value as unknown as GeoJSON.FeatureCollection\n if (geoValue?.type === 'FeatureCollection' && Array.isArray(geoValue.features) && geoValue.features.length > 0) {\n const feature = geoValue.features[0]\n const geometry = feature?.geometry\n if (!geometry) return false\n\n if (geometry.type === 'Polygon' || geometry.type === 'LineString') {\n return geometry.coordinates.length >= 2\n }\n }\n return false\n })\n\n const updateCoordinatesFromGeoJSON = (geo: GeoJSON | undefined): void => {\n if (!geo || geo.type !== 'FeatureCollection' || !geo.features?.[0]?.geometry) return\n\n const feature = geo.features[0]\n const geometry = feature.geometry\n let newCoords = ''\n\n if (geometry.type === 'Polygon') {\n const coords = geometry.coordinates[0]\n newCoords = coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\n } else if (geometry.type === 'LineString') {\n const coords = geometry.coordinates\n newCoords = coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\n } else if (geometry.type === 'Point') {\n const coords = geometry.coordinates\n newCoords = `${coords[1]}, ${coords[0]}`\n }\n\n setCoordinates(newCoords)\n setShowShapeTypeButtons(shouldShowShapeButtons(newCoords))\n }\n\n useEffect(() => {\n if (map === undefined) return\n\n map.onDrawComplete((e: IMapDrawEvent) => {\n console.log('draw complete', e)\n setGeojson(e.data?.geojson)\n updateCoordinatesFromGeoJSON(e.data?.geojson)\n setIsDrawing(false)\n // Disable drawing after shape is completed\n map.disableDraw(currentDrawType)\n })\n\n // On modify drawing\n map.onDrawUpdate((e: IMapDrawEvent) => {\n console.log('draw update', e)\n setGeojson(e.data?.geojson)\n updateCoordinatesFromGeoJSON(e.data?.geojson)\n })\n }, [map])\n\n useEffect(() => {\n if (geojson !== undefined) {\n onChange(geojson)\n }\n }, [geojson])\n\n const hasValidShape = (geo: GeoJSON | undefined): boolean => {\n return geo !== undefined &&\n 'features' in geo &&\n Array.isArray(geo.features) &&\n geo.features.length > 0\n }\n\n const clearShape = (): void => {\n setGeojson(undefined)\n onChange(undefined)\n setCoordinates('')\n if (map) {\n map.setDrawGeojson({\n type: 'FeatureCollection',\n features: []\n })\n map.enableDraw(currentDrawType) // Re-enable drawing when shape is cleared\n setIsDrawing(true)\n }\n }\n\n const handleDrawTypeChange = (shapeType: EMapShape): void => {\n if (map) {\n // Clear existing shape if any\n map.setDrawGeojson({\n type: 'FeatureCollection',\n features: []\n })\n setGeojson(undefined)\n onChange(undefined)\n setCoordinates('')\n setShowShapeTypeButtons(false)\n setCurrentDrawType(shapeType)\n map.enableDraw(shapeType)\n setIsDrawing(true)\n }\n }\n\n const shouldShowShapeButtons = (coords: string): boolean => {\n const validLines = coords.trim().split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0)\n .filter(line => {\n try {\n const [lat, lon] = line.split(',').map(coord => parseFloat(coord.trim()))\n return !isNaN(lat) && !isNaN(lon)\n } catch {\n return false\n }\n })\n return validLines.length >= 3\n }\n\n const handleCoordinatesChange = (e: string | undefined): void => {\n const newCoords = e ?? ''\n setCoordinates(newCoords)\n setShowShapeTypeButtons(shouldShowShapeButtons(newCoords))\n\n try {\n const newGeoJSON = createGeoJSONFromCoordinates(newCoords)\n if (newGeoJSON) {\n setGeojson(newGeoJSON)\n setError(undefined)\n if (map) {\n map.setDrawGeojson({\n type: 'FeatureCollection',\n features: []\n })\n map.setDrawGeojson(newGeoJSON as GeoJSON.FeatureCollection)\n map.disableDraw(currentDrawType) // Disable drawing when coordinates are entered\n }\n } else {\n setGeojson(undefined)\n onChange(undefined)\n if (map) {\n map.setDrawGeojson({\n type: 'FeatureCollection',\n features: []\n })\n }\n }\n } catch (e) {\n setError('Invalid coordinate format')\n }\n }\n\n // Reload shape on the map\n useEffect(() => {\n if (map === undefined) return\n\n if (geojson !== undefined && 'features' in geojson) {\n map.setDrawGeojson(geojson)\n map.disableDraw(currentDrawType) // Disable drawing when there's a shape\n setIsDrawing(false)\n // Update coordinates display and shape type buttons\n updateCoordinatesFromGeoJSON(geojson)\n setShowShapeTypeButtons(shouldShowShapeButtons(coordinates))\n } else {\n map.enableDraw(currentDrawType)\n setIsDrawing(true)\n }\n }, [map, currentDrawType])\n\n const applyShapeType = (shapeType: EMapShape): void => {\n const newGeoJSON = createGeoJSONFromCoordinates(coordinates, shapeType)\n if (newGeoJSON) {\n setGeojson(newGeoJSON)\n setError(undefined)\n if (map) {\n map.setDrawGeojson({\n type: 'FeatureCollection',\n features: []\n })\n map.setDrawGeojson(newGeoJSON as GeoJSON.FeatureCollection)\n }\n }\n // Don't hide the buttons anymore\n // setShowShapeTypeButtons(false)\n }\n\n return <div>\n <FieldLabel {...field} />\n <div className=\"relative\">\n <div className=\"absolute z-20 top-12 right-4 flex flex-col gap-2\">\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.polygon) }}\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.polygon && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n >\n <SquareIcon className=\"w-5 h-5 rotate-45\" />\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\n Draw Polygon\n </span>\n </Button>\n </div>\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.linestring) }}\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.linestring && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n >\n <BorderSolidIcon className=\"w-5 h-5\" />\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\n Draw Path\n </span>\n </Button>\n </div>\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.point) }}\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.point && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n >\n <DrawingPinFilledIcon className=\"w-5 h-5\" />\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\n Draw Point\n </span>\n </Button>\n </div>\n {hasValidShape(geojson) && (\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={clearShape}\n className=\"p-2 rounded-lg shadow-lg bg-red-500 hover:bg-red-600 text-white w-10 h-10 flex items-center justify-center\"\n >\n <TrashIcon className=\"w-5 h-5\" />\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\n Clear Shape\n </span>\n </Button>\n </div>\n )}\n </div>\n <Map {...MAP_CONFIG} setState={setMapState} />\n <div className=\"mt-4\">\n <div className=\"flex justify-between items-center mb-2\">\n <span>Draw on map or enter coordinates <pre className=\"inline-block text-sm\">(latitude, longitude)</pre></span>\n {showShapeTypeButtons && (\n <div className=\"flex gap-2\">\n <Button\n onClick={() => { applyShapeType(EMapShape.linestring) }}\n className=\"px-4 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-sm flex items-center gap-2\"\n >\n <BorderSolidIcon className=\"w-4 h-4\" />\n Create Path\n </Button>\n <Button\n onClick={() => { applyShapeType(EMapShape.polygon) }}\n className=\"px-4 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-sm flex items-center gap-2\"\n >\n <SquareIcon className=\"w-4 h-4 rotate-45\" />\n Create Polygon\n </Button>\n </div>\n )}\n </div>\n <TextArea\n error={error}\n className='min-h-[100px] bg-slate-50 rounded-lg shadow-inner'\n id={`${field.id}-coordinates`}\n testId={`${field.id}-coordinates`}\n value={coordinates}\n onChange={handleCoordinatesChange}\n placeholder=\"61.2181, -149.9003 61.2182, -149.9004 61.2183, -149.9005\"\n />\n </div>\n {showGeoJSONInput && <TextArea\n error={error}\n className='min-h-[500px] bg-slate-50 rounded-lg shadow-inner'\n id={field.id}\n testId={field.id}\n label={<FieldLabel {...field} />}\n value={getValue()}\n onChange={(e) => {\n try {\n JSON.parse(e ?? '')\n onChange(JSON.parse(e ?? ''))\n setError(undefined)\n } catch (e) {\n setError('Invalid JSON')\n }\n }} />}\n </div>\n </div>\n}\n\nexport default GeoJSONInput\n"],"names":["React","Map"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"GeoJSON.js","sources":["../../../../../../src/Form/Components/Inputs/GeoJSON.tsx"],"sourcesContent":["import { Button, TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\n\r\nimport { EMapShape, type IMap, type IMapDrawEvent, type IStyleableMapProps } from '@axdspub/axiom-maps'\r\nimport { OpenLayersMap as Map } from '@axdspub/axiom-maps/library/openlayers'\r\nimport { type GeoJSON } from 'geojson'\r\nimport React, { useEffect, useState, type ReactElement } from 'react'\r\nimport { TrashIcon, SquareIcon, BorderSolidIcon, DrawingPinFilledIcon } from '@radix-ui/react-icons'\r\n\r\n/*\r\nList of coordinates for testing. Around Anchorage.\r\n61.44480592425796, -150.3785489314675\r\n61.26059021199541, -150.7356022485971\r\n61.05235501381105, -150.61435734866856\r\n61.06014246374005, -149.9221328461051\r\n61.441517540302925, -149.16102284579276\r\n61.44480592425796, -150.3785489314675\r\n*/\r\n\r\nconst calculateCenterFromGeoJSON = (geo: GeoJSON | undefined): { lat: number, lon: number, zoom: number } => {\r\n if (!geo || !('features' in geo) || !Array.isArray(geo.features) || geo.features.length === 0) {\r\n return { lat: 61.2181, lon: -149.9003, zoom: 8 } // Default to Anchorage\r\n }\r\n\r\n const feature = geo.features[0]\r\n if (!feature?.geometry) {\r\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\r\n }\r\n\r\n const geometry = feature.geometry\r\n let coordinates: GeoJSON.Position[] = []\r\n\r\n switch (geometry.type) {\r\n case 'Polygon':\r\n coordinates = geometry.coordinates[0] // Get first ring (ignore holes)\r\n break\r\n case 'LineString':\r\n coordinates = geometry.coordinates\r\n break\r\n case 'Point':\r\n coordinates = [geometry.coordinates]\r\n break\r\n default:\r\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\r\n }\r\n\r\n if (!Array.isArray(coordinates) || coordinates.length === 0) {\r\n return { lat: 61.2181, lon: -149.9003, zoom: 8 }\r\n }\r\n\r\n // Calculate bounds\r\n let minLat = Infinity\r\n let maxLat = -Infinity\r\n let minLon = Infinity\r\n let maxLon = -Infinity\r\n let sumLat = 0\r\n let sumLon = 0\r\n let count = 0\r\n\r\n coordinates.forEach((coord: GeoJSON.Position) => {\r\n const [lon, lat] = coord\r\n minLat = Math.min(minLat, lat)\r\n maxLat = Math.max(maxLat, lat)\r\n minLon = Math.min(minLon, lon)\r\n maxLon = Math.max(maxLon, lon)\r\n sumLat += lat\r\n sumLon += lon\r\n count++\r\n })\r\n\r\n // Calculate center\r\n const centerLat = sumLat / count\r\n const centerLon = sumLon / count\r\n\r\n // Calculate zoom level based on bounds\r\n const latDiff = maxLat - minLat\r\n const lonDiff = maxLon - minLon\r\n const maxDiff = Math.max(latDiff, lonDiff)\r\n\r\n // Adjust zoom based on the size of the shape\r\n let zoom = 8 // default zoom\r\n if (maxDiff < 0.1) zoom = 12 // very small shape\r\n else if (maxDiff < 0.5) zoom = 10 // small shape\r\n else if (maxDiff < 1) zoom = 9 // medium shape\r\n else if (maxDiff < 2) zoom = 8 // large shape\r\n else if (maxDiff < 5) zoom = 7 // very large shape\r\n else zoom = 6 // huge shape\r\n\r\n return {\r\n lat: centerLat,\r\n lon: centerLon,\r\n zoom\r\n }\r\n}\r\n\r\nexport const GeoJSONInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n console.log('INITIAL VALUE', value)\r\n const initialGeoJSON = value as unknown as GeoJSON\r\n const initialMapConfig = calculateCenterFromGeoJSON(initialGeoJSON)\r\n const [currentDrawType, setCurrentDrawType] = useState<EMapShape>(EMapShape.polygon)\r\n const [isDrawing, setIsDrawing] = useState<boolean>(false)\r\n\r\n const MAP_CONFIG: IStyleableMapProps = {\r\n baseLayerKey: 'hybrid',\r\n height: '500px',\r\n width: '100%',\r\n style: {\r\n left: '0px',\r\n top: '0px',\r\n right: '0px',\r\n bottom: '0px',\r\n padding: '0'\r\n },\r\n center: { lat: initialMapConfig.lat, lon: initialMapConfig.lon },\r\n zoom: initialMapConfig.zoom,\r\n tools: {\r\n draw: {\r\n shape: currentDrawType,\r\n enabled: true\r\n }\r\n }\r\n }\r\n\r\n const [map, setMapState] = useState<IMap | undefined>(undefined)\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n const [geojson, setGeojson] = useState<GeoJSON | undefined>(() => {\r\n if (!value) return undefined\r\n return value as unknown as GeoJSON\r\n })\r\n const [showGeoJSONInput] = useState<boolean>(false) // For debugging purposes\r\n const [coordinates, setCoordinates] = useState<string>(() => {\r\n if (!value) return ''\r\n const geoValue = value as unknown as GeoJSON.FeatureCollection\r\n if (geoValue?.type === 'FeatureCollection' && Array.isArray(geoValue.features) && geoValue.features.length > 0) {\r\n const feature = geoValue.features[0]\r\n const geometry = feature?.geometry\r\n if (!geometry) return ''\r\n\r\n if (geometry.type === 'Polygon') {\r\n const coords = geometry.coordinates[0]\r\n return coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\r\n } else if (geometry.type === 'LineString') {\r\n const coords = geometry.coordinates\r\n return coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\r\n } else if (geometry.type === 'Point') {\r\n const coords = geometry.coordinates\r\n return `${coords[1]}, ${coords[0]}`\r\n }\r\n }\r\n return ''\r\n })\r\n\r\n const getValue = (): string => {\r\n return geojson !== undefined && geojson !== null\r\n ? typeof geojson === 'object'\r\n ? JSON.stringify(geojson, null, 2)\r\n : String(geojson)\r\n : ''\r\n }\r\n\r\n const createGeoJSONFromCoordinates = (coordString: string, forceType?: EMapShape): GeoJSON | undefined => {\r\n if (!coordString.trim()) {\r\n setError(undefined)\r\n return undefined\r\n }\r\n\r\n try {\r\n const points = coordString\r\n .split('\\n')\r\n .map(line => line.trim())\r\n .filter(line => line.length > 0)\r\n .map(line => {\r\n const [lat, lon] = line.split(',').map(coord => parseFloat(coord.trim()))\r\n if (isNaN(lat) || isNaN(lon)) {\r\n throw new Error('Invalid coordinate format')\r\n }\r\n return [lon, lat]\r\n })\r\n\r\n if (points.length === 0) {\r\n throw new Error('No valid coordinates found')\r\n }\r\n\r\n // Single point\r\n if (points.length === 1) {\r\n return {\r\n type: 'FeatureCollection',\r\n features: [{\r\n type: 'Feature',\r\n properties: {},\r\n geometry: {\r\n type: 'Point',\r\n coordinates: points[0]\r\n }\r\n }]\r\n }\r\n }\r\n\r\n // For polygon or line, based on forceType or number of points\r\n if (forceType === EMapShape.polygon || (!forceType && points.length >= 3)) {\r\n // Close the polygon by adding the first point at the end if not already closed\r\n if (JSON.stringify(points[0]) !== JSON.stringify(points[points.length - 1])) {\r\n points.push(points[0])\r\n }\r\n return {\r\n type: 'FeatureCollection',\r\n features: [{\r\n type: 'Feature',\r\n properties: {},\r\n geometry: {\r\n type: 'Polygon',\r\n coordinates: [points]\r\n }\r\n }]\r\n }\r\n }\r\n\r\n // LineString\r\n return {\r\n type: 'FeatureCollection',\r\n features: [{\r\n type: 'Feature',\r\n properties: {},\r\n geometry: {\r\n type: 'LineString',\r\n coordinates: points\r\n }\r\n }]\r\n }\r\n } catch (e) {\r\n setError('Invalid coordinate format. Use \"lat, lon\" format, one per line')\r\n return undefined\r\n }\r\n }\r\n\r\n const [showShapeTypeButtons, setShowShapeTypeButtons] = useState<boolean>(() => {\r\n // Show buttons if initial value has 2+ coordinates\r\n if (!value) return false\r\n const geoValue = value as unknown as GeoJSON.FeatureCollection\r\n if (geoValue?.type === 'FeatureCollection' && Array.isArray(geoValue.features) && geoValue.features.length > 0) {\r\n const feature = geoValue.features[0]\r\n const geometry = feature?.geometry\r\n if (!geometry) return false\r\n\r\n if (geometry.type === 'Polygon' || geometry.type === 'LineString') {\r\n return geometry.coordinates.length >= 2\r\n }\r\n }\r\n return false\r\n })\r\n\r\n const updateCoordinatesFromGeoJSON = (geo: GeoJSON | undefined): void => {\r\n if (!geo || geo.type !== 'FeatureCollection' || !geo.features?.[0]?.geometry) return\r\n\r\n const feature = geo.features[0]\r\n const geometry = feature.geometry\r\n let newCoords = ''\r\n\r\n if (geometry.type === 'Polygon') {\r\n const coords = geometry.coordinates[0]\r\n newCoords = coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\r\n } else if (geometry.type === 'LineString') {\r\n const coords = geometry.coordinates\r\n newCoords = coords.map((pos: GeoJSON.Position) => `${pos[1]}, ${pos[0]}`).join('\\n')\r\n } else if (geometry.type === 'Point') {\r\n const coords = geometry.coordinates\r\n newCoords = `${coords[1]}, ${coords[0]}`\r\n }\r\n\r\n setCoordinates(newCoords)\r\n setShowShapeTypeButtons(shouldShowShapeButtons(newCoords))\r\n }\r\n\r\n useEffect(() => {\r\n if (map === undefined) return\r\n\r\n map.onDrawComplete((e: IMapDrawEvent) => {\r\n console.log('draw complete', e)\r\n setGeojson(e.data?.geojson)\r\n updateCoordinatesFromGeoJSON(e.data?.geojson)\r\n setIsDrawing(false)\r\n // Disable drawing after shape is completed\r\n map.disableDraw(currentDrawType)\r\n })\r\n\r\n // On modify drawing\r\n map.onDrawUpdate((e: IMapDrawEvent) => {\r\n console.log('draw update', e)\r\n setGeojson(e.data?.geojson)\r\n updateCoordinatesFromGeoJSON(e.data?.geojson)\r\n })\r\n }, [map])\r\n\r\n useEffect(() => {\r\n if (geojson !== undefined) {\r\n onChange(geojson)\r\n }\r\n }, [geojson])\r\n\r\n const hasValidShape = (geo: GeoJSON | undefined): boolean => {\r\n return geo !== undefined &&\r\n 'features' in geo &&\r\n Array.isArray(geo.features) &&\r\n geo.features.length > 0\r\n }\r\n\r\n const clearShape = (): void => {\r\n setGeojson(undefined)\r\n onChange(undefined)\r\n setCoordinates('')\r\n if (map) {\r\n map.setDrawGeojson({\r\n type: 'FeatureCollection',\r\n features: []\r\n })\r\n map.enableDraw(currentDrawType) // Re-enable drawing when shape is cleared\r\n setIsDrawing(true)\r\n }\r\n }\r\n\r\n const handleDrawTypeChange = (shapeType: EMapShape): void => {\r\n if (map) {\r\n // Clear existing shape if any\r\n map.setDrawGeojson({\r\n type: 'FeatureCollection',\r\n features: []\r\n })\r\n setGeojson(undefined)\r\n onChange(undefined)\r\n setCoordinates('')\r\n setShowShapeTypeButtons(false)\r\n setCurrentDrawType(shapeType)\r\n map.enableDraw(shapeType)\r\n setIsDrawing(true)\r\n }\r\n }\r\n\r\n const shouldShowShapeButtons = (coords: string): boolean => {\r\n const validLines = coords.trim().split('\\n')\r\n .map(line => line.trim())\r\n .filter(line => line.length > 0)\r\n .filter(line => {\r\n try {\r\n const [lat, lon] = line.split(',').map(coord => parseFloat(coord.trim()))\r\n return !isNaN(lat) && !isNaN(lon)\r\n } catch {\r\n return false\r\n }\r\n })\r\n return validLines.length >= 3\r\n }\r\n\r\n const handleCoordinatesChange = (e: string | undefined): void => {\r\n const newCoords = e ?? ''\r\n setCoordinates(newCoords)\r\n setShowShapeTypeButtons(shouldShowShapeButtons(newCoords))\r\n\r\n try {\r\n const newGeoJSON = createGeoJSONFromCoordinates(newCoords)\r\n if (newGeoJSON) {\r\n setGeojson(newGeoJSON)\r\n setError(undefined)\r\n if (map) {\r\n map.setDrawGeojson({\r\n type: 'FeatureCollection',\r\n features: []\r\n })\r\n map.setDrawGeojson(newGeoJSON as GeoJSON.FeatureCollection)\r\n map.disableDraw(currentDrawType) // Disable drawing when coordinates are entered\r\n }\r\n } else {\r\n setGeojson(undefined)\r\n onChange(undefined)\r\n if (map) {\r\n map.setDrawGeojson({\r\n type: 'FeatureCollection',\r\n features: []\r\n })\r\n }\r\n }\r\n } catch (e) {\r\n setError('Invalid coordinate format')\r\n }\r\n }\r\n\r\n // Reload shape on the map\r\n useEffect(() => {\r\n if (map === undefined) return\r\n\r\n if (geojson !== undefined && 'features' in geojson) {\r\n map.setDrawGeojson(geojson)\r\n map.disableDraw(currentDrawType) // Disable drawing when there's a shape\r\n setIsDrawing(false)\r\n // Update coordinates display and shape type buttons\r\n updateCoordinatesFromGeoJSON(geojson)\r\n setShowShapeTypeButtons(shouldShowShapeButtons(coordinates))\r\n } else {\r\n map.enableDraw(currentDrawType)\r\n setIsDrawing(true)\r\n }\r\n }, [map, currentDrawType])\r\n\r\n const applyShapeType = (shapeType: EMapShape): void => {\r\n const newGeoJSON = createGeoJSONFromCoordinates(coordinates, shapeType)\r\n if (newGeoJSON) {\r\n setGeojson(newGeoJSON)\r\n setError(undefined)\r\n if (map) {\r\n map.setDrawGeojson({\r\n type: 'FeatureCollection',\r\n features: []\r\n })\r\n map.setDrawGeojson(newGeoJSON as GeoJSON.FeatureCollection)\r\n }\r\n }\r\n // Don't hide the buttons anymore\r\n // setShowShapeTypeButtons(false)\r\n }\r\n\r\n return <div>\r\n <FieldLabel {...field} />\r\n <div className=\"relative\">\r\n <div className=\"absolute z-20 top-12 right-4 flex flex-col gap-2\">\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.polygon) }}\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.polygon && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n >\r\n <SquareIcon className=\"w-5 h-5 rotate-45\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Polygon\r\n </span>\r\n </Button>\r\n </div>\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.linestring) }}\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.linestring && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n >\r\n <BorderSolidIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Path\r\n </span>\r\n </Button>\r\n </div>\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.point) }}\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.point && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n >\r\n <DrawingPinFilledIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Point\r\n </span>\r\n </Button>\r\n </div>\r\n {hasValidShape(geojson) && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={clearShape}\r\n className=\"p-2 rounded-lg shadow-lg bg-red-500 hover:bg-red-600 text-white w-10 h-10 flex items-center justify-center\"\r\n >\r\n <TrashIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Clear Shape\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n <Map {...MAP_CONFIG} setState={setMapState} />\r\n <div className=\"mt-4\">\r\n <div className=\"flex justify-between items-center mb-2\">\r\n <span>Draw on map or enter coordinates <pre className=\"inline-block text-sm\">(latitude, longitude)</pre></span>\r\n {showShapeTypeButtons && (\r\n <div className=\"flex gap-2\">\r\n <Button\r\n onClick={() => { applyShapeType(EMapShape.linestring) }}\r\n className=\"px-4 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-sm flex items-center gap-2\"\r\n >\r\n <BorderSolidIcon className=\"w-4 h-4\" />\r\n Create Path\r\n </Button>\r\n <Button\r\n onClick={() => { applyShapeType(EMapShape.polygon) }}\r\n className=\"px-4 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-sm flex items-center gap-2\"\r\n >\r\n <SquareIcon className=\"w-4 h-4 rotate-45\" />\r\n Create Polygon\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n <TextArea\r\n error={error}\r\n className='min-h-[100px] bg-slate-50 rounded-lg shadow-inner'\r\n id={`${field.id}-coordinates`}\r\n testId={`${field.id}-coordinates`}\r\n value={coordinates}\r\n onChange={handleCoordinatesChange}\r\n placeholder=\"61.2181, -149.9003 61.2182, -149.9004 61.2183, -149.9005\"\r\n />\r\n </div>\r\n {showGeoJSONInput && <TextArea\r\n error={error}\r\n className='min-h-[500px] bg-slate-50 rounded-lg shadow-inner'\r\n id={field.id}\r\n testId={field.id}\r\n label={<FieldLabel {...field} />}\r\n value={getValue()}\r\n onChange={(e) => {\r\n try {\r\n JSON.parse(e ?? '')\r\n onChange(JSON.parse(e ?? ''))\r\n setError(undefined)\r\n } catch (e) {\r\n setError('Invalid JSON')\r\n }\r\n }} />}\r\n </div>\r\n </div>\r\n}\r\n\r\nexport default GeoJSONInput\r\n"],"names":["React","Map"],"mappings":"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"}
|