{"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;;;;;;;;;;;;;;;;;;;;"}