mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	js: Convert static/js/vdom.js to ES6 module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							3faae49dc0
						
					
				
				
					commit
					d5740d43f3
				
			@@ -269,7 +269,6 @@
 | 
				
			|||||||
                "user_groups": false,
 | 
					                "user_groups": false,
 | 
				
			||||||
                "user_pill": false,
 | 
					                "user_pill": false,
 | 
				
			||||||
                "poll_widget": false,
 | 
					                "poll_widget": false,
 | 
				
			||||||
                "vdom": false,
 | 
					 | 
				
			||||||
                "widgetize": false,
 | 
					                "widgetize": false,
 | 
				
			||||||
                "zxcvbn": false
 | 
					                "zxcvbn": false
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const {strict: assert} = require("assert");
 | 
					const {strict: assert} = require("assert");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const rewiremock = require("rewiremock/node");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const {set_global, with_field, zrequire} = require("../zjsunit/namespace");
 | 
					const {set_global, with_field, zrequire} = require("../zjsunit/namespace");
 | 
				
			||||||
const {run_test} = require("../zjsunit/test");
 | 
					const {run_test} = require("../zjsunit/test");
 | 
				
			||||||
const $ = require("../zjsunit/zjquery");
 | 
					const $ = require("../zjsunit/zjquery");
 | 
				
			||||||
