text: /*!
   * ${copyright}
   */
  
  // Provides control sap.m.CustomDynamicDateOption.
  sap.ui.define(['sap/m/DynamicDateOption'],
  	function(DynamicDateOption) {
  		"use strict";
  
  		/**
  		 * Constructor for a new CustomDynamicDateOption.
  		 *
  		 * @param {string} [sId] id for the new control, generated automatically if no id is given
  		 * @param {object} [mSettings] initial settings for the new control
  		 *
  		 * @class
  		 * A custom option for the DynamicDateRange control.
  		 * @extends sap.m.DynamicDateOption
  		 *
  		 * @author SAP SE
  		 * @version ${version}
  		 *
  		 * @public
  		 * @since 1.92
  		 * @alias sap.m.CustomDynamicDateOption
  		 * @ui5-metamodel This element also will be described in the UI5 (legacy) designtime metamodel
  		 * @experimental Since 1.92. This class is experimental and provides only limited functionality. Also the API might be changed in future.
  		 */
  		var CustomDynamicDateOption = DynamicDateOption.extend("sap.m.CustomDynamicDateOption", /** @lends sap.m.CustomDynamicDateOption.prototype */ {
  			metadata: {
  				library: "sap.m",
  				properties: {
  					/**
  					 * Defines a method that provides the option's label text.
  					 */
  					getText: { type: "function" },
  					/**
  					 * Defines a method that provides the option's value help UI types. Based on the types a functional
  					 * value help dialog will be created. Types are DynamicDateValueHelpUIType instances.
  					 */
  					getValueHelpUITypes: { type: "function" },
  					/**
  					 * Defines a method that can create the option's value help UI. For custom scenarios where
  					 * getValueHelpUITypes is not enough to define the UI.
  					 */
  					createValueHelpUI: { type: "function" },
  					/**
  					 * Defines a method that can validate all controls from the value help UI related to a given option.
  					 */
  					validateValueHelpUI: { type: "function" },
  					/**
  					 * Defines a method that can collect the value from the value help UI.
  					 */
  					getValueHelpOutput: { type: "function" },
  					/**
  					 * Defines a method that provides the order index of the option's group.
  					 * Used for grouping within the options list inside a DynamicDateRange's popup.
  					 */
  					getGroup: { type: "function" },
  					/**
  					 * Defines a method that provides the option's group header text.
  					 */
  					getGroupHeader: { type: "function" },
  					/**
  					 * Defines a method that formats the option's value to a string. See DynamicDateOption.format.
  					 */
  					format: { type: "function" },
  					/**
  					 * Defines a method that parses the option's value from a string. See DynamicDateOption.parse.
  					 */
  					parse: { type: "function" },
  					/**
  					 * Defines a method that calculates an absolute date range from the options relative value. See DynamicDateOption.toDates.
  					 */
  					toDates: { type: "function" },
  					/**
  					 * Defines a method that controls whether the formatted date range should be concatenated to the
  					 * formatted value when displayed.
  					 */
  					enhanceFormattedValue: { type: "function" }
  				}
  			}
  		});
  
  		function capitalize(sString) {
  			return sString.charAt(0).toUpperCase() + sString.slice(1);
  		}
  
  		["getText", "getValueHelpUITypes", "createValueHelpUI", "getValueHelpOutput", "validateValueHelpUI",
  			"getGroup", "getGroupHeader", "format", "parse", "toDates", "enhanceFormattedValue"]
  			.forEach(function(sFnName) {
  				CustomDynamicDateOption.prototype[sFnName] = function() {
  					var sGetterName = "get" + capitalize(sFnName);
  					var fnCustomFn = this[sGetterName]();
  					return fnCustomFn ? fnCustomFn.apply(this, arguments)
  						: DynamicDateOption.prototype[sFnName].apply(this, arguments);
  				};
  			});
  
  		return CustomDynamicDateOption;
  	});
  