1bea4f105Sopenharmony_ci/* 2bea4f105Sopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3bea4f105Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4bea4f105Sopenharmony_ci * you may not use this file except in compliance with the License. 5bea4f105Sopenharmony_ci * You may obtain a copy of the License at 6bea4f105Sopenharmony_ci * 7bea4f105Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8bea4f105Sopenharmony_ci * 9bea4f105Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10bea4f105Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11bea4f105Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12bea4f105Sopenharmony_ci * See the License for the specific language governing permissions and 13bea4f105Sopenharmony_ci * limitations under the License. 14bea4f105Sopenharmony_ci */ 15bea4f105Sopenharmony_ci 16bea4f105Sopenharmony_cilet eventMap = {} 17bea4f105Sopenharmony_ci 18bea4f105Sopenharmony_ciexport const emit = (event, ...argument) => { 19bea4f105Sopenharmony_ci if (Array.isArray(eventMap[event])) { 20bea4f105Sopenharmony_ci eventMap[event].forEach((fn: Function) => { 21bea4f105Sopenharmony_ci fn.apply(this, argument) 22bea4f105Sopenharmony_ci }) 23bea4f105Sopenharmony_ci } 24bea4f105Sopenharmony_ci} 25bea4f105Sopenharmony_ci 26bea4f105Sopenharmony_ciexport const on = (event, callback) => { 27bea4f105Sopenharmony_ci if (!eventMap[event]) { 28bea4f105Sopenharmony_ci eventMap[event] = [] 29bea4f105Sopenharmony_ci } 30bea4f105Sopenharmony_ci eventMap[event].push(callback) 31bea4f105Sopenharmony_ci} 32bea4f105Sopenharmony_ci 33bea4f105Sopenharmony_ciexport const off = (event, callback, flag = true) => { 34bea4f105Sopenharmony_ci if (flag) { 35bea4f105Sopenharmony_ci const index = eventMap[event].indexOf(item => item === callback) 36bea4f105Sopenharmony_ci if (index !== -1) { 37bea4f105Sopenharmony_ci eventMap[event].splice(index, 1) 38bea4f105Sopenharmony_ci } 39bea4f105Sopenharmony_ci } else { 40bea4f105Sopenharmony_ci eventMap[event] = [] 41bea4f105Sopenharmony_ci } 42bea4f105Sopenharmony_ci}