fcf.module({
  name: "fcfControls:templates/multiselect.hooks.js",
  dependencies: [],
  module: function(){
    return {
      //
      // void hookBeforeBuild(a_taskInfo)
      // The hook is executed before assembling the template arguments
      //
      // hookBeforeBuild: function(a_taskInfo) {
      // },

      //
      // void hookAfterBuild(a_taskInfo)
      // The hook is executed after assembling the template arguments
      //
      // hookAfterBuild: function(a_taskInfo) {
      // },

      //
      // void hookAfterBuild(a_taskInfo)
      // The hook is executed after building the template's system arguments
      //
      // hookAfterSystemBuild: function(a_taskInfo) {
      // },

      //
      // Object of hooks for programmatically populated arguments
      //
      hooksProgrammableArgument: {
        value: (a_taskInfo)=>{
          return fcf.array(a_taskInfo.args.data, function(k,v){return k;});
        },
        data: ()=>{
          return fcf.filter(a_taskInfo.args.items, function(k,v){ return fcf.find(a_taskInfo.args.value, k) != undefined; });
        }
      },

      //
      // Object of the hooks preprocessing of the template arguments
      //
      // hooksBeforeArgument: {
      //   '["FULL_ARG_NAME"]': function(a_taskInfo) {
      //   }
      // },

      //
      // Object of the hooks postprocessing of the template arguments
      //
      // hooksAfterArgument: {
      //   '["FULL_ARG_NAME"]': function(a_taskInfo) {
      //   }
      // },
    };
  }
});
