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}