فهرست منبع

dont use deepEqual for anything

Adam Shaw 5 سال پیش
والد
کامیت
86f6f43663
2فایلهای تغییر یافته به همراه11 افزوده شده و 10 حذف شده
  1. 4 6
      packages/core/src/Calendar.tsx
  2. 7 4
      packages/core/src/option-change-handlers.ts

+ 4 - 6
packages/core/src/Calendar.tsx

@@ -57,7 +57,7 @@ export type DateSpanTransform = (dateSpan: DateSpan, calendar: Calendar) => any
 export type CalendarInteraction = { destroy() }
 export type CalendarInteractionClass = { new(calendar: Calendar): CalendarInteraction }
 
-export type OptionChangeHandler = (propValue: any, calendar: Calendar, deepEqual) => void
+export type OptionChangeHandler = (propValue: any, calendar: Calendar) => void
 export type OptionChangeHandlerMap = { [propName: string]: OptionChangeHandler }
 
 export type ResizeHandler = (force: boolean) => void
@@ -388,7 +388,7 @@ export default class Calendar {
   /*
   handles option changes (like a diff)
   */
-  mutateOptions(updates, removals: string[], isDynamic?: boolean, deepEqual?) {
+  mutateOptions(updates, removals: string[] = [], isDynamic?: boolean) {
     let changeHandlers = this.pluginSystem.hooks.optionChangeHandlers
     let normalUpdates = {}
     let specialUpdates = {}
@@ -445,10 +445,8 @@ export default class Calendar {
       }
 
       // special updates
-      if (deepEqual) {
-        for (let name in specialUpdates) {
-          changeHandlers[name](specialUpdates[name], this, deepEqual)
-        }
+      for (let name in specialUpdates) {
+        changeHandlers[name](specialUpdates[name], this)
       }
 
     })

+ 7 - 4
packages/core/src/option-change-handlers.ts

@@ -5,15 +5,18 @@ import { EventSource } from './structs/event-source'
 
 export default createPlugin({
   optionChangeHandlers: {
-    events(events, calendar, deepEqual) {
-      handleEventSources([ events ], calendar, deepEqual)
+    events(events, calendar) {
+      handleEventSources([ events ], calendar)
     },
     eventSources: handleEventSources,
     plugins: handlePlugins
   }
 })
 
-function handleEventSources(inputs, calendar: Calendar, deepEqual) {
+/*
+BUG: if `event` was supplied, all previously-given `eventSources` will be wiped out
+*/
+function handleEventSources(inputs, calendar: Calendar) {
   let unfoundSources: EventSource[] = hashValuesToArray(calendar.state.eventSources)
   let newInputs = []
 
@@ -21,7 +24,7 @@ function handleEventSources(inputs, calendar: Calendar, deepEqual) {
     let inputFound = false
 
     for (let i = 0; i < unfoundSources.length; i++) {
-      if (deepEqual(unfoundSources[i]._raw, input)) {
+      if (unfoundSources[i]._raw === input) {
         unfoundSources.splice(i, 1) // delete
         inputFound = true
         break