{"version":3,"file":"Repeatable.vue2.mjs","sources":["../../lib/form/Repeatable.vue"],"sourcesContent":["<template>\n  <div class=\"repeatable formkitProperty\" :class=\"[props.context?.attrs.identifier]\"\n    v-for=\"({ item: key, nonce }, repeatableIndex) in counter\" :key=\"`${nonce}`\">\n    <h4 v-if=\"!!props.context?.attrs.class && props.context.attrs.class.includes('inDistribution')\">\n      {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}</h4>\n    <h4 v-else>{{ $t('message.dataupload.datasets.' + props.context?.attrs.identifier + '.label') }}</h4>\n    <div class=\"horizontal-wrapper\">\n      <div class=\"repeatableWrap\">\n        <div class=\"interactionHeaderRepeatable my-1\">\n          <i18n-t keypath=\"message.dataupload.info.repeatable\" scope=\"global\" tag=\"p\">\n            <template v-slot:add>\n              <a class=\"add\" @click=\"addItem(repeatableIndex)\">+ {{ $t('message.dataupload.info.add') }}</a>\n            </template>\n            <template v-slot:remove>\n\n              <a class=\"remove\" :class=\"{ disabledRemove: props.context?.value.length === 1 }\"\n                @click=\"removeItem(repeatableIndex, counter.length)\" :data-key=\"key\">- {{\n                  $t('message.dataupload.info.remove') }}</a>\n            </template>\n          </i18n-t>\n        </div>\n        <div class=\"formkitWrapRepeatable\">\n\n          <slot></slot>\n\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<script setup lang=\"ts\">\nimport { whenever } from '@vueuse/core';\nimport { computed, ref } from 'vue';\n\nconst props = defineProps({\n  context: Object\n})\n\nconst counter = ref<any[]>([{ value: 'init', nonce: 0 }])\nconst nonce = ref(0)\n\nwhenever(() => props.context?.value, (newValue, oldValue) => {\n  // Workaround to prevent infinite recursive loop\n  if (JSON.stringify(newValue) === JSON.stringify(oldValue)) {\n    return\n  }\n  if (!newValue || newValue.length === 0) {\n    counter.value = [{ value: 'init', nonce: 0 }];\n  } else {\n    counter.value = newValue.filter(Boolean).map((item: any, idx: number) => ({ value: item['@value'] ?? item.name ?? item, nonce: idx }));\n  }\n\n  nonce.value = counter.value.length\n}, {\n  immediate: false,\n});\n\n// Pushing a blank to the context object and refreshing the counter\nconst addItem = (index: number) => {\n  counter.value.push({ item: props.context?.value[index]['@value'], nonce: nonce.value })\n  nonce.value += 1\n}\n// remove Item - ToDo need to make sure the localhost notices the splice\nconst removeItem = (index: number, counterLength: number) => {\n\n  if (counterLength != 1) {\n    counter.value.splice(index, 1)\n  }\n\n}\n</script>\n<style scoped>\n.add,\n.remove {\n  padding: 0.5rem;\n  margin: 0.5rem;\n  border-radius: 5px;\n  transition: all 200ms ease-in-out;\n}\n\n.add {\n  border: 1px solid lightseagreen;\n\n  &:hover {\n    text-decoration: none;\n    color: white;\n    background-color: lightseagreen;\n  }\n}\n\n.remove {\n  border: 1px solid lightcoral;\n\n  &:hover {\n    text-decoration: none;\n    color: white;\n    background-color: lightcoral;\n  }\n}\n\n.disabledRemove {\n  &:hover {\n    text-decoration: none;\n    color: white;\n    background-color: lightgray;\n  }\n}\n</style>\n"],"names":["props","__props","counter","ref","nonce","whenever","_a","newValue","oldValue","item","idx","addItem","index","removeItem","counterLength","_openBlock","_createElementBlock","_Fragment","key","repeatableIndex","_normalizeClass","_b","_hoisted_1","_toDisplayString","$t","_hoisted_2","_c","_createElementVNode","_hoisted_3","_hoisted_4","_hoisted_5","_createVNode","_component_i18n_t","$event","_hoisted_6","_hoisted_7","_hoisted_8","_renderSlot","_ctx"],"mappings":";;;;;;;;AAkCA,UAAMA,IAAQC,GAIRC,IAAUC,EAAW,CAAC,EAAE,OAAO,QAAQ,OAAO,EAAG,CAAA,CAAC,GAClDC,IAAQD,EAAI,CAAC;AAEnB,IAAAE,EAAS,MAAM;;AAAA,cAAAC,IAAAN,EAAM,YAAN,gBAAAM,EAAe;AAAA,OAAO,CAACC,GAAUC,MAAa;AAE3D,MAAI,KAAK,UAAUD,CAAQ,MAAM,KAAK,UAAUC,CAAQ,MAGpD,CAACD,KAAYA,EAAS,WAAW,IACnCL,EAAQ,QAAQ,CAAC,EAAE,OAAO,QAAQ,OAAO,GAAG,IAE5CA,EAAQ,QAAQK,EAAS,OAAO,OAAO,EAAE,IAAI,CAACE,GAAWC,OAAiB,EAAE,OAAOD,EAAK,QAAQ,KAAKA,EAAK,QAAQA,GAAM,OAAOC,EAAM,EAAA,GAGjIN,EAAA,QAAQF,EAAQ,MAAM;AAAA,IAAA,GAC3B;AAAA,MACD,WAAW;AAAA,IAAA,CACZ;AAGK,UAAAS,IAAU,CAACC,MAAkB;;AACjC,MAAAV,EAAQ,MAAM,KAAK,EAAE,OAAMI,IAAAN,EAAM,YAAN,gBAAAM,EAAe,MAAMM,GAAO,WAAW,OAAOR,EAAM,MAAO,CAAA,GACtFA,EAAM,SAAS;AAAA,IAAA,GAGXS,IAAa,CAACD,GAAeE,MAA0B;AAE3D,MAAIA,KAAiB,KACXZ,EAAA,MAAM,OAAOU,GAAO,CAAC;AAAA,IAC/B;;;AAlEA,aAAAG,EAAA,EAAA,GAAAC,EA2BMC,WA1B8Cf,EAAO,OAAA,CAAA,EAAA,MAAzCgB,GAAK,OAAAd,KAASe,MAAe;;oBAD/CH,EA2BM,OAAA;AAAA,UA3BD,OAAKI,EAAA,CAAC,8BAAsC,EAAAd,IAAAN,EAAM,YAAN,gBAAAM,EAAe,MAAM,UAAU,CAAA,CAAA;AAAA,UAClB,QAAQF,CAAK;AAAA,QAAA;WAC7DiB,IAAArB,EAAM,YAAN,QAAAqB,EAAe,MAAM,SAASrB,EAAM,QAAQ,MAAM,MAAM,SAAQ,gBAAA,UAA5EgB,EACgG,MAAAM,GAAAC,EAA3FC,KAAyC,sCAAAxB,EAAM,QAAQ,MAAM,aAAU,QAAA,CAAA,GAAA,CAAA,WAC5EgB,EAAqG,MAAAS,GAAAF,EAAvFC,KAAoC,mCAAAE,IAAA1B,EAAM,YAAN,gBAAA0B,EAAe,MAAM,cAAU,QAAA,CAAA,GAAA,CAAA;AAAA;UACjFC,EAqBM,OArBNC,GAqBM;AAAA,YApBJD,EAmBM,OAnBNE,GAmBM;AAAA,cAlBJF,EAYM,OAZNG,GAYM;AAAA,gBAXJC,EAUSC,GAAA;AAAA,kBAVD,SAAQ;AAAA,kBAAqC,OAAM;AAAA,kBAAS,KAAI;AAAA,gBAAA;kBACrD,OACf,MAA8F;AAAA,oBAA9FL,EAA8F,KAAA;AAAA,sBAA3F,OAAM;AAAA,sBAAO,SAAK,CAAAM,MAAEtB,EAAQQ,CAAe;AAAA,oBAAA,GAAG,SAAKK,EAAE,GAAA,6BAAA,CAAA,GAAA,GAAAU,CAAA;AAAA,kBAAA;kBAEzC,UAEf,MAE+C;;AAAA;AAAA,sBAF/CP,EAE+C,KAAA;AAAA,wBAF5C,OAAKP,EAAA,CAAC,UAAmC,EAAA,kBAAAd,IAAAN,EAAM,YAAN,gBAAAM,EAAe,MAAM,YAAM,EAAA,CAAA,CAAA;AAAA,wBACpE,gBAAOO,EAAWM,GAAiBjB,EAAA,MAAQ,MAAM;AAAA,wBAAI,YAAUgB;AAAA,sBAAA,GAAK,SACnEM,EAAE,GAAA,gCAAA,CAAA,GAAA,IAAAW,CAAA;AAAA,oBAAA;AAAA;;;;;cAIZR,EAIM,OAJNS,GAIM;AAAA,gBAFJC,EAAaC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,cAAA;;;;;;;;"}