{"version":3,"file":"firstNameTextBox.obs.js","sources":["../../../Framework/Controls/firstNameTextBox.obs"],"sourcesContent":["<!-- Copyright by the Spark Development Network; Licensed under the Rock Community License -->\n<template>\n    <TextBox v-model=\"internalValue\" v-bind=\"fieldProps\" :rules=\"rules\" />\n</template>\n\n<script setup lang=\"ts\">\n    import { PropType, computed, ref } from \"vue\";\n    import TextBox from \"@Obsidian/Controls/textBox.obs\";\n    import { ListItemBag } from \"@Obsidian/ViewModels/Utility/listItemBag\";\n    import { standardRockFormFieldProps, useStandardRockFormFieldProps, useVModelPassthrough } from \"@Obsidian/Utility/component\";\n    import { normalizeRules } from \"@Obsidian/ValidationRules\";\n\n    const props = defineProps({\n        modelValue: {\n            type: String,\n            required: true\n        },\n\n        /** List of strings that are not allowed to appear in the value. */\n        notAllowed: {\n            type: Array as PropType<string[]>,\n            default: []\n        },\n\n        ...standardRockFormFieldProps\n    });\n\n    const emit = defineEmits<{\n        (e: \"update:modelValue\", value: ListItemBag): void\n    }>();\n\n    const internalValue = useVModelPassthrough(props, \"modelValue\", emit);\n\n    const fieldProps = useStandardRockFormFieldProps(props);\n\n    const disallowedStrings = computed(() => {\n        const strings = [\"&\", \" and \", \"-and-\", \"_and_\", \" plus \", \"+\"];\n        strings.push(...props.notAllowed);\n        return strings;\n    });\n\n    const rules = computed(() => {\n        const rules = normalizeRules(props.rules);\n\n        rules.push((value): string | boolean => {\n            if (typeof value != \"string\") {\n                return true;\n            }\n\n            const compareValue = value.toLocaleUpperCase();\n            const found = disallowedStrings.value.filter(dont => compareValue.includes(dont.toLocaleUpperCase()));\n            let foundSentenceList = \"\";\n\n            if (found.length == 1) {\n                foundSentenceList = `\"${found[0]}\"`;\n            }\n            else if (found.length == 2) {\n                foundSentenceList = `\"${found[0]}\" or \"${found[1]}\"`;\n            }\n            else if (found.length > 2) {\n                foundSentenceList = `\"${found.slice(0, -1).join(`\", \"`)}\", or \"${found[found.length - 1]}\"`;\n            }\n\n            if (found.length > 0) {\n                return \"cannot contain \" + foundSentenceList;\n            }\n\n            return true;\n        });\n\n        return rules;\n    });\n\n</script>\n"],"names":["props","__props","emit","__emit","internalValue","useVModelPassthrough","fieldProps","useStandardRockFormFieldProps","disallowedStrings","computed","strings","push","notAllowed","rules","normalizeRules","value","compareValue","toLocaleUpperCase","found","filter","dont","includes","foundSentenceList","length","concat","slice","join"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAYI,IAAMA,KAAK,GAAGC,OAaZ,CAAA;UAEF,IAAMC,IAAI,GAAGC,MAET,CAAA;UAEJ,IAAMC,aAAa,GAAGC,oBAAoB,CAACL,KAAK,EAAE,YAAY,EAAEE,IAAI,CAAC,CAAA;MAErE,IAAA,IAAMI,UAAU,GAAGC,6BAA6B,CAACP,KAAK,CAAC,CAAA;MAEvD,IAAA,IAAMQ,iBAAiB,GAAGC,QAAQ,CAAC,MAAM;MACrC,MAAA,IAAMC,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;MAC/DA,MAAAA,OAAO,CAACC,IAAI,CAAC,GAAGX,KAAK,CAACY,UAAU,CAAC,CAAA;MACjC,MAAA,OAAOF,OAAO,CAAA;MAClB,KAAC,CAAC,CAAA;MAEF,IAAA,IAAMG,KAAK,GAAGJ,QAAQ,CAAC,MAAM;MACzB,MAAA,IAAMI,KAAK,GAAGC,cAAc,CAACd,KAAK,CAACa,KAAK,CAAC,CAAA;MAEzCA,MAAAA,KAAK,CAACF,IAAI,CAAEI,KAAK,IAAuB;MACpC,QAAA,IAAI,OAAOA,KAAK,IAAI,QAAQ,EAAE;MAC1B,UAAA,OAAO,IAAI,CAAA;MACf,SAAA;MAEA,QAAA,IAAMC,YAAY,GAAGD,KAAK,CAACE,iBAAiB,EAAE,CAAA;cAC9C,IAAMC,KAAK,GAAGV,iBAAiB,CAACO,KAAK,CAACI,MAAM,CAACC,IAAI,IAAIJ,YAAY,CAACK,QAAQ,CAACD,IAAI,CAACH,iBAAiB,EAAE,CAAC,CAAC,CAAA;cACrG,IAAIK,iBAAiB,GAAG,EAAE,CAAA;MAE1B,QAAA,IAAIJ,KAAK,CAACK,MAAM,IAAI,CAAC,EAAE;MACnBD,UAAAA,iBAAiB,QAAAE,MAAA,CAAON,KAAK,CAAC,CAAC,CAAC,EAAG,IAAA,CAAA,CAAA;MACvC,SAAC,MACI,IAAIA,KAAK,CAACK,MAAM,IAAI,CAAC,EAAE;MACxBD,UAAAA,iBAAiB,GAAAE,IAAAA,CAAAA,MAAA,CAAON,KAAK,CAAC,CAAC,CAAC,EAAAM,UAAAA,CAAAA,CAAAA,MAAA,CAASN,KAAK,CAAC,CAAC,CAAC,EAAG,IAAA,CAAA,CAAA;MACxD,SAAC,MACI,IAAIA,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;gBACvBD,iBAAiB,GAAA,IAAA,CAAAE,MAAA,CAAON,KAAK,CAACO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACC,IAAI,CAAA,QAAO,CAAC,EAAA,WAAA,CAAA,CAAAF,MAAA,CAAUN,KAAK,CAACA,KAAK,CAACK,MAAM,GAAG,CAAC,CAAC,EAAG,IAAA,CAAA,CAAA;MAC/F,SAAA;MAEA,QAAA,IAAIL,KAAK,CAACK,MAAM,GAAG,CAAC,EAAE;gBAClB,OAAO,iBAAiB,GAAGD,iBAAiB,CAAA;MAChD,SAAA;MAEA,QAAA,OAAO,IAAI,CAAA;MACf,OAAC,CAAC,CAAA;MAEF,MAAA,OAAOT,KAAK,CAAA;MAChB,KAAC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;"}