UNPKG

jsx-slack

Version:

Build JSON object for Slack Block Kit surfaces from JSX

2 lines (1 loc) 1.83 kB
import{JSXSlackError as s}from"../../error.mjs";import{JSXSlack as m}from"../../jsx.mjs";import{createComponent as f}from"../../jsx-internals.mjs";import{Button as b}from"../elements/Button.mjs";import{Select as w}from"../elements/Select.mjs";import{resolveTagName as p,alias as u}from"../utils.mjs";import{generateInputValidator as k}from"./utils.mjs";const l=e=>{const n=p(e);throw new s(`<Actions> cannot include the element for selection from multiple options${n?`: <${n.slice(1,-1)} multiple>`:"."}`,e)},_=["button","channels_select","checkboxes","conversations_select","datepicker","datetimepicker","external_select","overflow","radio_buttons","static_select","timepicker","users_select","workflow_button"],v={..._.reduce((e,n)=>({...e,[n]:()=>{}}),{}),channels_select:e=>{if(e.response_url_enabled)throw new s("<ChannelsSelect responseUrlEnabled> is available only in the usage of input components.",e)},conversations_select:e=>{if(e.response_url_enabled)throw new s("<ConversationsSelect responseUrlEnabled> is available only in the usage of input components.",e)},multi_channels_select:l,multi_conversations_select:l,multi_external_select:l,multi_static_select:l,multi_users_select:l,input:k("Actions")},y=f("Actions",({blockId:e,children:n,id:d,...h})=>{const i=m.Children.toArray(n).reduce((r,t)=>{let o=t;if(m.isValidElement(t)&&(t.$$jsxslack.type==="button"&&(o=u(t,b)),t.$$jsxslack.type==="select"&&(o=u(t,w))),typeof o=="object"){const c=v[o.type];if(!c){const a=p(t);throw new s(`<Actions> has detected an incompatible element in its children${a?`: ${a}`:"."}`,t)}return c(o),[...r,o]}return r},[]);if(i.length>25)throw new s(`<Actions> can contain up to 25 elements, but there are ${i.length} elements.`,h.__source);return{type:"actions",block_id:e||d,elements:i}});export{y as Actions,_ as availableActionTypes};