@@ -15,11 +17,15 @@ set_global("stream_popover", {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
const unread = set_global("unread", {});
 | 
					const unread = set_global("unread", {});
 | 
				
			||||||
const unread_ui = set_global("unread_ui", {});
 | 
					const unread_ui = set_global("unread_ui", {});
 | 
				
			||||||
const vdom = set_global("vdom", {
 | 
					const vdom = {
 | 
				
			||||||
 | 
					    __esModule: true,
 | 
				
			||||||
    render: () => "fake-dom-for-pm-list",
 | 
					    render: () => "fake-dom-for-pm-list",
 | 
				
			||||||
});
 | 
					};
 | 
				
			||||||
 | 
					rewiremock("../../static/js/vdom").with(vdom);
 | 
				
			||||||
const pm_list_dom = set_global("pm_list_dom", {});
 | 
					const pm_list_dom = set_global("pm_list_dom", {});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rewiremock.enable();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zrequire("presence");
 | 
					zrequire("presence");
 | 
				
			||||||
zrequire("buddy_data");
 | 
					zrequire("buddy_data");
 | 
				
			||||||
zrequire("hash_util");
 | 
					zrequire("hash_util");
 | 
				
			||||||
@@ -288,3 +294,4 @@ run_test("ensure coverage", (override) => {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					rewiremock.disable();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,6 @@ import "flatpickr/dist/plugins/confirmDate/confirmDate";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Import app JS
 | 
					// Import app JS
 | 
				
			||||||
import "../i18n";
 | 
					import "../i18n";
 | 
				
			||||||
import "../vdom";
 | 
					 | 
				
			||||||
import "../keydown_util";
 | 
					import "../keydown_util";
 | 
				
			||||||
import "../rtl";
 | 
					import "../rtl";
 | 
				
			||||||
import "../fold_dict";
 | 
					import "../fold_dict";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const people = require("./people");
 | 
					const people = require("./people");
 | 
				
			||||||
const pm_conversations = require("./pm_conversations");
 | 
					const pm_conversations = require("./pm_conversations");
 | 
				
			||||||
 | 
					const vdom = require("./vdom");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let prior_dom;
 | 
					let prior_dom;
 | 
				
			||||||
let private_messages_open = false;
 | 
					let private_messages_open = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,8 @@ const _ = require("lodash");
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const render_pm_list_item = require("../templates/pm_list_item.hbs");
 | 
					const render_pm_list_item = require("../templates/pm_list_item.hbs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const vdom = require("./vdom");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.keyed_pm_li = (convo) => {
 | 
					exports.keyed_pm_li = (convo) => {
 | 
				
			||||||
    const render = () => render_pm_list_item(convo);
 | 
					    const render = () => render_pm_list_item(convo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ const render_more_topics_spinner = require("../templates/more_topics_spinner.hbs
 | 
				
			|||||||
const render_topic_list_item = require("../templates/topic_list_item.hbs");
 | 
					const render_topic_list_item = require("../templates/topic_list_item.hbs");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const topic_list_data = require("./topic_list_data");
 | 
					const topic_list_data = require("./topic_list_data");
 | 
				
			||||||
 | 
					const vdom = require("./vdom");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
    Track all active widgets with a Map.
 | 
					    Track all active widgets with a Map.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,6 @@
 | 
				
			|||||||
"use strict";
 | 
					import _ from "lodash";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const _ = require("lodash");
 | 
					export function eq_array(a, b, eq) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
exports.eq_array = (a, b, eq) => {
 | 
					 | 
				
			||||||
    if (a === b) {
 | 
					    if (a === b) {
 | 
				
			||||||
        // either both are undefined, or they
 | 
					        // either both are undefined, or they
 | 
				
			||||||
        // are referentially equal
 | 
					        // are referentially equal
 | 
				
			||||||
@@ -18,14 +16,16 @@ exports.eq_array = (a, b, eq) => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return a.every((item, i) => eq(item, b[i]));
 | 
					    return a.every((item, i) => eq(item, b[i]));
 | 
				
			||||||
};
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.ul = (opts) => ({
 | 
					export function ul(opts) {
 | 
				
			||||||
    tag_name: "ul",
 | 
					    return {
 | 
				
			||||||
    opts,
 | 
					        tag_name: "ul",
 | 
				
			||||||
});
 | 
					        opts,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.render_tag = (tag) => {
 | 
					export function render_tag(tag) {
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
        This renders a tag into a string.  It will
 | 
					        This renders a tag into a string.  It will
 | 
				
			||||||
        automatically escape attributes, but it's your
 | 
					        automatically escape attributes, but it's your
 | 
				
			||||||
@@ -53,9 +53,9 @@ exports.render_tag = (tag) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const innards = opts.keyed_nodes.map((node) => node.render()).join("\n");
 | 
					    const innards = opts.keyed_nodes.map((node) => node.render()).join("\n");
 | 
				
			||||||
    return start_tag + "\n" + innards + "\n" + end_tag;
 | 
					    return start_tag + "\n" + innards + "\n" + end_tag;
 | 
				
			||||||
};
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.update_attrs = (elem, new_attrs, old_attrs) => {
 | 
					export function update_attrs(elem, new_attrs, old_attrs) {
 | 
				
			||||||
    const new_dict = new Map(new_attrs);
 | 
					    const new_dict = new Map(new_attrs);
 | 
				
			||||||
    const old_dict = new Map(old_attrs);
 | 
					    const old_dict = new Map(old_attrs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -70,9 +70,9 @@ exports.update_attrs = (elem, new_attrs, old_attrs) => {
 | 
				
			|||||||
            elem.removeAttr(k);
 | 
					            elem.removeAttr(k);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.update = (replace_content, find, new_dom, old_dom) => {
 | 
					export function update(replace_content, find, new_dom, old_dom) {
 | 
				
			||||||
    /*
 | 
					    /*
 | 
				
			||||||
        The update method allows you to continually
 | 
					        The update method allows you to continually
 | 
				
			||||||
        update a "virtual" representation of your DOM,
 | 
					        update a "virtual" representation of your DOM,
 | 
				
			||||||
@@ -125,7 +125,7 @@ exports.update = (replace_content, find, new_dom, old_dom) => {
 | 
				
			|||||||
        `pm_list_dom.js`.
 | 
					        `pm_list_dom.js`.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    function do_full_update() {
 | 
					    function do_full_update() {
 | 
				
			||||||
        const rendered_dom = exports.render_tag(new_dom);
 | 
					        const rendered_dom = render_tag(new_dom);
 | 
				
			||||||
        replace_content(rendered_dom);
 | 
					        replace_content(rendered_dom);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -146,7 +146,7 @@ exports.update = (replace_content, find, new_dom, old_dom) => {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const same_structure = exports.eq_array(
 | 
					    const same_structure = eq_array(
 | 
				
			||||||
        new_opts.keyed_nodes,
 | 
					        new_opts.keyed_nodes,
 | 
				
			||||||
        old_opts.keyed_nodes,
 | 
					        old_opts.keyed_nodes,
 | 
				
			||||||
        (a, b) => a.key === b.key,
 | 
					        (a, b) => a.key === b.key,
 | 
				
			||||||
@@ -181,7 +181,5 @@ exports.update = (replace_content, find, new_dom, old_dom) => {
 | 
				
			|||||||
        child_elems.eq(i).replaceWith(rendered_dom);
 | 
					        child_elems.eq(i).replaceWith(rendered_dom);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    exports.update_attrs(find(), new_opts.attrs, old_opts.attrs);
 | 
					    update_attrs(find(), new_opts.attrs, old_opts.attrs);
 | 
				
			||||||
};
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
window.vdom = exports;
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user