Introduce EditableTextComponent
Render gifts with EditableGiftComponent
Introduce gifts.changeDescription()
Introduce gifts.hasDescription()
Introduce gifts.descriptionChange()
Introduce areSameGifts() and sameGiftCondition()
Introduce arrays.mapIf()
Introduce birthdays.changeBirthdayGiftDescription()

It uses changeBirthdayGift(), which could be made public at some time.
Introduce app.changeBirthdayGiftDescription()
Use app.changeBirthdayGiftDescription() in UI