{"version":3,"sources":["jsdelivr-header.js","/npm/courtesan@0.4.0/index.js"],"names":[],"mappings":"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","file":"/npm/courtesan@0.4.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/courtesan@0.4.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// tracer property which is a function getting passed an object, returns nothing, emit stuff\r\nimport {BaseEmitter} from 'kuker-emitters';\r\nimport {\r\n  INPUT_MSG,\r\n  OUTPUTS_MSG,\r\n  DEBUG_MSG,\r\n  MACHINE_CREATION_ERROR_MSG,\r\n  ERROR_MSG,\r\n  INTERNAL_INPUT_MSG,\r\n  INTERNAL_OUTPUTS_MSG,\r\n  INIT_INPUT_MSG,\r\n  WARN_MSG, AUTO_EVENT, INIT_EVENT\r\n} from \"kingly\";\r\n\r\n// Note: dependency with extension\r\nconst COURTESAN = '@@Courtesan';\r\n\r\nconst _emit = BaseEmitter();\r\nconst STR_LIMIT = 40;\r\nconst emit = x => _emit({...x, type: COURTESAN, indent});\r\nfunction shortenJSON(data) {\r\n  const str = JSON.stringify(data);\r\n\r\n  if (str.length <= STR_LIMIT) return str;\r\n  return str.substr(0, STR_LIMIT) + '...';\r\n};\r\nconst formatDetail = detail =>{\r\n  const isDetailNull = Boolean(detail === null);\r\n  return detail && shortenJSON(detail) || isDetailNull && \"null\" || \"undefined\"\r\n};\r\nconst PREVIEW_STR_LIMIT = 40;\r\n\r\nfunction previewObject(object) {\r\n  const keys = Object.keys(object);\r\n\r\n  if (keys.length === 0) return '{}';\r\n\r\n  const objectInternals = keys.map(key => {\r\n    if (typeof object[key] === 'object') {\r\n      if (Array.isArray(object[key])) {\r\n        return `${key}: ${ previewArray(object[key]) }`;\r\n      }\r\n      return `${ key }: { ... }`;\r\n    } else if (typeof object[key] === 'string') {\r\n      return `${ key }: \"${ String(object[key]) }\"`;\r\n    }\r\n    return `${ key }: ${ String(object[key]) }`;\r\n  });\r\n\r\n  return `{ ${ objectInternals.join(', ') } }`;\r\n}\r\n\r\nfunction previewArray(array) {\r\n  if (array.length === 0) return '[]';\r\n  return `[...${ array.length }]`;\r\n}\r\n\r\nfunction renderJSONPreview(data, limit = PREVIEW_STR_LIMIT) {\r\n  let result;\r\n\r\n  if (typeof data === 'object') {\r\n    result = Array.isArray(data) ? previewArray(data) : previewObject(data);\r\n  } else if (typeof data === 'string') {\r\n    result = `\"${ data }\"`;\r\n  } else if (typeof data === 'number') {\r\n    result = data;\r\n  } else {\r\n    return null;\r\n  }\r\n\r\n  return result.length > limit ? result.substr(0, limit) + '...' : result;\r\n};\r\n\r\n\r\nlet indent = 0;\r\n\r\n/**\r\n * This is the tracer that sends messages to the Courtesan extension.\r\n * @param obj\r\n e */\r\nexport function tracer(obj) {\r\n  const {type: msgTyepe, trace} = obj || {};\r\n  const {outputs, message, event, error, info, machineState} = trace || {};\r\n\r\n  switch (msgTyepe) {\r\n    case INIT_INPUT_MSG: {\r\n      const {cs} = machineState;\r\n      const {eventName, eventData} = info;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: `Kicking off the machine`, detail: formatDetail(eventData), icon: 'fa-play'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {[eventName]: eventData},\r\n        color: '#528CE0'\r\n      });\r\n    }\r\n      break;\r\n    case INPUT_MSG: {\r\n      const {cs} = machineState;\r\n      const {eventName, eventData} = info;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: eventName, detail: formatDetail(eventData), icon: 'fa-arrow-circle-right'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {[eventName]: eventData},\r\n        color: '#bada55'\r\n      });\r\n      indent++\r\n    }\r\n      break;\r\n    case OUTPUTS_MSG: {\r\n      const {cs} = machineState;\r\n      indent--;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: \"Returns\", detail: formatDetail(outputs), icon: 'fa-arrow-circle-left'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: outputs,\r\n        color: '#bada55'\r\n      });\r\n    }\r\n      break;\r\n    case INTERNAL_INPUT_MSG: {\r\n      const {eventName, eventData} = info;\r\n      const {cs} = machineState;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: eventName === INIT_EVENT? `Taking init transition for compound state ${cs}` : `Taking eventless transition`, detail: formatDetail(eventData), icon: 'fa-sign-in'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event,\r\n        color: '#ddedad'\r\n      });\r\n    }\r\n      indent++;\r\n      break;\r\n    case INTERNAL_OUTPUTS_MSG: {\r\n      const {cs} = machineState;\r\n      indent--;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: \"Returns\", detail: formatDetail(outputs), icon: 'fa-sign-out'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: outputs,\r\n        color: '#ddedad'\r\n      });\r\n    }\r\n      break;\r\n    case DEBUG_MSG: {\r\n      const {cs} = machineState;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: message, icon: 'fa-warn'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {info, message},\r\n        color: '#eef5d6'\r\n      });\r\n    }\r\n      break;\r\n    case ERROR_MSG: {\r\n      const {cs} = machineState;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: message, icon: 'fa-warn'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {error, message},\r\n        color: '#cc9900'\r\n      });\r\n    }\r\n      break;\r\n    case MACHINE_CREATION_ERROR_MSG: {\r\n      const {cs} = machineState;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: message, icon: 'fa-warn'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {error, info, message},\r\n        color: '#cc0000'\r\n      });\r\n    }\r\n      break;\r\n    case WARN_MSG: {\r\n      const {cs} = machineState;\r\n      emit({\r\n        msgTyepe,\r\n        left: {label: message, icon: 'fa-warn'},\r\n        right: {label: cs},\r\n        state: machineState,\r\n        event: {info, message},\r\n        color: '#ffdaba'\r\n      });\r\n    }\r\n      break;\r\n    default:\r\n      break;\r\n  }\r\n}\r\n\r\n// TODO: I should be able to collapse/expend per event/output couple\r\n// TODO: investigate an option render web component, so when I have a render props in outputs, I can show the component\r\n// TODO: and that panel should be cutting horizontally in two the right panel, but will need to import it dynamically...\r\n// TODO: user can pass address of svg of file (graphml if I feel like generating the svg myself, not impossible but time consuming)\r\n//       so I can display that. Also animate the text of the cs when clicked on input\r\n"]}