import * as compose_actions from "./compose_actions"; import * as input_pill from "./input_pill"; import * as people from "./people"; import * as user_pill from "./user_pill"; import * as util from "./util"; export let widget; export function initialize_pill() { const container = $("#private_message_recipient").parent(); const pill = input_pill.create({ container, create_item_from_text: user_pill.create_item_from_email, get_text_from_item: user_pill.get_email_from_item, }); return pill; } export function initialize() { widget = initialize_pill(); widget.onPillCreate(() => { compose_actions.update_placeholder_text(); }); widget.onPillRemove(() => { compose_actions.update_placeholder_text(); }); } export function clear() { widget.clear(); } export function set_from_typeahead(person) { // We expect person to be an object returned from people.js. user_pill.append_person({ pill_widget: widget, person, }); } export function set_from_emails(value) { // value is something like "alice@example.com,bob@example.com" clear(); widget.appendValue(value); } export function get_user_ids() { return user_pill.get_user_ids(widget); } export function has_unconverted_data() { return user_pill.has_unconverted_data(widget); } export function get_user_ids_string() { const user_ids = get_user_ids(); const sorted_user_ids = util.sorted_ids(user_ids); const user_ids_string = sorted_user_ids.join(","); return user_ids_string; } export function get_emails() { // return something like "alice@example.com,bob@example.com" const user_ids = get_user_ids(); const emails = user_ids.map((id) => people.get_by_user_id(id).email).join(","); return emails; } export function filter_taken_users(persons) { return user_pill.filter_taken_users(persons, widget); }